#[allow(unused_imports)]
pub use progenitor_client::{ByteStream, ClientInfo, Error, ResponseValue};
#[allow(unused_imports)]
use progenitor_client::{encode_path, ClientHooks, OperationInfo, RequestBuilderExt};
/// Types used as operation parameters and responses.
#[allow(clippy::all)]
pub mod types {
    /// Error types.
    pub mod error {
        /// Error from a `TryFrom` or `FromStr` implementation.
        pub struct ConversionError(::std::borrow::Cow<'static, str>);
        impl ::std::error::Error for ConversionError {}
        impl ::std::fmt::Display for ConversionError {
            fn fmt(
                &self,
                f: &mut ::std::fmt::Formatter<'_>,
            ) -> Result<(), ::std::fmt::Error> {
                ::std::fmt::Display::fmt(&self.0, f)
            }
        }
        impl ::std::fmt::Debug for ConversionError {
            fn fmt(
                &self,
                f: &mut ::std::fmt::Formatter<'_>,
            ) -> Result<(), ::std::fmt::Error> {
                ::std::fmt::Debug::fmt(&self.0, f)
            }
        }
        impl From<&'static str> for ConversionError {
            fn from(value: &'static str) -> Self {
                Self(value.into())
            }
        }
        impl From<String> for ConversionError {
            fn from(value: String) -> Self {
                Self(value.into())
            }
        }
    }
    ///`ActionItemTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "trigger_type"
    ///  ],
    ///  "properties": {
    ///    "incident_action_item_condition": {
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "incident_action_item_condition_group": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_action_item_condition_kind": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_action_item_condition_priority": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_action_item_condition_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_action_item_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_action_item_kinds": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "task",
    ///          "follow_up"
    ///        ]
    ///      }
    ///    },
    ///    "incident_action_item_priorities": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "high",
    ///          "medium",
    ///          "low"
    ///        ]
    ///      }
    ///    },
    ///    "incident_action_item_statuses": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "open",
    ///          "in_progress",
    ///          "cancelled",
    ///          "done"
    ///        ]
    ///      }
    ///    },
    ///    "incident_condition": {
    ///      "default": "ALL",
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "incident_condition_acknowledged_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_detected_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_environment": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_functionality": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_group": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_incident_roles": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_incident_type": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_kind": {
    ///      "default": "IS",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_mitigated_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_resolved_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_service": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_severity": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_started_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_sub_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_summary": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_visibility": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_conditional_inactivity": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "IS"
    ///      ]
    ///    },
    ///    "incident_inactivity_duration": {
    ///      "description": "ex. 10 min, 1h, 3 days, 2 weeks",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_kinds": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "test",
    ///          "test_sub",
    ///          "example",
    ///          "example_sub",
    ///          "normal",
    ///          "normal_sub",
    ///          "backfilled",
    ///          "scheduled",
    ///          "scheduled_sub"
    ///        ]
    ///      }
    ///    },
    ///    "incident_statuses": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "in_triage",
    ///          "started",
    ///          "detected",
    ///          "acknowledged",
    ///          "mitigated",
    ///          "resolved",
    ///          "closed",
    ///          "cancelled",
    ///          "scheduled",
    ///          "in_progress",
    ///          "completed"
    ///        ]
    ///      }
    ///    },
    ///    "incident_visibilities": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "boolean"
    ///      }
    ///    },
    ///    "trigger_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "action_item"
    ///      ]
    ///    },
    ///    "triggers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Actions that trigger the workflow. One of custom_fields.<slug>.updated, incident_updated, action_item_created, action_item_updated, assigned_user_updated, summary_updated, description_updated, status_updated, priority_updated, due_date_updated, teams_updated, slack_command",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ActionItemTriggerParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_action_item_condition: ::std::option::Option<
            ActionItemTriggerParamsIncidentActionItemCondition,
        >,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_action_item_condition_group"
        )]
        pub incident_action_item_condition_group: ActionItemTriggerParamsIncidentActionItemConditionGroup,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_action_item_condition_kind"
        )]
        pub incident_action_item_condition_kind: ActionItemTriggerParamsIncidentActionItemConditionKind,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_action_item_condition_priority"
        )]
        pub incident_action_item_condition_priority: ActionItemTriggerParamsIncidentActionItemConditionPriority,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_action_item_condition_status"
        )]
        pub incident_action_item_condition_status: ActionItemTriggerParamsIncidentActionItemConditionStatus,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_action_item_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_action_item_kinds: ::std::vec::Vec<
            ActionItemTriggerParamsIncidentActionItemKindsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_action_item_priorities: ::std::vec::Vec<
            ActionItemTriggerParamsIncidentActionItemPrioritiesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_action_item_statuses: ::std::vec::Vec<
            ActionItemTriggerParamsIncidentActionItemStatusesItem,
        >,
        #[serde(default = "defaults::action_item_trigger_params_incident_condition")]
        pub incident_condition: ActionItemTriggerParamsIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_acknowledged_at: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionAcknowledgedAt,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_detected_at: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionDetectedAt,
        >,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_environment"
        )]
        pub incident_condition_environment: ActionItemTriggerParamsIncidentConditionEnvironment,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_functionality"
        )]
        pub incident_condition_functionality: ActionItemTriggerParamsIncidentConditionFunctionality,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_group"
        )]
        pub incident_condition_group: ActionItemTriggerParamsIncidentConditionGroup,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_incident_roles"
        )]
        pub incident_condition_incident_roles: ActionItemTriggerParamsIncidentConditionIncidentRoles,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_incident_type"
        )]
        pub incident_condition_incident_type: ActionItemTriggerParamsIncidentConditionIncidentType,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_kind"
        )]
        pub incident_condition_kind: ActionItemTriggerParamsIncidentConditionKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_mitigated_at: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionMitigatedAt,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_resolved_at: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionResolvedAt,
        >,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_service"
        )]
        pub incident_condition_service: ActionItemTriggerParamsIncidentConditionService,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_severity"
        )]
        pub incident_condition_severity: ActionItemTriggerParamsIncidentConditionSeverity,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_started_at: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionStartedAt,
        >,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_status"
        )]
        pub incident_condition_status: ActionItemTriggerParamsIncidentConditionStatus,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_sub_status"
        )]
        pub incident_condition_sub_status: ActionItemTriggerParamsIncidentConditionSubStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_summary: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionSummary,
        >,
        #[serde(
            default = "defaults::action_item_trigger_params_incident_condition_visibility"
        )]
        pub incident_condition_visibility: ActionItemTriggerParamsIncidentConditionVisibility,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_conditional_inactivity: ::std::option::Option<
            ActionItemTriggerParamsIncidentConditionalInactivity,
        >,
        ///ex. 10 min, 1h, 3 days, 2 weeks
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_inactivity_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_kinds: ::std::vec::Vec<ActionItemTriggerParamsIncidentKindsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_statuses: ::std::vec::Vec<
            ActionItemTriggerParamsIncidentStatusesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_visibilities: ::std::vec::Vec<bool>,
        pub trigger_type: ActionItemTriggerParamsTriggerType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub triggers: ::std::vec::Vec<::std::string::String>,
    }
    impl ActionItemTriggerParams {
        pub fn builder() -> builder::ActionItemTriggerParams {
            Default::default()
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentActionItemCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentActionItemCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemConditionGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemConditionGroup {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for ActionItemTriggerParamsIncidentActionItemConditionGroup {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for ActionItemTriggerParamsIncidentActionItemConditionGroup {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentActionItemConditionGroup {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentActionItemConditionGroup::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemConditionKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemConditionKind {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentActionItemConditionKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentActionItemConditionKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentActionItemConditionKind {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentActionItemConditionKind::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemConditionPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemConditionPriority {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for ActionItemTriggerParamsIncidentActionItemConditionPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for ActionItemTriggerParamsIncidentActionItemConditionPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemConditionPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentActionItemConditionPriority {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentActionItemConditionPriority::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemConditionStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemConditionStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for ActionItemTriggerParamsIncidentActionItemConditionStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for ActionItemTriggerParamsIncidentActionItemConditionStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentActionItemConditionStatus {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentActionItemConditionStatus::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemKindsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "task",
    ///    "follow_up"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemKindsItem {
        #[serde(rename = "task")]
        Task,
        #[serde(rename = "follow_up")]
        FollowUp,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentActionItemKindsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Task => f.write_str("task"),
                Self::FollowUp => f.write_str("follow_up"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentActionItemKindsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "task" => Ok(Self::Task),
                "follow_up" => Ok(Self::FollowUp),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemPrioritiesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemPrioritiesItem {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display
    for ActionItemTriggerParamsIncidentActionItemPrioritiesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr
    for ActionItemTriggerParamsIncidentActionItemPrioritiesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemPrioritiesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemPrioritiesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemPrioritiesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentActionItemStatusesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "in_progress",
    ///    "cancelled",
    ///    "done"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentActionItemStatusesItem {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "done")]
        Done,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentActionItemStatusesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Done => f.write_str("done"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentActionItemStatusesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "in_progress" => Ok(Self::InProgress),
                "cancelled" => Ok(Self::Cancelled),
                "done" => Ok(Self::Done),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentActionItemStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentActionItemStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ALL",
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ActionItemTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentCondition {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentCondition::All
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionAcknowledgedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionAcknowledgedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionAcknowledgedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionAcknowledgedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionDetectedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionDetectedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionDetectedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionDetectedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionEnvironment`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionEnvironment {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionEnvironment {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionEnvironment {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentConditionEnvironment {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionEnvironment::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionFunctionality {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionFunctionality {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionFunctionality {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentConditionFunctionality {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionFunctionality::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionGroup {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionGroup {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionGroup {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionGroup {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionGroup::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionIncidentRoles`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionIncidentRoles {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionIncidentRoles {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionIncidentRoles {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentConditionIncidentRoles {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionIncidentRoles::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionIncidentType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionIncidentType {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionIncidentType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionIncidentType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for ActionItemTriggerParamsIncidentConditionIncidentType {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionIncidentType::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "IS",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionKind {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ActionItemTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionKind {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionKind::Is
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionMitigatedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionMitigatedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionMitigatedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionMitigatedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionResolvedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionResolvedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionResolvedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionResolvedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionService {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionService {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionService {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionService {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionService::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionSeverity {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionSeverity {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionSeverity::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionStartedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionStartedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionStartedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionStartedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionStatus {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionStatus::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionSubStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionSubStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionSubStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionSubStatus {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionSubStatus::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionSummary`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionSummary {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionSummary {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionSummary {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionVisibility`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionVisibility {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionVisibility {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionVisibility {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for ActionItemTriggerParamsIncidentConditionVisibility {
        fn default() -> Self {
            ActionItemTriggerParamsIncidentConditionVisibility::Any
        }
    }
    ///`ActionItemTriggerParamsIncidentConditionalInactivity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "IS"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentConditionalInactivity {
        #[serde(rename = "IS")]
        Is,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentConditionalInactivity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentConditionalInactivity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ActionItemTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentKindsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "test",
    ///    "test_sub",
    ///    "example",
    ///    "example_sub",
    ///    "normal",
    ///    "normal_sub",
    ///    "backfilled",
    ///    "scheduled",
    ///    "scheduled_sub"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentKindsItem {
        #[serde(rename = "test")]
        Test,
        #[serde(rename = "test_sub")]
        TestSub,
        #[serde(rename = "example")]
        Example,
        #[serde(rename = "example_sub")]
        ExampleSub,
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "normal_sub")]
        NormalSub,
        #[serde(rename = "backfilled")]
        Backfilled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "scheduled_sub")]
        ScheduledSub,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentKindsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Test => f.write_str("test"),
                Self::TestSub => f.write_str("test_sub"),
                Self::Example => f.write_str("example"),
                Self::ExampleSub => f.write_str("example_sub"),
                Self::Normal => f.write_str("normal"),
                Self::NormalSub => f.write_str("normal_sub"),
                Self::Backfilled => f.write_str("backfilled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::ScheduledSub => f.write_str("scheduled_sub"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentKindsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "test" => Ok(Self::Test),
                "test_sub" => Ok(Self::TestSub),
                "example" => Ok(Self::Example),
                "example_sub" => Ok(Self::ExampleSub),
                "normal" => Ok(Self::Normal),
                "normal_sub" => Ok(Self::NormalSub),
                "backfilled" => Ok(Self::Backfilled),
                "scheduled" => Ok(Self::Scheduled),
                "scheduled_sub" => Ok(Self::ScheduledSub),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ActionItemTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsIncidentStatusesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "detected",
    ///    "acknowledged",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsIncidentStatusesItem {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "detected")]
        Detected,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsIncidentStatusesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Detected => f.write_str("detected"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsIncidentStatusesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "detected" => Ok(Self::Detected),
                "acknowledged" => Ok(Self::Acknowledged),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ActionItemTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ActionItemTriggerParamsTriggerType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "action_item"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ActionItemTriggerParamsTriggerType {
        #[serde(rename = "action_item")]
        ActionItem,
    }
    impl ::std::fmt::Display for ActionItemTriggerParamsTriggerType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ActionItem => f.write_str("action_item"),
            }
        }
    }
    impl ::std::str::FromStr for ActionItemTriggerParamsTriggerType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "action_item" => Ok(Self::ActionItem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ActionItemTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ActionItemTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ActionItemTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddActionItemTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "priority",
    ///    "status",
    ///    "summary"
    ///  ],
    ///  "properties": {
    ///    "assigned_to_user": {
    ///      "description": " The user this action item is assigned to",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "assigned_to_user_id": {
    ///      "description": "[DEPRECATED] Use assigned_to_user attribute instead. The user id this action item is assigned to",
    ///      "type": "string"
    ///    },
    ///    "attribute_to_query_by": {
    ///      "description": "Attribute of the Incident to match against",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "jira_issue_id"
    ///      ]
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The action item description",
    ///      "type": "string"
    ///    },
    ///    "incident_role_id": {
    ///      "description": "The role id this action item is associated with",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The action item kind",
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "priority": {
    ///      "description": "The action item priority",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "query_value": {
    ///      "description": "Value that attribute_to_query_by to uses to match against",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The action item status",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "in_progress",
    ///        "cancelled",
    ///        "done"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The action item summary",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_action_item"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddActionItemTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user: ::std::option::Option<
            AddActionItemTaskParamsAssignedToUser,
        >,
        ///[DEPRECATED] Use assigned_to_user attribute instead. The user id this action item is assigned to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user_id: ::std::option::Option<::std::string::String>,
        ///Attribute of the Incident to match against
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attribute_to_query_by: ::std::option::Option<
            AddActionItemTaskParamsAttributeToQueryBy,
        >,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The action item description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The role id this action item is associated with
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///The action item kind
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            AddActionItemTaskParamsPostToSlackChannelsItem,
        >,
        ///The action item priority
        pub priority: AddActionItemTaskParamsPriority,
        ///Value that attribute_to_query_by to uses to match against
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub query_value: ::std::option::Option<::std::string::String>,
        ///The action item status
        pub status: AddActionItemTaskParamsStatus,
        ///The action item summary
        pub summary: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AddActionItemTaskParamsTaskType>,
    }
    impl AddActionItemTaskParams {
        pub fn builder() -> builder::AddActionItemTaskParams {
            Default::default()
        }
    }
    /// The user this action item is assigned to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": " The user this action item is assigned to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddActionItemTaskParamsAssignedToUser {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddActionItemTaskParamsAssignedToUser {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddActionItemTaskParamsAssignedToUser {
        pub fn builder() -> builder::AddActionItemTaskParamsAssignedToUser {
            Default::default()
        }
    }
    ///Attribute of the Incident to match against
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Attribute of the Incident to match against",
    ///  "type": "string",
    ///  "enum": [
    ///    "jira_issue_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddActionItemTaskParamsAttributeToQueryBy {
        #[serde(rename = "jira_issue_id")]
        JiraIssueId,
    }
    impl ::std::fmt::Display for AddActionItemTaskParamsAttributeToQueryBy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::JiraIssueId => f.write_str("jira_issue_id"),
            }
        }
    }
    impl ::std::str::FromStr for AddActionItemTaskParamsAttributeToQueryBy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "jira_issue_id" => Ok(Self::JiraIssueId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddActionItemTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddActionItemTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddActionItemTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddActionItemTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddActionItemTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddActionItemTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddActionItemTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::AddActionItemTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///The action item priority
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The action item priority",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddActionItemTaskParamsPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for AddActionItemTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for AddActionItemTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddActionItemTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddActionItemTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddActionItemTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The action item status
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The action item status",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "in_progress",
    ///    "cancelled",
    ///    "done"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddActionItemTaskParamsStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "done")]
        Done,
    }
    impl ::std::fmt::Display for AddActionItemTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Done => f.write_str("done"),
            }
        }
    }
    impl ::std::str::FromStr for AddActionItemTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "in_progress" => Ok(Self::InProgress),
                "cancelled" => Ok(Self::Cancelled),
                "done" => Ok(Self::Done),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddActionItemTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddActionItemTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddActionItemTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddActionItemTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_action_item"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddActionItemTaskParamsTaskType {
        #[serde(rename = "add_action_item")]
        AddActionItem,
    }
    impl ::std::fmt::Display for AddActionItemTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddActionItem => f.write_str("add_action_item"),
            }
        }
    }
    impl ::std::str::FromStr for AddActionItemTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_action_item" => Ok(Self::AddActionItem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddActionItemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddActionItemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddActionItemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddMicrosoftTeamsChatTabTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "chat",
    ///    "link",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "chat": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "link": {
    ///      "description": "The tab link",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_microsoft_teams_chat_tab"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The tab title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddMicrosoftTeamsChatTabTaskParams {
        pub chat: AddMicrosoftTeamsChatTabTaskParamsChat,
        ///The tab link
        pub link: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AddMicrosoftTeamsChatTabTaskParamsTaskType>,
        ///The tab title
        pub title: ::std::string::String,
    }
    impl AddMicrosoftTeamsChatTabTaskParams {
        pub fn builder() -> builder::AddMicrosoftTeamsChatTabTaskParams {
            Default::default()
        }
    }
    ///`AddMicrosoftTeamsChatTabTaskParamsChat`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddMicrosoftTeamsChatTabTaskParamsChat {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddMicrosoftTeamsChatTabTaskParamsChat {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddMicrosoftTeamsChatTabTaskParamsChat {
        pub fn builder() -> builder::AddMicrosoftTeamsChatTabTaskParamsChat {
            Default::default()
        }
    }
    ///`AddMicrosoftTeamsChatTabTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_microsoft_teams_chat_tab"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddMicrosoftTeamsChatTabTaskParamsTaskType {
        #[serde(rename = "add_microsoft_teams_chat_tab")]
        AddMicrosoftTeamsChatTab,
    }
    impl ::std::fmt::Display for AddMicrosoftTeamsChatTabTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddMicrosoftTeamsChatTab => {
                    f.write_str("add_microsoft_teams_chat_tab")
                }
            }
        }
    }
    impl ::std::str::FromStr for AddMicrosoftTeamsChatTabTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_microsoft_teams_chat_tab" => Ok(Self::AddMicrosoftTeamsChatTab),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddMicrosoftTeamsChatTabTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddMicrosoftTeamsChatTabTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddMicrosoftTeamsChatTabTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddMicrosoftTeamsTabTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "link",
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "link": {
    ///          "type": "string"
    ///        },
    ///        "title": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "playbook_id"
    ///      ],
    ///      "properties": {
    ///        "playbook_id": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "channel",
    ///    "team"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "link": {
    ///      "description": "The tab link. Required if not a playbook tab",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "playbook_id": {
    ///      "description": "The playbook id if tab is of an incident playbook",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_microsoft_teams_tab"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The tab title. Required if not a playbook tab",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum AddMicrosoftTeamsTabTaskParams {
        Variant0 {
            channel: AddMicrosoftTeamsTabTaskParamsVariant0Channel,
            link: ::std::string::String,
            ///The playbook id if tab is of an incident playbook
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            playbook_id: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                AddMicrosoftTeamsTabTaskParamsVariant0TaskType,
            >,
            team: AddMicrosoftTeamsTabTaskParamsVariant0Team,
            title: ::std::string::String,
        },
        Variant1 {
            channel: AddMicrosoftTeamsTabTaskParamsVariant1Channel,
            ///The tab link. Required if not a playbook tab
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            link: ::std::option::Option<::std::string::String>,
            playbook_id: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                AddMicrosoftTeamsTabTaskParamsVariant1TaskType,
            >,
            team: AddMicrosoftTeamsTabTaskParamsVariant1Team,
            ///The tab title. Required if not a playbook tab
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            title: ::std::option::Option<::std::string::String>,
        },
    }
    ///`AddMicrosoftTeamsTabTaskParamsVariant0Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddMicrosoftTeamsTabTaskParamsVariant0Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant0Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddMicrosoftTeamsTabTaskParamsVariant0Channel {
        pub fn builder() -> builder::AddMicrosoftTeamsTabTaskParamsVariant0Channel {
            Default::default()
        }
    }
    ///`AddMicrosoftTeamsTabTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_microsoft_teams_tab"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddMicrosoftTeamsTabTaskParamsVariant0TaskType {
        #[serde(rename = "add_microsoft_teams_tab")]
        AddMicrosoftTeamsTab,
    }
    impl ::std::fmt::Display for AddMicrosoftTeamsTabTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddMicrosoftTeamsTab => f.write_str("add_microsoft_teams_tab"),
            }
        }
    }
    impl ::std::str::FromStr for AddMicrosoftTeamsTabTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_microsoft_teams_tab" => Ok(Self::AddMicrosoftTeamsTab),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AddMicrosoftTeamsTabTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddMicrosoftTeamsTabTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddMicrosoftTeamsTabTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddMicrosoftTeamsTabTaskParamsVariant0Team`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddMicrosoftTeamsTabTaskParamsVariant0Team {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant0Team {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddMicrosoftTeamsTabTaskParamsVariant0Team {
        pub fn builder() -> builder::AddMicrosoftTeamsTabTaskParamsVariant0Team {
            Default::default()
        }
    }
    ///`AddMicrosoftTeamsTabTaskParamsVariant1Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddMicrosoftTeamsTabTaskParamsVariant1Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant1Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddMicrosoftTeamsTabTaskParamsVariant1Channel {
        pub fn builder() -> builder::AddMicrosoftTeamsTabTaskParamsVariant1Channel {
            Default::default()
        }
    }
    ///`AddMicrosoftTeamsTabTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_microsoft_teams_tab"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddMicrosoftTeamsTabTaskParamsVariant1TaskType {
        #[serde(rename = "add_microsoft_teams_tab")]
        AddMicrosoftTeamsTab,
    }
    impl ::std::fmt::Display for AddMicrosoftTeamsTabTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddMicrosoftTeamsTab => f.write_str("add_microsoft_teams_tab"),
            }
        }
    }
    impl ::std::str::FromStr for AddMicrosoftTeamsTabTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_microsoft_teams_tab" => Ok(Self::AddMicrosoftTeamsTab),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AddMicrosoftTeamsTabTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddMicrosoftTeamsTabTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddMicrosoftTeamsTabTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddMicrosoftTeamsTabTaskParamsVariant1Team`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddMicrosoftTeamsTabTaskParamsVariant1Team {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant1Team {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddMicrosoftTeamsTabTaskParamsVariant1Team {
        pub fn builder() -> builder::AddMicrosoftTeamsTabTaskParamsVariant1Team {
            Default::default()
        }
    }
    ///`AddRoleTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_role_id"
    ///  ],
    ///  "properties": {
    ///    "assigned_to_user": {
    ///      "description": " The user this role is assigned to",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "assigned_to_user_id": {
    ///      "description": "[DEPRECATED] Use assigned_to_user attribute instead. The user id this role is assigned to",
    ///      "type": "string"
    ///    },
    ///    "incident_role_id": {
    ///      "description": "The role id to add to the incident",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_role"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddRoleTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user: ::std::option::Option<AddRoleTaskParamsAssignedToUser>,
        ///[DEPRECATED] Use assigned_to_user attribute instead. The user id this role is assigned to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user_id: ::std::option::Option<::std::string::String>,
        ///The role id to add to the incident
        pub incident_role_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AddRoleTaskParamsTaskType>,
    }
    impl AddRoleTaskParams {
        pub fn builder() -> builder::AddRoleTaskParams {
            Default::default()
        }
    }
    /// The user this role is assigned to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": " The user this role is assigned to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddRoleTaskParamsAssignedToUser {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddRoleTaskParamsAssignedToUser {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddRoleTaskParamsAssignedToUser {
        pub fn builder() -> builder::AddRoleTaskParamsAssignedToUser {
            Default::default()
        }
    }
    ///`AddRoleTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_role"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddRoleTaskParamsTaskType {
        #[serde(rename = "add_role")]
        AddRole,
    }
    impl ::std::fmt::Display for AddRoleTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddRole => f.write_str("add_role"),
            }
        }
    }
    impl ::std::str::FromStr for AddRoleTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_role" => Ok(Self::AddRole),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddRoleTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AddRoleTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AddRoleTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddSlackBookmarkTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "link",
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "link": {
    ///          "type": "string"
    ///        },
    ///        "title": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "playbook_id"
    ///      ],
    ///      "properties": {
    ///        "playbook_id": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "channel"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "emoji": {
    ///      "description": "The bookmark emoji",
    ///      "type": "string"
    ///    },
    ///    "link": {
    ///      "description": "The bookmark link. Required if not a playbook bookmark",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "playbook_id": {
    ///      "description": "The playbook id if bookmark is of an incident playbook",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_slack_bookmark"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The bookmark title. Required if not a playbook bookmark",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum AddSlackBookmarkTaskParams {
        Variant0 {
            channel: AddSlackBookmarkTaskParamsVariant0Channel,
            ///The bookmark emoji
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            emoji: ::std::option::Option<::std::string::String>,
            link: ::std::string::String,
            ///The playbook id if bookmark is of an incident playbook
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            playbook_id: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<AddSlackBookmarkTaskParamsVariant0TaskType>,
            title: ::std::string::String,
        },
        Variant1 {
            channel: AddSlackBookmarkTaskParamsVariant1Channel,
            ///The bookmark emoji
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            emoji: ::std::option::Option<::std::string::String>,
            ///The bookmark link. Required if not a playbook bookmark
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            link: ::std::option::Option<::std::string::String>,
            playbook_id: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<AddSlackBookmarkTaskParamsVariant1TaskType>,
            ///The bookmark title. Required if not a playbook bookmark
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            title: ::std::option::Option<::std::string::String>,
        },
    }
    ///`AddSlackBookmarkTaskParamsVariant0Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddSlackBookmarkTaskParamsVariant0Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddSlackBookmarkTaskParamsVariant0Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddSlackBookmarkTaskParamsVariant0Channel {
        pub fn builder() -> builder::AddSlackBookmarkTaskParamsVariant0Channel {
            Default::default()
        }
    }
    ///`AddSlackBookmarkTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_slack_bookmark"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddSlackBookmarkTaskParamsVariant0TaskType {
        #[serde(rename = "add_slack_bookmark")]
        AddSlackBookmark,
    }
    impl ::std::fmt::Display for AddSlackBookmarkTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddSlackBookmark => f.write_str("add_slack_bookmark"),
            }
        }
    }
    impl ::std::str::FromStr for AddSlackBookmarkTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_slack_bookmark" => Ok(Self::AddSlackBookmark),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddSlackBookmarkTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddSlackBookmarkTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddSlackBookmarkTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddSlackBookmarkTaskParamsVariant1Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddSlackBookmarkTaskParamsVariant1Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddSlackBookmarkTaskParamsVariant1Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddSlackBookmarkTaskParamsVariant1Channel {
        pub fn builder() -> builder::AddSlackBookmarkTaskParamsVariant1Channel {
            Default::default()
        }
    }
    ///`AddSlackBookmarkTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_slack_bookmark"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddSlackBookmarkTaskParamsVariant1TaskType {
        #[serde(rename = "add_slack_bookmark")]
        AddSlackBookmark,
    }
    impl ::std::fmt::Display for AddSlackBookmarkTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddSlackBookmark => f.write_str("add_slack_bookmark"),
            }
        }
    }
    impl ::std::str::FromStr for AddSlackBookmarkTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_slack_bookmark" => Ok(Self::AddSlackBookmark),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddSlackBookmarkTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddSlackBookmarkTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddSlackBookmarkTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddSubscribers`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "remove_users_with_no_private_incident_access": {
    ///              "description": "Users without read permissions for private incidents will be removed from the subscriber list of this incident",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_ids": {
    ///              "description": "IDs of users you wish to add to list of subscribers for this incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddSubscribers {
        pub data: AddSubscribersData,
    }
    impl AddSubscribers {
        pub fn builder() -> builder::AddSubscribers {
            Default::default()
        }
    }
    ///`AddSubscribersData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "remove_users_with_no_private_incident_access": {
    ///          "description": "Users without read permissions for private incidents will be removed from the subscriber list of this incident",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_ids": {
    ///          "description": "IDs of users you wish to add to list of subscribers for this incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddSubscribersData {
        pub attributes: AddSubscribersDataAttributes,
        #[serde(rename = "type")]
        pub type_: AddSubscribersDataType,
    }
    impl AddSubscribersData {
        pub fn builder() -> builder::AddSubscribersData {
            Default::default()
        }
    }
    ///`AddSubscribersDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "remove_users_with_no_private_incident_access": {
    ///      "description": "Users without read permissions for private incidents will be removed from the subscriber list of this incident",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_ids": {
    ///      "description": "IDs of users you wish to add to list of subscribers for this incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct AddSubscribersDataAttributes {
        ///Users without read permissions for private incidents will be removed from the subscriber list of this incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub remove_users_with_no_private_incident_access: ::std::option::Option<bool>,
        ///IDs of users you wish to add to list of subscribers for this incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default for AddSubscribersDataAttributes {
        fn default() -> Self {
            Self {
                remove_users_with_no_private_incident_access: Default::default(),
                user_ids: Default::default(),
            }
        }
    }
    impl AddSubscribersDataAttributes {
        pub fn builder() -> builder::AddSubscribersDataAttributes {
            Default::default()
        }
    }
    ///`AddSubscribersDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddSubscribersDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for AddSubscribersDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for AddSubscribersDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddSubscribersDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AddSubscribersDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AddSubscribersDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddTeamTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "group_id"
    ///  ],
    ///  "properties": {
    ///    "group_id": {
    ///      "description": "The team id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_team"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddTeamTaskParams {
        ///The team id
        pub group_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AddTeamTaskParamsTaskType>,
    }
    impl AddTeamTaskParams {
        pub fn builder() -> builder::AddTeamTaskParams {
            Default::default()
        }
    }
    ///`AddTeamTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddTeamTaskParamsTaskType {
        #[serde(rename = "add_team")]
        AddTeam,
    }
    impl ::std::fmt::Display for AddTeamTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddTeam => f.write_str("add_team"),
            }
        }
    }
    impl ::std::str::FromStr for AddTeamTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_team" => Ok(Self::AddTeam),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddTeamTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AddTeamTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AddTeamTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AddToTimelineTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "event"
    ///  ],
    ///  "properties": {
    ///    "event": {
    ///      "description": "The timeline event description",
    ///      "type": "string"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "add_to_timeline"
    ///      ]
    ///    },
    ///    "url": {
    ///      "description": "A URL for the timeline event",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddToTimelineTaskParams {
        ///The timeline event description
        pub event: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            AddToTimelineTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AddToTimelineTaskParamsTaskType>,
        ///A URL for the timeline event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub url: ::std::option::Option<::std::string::String>,
    }
    impl AddToTimelineTaskParams {
        pub fn builder() -> builder::AddToTimelineTaskParams {
            Default::default()
        }
    }
    ///`AddToTimelineTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AddToTimelineTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AddToTimelineTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AddToTimelineTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::AddToTimelineTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`AddToTimelineTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "add_to_timeline"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AddToTimelineTaskParamsTaskType {
        #[serde(rename = "add_to_timeline")]
        AddToTimeline,
    }
    impl ::std::fmt::Display for AddToTimelineTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AddToTimeline => f.write_str("add_to_timeline"),
            }
        }
    }
    impl ::std::str::FromStr for AddToTimelineTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "add_to_timeline" => Ok(Self::AddToTimeline),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AddToTimelineTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AddToTimelineTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AddToTimelineTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Alert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "short_id",
    ///    "source",
    ///    "summary",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alert_field_values_attributes": {
    ///      "description": "Custom alert field values to create with the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "alert_field_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "description": "ID of the custom alert field",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value for the alert field",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The ID of the alert urgency",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "data": {
    ///      "description": "Additional data",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "deduplication_key": {
    ///      "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "ended_at": {
    ///      "description": "When the alert ended",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "environments": {
    ///      "description": "Environments attached to the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/environment"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "external_id": {
    ///      "description": "External ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_url": {
    ///      "description": "External Url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionalities": {
    ///      "description": "Functionalities attached to the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/functionality"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "The Group IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Group. This field will be automatically set for you.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_leader_alert_id": {
    ///      "description": "The ID of the group leader alert",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "groups": {
    ///      "description": "Groups attached to the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/team"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "is_group_leader_alert": {
    ///      "description": "Whether the alert is a group leader alert",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the tag",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the tag",
    ///            "oneOf": [
    ///              {
    ///                "type": "string"
    ///              },
    ///              {
    ///                "type": "number"
    ///              },
    ///              {
    ///                "type": "boolean"
    ///              }
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "noise": {
    ///      "description": "Whether the alert is marked as noise",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "noise",
    ///        "not_noise"
    ///      ]
    ///    },
    ///    "notification_target_id": {
    ///      "description": "Only available for organizations with Rootly On-Call enabled. The identifier of the notification target object.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "notification_target_type": {
    ///      "description": "Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "User",
    ///        "Group",
    ///        "EscalationPolicy",
    ///        "Service",
    ///        "Functionality"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Service. This field will be automatically set for you.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "services": {
    ///      "description": "Services attached to the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/service"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "short_id": {
    ///      "description": "Human-readable short identifier for the alert",
    ///      "type": "string"
    ///    },
    ///    "source": {
    ///      "description": "The source of the alert",
    ///      "type": "string",
    ///      "enum": [
    ///        "rootly",
    ///        "manual",
    ///        "api",
    ///        "heartbeat",
    ///        "web",
    ///        "slack",
    ///        "email",
    ///        "workflow",
    ///        "live_call_routing",
    ///        "mobile",
    ///        "google_chat",
    ///        "pagerduty",
    ///        "opsgenie",
    ///        "victorops",
    ///        "pagertree",
    ///        "datadog",
    ///        "dynatrace",
    ///        "nobl9",
    ///        "zendesk",
    ///        "asana",
    ///        "clickup",
    ///        "sentry",
    ///        "rollbar",
    ///        "jira",
    ///        "honeycomb",
    ///        "service_now",
    ///        "linear",
    ///        "grafana",
    ///        "alertmanager",
    ///        "google_cloud",
    ///        "generic_webhook",
    ///        "cloud_watch",
    ///        "aws_sns",
    ///        "azure",
    ///        "splunk",
    ///        "chronosphere",
    ///        "cloudflare",
    ///        "app_optics",
    ///        "bug_snag",
    ///        "monte_carlo",
    ///        "nagios",
    ///        "prtg",
    ///        "catchpoint",
    ///        "app_dynamics",
    ///        "checkly",
    ///        "new_relic",
    ///        "gitlab"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "When the alert started",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "status": {
    ///      "description": "The status of the alert",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "triggered",
    ///        "acknowledged",
    ///        "resolved",
    ///        "deferred"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the alert",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Alert {
        ///Custom alert field values to create with the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_field_values_attributes: ::std::vec::Vec<
            ::std::option::Option<AlertAlertFieldValuesAttributesItem>,
        >,
        ///The ID of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Additional data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Alerts sharing the same deduplication key are treated as a single alert.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key: ::std::option::Option<::std::string::String>,
        ///The description of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///When the alert ended
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The Environment IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Environments attached to the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environments: ::std::vec::Vec<Environment>,
        ///External ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///External Url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///Functionalities attached to the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionalities: ::std::vec::Vec<Functionality>,
        ///The Functionality IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Group IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Group. This field will be automatically set for you.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The ID of the group leader alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_leader_alert_id: ::std::option::Option<::std::string::String>,
        ///Groups attached to the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups: ::std::vec::Vec<Team>,
        ///Whether the alert is a group leader alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_group_leader_alert: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<::std::option::Option<AlertLabelsItem>>,
        ///Whether the alert is marked as noise
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub noise: ::std::option::Option<AlertNoise>,
        ///Only available for organizations with Rootly On-Call enabled. The identifier of the notification target object.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_target_id: ::std::option::Option<::std::string::String>,
        ///Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_target_type: ::std::option::Option<AlertNotificationTargetType>,
        ///The Service IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Service. This field will be automatically set for you.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Services attached to the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services: ::std::vec::Vec<Service>,
        ///Human-readable short identifier for the alert
        pub short_id: ::std::string::String,
        ///The source of the alert
        pub source: AlertSource,
        ///When the alert started
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The status of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<AlertStatus>,
        ///The summary of the alert
        pub summary: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Alert {
        pub fn builder() -> builder::Alert {
            Default::default()
        }
    }
    ///`AlertAlertFieldValuesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_field_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "description": "ID of the custom alert field",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value for the alert field",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertAlertFieldValuesAttributesItem {
        ///ID of the custom alert field
        pub alert_field_id: ::std::string::String,
        ///Value for the alert field
        pub value: ::std::string::String,
    }
    impl AlertAlertFieldValuesAttributesItem {
        pub fn builder() -> builder::AlertAlertFieldValuesAttributesItem {
            Default::default()
        }
    }
    ///`AlertEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "action",
    ///    "alert_id",
    ///    "created_at",
    ///    "kind",
    ///    "source",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "action": {
    ///      "type": "string",
    ///      "enum": [
    ///        "created",
    ///        "escalation_policy_paged",
    ///        "ignored_alert_request",
    ///        "emailed",
    ///        "slacked",
    ///        "ms_teams_messaged",
    ///        "google_chat_messaged",
    ///        "called",
    ///        "texted",
    ///        "notified",
    ///        "skipped",
    ///        "opened",
    ///        "retriggered",
    ///        "answered",
    ///        "acknowledged",
    ///        "escalated",
    ///        "paged",
    ///        "resolved",
    ///        "attached",
    ///        "snoozed",
    ///        "triggered",
    ///        "open",
    ///        "updated",
    ///        "added",
    ///        "removed",
    ///        "marked",
    ///        "not_marked",
    ///        "muted",
    ///        "deferred"
    ///      ]
    ///    },
    ///    "alert_id": {
    ///      "description": "ID of the alert this event belongs to.",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "details": {
    ///      "description": "Note message.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "informational",
    ///        "notification",
    ///        "action",
    ///        "status_update",
    ///        "recording",
    ///        "alert_grouping",
    ///        "alert_urgency",
    ///        "alert_routing",
    ///        "note",
    ///        "noise",
    ///        "maintenance",
    ///        "deferral"
    ///      ]
    ///    },
    ///    "source": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "Author of the note.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEvent {
        pub action: AlertEventAction,
        ///ID of the alert this event belongs to.
        pub alert_id: ::std::string::String,
        pub created_at: ::std::string::String,
        ///Note message.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub details: ::std::option::Option<::std::string::String>,
        pub kind: AlertEventKind,
        pub source: ::std::string::String,
        pub updated_at: ::std::string::String,
        ///Author of the note.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl AlertEvent {
        pub fn builder() -> builder::AlertEvent {
            Default::default()
        }
    }
    ///`AlertEventAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created",
    ///    "escalation_policy_paged",
    ///    "ignored_alert_request",
    ///    "emailed",
    ///    "slacked",
    ///    "ms_teams_messaged",
    ///    "google_chat_messaged",
    ///    "called",
    ///    "texted",
    ///    "notified",
    ///    "skipped",
    ///    "opened",
    ///    "retriggered",
    ///    "answered",
    ///    "acknowledged",
    ///    "escalated",
    ///    "paged",
    ///    "resolved",
    ///    "attached",
    ///    "snoozed",
    ///    "triggered",
    ///    "open",
    ///    "updated",
    ///    "added",
    ///    "removed",
    ///    "marked",
    ///    "not_marked",
    ///    "muted",
    ///    "deferred"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertEventAction {
        #[serde(rename = "created")]
        Created,
        #[serde(rename = "escalation_policy_paged")]
        EscalationPolicyPaged,
        #[serde(rename = "ignored_alert_request")]
        IgnoredAlertRequest,
        #[serde(rename = "emailed")]
        Emailed,
        #[serde(rename = "slacked")]
        Slacked,
        #[serde(rename = "ms_teams_messaged")]
        MsTeamsMessaged,
        #[serde(rename = "google_chat_messaged")]
        GoogleChatMessaged,
        #[serde(rename = "called")]
        Called,
        #[serde(rename = "texted")]
        Texted,
        #[serde(rename = "notified")]
        Notified,
        #[serde(rename = "skipped")]
        Skipped,
        #[serde(rename = "opened")]
        Opened,
        #[serde(rename = "retriggered")]
        Retriggered,
        #[serde(rename = "answered")]
        Answered,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "escalated")]
        Escalated,
        #[serde(rename = "paged")]
        Paged,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "attached")]
        Attached,
        #[serde(rename = "snoozed")]
        Snoozed,
        #[serde(rename = "triggered")]
        Triggered,
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "updated")]
        Updated,
        #[serde(rename = "added")]
        Added,
        #[serde(rename = "removed")]
        Removed,
        #[serde(rename = "marked")]
        Marked,
        #[serde(rename = "not_marked")]
        NotMarked,
        #[serde(rename = "muted")]
        Muted,
        #[serde(rename = "deferred")]
        Deferred,
    }
    impl ::std::fmt::Display for AlertEventAction {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Created => f.write_str("created"),
                Self::EscalationPolicyPaged => f.write_str("escalation_policy_paged"),
                Self::IgnoredAlertRequest => f.write_str("ignored_alert_request"),
                Self::Emailed => f.write_str("emailed"),
                Self::Slacked => f.write_str("slacked"),
                Self::MsTeamsMessaged => f.write_str("ms_teams_messaged"),
                Self::GoogleChatMessaged => f.write_str("google_chat_messaged"),
                Self::Called => f.write_str("called"),
                Self::Texted => f.write_str("texted"),
                Self::Notified => f.write_str("notified"),
                Self::Skipped => f.write_str("skipped"),
                Self::Opened => f.write_str("opened"),
                Self::Retriggered => f.write_str("retriggered"),
                Self::Answered => f.write_str("answered"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Escalated => f.write_str("escalated"),
                Self::Paged => f.write_str("paged"),
                Self::Resolved => f.write_str("resolved"),
                Self::Attached => f.write_str("attached"),
                Self::Snoozed => f.write_str("snoozed"),
                Self::Triggered => f.write_str("triggered"),
                Self::Open => f.write_str("open"),
                Self::Updated => f.write_str("updated"),
                Self::Added => f.write_str("added"),
                Self::Removed => f.write_str("removed"),
                Self::Marked => f.write_str("marked"),
                Self::NotMarked => f.write_str("not_marked"),
                Self::Muted => f.write_str("muted"),
                Self::Deferred => f.write_str("deferred"),
            }
        }
    }
    impl ::std::str::FromStr for AlertEventAction {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created" => Ok(Self::Created),
                "escalation_policy_paged" => Ok(Self::EscalationPolicyPaged),
                "ignored_alert_request" => Ok(Self::IgnoredAlertRequest),
                "emailed" => Ok(Self::Emailed),
                "slacked" => Ok(Self::Slacked),
                "ms_teams_messaged" => Ok(Self::MsTeamsMessaged),
                "google_chat_messaged" => Ok(Self::GoogleChatMessaged),
                "called" => Ok(Self::Called),
                "texted" => Ok(Self::Texted),
                "notified" => Ok(Self::Notified),
                "skipped" => Ok(Self::Skipped),
                "opened" => Ok(Self::Opened),
                "retriggered" => Ok(Self::Retriggered),
                "answered" => Ok(Self::Answered),
                "acknowledged" => Ok(Self::Acknowledged),
                "escalated" => Ok(Self::Escalated),
                "paged" => Ok(Self::Paged),
                "resolved" => Ok(Self::Resolved),
                "attached" => Ok(Self::Attached),
                "snoozed" => Ok(Self::Snoozed),
                "triggered" => Ok(Self::Triggered),
                "open" => Ok(Self::Open),
                "updated" => Ok(Self::Updated),
                "added" => Ok(Self::Added),
                "removed" => Ok(Self::Removed),
                "marked" => Ok(Self::Marked),
                "not_marked" => Ok(Self::NotMarked),
                "muted" => Ok(Self::Muted),
                "deferred" => Ok(Self::Deferred),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertEventAction {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertEventAction {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertEventAction {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertEventFeedList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_event"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert event",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_events"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_event_feed_meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventFeedList {
        pub data: ::std::vec::Vec<AlertEventFeedListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        pub meta: AlertEventFeedMeta,
    }
    impl AlertEventFeedList {
        pub fn builder() -> builder::AlertEventFeedList {
            Default::default()
        }
    }
    ///`AlertEventFeedListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventFeedListDataItem {
        pub attributes: AlertEvent,
        ///Unique ID of the alert event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertEventFeedListDataItemType,
    }
    impl AlertEventFeedListDataItem {
        pub fn builder() -> builder::AlertEventFeedListDataItem {
            Default::default()
        }
    }
    ///`AlertEventFeedListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertEventFeedListDataItemType {
        #[serde(rename = "alert_events")]
        AlertEvents,
    }
    impl ::std::fmt::Display for AlertEventFeedListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertEvents => f.write_str("alert_events"),
            }
        }
    }
    impl ::std::str::FromStr for AlertEventFeedListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_events" => Ok(Self::AlertEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertEventFeedListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertEventFeedListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertEventFeedListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Cursor-pagination meta. `total_count` and `total_pages` are nullable because the feed does not run a COUNT query.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Cursor-pagination meta. `total_count` and `total_pages` are nullable because the feed does not run a COUNT query.",
    ///  "type": "object",
    ///  "required": [
    ///    "next_cursor"
    ///  ],
    ///  "properties": {
    ///    "current_page": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "next_cursor": {
    ///      "description": "Pass as `page[after]` on the next request to fetch the following page.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "next_page": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "prev_page": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "total_count": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "total_pages": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventFeedMeta {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub current_page: ::std::option::Option<i64>,
        ///Pass as `page[after]` on the next request to fetch the following page.
        pub next_cursor: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub next_page: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub prev_page: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub total_count: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub total_pages: ::std::option::Option<i64>,
    }
    impl AlertEventFeedMeta {
        pub fn builder() -> builder::AlertEventFeedMeta {
            Default::default()
        }
    }
    ///`AlertEventKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "informational",
    ///    "notification",
    ///    "action",
    ///    "status_update",
    ///    "recording",
    ///    "alert_grouping",
    ///    "alert_urgency",
    ///    "alert_routing",
    ///    "note",
    ///    "noise",
    ///    "maintenance",
    ///    "deferral"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertEventKind {
        #[serde(rename = "informational")]
        Informational,
        #[serde(rename = "notification")]
        Notification,
        #[serde(rename = "action")]
        Action,
        #[serde(rename = "status_update")]
        StatusUpdate,
        #[serde(rename = "recording")]
        Recording,
        #[serde(rename = "alert_grouping")]
        AlertGrouping,
        #[serde(rename = "alert_urgency")]
        AlertUrgency,
        #[serde(rename = "alert_routing")]
        AlertRouting,
        #[serde(rename = "note")]
        Note,
        #[serde(rename = "noise")]
        Noise,
        #[serde(rename = "maintenance")]
        Maintenance,
        #[serde(rename = "deferral")]
        Deferral,
    }
    impl ::std::fmt::Display for AlertEventKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Informational => f.write_str("informational"),
                Self::Notification => f.write_str("notification"),
                Self::Action => f.write_str("action"),
                Self::StatusUpdate => f.write_str("status_update"),
                Self::Recording => f.write_str("recording"),
                Self::AlertGrouping => f.write_str("alert_grouping"),
                Self::AlertUrgency => f.write_str("alert_urgency"),
                Self::AlertRouting => f.write_str("alert_routing"),
                Self::Note => f.write_str("note"),
                Self::Noise => f.write_str("noise"),
                Self::Maintenance => f.write_str("maintenance"),
                Self::Deferral => f.write_str("deferral"),
            }
        }
    }
    impl ::std::str::FromStr for AlertEventKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "informational" => Ok(Self::Informational),
                "notification" => Ok(Self::Notification),
                "action" => Ok(Self::Action),
                "status_update" => Ok(Self::StatusUpdate),
                "recording" => Ok(Self::Recording),
                "alert_grouping" => Ok(Self::AlertGrouping),
                "alert_urgency" => Ok(Self::AlertUrgency),
                "alert_routing" => Ok(Self::AlertRouting),
                "note" => Ok(Self::Note),
                "noise" => Ok(Self::Noise),
                "maintenance" => Ok(Self::Maintenance),
                "deferral" => Ok(Self::Deferral),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertEventKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertEventKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertEventKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertEventList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_event"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert event",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_events"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventList {
        pub data: ::std::vec::Vec<AlertEventListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertEventList {
        pub fn builder() -> builder::AlertEventList {
            Default::default()
        }
    }
    ///`AlertEventListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventListDataItem {
        pub attributes: AlertEvent,
        ///Unique ID of the alert event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertEventListDataItemType,
    }
    impl AlertEventListDataItem {
        pub fn builder() -> builder::AlertEventListDataItem {
            Default::default()
        }
    }
    ///`AlertEventListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertEventListDataItemType {
        #[serde(rename = "alert_events")]
        AlertEvents,
    }
    impl ::std::fmt::Display for AlertEventListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertEvents => f.write_str("alert_events"),
            }
        }
    }
    impl ::std::str::FromStr for AlertEventListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_events" => Ok(Self::AlertEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertEventResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert_event"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert event",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_events"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventResponse {
        pub data: AlertEventResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertEventResponse {
        pub fn builder() -> builder::AlertEventResponse {
            Default::default()
        }
    }
    ///`AlertEventResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertEventResponseData {
        pub attributes: AlertEvent,
        ///Unique ID of the alert event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertEventResponseDataType,
    }
    impl AlertEventResponseData {
        pub fn builder() -> builder::AlertEventResponseData {
            Default::default()
        }
    }
    ///`AlertEventResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertEventResponseDataType {
        #[serde(rename = "alert_events")]
        AlertEvents,
    }
    impl ::std::fmt::Display for AlertEventResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertEvents => f.write_str("alert_events"),
            }
        }
    }
    impl ::std::str::FromStr for AlertEventResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_events" => Ok(Self::AlertEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "kind",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The kind of alert field",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert field",
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the alert field",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertField {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The kind of alert field
        pub kind: ::std::string::String,
        ///The name of the alert field
        pub name: ::std::string::String,
        ///The slug of the alert field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl AlertField {
        pub fn builder() -> builder::AlertField {
            Default::default()
        }
    }
    ///`AlertFieldList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_field"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "The ID of the alert field",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_fields"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertFieldList {
        pub data: ::std::vec::Vec<AlertFieldListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertFieldList {
        pub fn builder() -> builder::AlertFieldList {
            Default::default()
        }
    }
    ///`AlertFieldListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "The ID of the alert field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertFieldListDataItem {
        pub attributes: AlertField,
        ///The ID of the alert field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertFieldListDataItemType,
    }
    impl AlertFieldListDataItem {
        pub fn builder() -> builder::AlertFieldListDataItem {
            Default::default()
        }
    }
    ///`AlertFieldListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertFieldListDataItemType {
        #[serde(rename = "alert_fields")]
        AlertFields,
    }
    impl ::std::fmt::Display for AlertFieldListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertFields => f.write_str("alert_fields"),
            }
        }
    }
    impl ::std::str::FromStr for AlertFieldListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_fields" => Ok(Self::AlertFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertFieldResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert_field"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "The ID of the alert field",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_fields"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertFieldResponse {
        pub data: AlertFieldResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertFieldResponse {
        pub fn builder() -> builder::AlertFieldResponse {
            Default::default()
        }
    }
    ///`AlertFieldResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "The ID of the alert field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertFieldResponseData {
        pub attributes: AlertField,
        ///The ID of the alert field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(rename = "type")]
        pub type_: AlertFieldResponseDataType,
    }
    impl AlertFieldResponseData {
        pub fn builder() -> builder::AlertFieldResponseData {
            Default::default()
        }
    }
    ///`AlertFieldResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertFieldResponseDataType {
        #[serde(rename = "alert_fields")]
        AlertFields,
    }
    impl ::std::fmt::Display for AlertFieldResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertFields => f.write_str("alert_fields"),
            }
        }
    }
    impl ::std::str::FromStr for AlertFieldResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_fields" => Ok(Self::AlertFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "condition_type",
    ///    "created_at",
    ///    "deleted_at",
    ///    "description",
    ///    "name",
    ///    "time_window",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///      "deprecated": true,
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "json_path": {
    ///            "description": "The JSON path to the value to group by.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "condition_type": {
    ///      "description": "Grouping condition for the alert group",
    ///      "type": "string"
    ///    },
    ///    "conditions": {
    ///      "description": "The conditions for the alert group",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty",
    ///              "matches_existing_alert"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "values": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "record_id",
    ///                "record_type"
    ///              ],
    ///              "properties": {
    ///                "record_id": {
    ///                  "description": "ID of the Alert Urgency to set.",
    ///                  "type": "string"
    ///                },
    ///                "record_type": {
    ///                  "description": "Should be \"AlertUrgency\".",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "deleted_at": {
    ///      "description": "Date or deletion",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_by_alert_title": {
    ///      "description": "[DEPRECATED] Whether the alerts are grouped by title or not. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///      "deprecated": true,
    ///      "type": "boolean"
    ///    },
    ///    "group_by_alert_urgency": {
    ///      "description": "[DEPRECATED] Whether the alerts are grouped by urgency or not. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///      "deprecated": true,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert group",
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the alert group",
    ///      "type": "string"
    ///    },
    ///    "targets": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "target_id",
    ///          "target_type"
    ///        ],
    ///        "properties": {
    ///          "target_id": {
    ///            "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Group",
    ///              "Service",
    ///              "EscalationPolicy",
    ///              "Functionality"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "time_window": {
    ///      "description": "Time window for the alert grouping",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroup {
        ///This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub attributes: ::std::vec::Vec<AlertGroupAttributesItem>,
        ///Grouping condition for the alert group
        pub condition_type: ::std::string::String,
        ///The conditions for the alert group
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<AlertGroupConditionsItem>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Date or deletion
        pub deleted_at: ::std::option::Option<::std::string::String>,
        ///The description of the alert group
        pub description: ::std::option::Option<::std::string::String>,
        ///[DEPRECATED] Whether the alerts are grouped by title or not. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by_alert_title: ::std::option::Option<bool>,
        ///[DEPRECATED] Whether the alerts are grouped by urgency or not. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by_alert_urgency: ::std::option::Option<bool>,
        ///The name of the alert group
        pub name: ::std::string::String,
        ///The slug of the alert group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub targets: ::std::vec::Vec<AlertGroupTargetsItem>,
        ///Time window for the alert grouping
        pub time_window: i64,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl AlertGroup {
        pub fn builder() -> builder::AlertGroup {
            Default::default()
        }
    }
    ///`AlertGroupAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "json_path": {
    ///      "description": "The JSON path to the value to group by.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupAttributesItem {
        ///The JSON path to the value to group by.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AlertGroupAttributesItem {
        fn default() -> Self {
            Self {
                json_path: Default::default(),
            }
        }
    }
    impl AlertGroupAttributesItem {
        pub fn builder() -> builder::AlertGroupAttributesItem {
            Default::default()
        }
    }
    ///`AlertGroupConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty",
    ///        "matches_existing_alert"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "record_id",
    ///          "record_type"
    ///        ],
    ///        "properties": {
    ///          "record_id": {
    ///            "description": "ID of the Alert Urgency to set.",
    ///            "type": "string"
    ///          },
    ///          "record_type": {
    ///            "description": "Should be \"AlertUrgency\".",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupConditionsItem {
        ///The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            AlertGroupConditionsItemConditionableType,
        >,
        ///The condition type of the property field
        pub property_field_condition_type: AlertGroupConditionsItemPropertyFieldConditionType,
        ///The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        ///The type of the property field
        pub property_field_type: AlertGroupConditionsItemPropertyFieldType,
        ///The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub property_field_values: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<
            ::std::option::Option<AlertGroupConditionsItemValuesItem>,
        >,
    }
    impl AlertGroupConditionsItem {
        pub fn builder() -> builder::AlertGroupConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertGroupConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display for AlertGroupConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr for AlertGroupConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertGroupConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertGroupConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertGroupConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty",
    ///    "matches_existing_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertGroupConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
        #[serde(rename = "matches_existing_alert")]
        MatchesExistingAlert,
    }
    impl ::std::fmt::Display for AlertGroupConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
                Self::MatchesExistingAlert => f.write_str("matches_existing_alert"),
            }
        }
    }
    impl ::std::str::FromStr for AlertGroupConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                "matches_existing_alert" => Ok(Self::MatchesExistingAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertGroupConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertGroupConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertGroupConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertGroupConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display for AlertGroupConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr for AlertGroupConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertGroupConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertGroupConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertGroupConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertGroupConditionsItemValuesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "record_id",
    ///    "record_type"
    ///  ],
    ///  "properties": {
    ///    "record_id": {
    ///      "description": "ID of the Alert Urgency to set.",
    ///      "type": "string"
    ///    },
    ///    "record_type": {
    ///      "description": "Should be \"AlertUrgency\".",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupConditionsItemValuesItem {
        ///ID of the Alert Urgency to set.
        pub record_id: ::std::string::String,
        ///Should be "AlertUrgency".
        pub record_type: ::std::string::String,
    }
    impl AlertGroupConditionsItemValuesItem {
        pub fn builder() -> builder::AlertGroupConditionsItemValuesItem {
            Default::default()
        }
    }
    ///`AlertGroupList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_group"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert group",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_groups"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupList {
        pub data: ::std::vec::Vec<AlertGroupListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertGroupList {
        pub fn builder() -> builder::AlertGroupList {
            Default::default()
        }
    }
    ///`AlertGroupListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupListDataItem {
        pub attributes: AlertGroup,
        ///Unique ID of the alert group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertGroupListDataItemType,
    }
    impl AlertGroupListDataItem {
        pub fn builder() -> builder::AlertGroupListDataItem {
            Default::default()
        }
    }
    ///`AlertGroupListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertGroupListDataItemType {
        #[serde(rename = "alert_groups")]
        AlertGroups,
    }
    impl ::std::fmt::Display for AlertGroupListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertGroups => f.write_str("alert_groups"),
            }
        }
    }
    impl ::std::str::FromStr for AlertGroupListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_groups" => Ok(Self::AlertGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertGroupResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert_group"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert group",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_groups"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupResponse {
        pub data: AlertGroupResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertGroupResponse {
        pub fn builder() -> builder::AlertGroupResponse {
            Default::default()
        }
    }
    ///`AlertGroupResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupResponseData {
        pub attributes: AlertGroup,
        ///Unique ID of the alert group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertGroupResponseDataType,
    }
    impl AlertGroupResponseData {
        pub fn builder() -> builder::AlertGroupResponseData {
            Default::default()
        }
    }
    ///`AlertGroupResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertGroupResponseDataType {
        #[serde(rename = "alert_groups")]
        AlertGroups,
    }
    impl ::std::fmt::Display for AlertGroupResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertGroups => f.write_str("alert_groups"),
            }
        }
    }
    impl ::std::str::FromStr for AlertGroupResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_groups" => Ok(Self::AlertGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertGroupTargetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Group",
    ///        "Service",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertGroupTargetsItem {
        ///id for the Group, Service, EscalationPolicy or Functionality
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: AlertGroupTargetsItemTargetType,
    }
    impl AlertGroupTargetsItem {
        pub fn builder() -> builder::AlertGroupTargetsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Group",
    ///    "Service",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertGroupTargetsItemTargetType {
        Group,
        Service,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for AlertGroupTargetsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Group => f.write_str("Group"),
                Self::Service => f.write_str("Service"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for AlertGroupTargetsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Group" => Ok(Self::Group),
                "Service" => Ok(Self::Service),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertGroupTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertGroupTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertGroupTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the tag",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the tag",
    ///      "oneOf": [
    ///        {
    ///          "type": "string"
    ///        },
    ///        {
    ///          "type": "number"
    ///        },
    ///        {
    ///          "type": "boolean"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertLabelsItem {
        ///Key of the tag
        pub key: ::std::string::String,
        ///Value of the tag
        pub value: AlertLabelsItemValue,
    }
    impl AlertLabelsItem {
        pub fn builder() -> builder::AlertLabelsItem {
            Default::default()
        }
    }
    ///Value of the tag
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Value of the tag",
    ///  "oneOf": [
    ///    {
    ///      "type": "string"
    ///    },
    ///    {
    ///      "type": "number"
    ///    },
    ///    {
    ///      "type": "boolean"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum AlertLabelsItemValue {
        String(::std::string::String),
        Number(f64),
        Boolean(bool),
    }
    impl ::std::fmt::Display for AlertLabelsItemValue {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match self {
                Self::String(x) => x.fmt(f),
                Self::Number(x) => x.fmt(f),
                Self::Boolean(x) => x.fmt(f),
            }
        }
    }
    impl ::std::convert::From<f64> for AlertLabelsItemValue {
        fn from(value: f64) -> Self {
            Self::Number(value)
        }
    }
    impl ::std::convert::From<bool> for AlertLabelsItemValue {
        fn from(value: bool) -> Self {
            Self::Boolean(value)
        }
    }
    ///`AlertList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert",
    ///            "type": "string"
    ///          },
    ///          "source": {
    ///            "description": "The source of the alert",
    ///            "type": "string",
    ///            "enum": [
    ///              "rootly",
    ///              "manual",
    ///              "api",
    ///              "heartbeat",
    ///              "web",
    ///              "slack",
    ///              "email",
    ///              "workflow",
    ///              "live_call_routing",
    ///              "mobile",
    ///              "google_chat",
    ///              "pagerduty",
    ///              "opsgenie",
    ///              "victorops",
    ///              "pagertree",
    ///              "datadog",
    ///              "dynatrace",
    ///              "nobl9",
    ///              "zendesk",
    ///              "asana",
    ///              "clickup",
    ///              "sentry",
    ///              "rollbar",
    ///              "jira",
    ///              "honeycomb",
    ///              "service_now",
    ///              "linear",
    ///              "grafana",
    ///              "alertmanager",
    ///              "google_cloud",
    ///              "generic_webhook",
    ///              "cloud_watch",
    ///              "aws_sns",
    ///              "azure",
    ///              "splunk",
    ///              "chronosphere",
    ///              "cloudflare",
    ///              "app_optics",
    ///              "bug_snag",
    ///              "monte_carlo",
    ///              "nagios",
    ///              "prtg",
    ///              "catchpoint",
    ///              "app_dynamics",
    ///              "checkly",
    ///              "new_relic",
    ///              "gitlab"
    ///            ]
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alerts"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertList {
        pub data: ::std::vec::Vec<AlertListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertList {
        pub fn builder() -> builder::AlertList {
            Default::default()
        }
    }
    ///`AlertListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert",
    ///      "type": "string"
    ///    },
    ///    "source": {
    ///      "description": "The source of the alert",
    ///      "type": "string",
    ///      "enum": [
    ///        "rootly",
    ///        "manual",
    ///        "api",
    ///        "heartbeat",
    ///        "web",
    ///        "slack",
    ///        "email",
    ///        "workflow",
    ///        "live_call_routing",
    ///        "mobile",
    ///        "google_chat",
    ///        "pagerduty",
    ///        "opsgenie",
    ///        "victorops",
    ///        "pagertree",
    ///        "datadog",
    ///        "dynatrace",
    ///        "nobl9",
    ///        "zendesk",
    ///        "asana",
    ///        "clickup",
    ///        "sentry",
    ///        "rollbar",
    ///        "jira",
    ///        "honeycomb",
    ///        "service_now",
    ///        "linear",
    ///        "grafana",
    ///        "alertmanager",
    ///        "google_cloud",
    ///        "generic_webhook",
    ///        "cloud_watch",
    ///        "aws_sns",
    ///        "azure",
    ///        "splunk",
    ///        "chronosphere",
    ///        "cloudflare",
    ///        "app_optics",
    ///        "bug_snag",
    ///        "monte_carlo",
    ///        "nagios",
    ///        "prtg",
    ///        "catchpoint",
    ///        "app_dynamics",
    ///        "checkly",
    ///        "new_relic",
    ///        "gitlab"
    ///      ]
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertListDataItem {
        pub attributes: Alert,
        ///Unique ID of the alert
        pub id: ::std::string::String,
        ///The source of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<AlertListDataItemSource>,
        #[serde(rename = "type")]
        pub type_: AlertListDataItemType,
    }
    impl AlertListDataItem {
        pub fn builder() -> builder::AlertListDataItem {
            Default::default()
        }
    }
    ///The source of the alert
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The source of the alert",
    ///  "type": "string",
    ///  "enum": [
    ///    "rootly",
    ///    "manual",
    ///    "api",
    ///    "heartbeat",
    ///    "web",
    ///    "slack",
    ///    "email",
    ///    "workflow",
    ///    "live_call_routing",
    ///    "mobile",
    ///    "google_chat",
    ///    "pagerduty",
    ///    "opsgenie",
    ///    "victorops",
    ///    "pagertree",
    ///    "datadog",
    ///    "dynatrace",
    ///    "nobl9",
    ///    "zendesk",
    ///    "asana",
    ///    "clickup",
    ///    "sentry",
    ///    "rollbar",
    ///    "jira",
    ///    "honeycomb",
    ///    "service_now",
    ///    "linear",
    ///    "grafana",
    ///    "alertmanager",
    ///    "google_cloud",
    ///    "generic_webhook",
    ///    "cloud_watch",
    ///    "aws_sns",
    ///    "azure",
    ///    "splunk",
    ///    "chronosphere",
    ///    "cloudflare",
    ///    "app_optics",
    ///    "bug_snag",
    ///    "monte_carlo",
    ///    "nagios",
    ///    "prtg",
    ///    "catchpoint",
    ///    "app_dynamics",
    ///    "checkly",
    ///    "new_relic",
    ///    "gitlab"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertListDataItemSource {
        #[serde(rename = "rootly")]
        Rootly,
        #[serde(rename = "manual")]
        Manual,
        #[serde(rename = "api")]
        Api,
        #[serde(rename = "heartbeat")]
        Heartbeat,
        #[serde(rename = "web")]
        Web,
        #[serde(rename = "slack")]
        Slack,
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "workflow")]
        Workflow,
        #[serde(rename = "live_call_routing")]
        LiveCallRouting,
        #[serde(rename = "mobile")]
        Mobile,
        #[serde(rename = "google_chat")]
        GoogleChat,
        #[serde(rename = "pagerduty")]
        Pagerduty,
        #[serde(rename = "opsgenie")]
        Opsgenie,
        #[serde(rename = "victorops")]
        Victorops,
        #[serde(rename = "pagertree")]
        Pagertree,
        #[serde(rename = "datadog")]
        Datadog,
        #[serde(rename = "dynatrace")]
        Dynatrace,
        #[serde(rename = "nobl9")]
        Nobl9,
        #[serde(rename = "zendesk")]
        Zendesk,
        #[serde(rename = "asana")]
        Asana,
        #[serde(rename = "clickup")]
        Clickup,
        #[serde(rename = "sentry")]
        Sentry,
        #[serde(rename = "rollbar")]
        Rollbar,
        #[serde(rename = "jira")]
        Jira,
        #[serde(rename = "honeycomb")]
        Honeycomb,
        #[serde(rename = "service_now")]
        ServiceNow,
        #[serde(rename = "linear")]
        Linear,
        #[serde(rename = "grafana")]
        Grafana,
        #[serde(rename = "alertmanager")]
        Alertmanager,
        #[serde(rename = "google_cloud")]
        GoogleCloud,
        #[serde(rename = "generic_webhook")]
        GenericWebhook,
        #[serde(rename = "cloud_watch")]
        CloudWatch,
        #[serde(rename = "aws_sns")]
        AwsSns,
        #[serde(rename = "azure")]
        Azure,
        #[serde(rename = "splunk")]
        Splunk,
        #[serde(rename = "chronosphere")]
        Chronosphere,
        #[serde(rename = "cloudflare")]
        Cloudflare,
        #[serde(rename = "app_optics")]
        AppOptics,
        #[serde(rename = "bug_snag")]
        BugSnag,
        #[serde(rename = "monte_carlo")]
        MonteCarlo,
        #[serde(rename = "nagios")]
        Nagios,
        #[serde(rename = "prtg")]
        Prtg,
        #[serde(rename = "catchpoint")]
        Catchpoint,
        #[serde(rename = "app_dynamics")]
        AppDynamics,
        #[serde(rename = "checkly")]
        Checkly,
        #[serde(rename = "new_relic")]
        NewRelic,
        #[serde(rename = "gitlab")]
        Gitlab,
    }
    impl ::std::fmt::Display for AlertListDataItemSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Rootly => f.write_str("rootly"),
                Self::Manual => f.write_str("manual"),
                Self::Api => f.write_str("api"),
                Self::Heartbeat => f.write_str("heartbeat"),
                Self::Web => f.write_str("web"),
                Self::Slack => f.write_str("slack"),
                Self::Email => f.write_str("email"),
                Self::Workflow => f.write_str("workflow"),
                Self::LiveCallRouting => f.write_str("live_call_routing"),
                Self::Mobile => f.write_str("mobile"),
                Self::GoogleChat => f.write_str("google_chat"),
                Self::Pagerduty => f.write_str("pagerduty"),
                Self::Opsgenie => f.write_str("opsgenie"),
                Self::Victorops => f.write_str("victorops"),
                Self::Pagertree => f.write_str("pagertree"),
                Self::Datadog => f.write_str("datadog"),
                Self::Dynatrace => f.write_str("dynatrace"),
                Self::Nobl9 => f.write_str("nobl9"),
                Self::Zendesk => f.write_str("zendesk"),
                Self::Asana => f.write_str("asana"),
                Self::Clickup => f.write_str("clickup"),
                Self::Sentry => f.write_str("sentry"),
                Self::Rollbar => f.write_str("rollbar"),
                Self::Jira => f.write_str("jira"),
                Self::Honeycomb => f.write_str("honeycomb"),
                Self::ServiceNow => f.write_str("service_now"),
                Self::Linear => f.write_str("linear"),
                Self::Grafana => f.write_str("grafana"),
                Self::Alertmanager => f.write_str("alertmanager"),
                Self::GoogleCloud => f.write_str("google_cloud"),
                Self::GenericWebhook => f.write_str("generic_webhook"),
                Self::CloudWatch => f.write_str("cloud_watch"),
                Self::AwsSns => f.write_str("aws_sns"),
                Self::Azure => f.write_str("azure"),
                Self::Splunk => f.write_str("splunk"),
                Self::Chronosphere => f.write_str("chronosphere"),
                Self::Cloudflare => f.write_str("cloudflare"),
                Self::AppOptics => f.write_str("app_optics"),
                Self::BugSnag => f.write_str("bug_snag"),
                Self::MonteCarlo => f.write_str("monte_carlo"),
                Self::Nagios => f.write_str("nagios"),
                Self::Prtg => f.write_str("prtg"),
                Self::Catchpoint => f.write_str("catchpoint"),
                Self::AppDynamics => f.write_str("app_dynamics"),
                Self::Checkly => f.write_str("checkly"),
                Self::NewRelic => f.write_str("new_relic"),
                Self::Gitlab => f.write_str("gitlab"),
            }
        }
    }
    impl ::std::str::FromStr for AlertListDataItemSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "rootly" => Ok(Self::Rootly),
                "manual" => Ok(Self::Manual),
                "api" => Ok(Self::Api),
                "heartbeat" => Ok(Self::Heartbeat),
                "web" => Ok(Self::Web),
                "slack" => Ok(Self::Slack),
                "email" => Ok(Self::Email),
                "workflow" => Ok(Self::Workflow),
                "live_call_routing" => Ok(Self::LiveCallRouting),
                "mobile" => Ok(Self::Mobile),
                "google_chat" => Ok(Self::GoogleChat),
                "pagerduty" => Ok(Self::Pagerduty),
                "opsgenie" => Ok(Self::Opsgenie),
                "victorops" => Ok(Self::Victorops),
                "pagertree" => Ok(Self::Pagertree),
                "datadog" => Ok(Self::Datadog),
                "dynatrace" => Ok(Self::Dynatrace),
                "nobl9" => Ok(Self::Nobl9),
                "zendesk" => Ok(Self::Zendesk),
                "asana" => Ok(Self::Asana),
                "clickup" => Ok(Self::Clickup),
                "sentry" => Ok(Self::Sentry),
                "rollbar" => Ok(Self::Rollbar),
                "jira" => Ok(Self::Jira),
                "honeycomb" => Ok(Self::Honeycomb),
                "service_now" => Ok(Self::ServiceNow),
                "linear" => Ok(Self::Linear),
                "grafana" => Ok(Self::Grafana),
                "alertmanager" => Ok(Self::Alertmanager),
                "google_cloud" => Ok(Self::GoogleCloud),
                "generic_webhook" => Ok(Self::GenericWebhook),
                "cloud_watch" => Ok(Self::CloudWatch),
                "aws_sns" => Ok(Self::AwsSns),
                "azure" => Ok(Self::Azure),
                "splunk" => Ok(Self::Splunk),
                "chronosphere" => Ok(Self::Chronosphere),
                "cloudflare" => Ok(Self::Cloudflare),
                "app_optics" => Ok(Self::AppOptics),
                "bug_snag" => Ok(Self::BugSnag),
                "monte_carlo" => Ok(Self::MonteCarlo),
                "nagios" => Ok(Self::Nagios),
                "prtg" => Ok(Self::Prtg),
                "catchpoint" => Ok(Self::Catchpoint),
                "app_dynamics" => Ok(Self::AppDynamics),
                "checkly" => Ok(Self::Checkly),
                "new_relic" => Ok(Self::NewRelic),
                "gitlab" => Ok(Self::Gitlab),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertListDataItemSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertListDataItemSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertListDataItemSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertListDataItemType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for AlertListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for AlertListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Whether the alert is marked as noise
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Whether the alert is marked as noise",
    ///  "type": "string",
    ///  "enum": [
    ///    "noise",
    ///    "not_noise"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertNoise {
        #[serde(rename = "noise")]
        Noise,
        #[serde(rename = "not_noise")]
        NotNoise,
    }
    impl ::std::fmt::Display for AlertNoise {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Noise => f.write_str("noise"),
                Self::NotNoise => f.write_str("not_noise"),
            }
        }
    }
    impl ::std::str::FromStr for AlertNoise {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "noise" => Ok(Self::Noise),
                "not_noise" => Ok(Self::NotNoise),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Group",
    ///    "EscalationPolicy",
    ///    "Service",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertNotificationTargetType {
        User,
        Group,
        EscalationPolicy,
        Service,
        Functionality,
    }
    impl ::std::fmt::Display for AlertNotificationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Group => f.write_str("Group"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Service => f.write_str("Service"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for AlertNotificationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Group" => Ok(Self::Group),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Service" => Ok(Self::Service),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert",
    ///          "type": "string"
    ///        },
    ///        "source": {
    ///          "description": "The source of the alert",
    ///          "type": "string",
    ///          "enum": [
    ///            "rootly",
    ///            "manual",
    ///            "api",
    ///            "heartbeat",
    ///            "web",
    ///            "slack",
    ///            "email",
    ///            "workflow",
    ///            "live_call_routing",
    ///            "mobile",
    ///            "google_chat",
    ///            "pagerduty",
    ///            "opsgenie",
    ///            "victorops",
    ///            "pagertree",
    ///            "datadog",
    ///            "dynatrace",
    ///            "nobl9",
    ///            "zendesk",
    ///            "asana",
    ///            "clickup",
    ///            "sentry",
    ///            "rollbar",
    ///            "jira",
    ///            "honeycomb",
    ///            "service_now",
    ///            "linear",
    ///            "grafana",
    ///            "alertmanager",
    ///            "google_cloud",
    ///            "generic_webhook",
    ///            "cloud_watch",
    ///            "aws_sns",
    ///            "azure",
    ///            "splunk",
    ///            "chronosphere",
    ///            "cloudflare",
    ///            "app_optics",
    ///            "bug_snag",
    ///            "monte_carlo",
    ///            "nagios",
    ///            "prtg",
    ///            "catchpoint",
    ///            "app_dynamics",
    ///            "checkly",
    ///            "new_relic",
    ///            "gitlab"
    ///          ]
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertResponse {
        pub data: AlertResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertResponse {
        pub fn builder() -> builder::AlertResponse {
            Default::default()
        }
    }
    ///`AlertResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert",
    ///      "type": "string"
    ///    },
    ///    "source": {
    ///      "description": "The source of the alert",
    ///      "type": "string",
    ///      "enum": [
    ///        "rootly",
    ///        "manual",
    ///        "api",
    ///        "heartbeat",
    ///        "web",
    ///        "slack",
    ///        "email",
    ///        "workflow",
    ///        "live_call_routing",
    ///        "mobile",
    ///        "google_chat",
    ///        "pagerduty",
    ///        "opsgenie",
    ///        "victorops",
    ///        "pagertree",
    ///        "datadog",
    ///        "dynatrace",
    ///        "nobl9",
    ///        "zendesk",
    ///        "asana",
    ///        "clickup",
    ///        "sentry",
    ///        "rollbar",
    ///        "jira",
    ///        "honeycomb",
    ///        "service_now",
    ///        "linear",
    ///        "grafana",
    ///        "alertmanager",
    ///        "google_cloud",
    ///        "generic_webhook",
    ///        "cloud_watch",
    ///        "aws_sns",
    ///        "azure",
    ///        "splunk",
    ///        "chronosphere",
    ///        "cloudflare",
    ///        "app_optics",
    ///        "bug_snag",
    ///        "monte_carlo",
    ///        "nagios",
    ///        "prtg",
    ///        "catchpoint",
    ///        "app_dynamics",
    ///        "checkly",
    ///        "new_relic",
    ///        "gitlab"
    ///      ]
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertResponseData {
        pub attributes: Alert,
        ///Unique ID of the alert
        pub id: ::std::string::String,
        ///The source of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<AlertResponseDataSource>,
        #[serde(rename = "type")]
        pub type_: AlertResponseDataType,
    }
    impl AlertResponseData {
        pub fn builder() -> builder::AlertResponseData {
            Default::default()
        }
    }
    ///The source of the alert
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The source of the alert",
    ///  "type": "string",
    ///  "enum": [
    ///    "rootly",
    ///    "manual",
    ///    "api",
    ///    "heartbeat",
    ///    "web",
    ///    "slack",
    ///    "email",
    ///    "workflow",
    ///    "live_call_routing",
    ///    "mobile",
    ///    "google_chat",
    ///    "pagerduty",
    ///    "opsgenie",
    ///    "victorops",
    ///    "pagertree",
    ///    "datadog",
    ///    "dynatrace",
    ///    "nobl9",
    ///    "zendesk",
    ///    "asana",
    ///    "clickup",
    ///    "sentry",
    ///    "rollbar",
    ///    "jira",
    ///    "honeycomb",
    ///    "service_now",
    ///    "linear",
    ///    "grafana",
    ///    "alertmanager",
    ///    "google_cloud",
    ///    "generic_webhook",
    ///    "cloud_watch",
    ///    "aws_sns",
    ///    "azure",
    ///    "splunk",
    ///    "chronosphere",
    ///    "cloudflare",
    ///    "app_optics",
    ///    "bug_snag",
    ///    "monte_carlo",
    ///    "nagios",
    ///    "prtg",
    ///    "catchpoint",
    ///    "app_dynamics",
    ///    "checkly",
    ///    "new_relic",
    ///    "gitlab"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertResponseDataSource {
        #[serde(rename = "rootly")]
        Rootly,
        #[serde(rename = "manual")]
        Manual,
        #[serde(rename = "api")]
        Api,
        #[serde(rename = "heartbeat")]
        Heartbeat,
        #[serde(rename = "web")]
        Web,
        #[serde(rename = "slack")]
        Slack,
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "workflow")]
        Workflow,
        #[serde(rename = "live_call_routing")]
        LiveCallRouting,
        #[serde(rename = "mobile")]
        Mobile,
        #[serde(rename = "google_chat")]
        GoogleChat,
        #[serde(rename = "pagerduty")]
        Pagerduty,
        #[serde(rename = "opsgenie")]
        Opsgenie,
        #[serde(rename = "victorops")]
        Victorops,
        #[serde(rename = "pagertree")]
        Pagertree,
        #[serde(rename = "datadog")]
        Datadog,
        #[serde(rename = "dynatrace")]
        Dynatrace,
        #[serde(rename = "nobl9")]
        Nobl9,
        #[serde(rename = "zendesk")]
        Zendesk,
        #[serde(rename = "asana")]
        Asana,
        #[serde(rename = "clickup")]
        Clickup,
        #[serde(rename = "sentry")]
        Sentry,
        #[serde(rename = "rollbar")]
        Rollbar,
        #[serde(rename = "jira")]
        Jira,
        #[serde(rename = "honeycomb")]
        Honeycomb,
        #[serde(rename = "service_now")]
        ServiceNow,
        #[serde(rename = "linear")]
        Linear,
        #[serde(rename = "grafana")]
        Grafana,
        #[serde(rename = "alertmanager")]
        Alertmanager,
        #[serde(rename = "google_cloud")]
        GoogleCloud,
        #[serde(rename = "generic_webhook")]
        GenericWebhook,
        #[serde(rename = "cloud_watch")]
        CloudWatch,
        #[serde(rename = "aws_sns")]
        AwsSns,
        #[serde(rename = "azure")]
        Azure,
        #[serde(rename = "splunk")]
        Splunk,
        #[serde(rename = "chronosphere")]
        Chronosphere,
        #[serde(rename = "cloudflare")]
        Cloudflare,
        #[serde(rename = "app_optics")]
        AppOptics,
        #[serde(rename = "bug_snag")]
        BugSnag,
        #[serde(rename = "monte_carlo")]
        MonteCarlo,
        #[serde(rename = "nagios")]
        Nagios,
        #[serde(rename = "prtg")]
        Prtg,
        #[serde(rename = "catchpoint")]
        Catchpoint,
        #[serde(rename = "app_dynamics")]
        AppDynamics,
        #[serde(rename = "checkly")]
        Checkly,
        #[serde(rename = "new_relic")]
        NewRelic,
        #[serde(rename = "gitlab")]
        Gitlab,
    }
    impl ::std::fmt::Display for AlertResponseDataSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Rootly => f.write_str("rootly"),
                Self::Manual => f.write_str("manual"),
                Self::Api => f.write_str("api"),
                Self::Heartbeat => f.write_str("heartbeat"),
                Self::Web => f.write_str("web"),
                Self::Slack => f.write_str("slack"),
                Self::Email => f.write_str("email"),
                Self::Workflow => f.write_str("workflow"),
                Self::LiveCallRouting => f.write_str("live_call_routing"),
                Self::Mobile => f.write_str("mobile"),
                Self::GoogleChat => f.write_str("google_chat"),
                Self::Pagerduty => f.write_str("pagerduty"),
                Self::Opsgenie => f.write_str("opsgenie"),
                Self::Victorops => f.write_str("victorops"),
                Self::Pagertree => f.write_str("pagertree"),
                Self::Datadog => f.write_str("datadog"),
                Self::Dynatrace => f.write_str("dynatrace"),
                Self::Nobl9 => f.write_str("nobl9"),
                Self::Zendesk => f.write_str("zendesk"),
                Self::Asana => f.write_str("asana"),
                Self::Clickup => f.write_str("clickup"),
                Self::Sentry => f.write_str("sentry"),
                Self::Rollbar => f.write_str("rollbar"),
                Self::Jira => f.write_str("jira"),
                Self::Honeycomb => f.write_str("honeycomb"),
                Self::ServiceNow => f.write_str("service_now"),
                Self::Linear => f.write_str("linear"),
                Self::Grafana => f.write_str("grafana"),
                Self::Alertmanager => f.write_str("alertmanager"),
                Self::GoogleCloud => f.write_str("google_cloud"),
                Self::GenericWebhook => f.write_str("generic_webhook"),
                Self::CloudWatch => f.write_str("cloud_watch"),
                Self::AwsSns => f.write_str("aws_sns"),
                Self::Azure => f.write_str("azure"),
                Self::Splunk => f.write_str("splunk"),
                Self::Chronosphere => f.write_str("chronosphere"),
                Self::Cloudflare => f.write_str("cloudflare"),
                Self::AppOptics => f.write_str("app_optics"),
                Self::BugSnag => f.write_str("bug_snag"),
                Self::MonteCarlo => f.write_str("monte_carlo"),
                Self::Nagios => f.write_str("nagios"),
                Self::Prtg => f.write_str("prtg"),
                Self::Catchpoint => f.write_str("catchpoint"),
                Self::AppDynamics => f.write_str("app_dynamics"),
                Self::Checkly => f.write_str("checkly"),
                Self::NewRelic => f.write_str("new_relic"),
                Self::Gitlab => f.write_str("gitlab"),
            }
        }
    }
    impl ::std::str::FromStr for AlertResponseDataSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "rootly" => Ok(Self::Rootly),
                "manual" => Ok(Self::Manual),
                "api" => Ok(Self::Api),
                "heartbeat" => Ok(Self::Heartbeat),
                "web" => Ok(Self::Web),
                "slack" => Ok(Self::Slack),
                "email" => Ok(Self::Email),
                "workflow" => Ok(Self::Workflow),
                "live_call_routing" => Ok(Self::LiveCallRouting),
                "mobile" => Ok(Self::Mobile),
                "google_chat" => Ok(Self::GoogleChat),
                "pagerduty" => Ok(Self::Pagerduty),
                "opsgenie" => Ok(Self::Opsgenie),
                "victorops" => Ok(Self::Victorops),
                "pagertree" => Ok(Self::Pagertree),
                "datadog" => Ok(Self::Datadog),
                "dynatrace" => Ok(Self::Dynatrace),
                "nobl9" => Ok(Self::Nobl9),
                "zendesk" => Ok(Self::Zendesk),
                "asana" => Ok(Self::Asana),
                "clickup" => Ok(Self::Clickup),
                "sentry" => Ok(Self::Sentry),
                "rollbar" => Ok(Self::Rollbar),
                "jira" => Ok(Self::Jira),
                "honeycomb" => Ok(Self::Honeycomb),
                "service_now" => Ok(Self::ServiceNow),
                "linear" => Ok(Self::Linear),
                "grafana" => Ok(Self::Grafana),
                "alertmanager" => Ok(Self::Alertmanager),
                "google_cloud" => Ok(Self::GoogleCloud),
                "generic_webhook" => Ok(Self::GenericWebhook),
                "cloud_watch" => Ok(Self::CloudWatch),
                "aws_sns" => Ok(Self::AwsSns),
                "azure" => Ok(Self::Azure),
                "splunk" => Ok(Self::Splunk),
                "chronosphere" => Ok(Self::Chronosphere),
                "cloudflare" => Ok(Self::Cloudflare),
                "app_optics" => Ok(Self::AppOptics),
                "bug_snag" => Ok(Self::BugSnag),
                "monte_carlo" => Ok(Self::MonteCarlo),
                "nagios" => Ok(Self::Nagios),
                "prtg" => Ok(Self::Prtg),
                "catchpoint" => Ok(Self::Catchpoint),
                "app_dynamics" => Ok(Self::AppDynamics),
                "checkly" => Ok(Self::Checkly),
                "new_relic" => Ok(Self::NewRelic),
                "gitlab" => Ok(Self::Gitlab),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertResponseDataSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertResponseDataSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertResponseDataSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertResponseDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for AlertResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for AlertResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRoute`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alerts_source_ids",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alerts_source_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the alerts source",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert route is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert route",
    ///      "type": "string"
    ///    },
    ///    "owning_team_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the owning team",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "condition_groups",
    ///          "destinations",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "condition_groups": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "conditions"
    ///              ],
    ///              "properties": {
    ///                "conditions": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "required": [
    ///                      "property_field_condition_type",
    ///                      "property_field_type"
    ///                    ],
    ///                    "properties": {
    ///                      "alert_urgency_ids": {
    ///                        "description": "The Alert Urgency IDs to check in the condition",
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      },
    ///                      "conditionable_id": {
    ///                        "description": "The ID of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "format": "uuid"
    ///                      },
    ///                      "conditionable_type": {
    ///                        "description": "The type of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "enum": [
    ///                          "AlertField"
    ///                        ]
    ///                      },
    ///                      "property_field_condition_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "starts_with",
    ///                          "ends_with",
    ///                          "matches_regex",
    ///                          "is_empty"
    ///                        ]
    ///                      },
    ///                      "property_field_name": {
    ///                        "description": "The name of the property field",
    ///                        "type": "string"
    ///                      },
    ///                      "property_field_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "attribute",
    ///                          "payload",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "property_field_value": {
    ///                        "description": "The value of the property field",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "property_field_values": {
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "position": {
    ///                  "description": "The position of the condition group",
    ///                  "type": "integer"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "destinations": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "target_id",
    ///                "target_type"
    ///              ],
    ///              "properties": {
    ///                "target_id": {
    ///                  "description": "The ID of the target",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_type": {
    ///                  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "Functionality",
    ///                    "EscalationPolicy"
    ///                  ]
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "fallback_rule": {
    ///            "description": "Whether this is a fallback rule",
    ///            "default": false,
    ///            "type": "boolean"
    ///          },
    ///          "name": {
    ///            "description": "The name of the alert routing rule",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the alert routing rule for ordering evaluation",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoute {
        pub alerts_source_ids: ::std::vec::Vec<::uuid::Uuid>,
        ///Whether the alert route is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert route
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owning_team_ids: ::std::vec::Vec<::uuid::Uuid>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<AlertRouteRulesItem>,
    }
    impl AlertRoute {
        pub fn builder() -> builder::AlertRoute {
            Default::default()
        }
    }
    ///`AlertRouteList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_route"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert route",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_routes"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteList {
        pub data: ::std::vec::Vec<AlertRouteListDataItem>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertRouteList {
        pub fn builder() -> builder::AlertRouteList {
            Default::default()
        }
    }
    ///`AlertRouteListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_route"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert route",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteListDataItem {
        pub attributes: AlertRoute,
        ///Unique ID of the alert route
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertRouteListDataItemType,
    }
    impl AlertRouteListDataItem {
        pub fn builder() -> builder::AlertRouteListDataItem {
            Default::default()
        }
    }
    ///`AlertRouteListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRouteListDataItemType {
        #[serde(rename = "alert_routes")]
        AlertRoutes,
    }
    impl ::std::fmt::Display for AlertRouteListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutes => f.write_str("alert_routes"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRouteListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routes" => Ok(Self::AlertRoutes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRouteListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertRouteListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertRouteListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRouteResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert_route"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert route",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteResponse {
        pub data: AlertRouteResponseData,
    }
    impl AlertRouteResponse {
        pub fn builder() -> builder::AlertRouteResponse {
            Default::default()
        }
    }
    ///`AlertRouteResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_route"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert route",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteResponseData {
        pub attributes: AlertRoute,
        ///Unique ID of the alert route
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertRouteResponseDataType,
    }
    impl AlertRouteResponseData {
        pub fn builder() -> builder::AlertRouteResponseData {
            Default::default()
        }
    }
    ///`AlertRouteResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRouteResponseDataType {
        #[serde(rename = "alert_routes")]
        AlertRoutes,
    }
    impl ::std::fmt::Display for AlertRouteResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutes => f.write_str("alert_routes"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRouteResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routes" => Ok(Self::AlertRoutes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRouteResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertRouteResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertRouteResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRouteRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "condition_groups",
    ///    "destinations",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "condition_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "conditions"
    ///        ],
    ///        "properties": {
    ///          "conditions": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "property_field_condition_type",
    ///                "property_field_type"
    ///              ],
    ///              "properties": {
    ///                "alert_urgency_ids": {
    ///                  "description": "The Alert Urgency IDs to check in the condition",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "conditionable_id": {
    ///                  "description": "The ID of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "format": "uuid"
    ///                },
    ///                "conditionable_type": {
    ///                  "description": "The type of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "AlertField"
    ///                  ]
    ///                },
    ///                "property_field_condition_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "is_one_of",
    ///                    "is_not_one_of",
    ///                    "contains",
    ///                    "does_not_contain",
    ///                    "starts_with",
    ///                    "ends_with",
    ///                    "matches_regex",
    ///                    "is_empty"
    ///                  ]
    ///                },
    ///                "property_field_name": {
    ///                  "description": "The name of the property field",
    ///                  "type": "string"
    ///                },
    ///                "property_field_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "attribute",
    ///                    "payload",
    ///                    "alert_field"
    ///                  ]
    ///                },
    ///                "property_field_value": {
    ///                  "description": "The value of the property field",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "property_field_values": {
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition group",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "destinations": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "target_id",
    ///          "target_type"
    ///        ],
    ///        "properties": {
    ///          "target_id": {
    ///            "description": "The ID of the target",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Service",
    ///              "Group",
    ///              "Functionality",
    ///              "EscalationPolicy"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "fallback_rule": {
    ///      "description": "Whether this is a fallback rule",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteRulesItem {
        pub condition_groups: ::std::vec::Vec<AlertRouteRulesItemConditionGroupsItem>,
        pub destinations: ::std::vec::Vec<AlertRouteRulesItemDestinationsItem>,
        ///Whether this is a fallback rule
        #[serde(default)]
        pub fallback_rule: bool,
        ///The name of the alert routing rule
        pub name: ::std::string::String,
        ///The position of the alert routing rule for ordering evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl AlertRouteRulesItem {
        pub fn builder() -> builder::AlertRouteRulesItem {
            Default::default()
        }
    }
    ///`AlertRouteRulesItemConditionGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "conditions"
    ///  ],
    ///  "properties": {
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "property_field_condition_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition group",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteRulesItemConditionGroupsItem {
        pub conditions: ::std::vec::Vec<
            AlertRouteRulesItemConditionGroupsItemConditionsItem,
        >,
        ///The position of the condition group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl AlertRouteRulesItemConditionGroupsItem {
        pub fn builder() -> builder::AlertRouteRulesItemConditionGroupsItem {
            Default::default()
        }
    }
    ///`AlertRouteRulesItemConditionGroupsItemConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "property_field_condition_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteRulesItemConditionGroupsItemConditionsItem {
        ///The Alert Urgency IDs to check in the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType,
        >,
        pub property_field_condition_type: AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
        ///The name of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        pub property_field_type: AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
        ///The value of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_values: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
    }
    impl AlertRouteRulesItemConditionGroupsItemConditionsItem {
        pub fn builder() -> builder::AlertRouteRulesItemConditionGroupsItemConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRouteRulesItemDestinationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRouteRulesItemDestinationsItem {
        ///The ID of the target
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: AlertRouteRulesItemDestinationsItemTargetType,
    }
    impl AlertRouteRulesItemDestinationsItem {
        pub fn builder() -> builder::AlertRouteRulesItemDestinationsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRouteRulesItemDestinationsItemTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display for AlertRouteRulesItemDestinationsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRouteRulesItemDestinationsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRouteRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRouteRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRouteRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRoutingRule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alerts_source_id",
    ///    "condition_type",
    ///    "created_at",
    ///    "enabled",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alerts_source_id": {
    ///      "description": "The ID of the alerts source",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "condition_groups": {
    ///      "description": "The condition groups for the alert routing rule",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "position"
    ///        ],
    ///        "properties": {
    ///          "conditions": {
    ///            "description": "The conditions within this group",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "property_field_condition_type",
    ///                "property_field_name",
    ///                "property_field_type"
    ///              ],
    ///              "properties": {
    ///                "conditionable_id": {
    ///                  "description": "The ID of the conditionable object",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "format": "uuid"
    ///                },
    ///                "conditionable_type": {
    ///                  "description": "The type of the conditionable object",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "created_at": {
    ///                  "description": "Date of creation",
    ///                  "type": "string"
    ///                },
    ///                "id": {
    ///                  "description": "Unique ID of the condition",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "property_field_condition_type": {
    ///                  "description": "The condition type of the property field",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "is_one_of",
    ///                    "is_not_one_of",
    ///                    "contains",
    ///                    "does_not_contain",
    ///                    "starts_with",
    ///                    "ends_with",
    ///                    "matches_regex",
    ///                    "is_empty"
    ///                  ]
    ///                },
    ///                "property_field_name": {
    ///                  "description": "The name of the property field",
    ///                  "type": "string"
    ///                },
    ///                "property_field_type": {
    ///                  "description": "The type of the property field",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "attribute",
    ///                    "payload"
    ///                  ]
    ///                },
    ///                "property_field_value": {
    ///                  "description": "The value of the property field",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "property_field_values": {
    ///                  "description": "The values of the property field",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "updated_at": {
    ///                  "description": "Date of last update",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "created_at": {
    ///            "description": "Date of creation",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the condition group",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition group for ordering",
    ///            "type": "integer"
    ///          },
    ///          "updated_at": {
    ///            "description": "Date of last update",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "condition_type": {
    ///      "description": "The type of condition for the alert routing rule",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "description": "The conditions for the alert routing rule",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_name",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "destination": {
    ///      "description": "The destinations for the alert routing rule",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "target_id",
    ///        "target_type"
    ///      ],
    ///      "properties": {
    ///        "target_id": {
    ///          "description": "The ID of the target",
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "target_type": {
    ///          "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "Service",
    ///            "Group",
    ///            "Functionality",
    ///            "EscalationPolicy"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert routing rule is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRule {
        ///The ID of the alerts source
        pub alerts_source_id: ::uuid::Uuid,
        ///The condition groups for the alert routing rule
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub condition_groups: ::std::vec::Vec<AlertRoutingRuleConditionGroupsItem>,
        ///The type of condition for the alert routing rule
        pub condition_type: AlertRoutingRuleConditionType,
        ///The conditions for the alert routing rule
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<AlertRoutingRuleConditionsItem>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The destinations for the alert routing rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub destination: ::std::option::Option<AlertRoutingRuleDestination>,
        ///Whether the alert routing rule is enabled
        pub enabled: bool,
        ///The name of the alert routing rule
        pub name: ::std::string::String,
        ///The position of the alert routing rule for ordering evaluation
        pub position: i64,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl AlertRoutingRule {
        pub fn builder() -> builder::AlertRoutingRule {
            Default::default()
        }
    }
    ///A condition for alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A condition for alert routing rule",
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_name",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable object",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable object",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the condition",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleCondition {
        ///The ID of the conditionable object
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the conditionable object
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<::std::string::String>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Unique ID of the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The condition type of the property field
        pub property_field_condition_type: AlertRoutingRuleConditionPropertyFieldConditionType,
        ///The name of the property field
        pub property_field_name: ::std::string::String,
        ///The type of the property field
        pub property_field_type: AlertRoutingRuleConditionPropertyFieldType,
        ///The value of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_values: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl AlertRoutingRuleCondition {
        pub fn builder() -> builder::AlertRoutingRuleCondition {
            Default::default()
        }
    }
    ///A group of conditions for alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A group of conditions for alert routing rule",
    ///  "type": "object",
    ///  "required": [
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "conditions": {
    ///      "description": "The conditions within this group",
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/alert_routing_rule_condition"
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the condition group",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition group for ordering",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleConditionGroup {
        ///The conditions within this group
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<AlertRoutingRuleCondition>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Unique ID of the condition group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The position of the condition group for ordering
        pub position: i64,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl AlertRoutingRuleConditionGroup {
        pub fn builder() -> builder::AlertRoutingRuleConditionGroup {
            Default::default()
        }
    }
    ///`AlertRoutingRuleConditionGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "conditions": {
    ///      "description": "The conditions within this group",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_name",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable object",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable object",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "created_at": {
    ///            "description": "Date of creation",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the condition",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "updated_at": {
    ///            "description": "Date of last update",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the condition group",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition group for ordering",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleConditionGroupsItem {
        ///The conditions within this group
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<
            AlertRoutingRuleConditionGroupsItemConditionsItem,
        >,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Unique ID of the condition group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The position of the condition group for ordering
        pub position: i64,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl AlertRoutingRuleConditionGroupsItem {
        pub fn builder() -> builder::AlertRoutingRuleConditionGroupsItem {
            Default::default()
        }
    }
    ///`AlertRoutingRuleConditionGroupsItemConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_name",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable object",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable object",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the condition",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleConditionGroupsItemConditionsItem {
        ///The ID of the conditionable object
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the conditionable object
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<::std::string::String>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Unique ID of the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The condition type of the property field
        pub property_field_condition_type: AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType,
        ///The name of the property field
        pub property_field_name: ::std::string::String,
        ///The type of the property field
        pub property_field_type: AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType,
        ///The value of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_values: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl AlertRoutingRuleConditionGroupsItemConditionsItem {
        pub fn builder() -> builder::AlertRoutingRuleConditionGroupsItemConditionsItem {
            Default::default()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display for AlertRoutingRuleConditionPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleConditionPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRoutingRuleConditionPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display for AlertRoutingRuleConditionPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleConditionPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRoutingRuleConditionPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of condition for the alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition for the alert routing rule",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display for AlertRoutingRuleConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRoutingRuleConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRoutingRuleConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_name",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleConditionsItem {
        ///The condition type of the property field
        pub property_field_condition_type: AlertRoutingRuleConditionsItemPropertyFieldConditionType,
        ///The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.
        pub property_field_name: ::std::string::String,
        ///The type of the property field
        pub property_field_type: AlertRoutingRuleConditionsItemPropertyFieldType,
        ///The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub property_field_values: ::std::vec::Vec<::std::string::String>,
    }
    impl AlertRoutingRuleConditionsItem {
        pub fn builder() -> builder::AlertRoutingRuleConditionsItem {
            Default::default()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for AlertRoutingRuleConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertRoutingRuleConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRoutingRuleConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display for AlertRoutingRuleConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertRoutingRuleConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The destinations for the alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The destinations for the alert routing rule",
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleDestination {
        ///The ID of the target
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: AlertRoutingRuleDestinationTargetType,
    }
    impl AlertRoutingRuleDestination {
        pub fn builder() -> builder::AlertRoutingRuleDestination {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleDestinationTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display for AlertRoutingRuleDestinationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleDestinationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRoutingRuleDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRoutingRuleList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_routing_rule"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert_routing_rule",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_routing_rules"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleList {
        pub data: ::std::vec::Vec<AlertRoutingRuleListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertRoutingRuleList {
        pub fn builder() -> builder::AlertRoutingRuleList {
            Default::default()
        }
    }
    ///`AlertRoutingRuleListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_routing_rule"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert_routing_rule",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routing_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleListDataItem {
        pub attributes: AlertRoutingRule,
        ///Unique ID of the alert_routing_rule
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertRoutingRuleListDataItemType,
    }
    impl AlertRoutingRuleListDataItem {
        pub fn builder() -> builder::AlertRoutingRuleListDataItem {
            Default::default()
        }
    }
    ///`AlertRoutingRuleListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routing_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleListDataItemType {
        #[serde(rename = "alert_routing_rules")]
        AlertRoutingRules,
    }
    impl ::std::fmt::Display for AlertRoutingRuleListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutingRules => f.write_str("alert_routing_rules"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routing_rules" => Ok(Self::AlertRoutingRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRoutingRuleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertRoutingRuleResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert_routing_rule"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert_routing_rule",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routing_rules"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleResponse {
        pub data: AlertRoutingRuleResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertRoutingRuleResponse {
        pub fn builder() -> builder::AlertRoutingRuleResponse {
            Default::default()
        }
    }
    ///`AlertRoutingRuleResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_routing_rule"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert_routing_rule",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routing_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleResponseData {
        pub attributes: AlertRoutingRule,
        ///Unique ID of the alert_routing_rule
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertRoutingRuleResponseDataType,
    }
    impl AlertRoutingRuleResponseData {
        pub fn builder() -> builder::AlertRoutingRuleResponseData {
            Default::default()
        }
    }
    ///`AlertRoutingRuleResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routing_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleResponseDataType {
        #[serde(rename = "alert_routing_rules")]
        AlertRoutingRules,
    }
    impl ::std::fmt::Display for AlertRoutingRuleResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutingRules => f.write_str("alert_routing_rules"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routing_rules" => Ok(Self::AlertRoutingRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRoutingRuleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The destination target for the alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The destination target for the alert routing rule",
    ///  "type": [
    ///    "object",
    ///    "null"
    ///  ],
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct AlertRoutingRuleTarget(
        pub ::std::option::Option<AlertRoutingRuleTargetInner>,
    );
    impl ::std::ops::Deref for AlertRoutingRuleTarget {
        type Target = ::std::option::Option<AlertRoutingRuleTargetInner>;
        fn deref(&self) -> &::std::option::Option<AlertRoutingRuleTargetInner> {
            &self.0
        }
    }
    impl ::std::convert::From<AlertRoutingRuleTarget>
    for ::std::option::Option<AlertRoutingRuleTargetInner> {
        fn from(value: AlertRoutingRuleTarget) -> Self {
            value.0
        }
    }
    impl ::std::convert::From<::std::option::Option<AlertRoutingRuleTargetInner>>
    for AlertRoutingRuleTarget {
        fn from(value: ::std::option::Option<AlertRoutingRuleTargetInner>) -> Self {
            Self(value)
        }
    }
    ///The destination target for the alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The destination target for the alert routing rule",
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertRoutingRuleTargetInner {
        ///The ID of the target
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: AlertRoutingRuleTargetInnerTargetType,
    }
    impl AlertRoutingRuleTargetInner {
        pub fn builder() -> builder::AlertRoutingRuleTargetInner {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertRoutingRuleTargetInnerTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display for AlertRoutingRuleTargetInnerTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr for AlertRoutingRuleTargetInnerTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertRoutingRuleTargetInnerTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertRoutingRuleTargetInnerTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertRoutingRuleTargetInnerTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The source of the alert
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The source of the alert",
    ///  "type": "string",
    ///  "enum": [
    ///    "rootly",
    ///    "manual",
    ///    "api",
    ///    "heartbeat",
    ///    "web",
    ///    "slack",
    ///    "email",
    ///    "workflow",
    ///    "live_call_routing",
    ///    "mobile",
    ///    "google_chat",
    ///    "pagerduty",
    ///    "opsgenie",
    ///    "victorops",
    ///    "pagertree",
    ///    "datadog",
    ///    "dynatrace",
    ///    "nobl9",
    ///    "zendesk",
    ///    "asana",
    ///    "clickup",
    ///    "sentry",
    ///    "rollbar",
    ///    "jira",
    ///    "honeycomb",
    ///    "service_now",
    ///    "linear",
    ///    "grafana",
    ///    "alertmanager",
    ///    "google_cloud",
    ///    "generic_webhook",
    ///    "cloud_watch",
    ///    "aws_sns",
    ///    "azure",
    ///    "splunk",
    ///    "chronosphere",
    ///    "cloudflare",
    ///    "app_optics",
    ///    "bug_snag",
    ///    "monte_carlo",
    ///    "nagios",
    ///    "prtg",
    ///    "catchpoint",
    ///    "app_dynamics",
    ///    "checkly",
    ///    "new_relic",
    ///    "gitlab"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertSource {
        #[serde(rename = "rootly")]
        Rootly,
        #[serde(rename = "manual")]
        Manual,
        #[serde(rename = "api")]
        Api,
        #[serde(rename = "heartbeat")]
        Heartbeat,
        #[serde(rename = "web")]
        Web,
        #[serde(rename = "slack")]
        Slack,
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "workflow")]
        Workflow,
        #[serde(rename = "live_call_routing")]
        LiveCallRouting,
        #[serde(rename = "mobile")]
        Mobile,
        #[serde(rename = "google_chat")]
        GoogleChat,
        #[serde(rename = "pagerduty")]
        Pagerduty,
        #[serde(rename = "opsgenie")]
        Opsgenie,
        #[serde(rename = "victorops")]
        Victorops,
        #[serde(rename = "pagertree")]
        Pagertree,
        #[serde(rename = "datadog")]
        Datadog,
        #[serde(rename = "dynatrace")]
        Dynatrace,
        #[serde(rename = "nobl9")]
        Nobl9,
        #[serde(rename = "zendesk")]
        Zendesk,
        #[serde(rename = "asana")]
        Asana,
        #[serde(rename = "clickup")]
        Clickup,
        #[serde(rename = "sentry")]
        Sentry,
        #[serde(rename = "rollbar")]
        Rollbar,
        #[serde(rename = "jira")]
        Jira,
        #[serde(rename = "honeycomb")]
        Honeycomb,
        #[serde(rename = "service_now")]
        ServiceNow,
        #[serde(rename = "linear")]
        Linear,
        #[serde(rename = "grafana")]
        Grafana,
        #[serde(rename = "alertmanager")]
        Alertmanager,
        #[serde(rename = "google_cloud")]
        GoogleCloud,
        #[serde(rename = "generic_webhook")]
        GenericWebhook,
        #[serde(rename = "cloud_watch")]
        CloudWatch,
        #[serde(rename = "aws_sns")]
        AwsSns,
        #[serde(rename = "azure")]
        Azure,
        #[serde(rename = "splunk")]
        Splunk,
        #[serde(rename = "chronosphere")]
        Chronosphere,
        #[serde(rename = "cloudflare")]
        Cloudflare,
        #[serde(rename = "app_optics")]
        AppOptics,
        #[serde(rename = "bug_snag")]
        BugSnag,
        #[serde(rename = "monte_carlo")]
        MonteCarlo,
        #[serde(rename = "nagios")]
        Nagios,
        #[serde(rename = "prtg")]
        Prtg,
        #[serde(rename = "catchpoint")]
        Catchpoint,
        #[serde(rename = "app_dynamics")]
        AppDynamics,
        #[serde(rename = "checkly")]
        Checkly,
        #[serde(rename = "new_relic")]
        NewRelic,
        #[serde(rename = "gitlab")]
        Gitlab,
    }
    impl ::std::fmt::Display for AlertSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Rootly => f.write_str("rootly"),
                Self::Manual => f.write_str("manual"),
                Self::Api => f.write_str("api"),
                Self::Heartbeat => f.write_str("heartbeat"),
                Self::Web => f.write_str("web"),
                Self::Slack => f.write_str("slack"),
                Self::Email => f.write_str("email"),
                Self::Workflow => f.write_str("workflow"),
                Self::LiveCallRouting => f.write_str("live_call_routing"),
                Self::Mobile => f.write_str("mobile"),
                Self::GoogleChat => f.write_str("google_chat"),
                Self::Pagerduty => f.write_str("pagerduty"),
                Self::Opsgenie => f.write_str("opsgenie"),
                Self::Victorops => f.write_str("victorops"),
                Self::Pagertree => f.write_str("pagertree"),
                Self::Datadog => f.write_str("datadog"),
                Self::Dynatrace => f.write_str("dynatrace"),
                Self::Nobl9 => f.write_str("nobl9"),
                Self::Zendesk => f.write_str("zendesk"),
                Self::Asana => f.write_str("asana"),
                Self::Clickup => f.write_str("clickup"),
                Self::Sentry => f.write_str("sentry"),
                Self::Rollbar => f.write_str("rollbar"),
                Self::Jira => f.write_str("jira"),
                Self::Honeycomb => f.write_str("honeycomb"),
                Self::ServiceNow => f.write_str("service_now"),
                Self::Linear => f.write_str("linear"),
                Self::Grafana => f.write_str("grafana"),
                Self::Alertmanager => f.write_str("alertmanager"),
                Self::GoogleCloud => f.write_str("google_cloud"),
                Self::GenericWebhook => f.write_str("generic_webhook"),
                Self::CloudWatch => f.write_str("cloud_watch"),
                Self::AwsSns => f.write_str("aws_sns"),
                Self::Azure => f.write_str("azure"),
                Self::Splunk => f.write_str("splunk"),
                Self::Chronosphere => f.write_str("chronosphere"),
                Self::Cloudflare => f.write_str("cloudflare"),
                Self::AppOptics => f.write_str("app_optics"),
                Self::BugSnag => f.write_str("bug_snag"),
                Self::MonteCarlo => f.write_str("monte_carlo"),
                Self::Nagios => f.write_str("nagios"),
                Self::Prtg => f.write_str("prtg"),
                Self::Catchpoint => f.write_str("catchpoint"),
                Self::AppDynamics => f.write_str("app_dynamics"),
                Self::Checkly => f.write_str("checkly"),
                Self::NewRelic => f.write_str("new_relic"),
                Self::Gitlab => f.write_str("gitlab"),
            }
        }
    }
    impl ::std::str::FromStr for AlertSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "rootly" => Ok(Self::Rootly),
                "manual" => Ok(Self::Manual),
                "api" => Ok(Self::Api),
                "heartbeat" => Ok(Self::Heartbeat),
                "web" => Ok(Self::Web),
                "slack" => Ok(Self::Slack),
                "email" => Ok(Self::Email),
                "workflow" => Ok(Self::Workflow),
                "live_call_routing" => Ok(Self::LiveCallRouting),
                "mobile" => Ok(Self::Mobile),
                "google_chat" => Ok(Self::GoogleChat),
                "pagerduty" => Ok(Self::Pagerduty),
                "opsgenie" => Ok(Self::Opsgenie),
                "victorops" => Ok(Self::Victorops),
                "pagertree" => Ok(Self::Pagertree),
                "datadog" => Ok(Self::Datadog),
                "dynatrace" => Ok(Self::Dynatrace),
                "nobl9" => Ok(Self::Nobl9),
                "zendesk" => Ok(Self::Zendesk),
                "asana" => Ok(Self::Asana),
                "clickup" => Ok(Self::Clickup),
                "sentry" => Ok(Self::Sentry),
                "rollbar" => Ok(Self::Rollbar),
                "jira" => Ok(Self::Jira),
                "honeycomb" => Ok(Self::Honeycomb),
                "service_now" => Ok(Self::ServiceNow),
                "linear" => Ok(Self::Linear),
                "grafana" => Ok(Self::Grafana),
                "alertmanager" => Ok(Self::Alertmanager),
                "google_cloud" => Ok(Self::GoogleCloud),
                "generic_webhook" => Ok(Self::GenericWebhook),
                "cloud_watch" => Ok(Self::CloudWatch),
                "aws_sns" => Ok(Self::AwsSns),
                "azure" => Ok(Self::Azure),
                "splunk" => Ok(Self::Splunk),
                "chronosphere" => Ok(Self::Chronosphere),
                "cloudflare" => Ok(Self::Cloudflare),
                "app_optics" => Ok(Self::AppOptics),
                "bug_snag" => Ok(Self::BugSnag),
                "monte_carlo" => Ok(Self::MonteCarlo),
                "nagios" => Ok(Self::Nagios),
                "prtg" => Ok(Self::Prtg),
                "catchpoint" => Ok(Self::Catchpoint),
                "app_dynamics" => Ok(Self::AppDynamics),
                "checkly" => Ok(Self::Checkly),
                "new_relic" => Ok(Self::NewRelic),
                "gitlab" => Ok(Self::Gitlab),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the alert
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the alert",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "triggered",
    ///    "acknowledged",
    ///    "resolved",
    ///    "deferred"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "triggered")]
        Triggered,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "deferred")]
        Deferred,
    }
    impl ::std::fmt::Display for AlertStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::Triggered => f.write_str("triggered"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Resolved => f.write_str("resolved"),
                Self::Deferred => f.write_str("deferred"),
            }
        }
    }
    impl ::std::str::FromStr for AlertStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "triggered" => Ok(Self::Triggered),
                "acknowledged" => Ok(Self::Acknowledged),
                "resolved" => Ok(Self::Resolved),
                "deferred" => Ok(Self::Deferred),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "trigger_type"
    ///  ],
    ///  "properties": {
    ///    "alert_condition": {
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "alert_condition_label": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "alert_condition_label_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "alert_condition_payload": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "alert_condition_payload_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "alert_condition_source": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "alert_condition_source_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "alert_condition_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "alert_condition_status_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "alert_condition_urgency": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "alert_field_conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "alert_field_id",
    ///          "condition_type"
    ///        ],
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "type": "string"
    ///          },
    ///          "condition_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "IS",
    ///              "IS NOT",
    ///              "ANY",
    ///              "CONTAINS",
    ///              "CONTAINS_ALL",
    ///              "CONTAINS_NONE",
    ///              "NONE",
    ///              "SET",
    ///              "UNSET"
    ///            ]
    ///          },
    ///          "values": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "alert_payload": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "alert_payload_conditions": {
    ///      "type": "object",
    ///      "properties": {
    ///        "conditions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "operator",
    ///              "query"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "IS",
    ///                  "IS NOT",
    ///                  "ANY",
    ///                  "CONTAINS",
    ///                  "CONTAINS_ALL",
    ///                  "CONTAINS_NONE",
    ///                  "NONE",
    ///                  "SET",
    ///                  "UNSET"
    ///                ]
    ///              },
    ///              "query": {
    ///                "type": "string"
    ///              },
    ///              "use_regexp": {
    ///                "type": "boolean"
    ///              },
    ///              "values": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "logic": {
    ///          "type": "string",
    ///          "enum": [
    ///            "ALL",
    ///            "ANY",
    ///            "NONE"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "alert_query_payload": {
    ///      "description": "You can use jsonpath syntax. eg: $.incident.teams[*]",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_sources": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "alert_statuses": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "alert_urgency_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "trigger_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert"
    ///      ]
    ///    },
    ///    "triggers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Actions that trigger the workflow",
    ///        "type": "string",
    ///        "enum": [
    ///          "alert_created",
    ///          "alert_status_updated"
    ///        ]
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertTriggerParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_condition: ::std::option::Option<AlertTriggerParamsAlertCondition>,
        #[serde(default = "defaults::alert_trigger_params_alert_condition_label")]
        pub alert_condition_label: AlertTriggerParamsAlertConditionLabel,
        #[serde(default)]
        pub alert_condition_label_use_regexp: bool,
        #[serde(default = "defaults::alert_trigger_params_alert_condition_payload")]
        pub alert_condition_payload: AlertTriggerParamsAlertConditionPayload,
        #[serde(default)]
        pub alert_condition_payload_use_regexp: bool,
        #[serde(default = "defaults::alert_trigger_params_alert_condition_source")]
        pub alert_condition_source: AlertTriggerParamsAlertConditionSource,
        #[serde(default)]
        pub alert_condition_source_use_regexp: bool,
        #[serde(default = "defaults::alert_trigger_params_alert_condition_status")]
        pub alert_condition_status: AlertTriggerParamsAlertConditionStatus,
        #[serde(default)]
        pub alert_condition_status_use_regexp: bool,
        #[serde(default = "defaults::alert_trigger_params_alert_condition_urgency")]
        pub alert_condition_urgency: AlertTriggerParamsAlertConditionUrgency,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_field_conditions: ::std::vec::Vec<
            AlertTriggerParamsAlertFieldConditionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_labels: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_payload: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_payload_conditions: ::std::option::Option<
            AlertTriggerParamsAlertPayloadConditions,
        >,
        ///You can use jsonpath syntax. eg: $.incident.teams[*]
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_query_payload: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_sources: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_statuses: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_urgency_ids: ::std::vec::Vec<::uuid::Uuid>,
        pub trigger_type: AlertTriggerParamsTriggerType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub triggers: ::std::vec::Vec<AlertTriggerParamsTriggersItem>,
    }
    impl AlertTriggerParams {
        pub fn builder() -> builder::AlertTriggerParams {
            Default::default()
        }
    }
    ///`AlertTriggerParamsAlertCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsAlertCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertTriggerParamsAlertConditionLabel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertConditionLabel {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertConditionLabel {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertConditionLabel {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsAlertConditionLabel {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertConditionLabel {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertConditionLabel {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for AlertTriggerParamsAlertConditionLabel {
        fn default() -> Self {
            AlertTriggerParamsAlertConditionLabel::Any
        }
    }
    ///`AlertTriggerParamsAlertConditionPayload`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertConditionPayload {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertConditionPayload {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertConditionPayload {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsAlertConditionPayload {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertConditionPayload {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertConditionPayload {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for AlertTriggerParamsAlertConditionPayload {
        fn default() -> Self {
            AlertTriggerParamsAlertConditionPayload::Any
        }
    }
    ///`AlertTriggerParamsAlertConditionSource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertConditionSource {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertConditionSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertConditionSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsAlertConditionSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertConditionSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertConditionSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for AlertTriggerParamsAlertConditionSource {
        fn default() -> Self {
            AlertTriggerParamsAlertConditionSource::Any
        }
    }
    ///`AlertTriggerParamsAlertConditionStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertConditionStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertConditionStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertConditionStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsAlertConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for AlertTriggerParamsAlertConditionStatus {
        fn default() -> Self {
            AlertTriggerParamsAlertConditionStatus::Any
        }
    }
    ///`AlertTriggerParamsAlertConditionUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertConditionUrgency {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertConditionUrgency {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertConditionUrgency {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsAlertConditionUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertConditionUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertConditionUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for AlertTriggerParamsAlertConditionUrgency {
        fn default() -> Self {
            AlertTriggerParamsAlertConditionUrgency::Any
        }
    }
    ///`AlertTriggerParamsAlertFieldConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_field_id",
    ///    "condition_type"
    ///  ],
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "type": "string"
    ///    },
    ///    "condition_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertTriggerParamsAlertFieldConditionsItem {
        pub alert_field_id: ::std::string::String,
        pub condition_type: AlertTriggerParamsAlertFieldConditionsItemConditionType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl AlertTriggerParamsAlertFieldConditionsItem {
        pub fn builder() -> builder::AlertTriggerParamsAlertFieldConditionsItem {
            Default::default()
        }
    }
    ///`AlertTriggerParamsAlertFieldConditionsItemConditionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertFieldConditionsItemConditionType {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for AlertTriggerParamsAlertFieldConditionsItemConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertTriggerParamsAlertFieldConditionsItemConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertTriggerParamsAlertFieldConditionsItemConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertFieldConditionsItemConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertFieldConditionsItemConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertTriggerParamsAlertPayloadConditions`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "operator",
    ///          "query"
    ///        ],
    ///        "properties": {
    ///          "operator": {
    ///            "type": "string",
    ///            "enum": [
    ///              "IS",
    ///              "IS NOT",
    ///              "ANY",
    ///              "CONTAINS",
    ///              "CONTAINS_ALL",
    ///              "CONTAINS_NONE",
    ///              "NONE",
    ///              "SET",
    ///              "UNSET"
    ///            ]
    ///          },
    ///          "query": {
    ///            "type": "string"
    ///          },
    ///          "use_regexp": {
    ///            "type": "boolean"
    ///          },
    ///          "values": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "logic": {
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertTriggerParamsAlertPayloadConditions {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<
            AlertTriggerParamsAlertPayloadConditionsConditionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub logic: ::std::option::Option<AlertTriggerParamsAlertPayloadConditionsLogic>,
    }
    impl ::std::default::Default for AlertTriggerParamsAlertPayloadConditions {
        fn default() -> Self {
            Self {
                conditions: Default::default(),
                logic: Default::default(),
            }
        }
    }
    impl AlertTriggerParamsAlertPayloadConditions {
        pub fn builder() -> builder::AlertTriggerParamsAlertPayloadConditions {
            Default::default()
        }
    }
    ///`AlertTriggerParamsAlertPayloadConditionsConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "operator",
    ///    "query"
    ///  ],
    ///  "properties": {
    ///    "operator": {
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "query": {
    ///      "type": "string"
    ///    },
    ///    "use_regexp": {
    ///      "type": "boolean"
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertTriggerParamsAlertPayloadConditionsConditionsItem {
        pub operator: AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator,
        pub query: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub use_regexp: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl AlertTriggerParamsAlertPayloadConditionsConditionsItem {
        pub fn builder() -> builder::AlertTriggerParamsAlertPayloadConditionsConditionsItem {
            Default::default()
        }
    }
    ///`AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertTriggerParamsAlertPayloadConditionsLogic`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsAlertPayloadConditionsLogic {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for AlertTriggerParamsAlertPayloadConditionsLogic {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsAlertPayloadConditionsLogic {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertTriggerParamsAlertPayloadConditionsLogic {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsAlertPayloadConditionsLogic {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsAlertPayloadConditionsLogic {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertTriggerParamsTriggerType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsTriggerType {
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display for AlertTriggerParamsTriggerType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsTriggerType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Actions that trigger the workflow
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Actions that trigger the workflow",
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_created",
    ///    "alert_status_updated"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertTriggerParamsTriggersItem {
        #[serde(rename = "alert_created")]
        AlertCreated,
        #[serde(rename = "alert_status_updated")]
        AlertStatusUpdated,
    }
    impl ::std::fmt::Display for AlertTriggerParamsTriggersItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertCreated => f.write_str("alert_created"),
                Self::AlertStatusUpdated => f.write_str("alert_status_updated"),
            }
        }
    }
    impl ::std::str::FromStr for AlertTriggerParamsTriggersItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_created" => Ok(Self::AlertCreated),
                "alert_status_updated" => Ok(Self::AlertStatusUpdated),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "description",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the alert urgency",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertUrgency {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the alert urgency
        pub description: ::std::string::String,
        ///The name of the alert urgency
        pub name: ::std::string::String,
        ///Position of the alert urgency
        pub position: i64,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl AlertUrgency {
        pub fn builder() -> builder::AlertUrgency {
            Default::default()
        }
    }
    ///`AlertUrgencyList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alert_urgency"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert urgency",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_urgencies"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertUrgencyList {
        pub data: ::std::vec::Vec<AlertUrgencyListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertUrgencyList {
        pub fn builder() -> builder::AlertUrgencyList {
            Default::default()
        }
    }
    ///`AlertUrgencyListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_urgency"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_urgencies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertUrgencyListDataItem {
        pub attributes: AlertUrgency,
        ///Unique ID of the alert urgency
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertUrgencyListDataItemType,
    }
    impl AlertUrgencyListDataItem {
        pub fn builder() -> builder::AlertUrgencyListDataItem {
            Default::default()
        }
    }
    ///`AlertUrgencyListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_urgencies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertUrgencyListDataItemType {
        #[serde(rename = "alert_urgencies")]
        AlertUrgencies,
    }
    impl ::std::fmt::Display for AlertUrgencyListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertUrgencies => f.write_str("alert_urgencies"),
            }
        }
    }
    impl ::std::str::FromStr for AlertUrgencyListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_urgencies" => Ok(Self::AlertUrgencies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertUrgencyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertUrgencyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertUrgencyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertUrgencyResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alert_urgency"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert urgency",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_urgencies"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertUrgencyResponse {
        pub data: AlertUrgencyResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertUrgencyResponse {
        pub fn builder() -> builder::AlertUrgencyResponse {
            Default::default()
        }
    }
    ///`AlertUrgencyResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alert_urgency"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_urgencies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertUrgencyResponseData {
        pub attributes: AlertUrgency,
        ///Unique ID of the alert urgency
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertUrgencyResponseDataType,
    }
    impl AlertUrgencyResponseData {
        pub fn builder() -> builder::AlertUrgencyResponseData {
            Default::default()
        }
    }
    ///`AlertUrgencyResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_urgencies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertUrgencyResponseDataType {
        #[serde(rename = "alert_urgencies")]
        AlertUrgencies,
    }
    impl ::std::fmt::Display for AlertUrgencyResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertUrgencies => f.write_str("alert_urgencies"),
            }
        }
    }
    impl ::std::str::FromStr for AlertUrgencyResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_urgencies" => Ok(Self::AlertUrgencies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertUrgencyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertUrgencyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertUrgencyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertsSource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "secret",
    ///    "status",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alert_source_fields_attributes": {
    ///      "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "description": "The ID of the alert field",
    ///            "type": "string"
    ///          },
    ///          "template_body": {
    ///            "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_source_urgency_rules_attributes": {
    ///      "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "alert_urgency_id": {
    ///            "description": "The ID of the alert urgency",
    ///            "type": "string"
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "json_path": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "kind": {
    ///            "description": "The kind of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "operator": {
    ///            "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "is",
    ///              "is_not",
    ///              "contains",
    ///              "does_not_contain"
    ///            ]
    ///          },
    ///          "value": {
    ///            "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_template_attributes": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The alert description.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_url": {
    ///          "description": "The alert URL.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The alert title.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "ID for the default alert urgency assigned to this alert source",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "deduplicate_alerts_by_key": {
    ///      "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///      "type": "boolean"
    ///    },
    ///    "deduplication_key_kind": {
    ///      "description": "Kind of deduplication key.",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload"
    ///      ]
    ///    },
    ///    "deduplication_key_path": {
    ///      "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "deduplication_key_regexp": {
    ///      "description": "Regular expression to extract key from value found at key path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email": {
    ///      "description": "The email generated for email alert sources",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert source",
    ///      "type": "string"
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "List of team IDs that will own the alert source",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "resolution_rule_attributes": {
    ///      "description": "Provide additional attributes for email alerts source",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "condition_type": {
    ///          "description": "The type of condition to evaluate to apply auto resolution rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions_attributes": {
    ///          "description": "List of conditions to evaluate for auto resolution",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "field": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "kind": {
    ///                "description": "The kind of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "operator": {
    ///                "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Set this to true to enable the auto resolution rule",
    ///          "type": "boolean"
    ///        },
    ///        "identifier_json_path": {
    ///          "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "identifier_matchable_id": {
    ///          "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "identifier_matchable_type": {
    ///          "description": "The type of the identifier matchable",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "AlertField"
    ///          ]
    ///        },
    ///        "identifier_reference_kind": {
    ///          "description": "The kind of the identifier reference",
    ///          "type": "string",
    ///          "enum": [
    ///            "payload",
    ///            "alert_field"
    ///          ]
    ///        },
    ///        "identifier_value_regex": {
    ///          "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "secret": {
    ///      "description": "The secret used to authenticate non-email alert sources",
    ///      "type": "string"
    ///    },
    ///    "source_type": {
    ///      "description": "The alert source type",
    ///      "type": "string",
    ///      "enum": [
    ///        "email",
    ///        "app_dynamics",
    ///        "catchpoint",
    ///        "cloudflare",
    ///        "datadog",
    ///        "dynatrace",
    ///        "alertmanager",
    ///        "google_cloud",
    ///        "grafana",
    ///        "sentry",
    ///        "generic_webhook",
    ///        "cloud_watch",
    ///        "aws_sns",
    ///        "checkly",
    ///        "azure",
    ///        "new_relic",
    ///        "splunk",
    ///        "chronosphere",
    ///        "app_optics",
    ///        "bug_snag",
    ///        "honeycomb",
    ///        "monte_carlo",
    ///        "nagios",
    ///        "prtg"
    ///      ]
    ///    },
    ///    "sourceable_attributes": {
    ///      "description": "Provide additional attributes for generic_webhook alerts source",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "accept_threaded_emails": {
    ///          "description": "Set this to false to reject threaded emails",
    ///          "type": "boolean"
    ///        },
    ///        "auto_resolve": {
    ///          "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///          "type": "boolean"
    ///        },
    ///        "field_mappings_attributes": {
    ///          "description": "Specify rules to auto resolve alerts",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "field": {
    ///                "description": "Select the field on which the condition to be evaluated",
    ///                "type": "string",
    ///                "enum": [
    ///                  "external_id",
    ///                  "state",
    ///                  "alert_title",
    ///                  "alert_description",
    ///                  "alert_external_url",
    ///                  "notification_target_type",
    ///                  "notification_target_id"
    ///                ]
    ///              },
    ///              "json_path": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "resolve_state": {
    ///          "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "status": {
    ///      "description": "The status of the alert source",
    ///      "type": "string",
    ///      "enum": [
    ///        "connected",
    ///        "setup_complete",
    ///        "setup_incomplete"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "webhook_endpoint": {
    ///      "description": "The webhook URL generated for non-email alert sources",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSource {
        ///List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_source_fields_attributes: ::std::vec::Vec<
            AlertsSourceAlertSourceFieldsAttributesItem,
        >,
        ///List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_source_urgency_rules_attributes: ::std::vec::Vec<
            AlertsSourceAlertSourceUrgencyRulesAttributesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_template_attributes: ::std::option::Option<
            AlertsSourceAlertTemplateAttributes,
        >,
        ///ID for the default alert urgency assigned to this alert source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplicate_alerts_by_key: ::std::option::Option<bool>,
        ///Kind of deduplication key.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_kind: ::std::option::Option<
            AlertsSourceDeduplicationKeyKind,
        >,
        ///Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_path: ::std::option::Option<::std::string::String>,
        ///Regular expression to extract key from value found at key path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_regexp: ::std::option::Option<::std::string::String>,
        ///The email generated for email alert sources
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
        ///Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert source
        pub name: ::std::string::String,
        ///List of team IDs that will own the alert source
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owner_group_ids: ::std::vec::Vec<::std::string::String>,
        ///Provide additional attributes for email alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_rule_attributes: ::std::option::Option<
            AlertsSourceResolutionRuleAttributes,
        >,
        ///The secret used to authenticate non-email alert sources
        pub secret: ::std::string::String,
        ///The alert source type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source_type: ::std::option::Option<AlertsSourceSourceType>,
        ///Provide additional attributes for generic_webhook alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sourceable_attributes: ::std::option::Option<
            AlertsSourceSourceableAttributes,
        >,
        ///The status of the alert source
        pub status: AlertsSourceStatus,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The webhook URL generated for non-email alert sources
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub webhook_endpoint: ::std::option::Option<::std::string::String>,
    }
    impl AlertsSource {
        pub fn builder() -> builder::AlertsSource {
            Default::default()
        }
    }
    ///`AlertsSourceAlertSourceFieldsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "description": "The ID of the alert field",
    ///      "type": "string"
    ///    },
    ///    "template_body": {
    ///      "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceAlertSourceFieldsAttributesItem {
        ///The ID of the alert field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_field_id: ::std::option::Option<::std::string::String>,
        ///Liquid expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_body: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AlertsSourceAlertSourceFieldsAttributesItem {
        fn default() -> Self {
            Self {
                alert_field_id: Default::default(),
                template_body: Default::default(),
            }
        }
    }
    impl AlertsSourceAlertSourceFieldsAttributesItem {
        pub fn builder() -> builder::AlertsSourceAlertSourceFieldsAttributesItem {
            Default::default()
        }
    }
    ///`AlertsSourceAlertSourceUrgencyRulesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "The ID of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "json_path": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "operator": {
    ///      "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "is",
    ///        "is_not",
    ///        "contains",
    ///        "does_not_contain"
    ///      ]
    ///    },
    ///    "value": {
    ///      "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceAlertSourceUrgencyRulesAttributesItem {
        ///The ID of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
        ///The kind of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            AlertsSourceAlertSourceUrgencyRulesAttributesItemKind,
        >,
        ///Comparison operator used to evaluate the extracted value against the specified condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<
            AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator,
        >,
        ///Value that the extracted payload data is compared to using the specified operator to determine a match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AlertsSourceAlertSourceUrgencyRulesAttributesItem {
        fn default() -> Self {
            Self {
                alert_urgency_id: Default::default(),
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                json_path: Default::default(),
                kind: Default::default(),
                operator: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl AlertsSourceAlertSourceUrgencyRulesAttributesItem {
        pub fn builder() -> builder::AlertsSourceAlertSourceUrgencyRulesAttributesItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceAlertSourceUrgencyRulesAttributesItemKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display for AlertsSourceAlertSourceUrgencyRulesAttributesItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceAlertSourceUrgencyRulesAttributesItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Comparison operator used to evaluate the extracted value against the specified condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
    }
    impl ::std::fmt::Display
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertsSourceAlertTemplateAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The alert description.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_url": {
    ///      "description": "The alert URL.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The alert title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceAlertTemplateAttributes {
        ///The alert description.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The alert URL.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The alert title.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AlertsSourceAlertTemplateAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                external_url: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl AlertsSourceAlertTemplateAttributes {
        pub fn builder() -> builder::AlertsSourceAlertTemplateAttributes {
            Default::default()
        }
    }
    ///Kind of deduplication key.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Kind of deduplication key.",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceDeduplicationKeyKind {
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display for AlertsSourceDeduplicationKeyKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceDeduplicationKeyKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertsSourceDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertsSourceList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/alerts_source"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the alert source",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alert_sources"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceList {
        pub data: ::std::vec::Vec<AlertsSourceListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AlertsSourceList {
        pub fn builder() -> builder::AlertsSourceList {
            Default::default()
        }
    }
    ///`AlertsSourceListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alerts_source"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert source",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_sources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceListDataItem {
        pub attributes: AlertsSource,
        ///Unique ID of the alert source
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertsSourceListDataItemType,
    }
    impl AlertsSourceListDataItem {
        pub fn builder() -> builder::AlertsSourceListDataItem {
            Default::default()
        }
    }
    ///`AlertsSourceListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_sources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceListDataItemType {
        #[serde(rename = "alert_sources")]
        AlertSources,
    }
    impl ::std::fmt::Display for AlertsSourceListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertSources => f.write_str("alert_sources"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_sources" => Ok(Self::AlertSources),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertsSourceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Provide additional attributes for email alerts source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Provide additional attributes for email alerts source",
    ///  "type": "object",
    ///  "properties": {
    ///    "condition_type": {
    ///      "description": "The type of condition to evaluate to apply auto resolution rule",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions_attributes": {
    ///      "description": "List of conditions to evaluate for auto resolution",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "field": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "kind": {
    ///            "description": "The kind of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "operator": {
    ///            "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "is",
    ///              "is_not",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with"
    ///            ]
    ///          },
    ///          "value": {
    ///            "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Set this to true to enable the auto resolution rule",
    ///      "type": "boolean"
    ///    },
    ///    "identifier_json_path": {
    ///      "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "identifier_matchable_id": {
    ///      "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "identifier_matchable_type": {
    ///      "description": "The type of the identifier matchable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "identifier_reference_kind": {
    ///      "description": "The kind of the identifier reference",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "identifier_value_regex": {
    ///      "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceResolutionRuleAttributes {
        ///The type of condition to evaluate to apply auto resolution rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            AlertsSourceResolutionRuleAttributesConditionType,
        >,
        ///List of conditions to evaluate for auto resolution
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions_attributes: ::std::vec::Vec<
            AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
        >,
        ///Set this to true to enable the auto resolution rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_json_path: ::std::option::Option<::std::string::String>,
        ///The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_matchable_id: ::std::option::Option<::std::string::String>,
        ///The type of the identifier matchable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_matchable_type: ::std::option::Option<
            AlertsSourceResolutionRuleAttributesIdentifierMatchableType,
        >,
        ///The kind of the identifier reference
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_reference_kind: ::std::option::Option<
            AlertsSourceResolutionRuleAttributesIdentifierReferenceKind,
        >,
        ///Regex group to further specify the part of the string used as a unique identifier
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_value_regex: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AlertsSourceResolutionRuleAttributes {
        fn default() -> Self {
            Self {
                condition_type: Default::default(),
                conditions_attributes: Default::default(),
                enabled: Default::default(),
                identifier_json_path: Default::default(),
                identifier_matchable_id: Default::default(),
                identifier_matchable_type: Default::default(),
                identifier_reference_kind: Default::default(),
                identifier_value_regex: Default::default(),
            }
        }
    }
    impl AlertsSourceResolutionRuleAttributes {
        pub fn builder() -> builder::AlertsSourceResolutionRuleAttributes {
            Default::default()
        }
    }
    ///The type of condition to evaluate to apply auto resolution rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition to evaluate to apply auto resolution rule",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResolutionRuleAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display for AlertsSourceResolutionRuleAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceResolutionRuleAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertsSourceResolutionRuleAttributesConditionsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "field": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "operator": {
    ///      "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "is",
    ///        "is_not",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with"
    ///      ]
    ///    },
    ///    "value": {
    ///      "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field: ::std::option::Option<::std::string::String>,
        ///The kind of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind,
        >,
        ///Comparison operator used to evaluate the extracted value against the specified condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<
            AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator,
        >,
        ///Value that the extracted payload data is compared to using the specified operator to determine a match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
        fn default() -> Self {
            Self {
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                field: Default::default(),
                kind: Default::default(),
                operator: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
        pub fn builder() -> builder::AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Comparison operator used to evaluate the extracted value against the specified condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
    }
    impl ::std::fmt::Display
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the identifier matchable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the identifier matchable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResolutionRuleAttributesIdentifierMatchableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertsSourceResolutionRuleAttributesIdentifierMatchableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceResolutionRuleAttributesIdentifierMatchableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the identifier reference
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the identifier reference",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResolutionRuleAttributesIdentifierReferenceKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for AlertsSourceResolutionRuleAttributesIdentifierReferenceKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceResolutionRuleAttributesIdentifierReferenceKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AlertsSourceResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/alerts_source"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the alert source",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_sources"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceResponse {
        pub data: AlertsSourceResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AlertsSourceResponse {
        pub fn builder() -> builder::AlertsSourceResponse {
            Default::default()
        }
    }
    ///`AlertsSourceResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/alerts_source"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the alert source",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_sources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceResponseData {
        pub attributes: AlertsSource,
        ///Unique ID of the alert source
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AlertsSourceResponseDataType,
    }
    impl AlertsSourceResponseData {
        pub fn builder() -> builder::AlertsSourceResponseData {
            Default::default()
        }
    }
    ///`AlertsSourceResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_sources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceResponseDataType {
        #[serde(rename = "alert_sources")]
        AlertSources,
    }
    impl ::std::fmt::Display for AlertsSourceResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertSources => f.write_str("alert_sources"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_sources" => Ok(Self::AlertSources),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertsSourceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The alert source type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The alert source type",
    ///  "type": "string",
    ///  "enum": [
    ///    "email",
    ///    "app_dynamics",
    ///    "catchpoint",
    ///    "cloudflare",
    ///    "datadog",
    ///    "dynatrace",
    ///    "alertmanager",
    ///    "google_cloud",
    ///    "grafana",
    ///    "sentry",
    ///    "generic_webhook",
    ///    "cloud_watch",
    ///    "aws_sns",
    ///    "checkly",
    ///    "azure",
    ///    "new_relic",
    ///    "splunk",
    ///    "chronosphere",
    ///    "app_optics",
    ///    "bug_snag",
    ///    "honeycomb",
    ///    "monte_carlo",
    ///    "nagios",
    ///    "prtg"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceSourceType {
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "app_dynamics")]
        AppDynamics,
        #[serde(rename = "catchpoint")]
        Catchpoint,
        #[serde(rename = "cloudflare")]
        Cloudflare,
        #[serde(rename = "datadog")]
        Datadog,
        #[serde(rename = "dynatrace")]
        Dynatrace,
        #[serde(rename = "alertmanager")]
        Alertmanager,
        #[serde(rename = "google_cloud")]
        GoogleCloud,
        #[serde(rename = "grafana")]
        Grafana,
        #[serde(rename = "sentry")]
        Sentry,
        #[serde(rename = "generic_webhook")]
        GenericWebhook,
        #[serde(rename = "cloud_watch")]
        CloudWatch,
        #[serde(rename = "aws_sns")]
        AwsSns,
        #[serde(rename = "checkly")]
        Checkly,
        #[serde(rename = "azure")]
        Azure,
        #[serde(rename = "new_relic")]
        NewRelic,
        #[serde(rename = "splunk")]
        Splunk,
        #[serde(rename = "chronosphere")]
        Chronosphere,
        #[serde(rename = "app_optics")]
        AppOptics,
        #[serde(rename = "bug_snag")]
        BugSnag,
        #[serde(rename = "honeycomb")]
        Honeycomb,
        #[serde(rename = "monte_carlo")]
        MonteCarlo,
        #[serde(rename = "nagios")]
        Nagios,
        #[serde(rename = "prtg")]
        Prtg,
    }
    impl ::std::fmt::Display for AlertsSourceSourceType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Email => f.write_str("email"),
                Self::AppDynamics => f.write_str("app_dynamics"),
                Self::Catchpoint => f.write_str("catchpoint"),
                Self::Cloudflare => f.write_str("cloudflare"),
                Self::Datadog => f.write_str("datadog"),
                Self::Dynatrace => f.write_str("dynatrace"),
                Self::Alertmanager => f.write_str("alertmanager"),
                Self::GoogleCloud => f.write_str("google_cloud"),
                Self::Grafana => f.write_str("grafana"),
                Self::Sentry => f.write_str("sentry"),
                Self::GenericWebhook => f.write_str("generic_webhook"),
                Self::CloudWatch => f.write_str("cloud_watch"),
                Self::AwsSns => f.write_str("aws_sns"),
                Self::Checkly => f.write_str("checkly"),
                Self::Azure => f.write_str("azure"),
                Self::NewRelic => f.write_str("new_relic"),
                Self::Splunk => f.write_str("splunk"),
                Self::Chronosphere => f.write_str("chronosphere"),
                Self::AppOptics => f.write_str("app_optics"),
                Self::BugSnag => f.write_str("bug_snag"),
                Self::Honeycomb => f.write_str("honeycomb"),
                Self::MonteCarlo => f.write_str("monte_carlo"),
                Self::Nagios => f.write_str("nagios"),
                Self::Prtg => f.write_str("prtg"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceSourceType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email" => Ok(Self::Email),
                "app_dynamics" => Ok(Self::AppDynamics),
                "catchpoint" => Ok(Self::Catchpoint),
                "cloudflare" => Ok(Self::Cloudflare),
                "datadog" => Ok(Self::Datadog),
                "dynatrace" => Ok(Self::Dynatrace),
                "alertmanager" => Ok(Self::Alertmanager),
                "google_cloud" => Ok(Self::GoogleCloud),
                "grafana" => Ok(Self::Grafana),
                "sentry" => Ok(Self::Sentry),
                "generic_webhook" => Ok(Self::GenericWebhook),
                "cloud_watch" => Ok(Self::CloudWatch),
                "aws_sns" => Ok(Self::AwsSns),
                "checkly" => Ok(Self::Checkly),
                "azure" => Ok(Self::Azure),
                "new_relic" => Ok(Self::NewRelic),
                "splunk" => Ok(Self::Splunk),
                "chronosphere" => Ok(Self::Chronosphere),
                "app_optics" => Ok(Self::AppOptics),
                "bug_snag" => Ok(Self::BugSnag),
                "honeycomb" => Ok(Self::Honeycomb),
                "monte_carlo" => Ok(Self::MonteCarlo),
                "nagios" => Ok(Self::Nagios),
                "prtg" => Ok(Self::Prtg),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertsSourceSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertsSourceSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertsSourceSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Provide additional attributes for generic_webhook alerts source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Provide additional attributes for generic_webhook alerts source",
    ///  "type": "object",
    ///  "properties": {
    ///    "accept_threaded_emails": {
    ///      "description": "Set this to false to reject threaded emails",
    ///      "type": "boolean"
    ///    },
    ///    "auto_resolve": {
    ///      "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///      "type": "boolean"
    ///    },
    ///    "field_mappings_attributes": {
    ///      "description": "Specify rules to auto resolve alerts",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "field": {
    ///            "description": "Select the field on which the condition to be evaluated",
    ///            "type": "string",
    ///            "enum": [
    ///              "external_id",
    ///              "state",
    ///              "alert_title",
    ///              "alert_description",
    ///              "alert_external_url",
    ///              "notification_target_type",
    ///              "notification_target_id"
    ///            ]
    ///          },
    ///          "json_path": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "resolve_state": {
    ///      "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceSourceableAttributes {
        ///Set this to false to reject threaded emails
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub accept_threaded_emails: ::std::option::Option<bool>,
        ///Set this to true to auto-resolve alerts based on field_mappings_attributes conditions
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_resolve: ::std::option::Option<bool>,
        ///Specify rules to auto resolve alerts
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub field_mappings_attributes: ::std::vec::Vec<
            AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
        >,
        ///This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolve_state: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AlertsSourceSourceableAttributes {
        fn default() -> Self {
            Self {
                accept_threaded_emails: Default::default(),
                auto_resolve: Default::default(),
                field_mappings_attributes: Default::default(),
                resolve_state: Default::default(),
            }
        }
    }
    impl AlertsSourceSourceableAttributes {
        pub fn builder() -> builder::AlertsSourceSourceableAttributes {
            Default::default()
        }
    }
    ///`AlertsSourceSourceableAttributesFieldMappingsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "field": {
    ///      "description": "Select the field on which the condition to be evaluated",
    ///      "type": "string",
    ///      "enum": [
    ///        "external_id",
    ///        "state",
    ///        "alert_title",
    ///        "alert_description",
    ///        "alert_external_url",
    ///        "notification_target_type",
    ///        "notification_target_id"
    ///      ]
    ///    },
    ///    "json_path": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
        ///Select the field on which the condition to be evaluated
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field: ::std::option::Option<
            AlertsSourceSourceableAttributesFieldMappingsAttributesItemField,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
        fn default() -> Self {
            Self {
                field: Default::default(),
                json_path: Default::default(),
            }
        }
    }
    impl AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
        pub fn builder() -> builder::AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
            Default::default()
        }
    }
    ///Select the field on which the condition to be evaluated
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Select the field on which the condition to be evaluated",
    ///  "type": "string",
    ///  "enum": [
    ///    "external_id",
    ///    "state",
    ///    "alert_title",
    ///    "alert_description",
    ///    "alert_external_url",
    ///    "notification_target_type",
    ///    "notification_target_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceSourceableAttributesFieldMappingsAttributesItemField {
        #[serde(rename = "external_id")]
        ExternalId,
        #[serde(rename = "state")]
        State,
        #[serde(rename = "alert_title")]
        AlertTitle,
        #[serde(rename = "alert_description")]
        AlertDescription,
        #[serde(rename = "alert_external_url")]
        AlertExternalUrl,
        #[serde(rename = "notification_target_type")]
        NotificationTargetType,
        #[serde(rename = "notification_target_id")]
        NotificationTargetId,
    }
    impl ::std::fmt::Display
    for AlertsSourceSourceableAttributesFieldMappingsAttributesItemField {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ExternalId => f.write_str("external_id"),
                Self::State => f.write_str("state"),
                Self::AlertTitle => f.write_str("alert_title"),
                Self::AlertDescription => f.write_str("alert_description"),
                Self::AlertExternalUrl => f.write_str("alert_external_url"),
                Self::NotificationTargetType => f.write_str("notification_target_type"),
                Self::NotificationTargetId => f.write_str("notification_target_id"),
            }
        }
    }
    impl ::std::str::FromStr
    for AlertsSourceSourceableAttributesFieldMappingsAttributesItemField {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "external_id" => Ok(Self::ExternalId),
                "state" => Ok(Self::State),
                "alert_title" => Ok(Self::AlertTitle),
                "alert_description" => Ok(Self::AlertDescription),
                "alert_external_url" => Ok(Self::AlertExternalUrl),
                "notification_target_type" => Ok(Self::NotificationTargetType),
                "notification_target_id" => Ok(Self::NotificationTargetId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AlertsSourceSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AlertsSourceSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AlertsSourceSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the alert source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the alert source",
    ///  "type": "string",
    ///  "enum": [
    ///    "connected",
    ///    "setup_complete",
    ///    "setup_incomplete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AlertsSourceStatus {
        #[serde(rename = "connected")]
        Connected,
        #[serde(rename = "setup_complete")]
        SetupComplete,
        #[serde(rename = "setup_incomplete")]
        SetupIncomplete,
    }
    impl ::std::fmt::Display for AlertsSourceStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Connected => f.write_str("connected"),
                Self::SetupComplete => f.write_str("setup_complete"),
                Self::SetupIncomplete => f.write_str("setup_incomplete"),
            }
        }
    }
    impl ::std::str::FromStr for AlertsSourceStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "connected" => Ok(Self::Connected),
                "setup_complete" => Ok(Self::SetupComplete),
                "setup_incomplete" => Ok(Self::SetupIncomplete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AlertsSourceStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AlertsSourceStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AlertsSourceStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ApiKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "kind",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "A description of the API key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "expires_at": {
    ///      "description": "Expiration date",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "grace_period_ends_at": {
    ///      "description": "Grace period end date",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the API key",
    ///      "type": "string",
    ///      "enum": [
    ///        "personal",
    ///        "team",
    ///        "organization"
    ///      ]
    ///    },
    ///    "last_used_at": {
    ///      "description": "Date of last use",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the API key",
    ///      "type": "string"
    ///    },
    ///    "on_call_role_id": {
    ///      "description": "The on-call role ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "role_id": {
    ///      "description": "The role ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKey {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///A description of the API key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Expiration date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expires_at: ::std::option::Option<::std::string::String>,
        ///Grace period end date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub grace_period_ends_at: ::std::option::Option<::std::string::String>,
        ///The kind of the API key
        pub kind: ApiKeyKind,
        ///Date of last use
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_used_at: ::std::option::Option<::std::string::String>,
        ///The name of the API key
        pub name: ::std::string::String,
        ///The on-call role ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub on_call_role_id: ::std::option::Option<::std::string::String>,
        ///The role ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub role_id: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl ApiKey {
        pub fn builder() -> builder::ApiKey {
            Default::default()
        }
    }
    ///The kind of the API key
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the API key",
    ///  "type": "string",
    ///  "enum": [
    ///    "personal",
    ///    "team",
    ///    "organization"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ApiKeyKind {
        #[serde(rename = "personal")]
        Personal,
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "organization")]
        Organization,
    }
    impl ::std::fmt::Display for ApiKeyKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Personal => f.write_str("personal"),
                Self::Team => f.write_str("team"),
                Self::Organization => f.write_str("organization"),
            }
        }
    }
    impl ::std::str::FromStr for ApiKeyKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "personal" => Ok(Self::Personal),
                "team" => Ok(Self::Team),
                "organization" => Ok(Self::Organization),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ApiKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ApiKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ApiKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ApiKeyList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/api_key"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the API key",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "api_keys"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyList {
        pub data: ::std::vec::Vec<ApiKeyListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl ApiKeyList {
        pub fn builder() -> builder::ApiKeyList {
            Default::default()
        }
    }
    ///`ApiKeyListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/api_key"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the API key",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "api_keys"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyListDataItem {
        pub attributes: ApiKey,
        ///Unique ID of the API key
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ApiKeyListDataItemType,
    }
    impl ApiKeyListDataItem {
        pub fn builder() -> builder::ApiKeyListDataItem {
            Default::default()
        }
    }
    ///`ApiKeyListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "api_keys"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ApiKeyListDataItemType {
        #[serde(rename = "api_keys")]
        ApiKeys,
    }
    impl ::std::fmt::Display for ApiKeyListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ApiKeys => f.write_str("api_keys"),
            }
        }
    }
    impl ::std::str::FromStr for ApiKeyListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "api_keys" => Ok(Self::ApiKeys),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ApiKeyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ApiKeyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ApiKeyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ApiKeyResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/api_key"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the API key",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "api_keys"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyResponse {
        pub data: ApiKeyResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ApiKeyResponse {
        pub fn builder() -> builder::ApiKeyResponse {
            Default::default()
        }
    }
    ///`ApiKeyResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/api_key"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the API key",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "api_keys"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyResponseData {
        pub attributes: ApiKey,
        ///Unique ID of the API key
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ApiKeyResponseDataType,
    }
    impl ApiKeyResponseData {
        pub fn builder() -> builder::ApiKeyResponseData {
            Default::default()
        }
    }
    ///`ApiKeyResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "api_keys"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ApiKeyResponseDataType {
        #[serde(rename = "api_keys")]
        ApiKeys,
    }
    impl ::std::fmt::Display for ApiKeyResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ApiKeys => f.write_str("api_keys"),
            }
        }
    }
    impl ::std::str::FromStr for ApiKeyResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "api_keys" => Ok(Self::ApiKeys),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ApiKeyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ApiKeyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ApiKeyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ApiKeyWithTokenResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/api_key"
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "token"
    ///              ],
    ///              "properties": {
    ///                "token": {
    ///                  "description": "The API key token (only shown once)",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the API key",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "api_keys"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyWithTokenResponse {
        pub data: ApiKeyWithTokenResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ApiKeyWithTokenResponse {
        pub fn builder() -> builder::ApiKeyWithTokenResponse {
            Default::default()
        }
    }
    ///`ApiKeyWithTokenResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/api_key"
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "token"
    ///          ],
    ///          "properties": {
    ///            "token": {
    ///              "description": "The API key token (only shown once)",
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the API key",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "api_keys"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyWithTokenResponseData {
        pub attributes: ApiKeyWithTokenResponseDataAttributes,
        ///Unique ID of the API key
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ApiKeyWithTokenResponseDataType,
    }
    impl ApiKeyWithTokenResponseData {
        pub fn builder() -> builder::ApiKeyWithTokenResponseData {
            Default::default()
        }
    }
    ///`ApiKeyWithTokenResponseDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "allOf": [
    ///    {
    ///      "$ref": "#/components/schemas/api_key"
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "token"
    ///      ],
    ///      "properties": {
    ///        "token": {
    ///          "description": "The API key token (only shown once)",
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ApiKeyWithTokenResponseDataAttributes {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///A description of the API key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Expiration date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expires_at: ::std::option::Option<::std::string::String>,
        ///Grace period end date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub grace_period_ends_at: ::std::option::Option<::std::string::String>,
        ///The kind of the API key
        pub kind: ApiKeyWithTokenResponseDataAttributesKind,
        ///Date of last use
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_used_at: ::std::option::Option<::std::string::String>,
        ///The name of the API key
        pub name: ::std::string::String,
        ///The on-call role ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub on_call_role_id: ::std::option::Option<::std::string::String>,
        ///The role ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub role_id: ::std::option::Option<::std::string::String>,
        ///The API key token (only shown once)
        pub token: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl ApiKeyWithTokenResponseDataAttributes {
        pub fn builder() -> builder::ApiKeyWithTokenResponseDataAttributes {
            Default::default()
        }
    }
    ///The kind of the API key
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the API key",
    ///  "type": "string",
    ///  "enum": [
    ///    "personal",
    ///    "team",
    ///    "organization"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ApiKeyWithTokenResponseDataAttributesKind {
        #[serde(rename = "personal")]
        Personal,
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "organization")]
        Organization,
    }
    impl ::std::fmt::Display for ApiKeyWithTokenResponseDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Personal => f.write_str("personal"),
                Self::Team => f.write_str("team"),
                Self::Organization => f.write_str("organization"),
            }
        }
    }
    impl ::std::str::FromStr for ApiKeyWithTokenResponseDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "personal" => Ok(Self::Personal),
                "team" => Ok(Self::Team),
                "organization" => Ok(Self::Organization),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ApiKeyWithTokenResponseDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ApiKeyWithTokenResponseDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ApiKeyWithTokenResponseDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ApiKeyWithTokenResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "api_keys"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ApiKeyWithTokenResponseDataType {
        #[serde(rename = "api_keys")]
        ApiKeys,
    }
    impl ::std::fmt::Display for ApiKeyWithTokenResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ApiKeys => f.write_str("api_keys"),
            }
        }
    }
    impl ::std::str::FromStr for ApiKeyWithTokenResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "api_keys" => Ok(Self::ApiKeys),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ApiKeyWithTokenResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ApiKeyWithTokenResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ApiKeyWithTokenResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ArchiveGoogleChatSpacesTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "spaces"
    ///  ],
    ///  "properties": {
    ///    "spaces": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "archive_google_chat_spaces"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveGoogleChatSpacesTaskParams {
        pub spaces: ::std::vec::Vec<ArchiveGoogleChatSpacesTaskParamsSpacesItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<ArchiveGoogleChatSpacesTaskParamsTaskType>,
    }
    impl ArchiveGoogleChatSpacesTaskParams {
        pub fn builder() -> builder::ArchiveGoogleChatSpacesTaskParams {
            Default::default()
        }
    }
    ///`ArchiveGoogleChatSpacesTaskParamsSpacesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveGoogleChatSpacesTaskParamsSpacesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ArchiveGoogleChatSpacesTaskParamsSpacesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ArchiveGoogleChatSpacesTaskParamsSpacesItem {
        pub fn builder() -> builder::ArchiveGoogleChatSpacesTaskParamsSpacesItem {
            Default::default()
        }
    }
    ///`ArchiveGoogleChatSpacesTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "archive_google_chat_spaces"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ArchiveGoogleChatSpacesTaskParamsTaskType {
        #[serde(rename = "archive_google_chat_spaces")]
        ArchiveGoogleChatSpaces,
    }
    impl ::std::fmt::Display for ArchiveGoogleChatSpacesTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ArchiveGoogleChatSpaces => {
                    f.write_str("archive_google_chat_spaces")
                }
            }
        }
    }
    impl ::std::str::FromStr for ArchiveGoogleChatSpacesTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "archive_google_chat_spaces" => Ok(Self::ArchiveGoogleChatSpaces),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ArchiveGoogleChatSpacesTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ArchiveGoogleChatSpacesTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ArchiveGoogleChatSpacesTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ArchiveMicrosoftTeamsChannelsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channels",
    ///    "team"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "archive_microsoft_teams_channels"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveMicrosoftTeamsChannelsTaskParams {
        pub channels: ::std::vec::Vec<
            ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            ArchiveMicrosoftTeamsChannelsTaskParamsTaskType,
        >,
        pub team: ArchiveMicrosoftTeamsChannelsTaskParamsTeam,
    }
    impl ArchiveMicrosoftTeamsChannelsTaskParams {
        pub fn builder() -> builder::ArchiveMicrosoftTeamsChannelsTaskParams {
            Default::default()
        }
    }
    ///`ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
        pub fn builder() -> builder::ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`ArchiveMicrosoftTeamsChannelsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "archive_microsoft_teams_channels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ArchiveMicrosoftTeamsChannelsTaskParamsTaskType {
        #[serde(rename = "archive_microsoft_teams_channels")]
        ArchiveMicrosoftTeamsChannels,
    }
    impl ::std::fmt::Display for ArchiveMicrosoftTeamsChannelsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ArchiveMicrosoftTeamsChannels => {
                    f.write_str("archive_microsoft_teams_channels")
                }
            }
        }
    }
    impl ::std::str::FromStr for ArchiveMicrosoftTeamsChannelsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "archive_microsoft_teams_channels" => {
                    Ok(Self::ArchiveMicrosoftTeamsChannels)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ArchiveMicrosoftTeamsChannelsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ArchiveMicrosoftTeamsChannelsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ArchiveMicrosoftTeamsChannelsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ArchiveMicrosoftTeamsChannelsTaskParamsTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
        pub fn builder() -> builder::ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
            Default::default()
        }
    }
    ///`ArchiveSlackChannelsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channels"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "archive_slack_channels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveSlackChannelsTaskParams {
        pub channels: ::std::vec::Vec<ArchiveSlackChannelsTaskParamsChannelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<ArchiveSlackChannelsTaskParamsTaskType>,
    }
    impl ArchiveSlackChannelsTaskParams {
        pub fn builder() -> builder::ArchiveSlackChannelsTaskParams {
            Default::default()
        }
    }
    ///`ArchiveSlackChannelsTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ArchiveSlackChannelsTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ArchiveSlackChannelsTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ArchiveSlackChannelsTaskParamsChannelsItem {
        pub fn builder() -> builder::ArchiveSlackChannelsTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`ArchiveSlackChannelsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "archive_slack_channels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ArchiveSlackChannelsTaskParamsTaskType {
        #[serde(rename = "archive_slack_channels")]
        ArchiveSlackChannels,
    }
    impl ::std::fmt::Display for ArchiveSlackChannelsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ArchiveSlackChannels => f.write_str("archive_slack_channels"),
            }
        }
    }
    impl ::std::str::FromStr for ArchiveSlackChannelsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "archive_slack_channels" => Ok(Self::ArchiveSlackChannels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ArchiveSlackChannelsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ArchiveSlackChannelsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ArchiveSlackChannelsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AssignRoleToUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "incident_role_id": {
    ///              "description": "ID of the incident role",
    ///              "type": "string"
    ///            },
    ///            "user_id": {
    ///              "description": "ID of user you wish to assign this incident",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AssignRoleToUser {
        pub data: AssignRoleToUserData,
    }
    impl AssignRoleToUser {
        pub fn builder() -> builder::AssignRoleToUser {
            Default::default()
        }
    }
    ///`AssignRoleToUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "incident_role_id": {
    ///          "description": "ID of the incident role",
    ///          "type": "string"
    ///        },
    ///        "user_id": {
    ///          "description": "ID of user you wish to assign this incident",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AssignRoleToUserData {
        pub attributes: AssignRoleToUserDataAttributes,
        #[serde(rename = "type")]
        pub type_: AssignRoleToUserDataType,
    }
    impl AssignRoleToUserData {
        pub fn builder() -> builder::AssignRoleToUserData {
            Default::default()
        }
    }
    ///`AssignRoleToUserDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "incident_role_id": {
    ///      "description": "ID of the incident role",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "ID of user you wish to assign this incident",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct AssignRoleToUserDataAttributes {
        ///ID of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///ID of user you wish to assign this incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AssignRoleToUserDataAttributes {
        fn default() -> Self {
            Self {
                incident_role_id: Default::default(),
                user_id: Default::default(),
            }
        }
    }
    impl AssignRoleToUserDataAttributes {
        pub fn builder() -> builder::AssignRoleToUserDataAttributes {
            Default::default()
        }
    }
    ///`AssignRoleToUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AssignRoleToUserDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for AssignRoleToUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for AssignRoleToUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AssignRoleToUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AssignRoleToUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AssignRoleToUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AttachAlert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "alert_ids"
    ///          ],
    ///          "properties": {
    ///            "alert_ids": {
    ///              "description": "Alert Id to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AttachAlert {
        pub data: AttachAlertData,
    }
    impl AttachAlert {
        pub fn builder() -> builder::AttachAlert {
            Default::default()
        }
    }
    ///`AttachAlertData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "alert_ids"
    ///      ],
    ///      "properties": {
    ///        "alert_ids": {
    ///          "description": "Alert Id to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AttachAlertData {
        pub attributes: AttachAlertDataAttributes,
        #[serde(rename = "type")]
        pub type_: AttachAlertDataType,
    }
    impl AttachAlertData {
        pub fn builder() -> builder::AttachAlertData {
            Default::default()
        }
    }
    ///`AttachAlertDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_ids"
    ///  ],
    ///  "properties": {
    ///    "alert_ids": {
    ///      "description": "Alert Id to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct AttachAlertDataAttributes {
        ///Alert Id to attach to the incident
        pub alert_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl AttachAlertDataAttributes {
        pub fn builder() -> builder::AttachAlertDataAttributes {
            Default::default()
        }
    }
    ///`AttachAlertDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AttachAlertDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for AttachAlertDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for AttachAlertDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AttachAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AttachAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AttachAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AttachDatadogDashboardsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "dashboards"
    ///  ],
    ///  "properties": {
    ///    "dashboards": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "attach_datadog_dashboards"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AttachDatadogDashboardsTaskParams {
        pub dashboards: ::std::vec::Vec<AttachDatadogDashboardsTaskParamsDashboardsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AttachDatadogDashboardsTaskParamsTaskType>,
    }
    impl AttachDatadogDashboardsTaskParams {
        pub fn builder() -> builder::AttachDatadogDashboardsTaskParams {
            Default::default()
        }
    }
    ///`AttachDatadogDashboardsTaskParamsDashboardsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AttachDatadogDashboardsTaskParamsDashboardsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AttachDatadogDashboardsTaskParamsDashboardsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AttachDatadogDashboardsTaskParamsDashboardsItem {
        pub fn builder() -> builder::AttachDatadogDashboardsTaskParamsDashboardsItem {
            Default::default()
        }
    }
    ///`AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`AttachDatadogDashboardsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "attach_datadog_dashboards"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AttachDatadogDashboardsTaskParamsTaskType {
        #[serde(rename = "attach_datadog_dashboards")]
        AttachDatadogDashboards,
    }
    impl ::std::fmt::Display for AttachDatadogDashboardsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AttachDatadogDashboards => f.write_str("attach_datadog_dashboards"),
            }
        }
    }
    impl ::std::str::FromStr for AttachDatadogDashboardsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attach_datadog_dashboards" => Ok(Self::AttachDatadogDashboards),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AttachDatadogDashboardsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AttachDatadogDashboardsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AttachDatadogDashboardsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Audit`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "event"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "event": {
    ///      "description": "Describes the action that was taken.",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "ID of audit",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "ip_address": {
    ///      "description": "IP address of the client that performed the action",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "item_id": {
    ///      "description": "ID of the affected object",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "item_type": {
    ///      "description": "Describes the object in which the action was taken on",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertRoute",
    ///        "AlertRoutingRule",
    ///        "Alerts::Source",
    ///        "ApiKey",
    ///        "Catalog",
    ///        "CatalogEntity",
    ///        "CatalogEntityProperty",
    ///        "CatalogField",
    ///        "Cause",
    ///        "CustomField",
    ///        "CustomFieldOption",
    ///        "CustomForm",
    ///        "Dashboard",
    ///        "EdgeConnector",
    ///        "EdgeConnector::Action",
    ///        "Environment",
    ///        "EscalationPolicy",
    ///        "EscalationPolicyPath",
    ///        "ExportJob",
    ///        "FormField",
    ///        "Functionality",
    ///        "GeniusWorkflow",
    ///        "GeniusWorkflowGroup",
    ///        "GeniusWorkflowRun",
    ///        "Group",
    ///        "GroupUser",
    ///        "Heartbeat",
    ///        "Incident",
    ///        "IncidentActionItem",
    ///        "IncidentEvent",
    ///        "IncidentFormFieldSelection",
    ///        "IncidentFormFieldSelectionUser",
    ///        "IncidentPermissionSet",
    ///        "IncidentPostMortem",
    ///        "IncidentRoleAssignment",
    ///        "IncidentRoleTask",
    ///        "IncidentStatusPageEvent",
    ///        "IncidentTask",
    ///        "IncidentType",
    ///        "Integrations::DatadogAccount",
    ///        "Integrations::GithubAccount",
    ///        "Integrations::GoogleMeetAccount",
    ///        "Integrations::JiraAccount",
    ///        "Integrations::MicrosoftTeamsAccount",
    ///        "Integrations::OpsgenieAccount",
    ///        "Integrations::PagerdutyAccount",
    ///        "Integrations::ServiceNowAccount",
    ///        "Integrations::SlackAccount",
    ///        "Integrations::StatusPageIoAccount",
    ///        "Integrations::ZendeskAccount",
    ///        "Integrations::ZoomAccount",
    ///        "LiveCallRouter",
    ///        "LoginActivity",
    ///        "Membership",
    ///        "OnCallRole",
    ///        "Playbook",
    ///        "PlaybookTask",
    ///        "Role",
    ///        "Schedule",
    ///        "Secret",
    ///        "Service",
    ///        "Severity",
    ///        "StatusPage"
    ///      ]
    ///    },
    ///    "item_type_display": {
    ///      "description": "Human-friendly display name for the item type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "object": {
    ///      "description": "The object in which the action was taken on",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "object_changes": {
    ///      "description": "The changes that occurred on the object",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "request_id": {
    ///      "description": "Unique request ID (UUID) for the HTTP request that triggered the action",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "session_id": {
    ///      "description": "SHA-256 fingerprint of the web session for correlating multiple actions within the same browser session",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_agent": {
    ///      "description": "User-Agent header of the client that performed the action",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_id": {
    ///      "description": "The ID of who took action on the object. Together with whodunnit_type can be used to find the user",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Audit {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Describes the action that was taken.
        pub event: ::std::string::String,
        ///ID of audit
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<i64>,
        ///IP address of the client that performed the action
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ip_address: ::std::option::Option<::std::string::String>,
        ///ID of the affected object
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub item_id: ::std::option::Option<::std::string::String>,
        ///Describes the object in which the action was taken on
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub item_type: ::std::option::Option<AuditItemType>,
        ///Human-friendly display name for the item type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub item_type_display: ::std::option::Option<::std::string::String>,
        ///The object in which the action was taken on
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub object: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///The changes that occurred on the object
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub object_changes: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Unique request ID (UUID) for the HTTP request that triggered the action
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub request_id: ::std::option::Option<::std::string::String>,
        ///SHA-256 fingerprint of the web session for correlating multiple actions within the same browser session
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub session_id: ::std::option::Option<::std::string::String>,
        ///User-Agent header of the client that performed the action
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_agent: ::std::option::Option<::std::string::String>,
        ///The ID of who took action on the object. Together with whodunnit_type can be used to find the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl Audit {
        pub fn builder() -> builder::Audit {
            Default::default()
        }
    }
    ///Describes the object in which the action was taken on
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Describes the object in which the action was taken on",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertRoute",
    ///    "AlertRoutingRule",
    ///    "Alerts::Source",
    ///    "ApiKey",
    ///    "Catalog",
    ///    "CatalogEntity",
    ///    "CatalogEntityProperty",
    ///    "CatalogField",
    ///    "Cause",
    ///    "CustomField",
    ///    "CustomFieldOption",
    ///    "CustomForm",
    ///    "Dashboard",
    ///    "EdgeConnector",
    ///    "EdgeConnector::Action",
    ///    "Environment",
    ///    "EscalationPolicy",
    ///    "EscalationPolicyPath",
    ///    "ExportJob",
    ///    "FormField",
    ///    "Functionality",
    ///    "GeniusWorkflow",
    ///    "GeniusWorkflowGroup",
    ///    "GeniusWorkflowRun",
    ///    "Group",
    ///    "GroupUser",
    ///    "Heartbeat",
    ///    "Incident",
    ///    "IncidentActionItem",
    ///    "IncidentEvent",
    ///    "IncidentFormFieldSelection",
    ///    "IncidentFormFieldSelectionUser",
    ///    "IncidentPermissionSet",
    ///    "IncidentPostMortem",
    ///    "IncidentRoleAssignment",
    ///    "IncidentRoleTask",
    ///    "IncidentStatusPageEvent",
    ///    "IncidentTask",
    ///    "IncidentType",
    ///    "Integrations::DatadogAccount",
    ///    "Integrations::GithubAccount",
    ///    "Integrations::GoogleMeetAccount",
    ///    "Integrations::JiraAccount",
    ///    "Integrations::MicrosoftTeamsAccount",
    ///    "Integrations::OpsgenieAccount",
    ///    "Integrations::PagerdutyAccount",
    ///    "Integrations::ServiceNowAccount",
    ///    "Integrations::SlackAccount",
    ///    "Integrations::StatusPageIoAccount",
    ///    "Integrations::ZendeskAccount",
    ///    "Integrations::ZoomAccount",
    ///    "LiveCallRouter",
    ///    "LoginActivity",
    ///    "Membership",
    ///    "OnCallRole",
    ///    "Playbook",
    ///    "PlaybookTask",
    ///    "Role",
    ///    "Schedule",
    ///    "Secret",
    ///    "Service",
    ///    "Severity",
    ///    "StatusPage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuditItemType {
        AlertRoute,
        AlertRoutingRule,
        #[serde(rename = "Alerts::Source")]
        AlertsSource,
        ApiKey,
        Catalog,
        CatalogEntity,
        CatalogEntityProperty,
        CatalogField,
        Cause,
        CustomField,
        CustomFieldOption,
        CustomForm,
        Dashboard,
        EdgeConnector,
        #[serde(rename = "EdgeConnector::Action")]
        EdgeConnectorAction,
        Environment,
        EscalationPolicy,
        EscalationPolicyPath,
        ExportJob,
        FormField,
        Functionality,
        GeniusWorkflow,
        GeniusWorkflowGroup,
        GeniusWorkflowRun,
        Group,
        GroupUser,
        Heartbeat,
        Incident,
        IncidentActionItem,
        IncidentEvent,
        IncidentFormFieldSelection,
        IncidentFormFieldSelectionUser,
        IncidentPermissionSet,
        IncidentPostMortem,
        IncidentRoleAssignment,
        IncidentRoleTask,
        IncidentStatusPageEvent,
        IncidentTask,
        IncidentType,
        #[serde(rename = "Integrations::DatadogAccount")]
        IntegrationsDatadogAccount,
        #[serde(rename = "Integrations::GithubAccount")]
        IntegrationsGithubAccount,
        #[serde(rename = "Integrations::GoogleMeetAccount")]
        IntegrationsGoogleMeetAccount,
        #[serde(rename = "Integrations::JiraAccount")]
        IntegrationsJiraAccount,
        #[serde(rename = "Integrations::MicrosoftTeamsAccount")]
        IntegrationsMicrosoftTeamsAccount,
        #[serde(rename = "Integrations::OpsgenieAccount")]
        IntegrationsOpsgenieAccount,
        #[serde(rename = "Integrations::PagerdutyAccount")]
        IntegrationsPagerdutyAccount,
        #[serde(rename = "Integrations::ServiceNowAccount")]
        IntegrationsServiceNowAccount,
        #[serde(rename = "Integrations::SlackAccount")]
        IntegrationsSlackAccount,
        #[serde(rename = "Integrations::StatusPageIoAccount")]
        IntegrationsStatusPageIoAccount,
        #[serde(rename = "Integrations::ZendeskAccount")]
        IntegrationsZendeskAccount,
        #[serde(rename = "Integrations::ZoomAccount")]
        IntegrationsZoomAccount,
        LiveCallRouter,
        LoginActivity,
        Membership,
        OnCallRole,
        Playbook,
        PlaybookTask,
        Role,
        Schedule,
        Secret,
        Service,
        Severity,
        StatusPage,
    }
    impl ::std::fmt::Display for AuditItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoute => f.write_str("AlertRoute"),
                Self::AlertRoutingRule => f.write_str("AlertRoutingRule"),
                Self::AlertsSource => f.write_str("Alerts::Source"),
                Self::ApiKey => f.write_str("ApiKey"),
                Self::Catalog => f.write_str("Catalog"),
                Self::CatalogEntity => f.write_str("CatalogEntity"),
                Self::CatalogEntityProperty => f.write_str("CatalogEntityProperty"),
                Self::CatalogField => f.write_str("CatalogField"),
                Self::Cause => f.write_str("Cause"),
                Self::CustomField => f.write_str("CustomField"),
                Self::CustomFieldOption => f.write_str("CustomFieldOption"),
                Self::CustomForm => f.write_str("CustomForm"),
                Self::Dashboard => f.write_str("Dashboard"),
                Self::EdgeConnector => f.write_str("EdgeConnector"),
                Self::EdgeConnectorAction => f.write_str("EdgeConnector::Action"),
                Self::Environment => f.write_str("Environment"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::EscalationPolicyPath => f.write_str("EscalationPolicyPath"),
                Self::ExportJob => f.write_str("ExportJob"),
                Self::FormField => f.write_str("FormField"),
                Self::Functionality => f.write_str("Functionality"),
                Self::GeniusWorkflow => f.write_str("GeniusWorkflow"),
                Self::GeniusWorkflowGroup => f.write_str("GeniusWorkflowGroup"),
                Self::GeniusWorkflowRun => f.write_str("GeniusWorkflowRun"),
                Self::Group => f.write_str("Group"),
                Self::GroupUser => f.write_str("GroupUser"),
                Self::Heartbeat => f.write_str("Heartbeat"),
                Self::Incident => f.write_str("Incident"),
                Self::IncidentActionItem => f.write_str("IncidentActionItem"),
                Self::IncidentEvent => f.write_str("IncidentEvent"),
                Self::IncidentFormFieldSelection => {
                    f.write_str("IncidentFormFieldSelection")
                }
                Self::IncidentFormFieldSelectionUser => {
                    f.write_str("IncidentFormFieldSelectionUser")
                }
                Self::IncidentPermissionSet => f.write_str("IncidentPermissionSet"),
                Self::IncidentPostMortem => f.write_str("IncidentPostMortem"),
                Self::IncidentRoleAssignment => f.write_str("IncidentRoleAssignment"),
                Self::IncidentRoleTask => f.write_str("IncidentRoleTask"),
                Self::IncidentStatusPageEvent => f.write_str("IncidentStatusPageEvent"),
                Self::IncidentTask => f.write_str("IncidentTask"),
                Self::IncidentType => f.write_str("IncidentType"),
                Self::IntegrationsDatadogAccount => {
                    f.write_str("Integrations::DatadogAccount")
                }
                Self::IntegrationsGithubAccount => {
                    f.write_str("Integrations::GithubAccount")
                }
                Self::IntegrationsGoogleMeetAccount => {
                    f.write_str("Integrations::GoogleMeetAccount")
                }
                Self::IntegrationsJiraAccount => f.write_str("Integrations::JiraAccount"),
                Self::IntegrationsMicrosoftTeamsAccount => {
                    f.write_str("Integrations::MicrosoftTeamsAccount")
                }
                Self::IntegrationsOpsgenieAccount => {
                    f.write_str("Integrations::OpsgenieAccount")
                }
                Self::IntegrationsPagerdutyAccount => {
                    f.write_str("Integrations::PagerdutyAccount")
                }
                Self::IntegrationsServiceNowAccount => {
                    f.write_str("Integrations::ServiceNowAccount")
                }
                Self::IntegrationsSlackAccount => {
                    f.write_str("Integrations::SlackAccount")
                }
                Self::IntegrationsStatusPageIoAccount => {
                    f.write_str("Integrations::StatusPageIoAccount")
                }
                Self::IntegrationsZendeskAccount => {
                    f.write_str("Integrations::ZendeskAccount")
                }
                Self::IntegrationsZoomAccount => f.write_str("Integrations::ZoomAccount"),
                Self::LiveCallRouter => f.write_str("LiveCallRouter"),
                Self::LoginActivity => f.write_str("LoginActivity"),
                Self::Membership => f.write_str("Membership"),
                Self::OnCallRole => f.write_str("OnCallRole"),
                Self::Playbook => f.write_str("Playbook"),
                Self::PlaybookTask => f.write_str("PlaybookTask"),
                Self::Role => f.write_str("Role"),
                Self::Schedule => f.write_str("Schedule"),
                Self::Secret => f.write_str("Secret"),
                Self::Service => f.write_str("Service"),
                Self::Severity => f.write_str("Severity"),
                Self::StatusPage => f.write_str("StatusPage"),
            }
        }
    }
    impl ::std::str::FromStr for AuditItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertRoute" => Ok(Self::AlertRoute),
                "AlertRoutingRule" => Ok(Self::AlertRoutingRule),
                "Alerts::Source" => Ok(Self::AlertsSource),
                "ApiKey" => Ok(Self::ApiKey),
                "Catalog" => Ok(Self::Catalog),
                "CatalogEntity" => Ok(Self::CatalogEntity),
                "CatalogEntityProperty" => Ok(Self::CatalogEntityProperty),
                "CatalogField" => Ok(Self::CatalogField),
                "Cause" => Ok(Self::Cause),
                "CustomField" => Ok(Self::CustomField),
                "CustomFieldOption" => Ok(Self::CustomFieldOption),
                "CustomForm" => Ok(Self::CustomForm),
                "Dashboard" => Ok(Self::Dashboard),
                "EdgeConnector" => Ok(Self::EdgeConnector),
                "EdgeConnector::Action" => Ok(Self::EdgeConnectorAction),
                "Environment" => Ok(Self::Environment),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "EscalationPolicyPath" => Ok(Self::EscalationPolicyPath),
                "ExportJob" => Ok(Self::ExportJob),
                "FormField" => Ok(Self::FormField),
                "Functionality" => Ok(Self::Functionality),
                "GeniusWorkflow" => Ok(Self::GeniusWorkflow),
                "GeniusWorkflowGroup" => Ok(Self::GeniusWorkflowGroup),
                "GeniusWorkflowRun" => Ok(Self::GeniusWorkflowRun),
                "Group" => Ok(Self::Group),
                "GroupUser" => Ok(Self::GroupUser),
                "Heartbeat" => Ok(Self::Heartbeat),
                "Incident" => Ok(Self::Incident),
                "IncidentActionItem" => Ok(Self::IncidentActionItem),
                "IncidentEvent" => Ok(Self::IncidentEvent),
                "IncidentFormFieldSelection" => Ok(Self::IncidentFormFieldSelection),
                "IncidentFormFieldSelectionUser" => {
                    Ok(Self::IncidentFormFieldSelectionUser)
                }
                "IncidentPermissionSet" => Ok(Self::IncidentPermissionSet),
                "IncidentPostMortem" => Ok(Self::IncidentPostMortem),
                "IncidentRoleAssignment" => Ok(Self::IncidentRoleAssignment),
                "IncidentRoleTask" => Ok(Self::IncidentRoleTask),
                "IncidentStatusPageEvent" => Ok(Self::IncidentStatusPageEvent),
                "IncidentTask" => Ok(Self::IncidentTask),
                "IncidentType" => Ok(Self::IncidentType),
                "Integrations::DatadogAccount" => Ok(Self::IntegrationsDatadogAccount),
                "Integrations::GithubAccount" => Ok(Self::IntegrationsGithubAccount),
                "Integrations::GoogleMeetAccount" => {
                    Ok(Self::IntegrationsGoogleMeetAccount)
                }
                "Integrations::JiraAccount" => Ok(Self::IntegrationsJiraAccount),
                "Integrations::MicrosoftTeamsAccount" => {
                    Ok(Self::IntegrationsMicrosoftTeamsAccount)
                }
                "Integrations::OpsgenieAccount" => Ok(Self::IntegrationsOpsgenieAccount),
                "Integrations::PagerdutyAccount" => {
                    Ok(Self::IntegrationsPagerdutyAccount)
                }
                "Integrations::ServiceNowAccount" => {
                    Ok(Self::IntegrationsServiceNowAccount)
                }
                "Integrations::SlackAccount" => Ok(Self::IntegrationsSlackAccount),
                "Integrations::StatusPageIoAccount" => {
                    Ok(Self::IntegrationsStatusPageIoAccount)
                }
                "Integrations::ZendeskAccount" => Ok(Self::IntegrationsZendeskAccount),
                "Integrations::ZoomAccount" => Ok(Self::IntegrationsZoomAccount),
                "LiveCallRouter" => Ok(Self::LiveCallRouter),
                "LoginActivity" => Ok(Self::LoginActivity),
                "Membership" => Ok(Self::Membership),
                "OnCallRole" => Ok(Self::OnCallRole),
                "Playbook" => Ok(Self::Playbook),
                "PlaybookTask" => Ok(Self::PlaybookTask),
                "Role" => Ok(Self::Role),
                "Schedule" => Ok(Self::Schedule),
                "Secret" => Ok(Self::Secret),
                "Service" => Ok(Self::Service),
                "Severity" => Ok(Self::Severity),
                "StatusPage" => Ok(Self::StatusPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuditItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AuditItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AuditItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AuditsList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/audit"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the audit log item",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "audits"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AuditsList {
        pub data: ::std::vec::Vec<AuditsListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AuditsList {
        pub fn builder() -> builder::AuditsList {
            Default::default()
        }
    }
    ///`AuditsListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/audit"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the audit log item",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "audits"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AuditsListDataItem {
        pub attributes: Audit,
        ///Unique ID of the audit log item
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AuditsListDataItemType,
    }
    impl AuditsListDataItem {
        pub fn builder() -> builder::AuditsListDataItem {
            Default::default()
        }
    }
    ///`AuditsListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "audits"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuditsListDataItemType {
        #[serde(rename = "audits")]
        Audits,
    }
    impl ::std::fmt::Display for AuditsListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Audits => f.write_str("audits"),
            }
        }
    }
    impl ::std::str::FromStr for AuditsListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "audits" => Ok(Self::Audits),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuditsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AuditsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AuditsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Authorization`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "authorizable_id",
    ///    "authorizable_type",
    ///    "created_at",
    ///    "grantee_id",
    ///    "grantee_type",
    ///    "permissions",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "authorizable_id": {
    ///      "description": "The id of the resource being accessed.",
    ///      "type": "string"
    ///    },
    ///    "authorizable_type": {
    ///      "description": "The type of resource being accessed.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Dashboard"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "grantee_id": {
    ///      "description": "The resource id granted access.",
    ///      "type": "string"
    ///    },
    ///    "grantee_type": {
    ///      "description": "The type of resource granted access.",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Team"
    ///      ]
    ///    },
    ///    "permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read",
    ///          "update",
    ///          "authorize",
    ///          "destroy"
    ///        ]
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Authorization {
        ///The id of the resource being accessed.
        pub authorizable_id: ::std::string::String,
        ///The type of resource being accessed.
        pub authorizable_type: AuthorizationAuthorizableType,
        pub created_at: ::std::string::String,
        ///The resource id granted access.
        pub grantee_id: ::std::string::String,
        ///The type of resource granted access.
        pub grantee_type: AuthorizationGranteeType,
        pub permissions: ::std::vec::Vec<AuthorizationPermissionsItem>,
        pub updated_at: ::std::string::String,
    }
    impl Authorization {
        pub fn builder() -> builder::Authorization {
            Default::default()
        }
    }
    ///The type of resource being accessed.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of resource being accessed.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Dashboard"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuthorizationAuthorizableType {
        Dashboard,
    }
    impl ::std::fmt::Display for AuthorizationAuthorizableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Dashboard => f.write_str("Dashboard"),
            }
        }
    }
    impl ::std::str::FromStr for AuthorizationAuthorizableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Dashboard" => Ok(Self::Dashboard),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuthorizationAuthorizableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AuthorizationAuthorizableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AuthorizationAuthorizableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of resource granted access.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of resource granted access.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuthorizationGranteeType {
        User,
        Team,
    }
    impl ::std::fmt::Display for AuthorizationGranteeType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Team => f.write_str("Team"),
            }
        }
    }
    impl ::std::str::FromStr for AuthorizationGranteeType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuthorizationGranteeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for AuthorizationGranteeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for AuthorizationGranteeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AuthorizationList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/authorization"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the authorization",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "authorizations"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AuthorizationList {
        pub data: ::std::vec::Vec<AuthorizationListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl AuthorizationList {
        pub fn builder() -> builder::AuthorizationList {
            Default::default()
        }
    }
    ///`AuthorizationListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/authorization"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the authorization",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "authorizations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AuthorizationListDataItem {
        pub attributes: Authorization,
        ///Unique ID of the authorization
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AuthorizationListDataItemType,
    }
    impl AuthorizationListDataItem {
        pub fn builder() -> builder::AuthorizationListDataItem {
            Default::default()
        }
    }
    ///`AuthorizationListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "authorizations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuthorizationListDataItemType {
        #[serde(rename = "authorizations")]
        Authorizations,
    }
    impl ::std::fmt::Display for AuthorizationListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Authorizations => f.write_str("authorizations"),
            }
        }
    }
    impl ::std::str::FromStr for AuthorizationListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "authorizations" => Ok(Self::Authorizations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuthorizationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AuthorizationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AuthorizationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AuthorizationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read",
    ///    "update",
    ///    "authorize",
    ///    "destroy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuthorizationPermissionsItem {
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "authorize")]
        Authorize,
        #[serde(rename = "destroy")]
        Destroy,
    }
    impl ::std::fmt::Display for AuthorizationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Authorize => f.write_str("authorize"),
                Self::Destroy => f.write_str("destroy"),
            }
        }
    }
    impl ::std::str::FromStr for AuthorizationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "authorize" => Ok(Self::Authorize),
                "destroy" => Ok(Self::Destroy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuthorizationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AuthorizationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AuthorizationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AuthorizationResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/authorization"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the authorization",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "authorizations"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AuthorizationResponse {
        pub data: AuthorizationResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl AuthorizationResponse {
        pub fn builder() -> builder::AuthorizationResponse {
            Default::default()
        }
    }
    ///`AuthorizationResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/authorization"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the authorization",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "authorizations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AuthorizationResponseData {
        pub attributes: Authorization,
        ///Unique ID of the authorization
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: AuthorizationResponseDataType,
    }
    impl AuthorizationResponseData {
        pub fn builder() -> builder::AuthorizationResponseData {
            Default::default()
        }
    }
    ///`AuthorizationResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "authorizations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AuthorizationResponseDataType {
        #[serde(rename = "authorizations")]
        Authorizations,
    }
    impl ::std::fmt::Display for AuthorizationResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Authorizations => f.write_str("authorizations"),
            }
        }
    }
    impl ::std::str::FromStr for AuthorizationResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "authorizations" => Ok(Self::Authorizations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AuthorizationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AuthorizationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AuthorizationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AutoAssignRoleOpsgenieTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_role_id",
    ///    "schedule"
    ///  ],
    ///  "properties": {
    ///    "incident_role_id": {
    ///      "description": "The role id",
    ///      "type": "string"
    ///    },
    ///    "schedule": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto_assign_role_opsgenie"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleOpsgenieTaskParams {
        ///The role id
        pub incident_role_id: ::std::string::String,
        pub schedule: AutoAssignRoleOpsgenieTaskParamsSchedule,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AutoAssignRoleOpsgenieTaskParamsTaskType>,
    }
    impl AutoAssignRoleOpsgenieTaskParams {
        pub fn builder() -> builder::AutoAssignRoleOpsgenieTaskParams {
            Default::default()
        }
    }
    ///`AutoAssignRoleOpsgenieTaskParamsSchedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleOpsgenieTaskParamsSchedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRoleOpsgenieTaskParamsSchedule {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleOpsgenieTaskParamsSchedule {
        pub fn builder() -> builder::AutoAssignRoleOpsgenieTaskParamsSchedule {
            Default::default()
        }
    }
    ///`AutoAssignRoleOpsgenieTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto_assign_role_opsgenie"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AutoAssignRoleOpsgenieTaskParamsTaskType {
        #[serde(rename = "auto_assign_role_opsgenie")]
        AutoAssignRoleOpsgenie,
    }
    impl ::std::fmt::Display for AutoAssignRoleOpsgenieTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AutoAssignRoleOpsgenie => f.write_str("auto_assign_role_opsgenie"),
            }
        }
    }
    impl ::std::str::FromStr for AutoAssignRoleOpsgenieTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto_assign_role_opsgenie" => Ok(Self::AutoAssignRoleOpsgenie),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AutoAssignRoleOpsgenieTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AutoAssignRoleOpsgenieTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AutoAssignRoleOpsgenieTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "schedule"
    ///      ],
    ///      "properties": {
    ///        "schedule": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "escalation_policy"
    ///      ],
    ///      "properties": {
    ///        "escalation_policy": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "incident_role_id"
    ///  ],
    ///  "properties": {
    ///    "escalation_policy": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_role_id": {
    ///      "description": "The role id",
    ///      "type": "string"
    ///    },
    ///    "schedule": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "service": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto_assign_role_pagerduty"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum AutoAssignRolePagerdutyTaskParams {
        Variant0 {
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            escalation_policy: ::std::option::Option<
                AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy,
            >,
            ///The role id
            incident_role_id: ::std::string::String,
            schedule: AutoAssignRolePagerdutyTaskParamsVariant0Schedule,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            service: ::std::option::Option<
                AutoAssignRolePagerdutyTaskParamsVariant0Service,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                AutoAssignRolePagerdutyTaskParamsVariant0TaskType,
            >,
        },
        Variant1 {
            escalation_policy: AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy,
            ///The role id
            incident_role_id: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            schedule: ::std::option::Option<
                AutoAssignRolePagerdutyTaskParamsVariant1Schedule,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            service: ::std::option::Option<
                AutoAssignRolePagerdutyTaskParamsVariant1Service,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                AutoAssignRolePagerdutyTaskParamsVariant1TaskType,
            >,
        },
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
        pub fn builder() -> builder::AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
            Default::default()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant0Schedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
        pub fn builder() -> builder::AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
            Default::default()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant0Service`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRolePagerdutyTaskParamsVariant0Service {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRolePagerdutyTaskParamsVariant0Service {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRolePagerdutyTaskParamsVariant0Service {
        pub fn builder() -> builder::AutoAssignRolePagerdutyTaskParamsVariant0Service {
            Default::default()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto_assign_role_pagerduty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AutoAssignRolePagerdutyTaskParamsVariant0TaskType {
        #[serde(rename = "auto_assign_role_pagerduty")]
        AutoAssignRolePagerduty,
    }
    impl ::std::fmt::Display for AutoAssignRolePagerdutyTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AutoAssignRolePagerduty => {
                    f.write_str("auto_assign_role_pagerduty")
                }
            }
        }
    }
    impl ::std::str::FromStr for AutoAssignRolePagerdutyTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto_assign_role_pagerduty" => Ok(Self::AutoAssignRolePagerduty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AutoAssignRolePagerdutyTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AutoAssignRolePagerdutyTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AutoAssignRolePagerdutyTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
        pub fn builder() -> builder::AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
            Default::default()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant1Schedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
        pub fn builder() -> builder::AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
            Default::default()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant1Service`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRolePagerdutyTaskParamsVariant1Service {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRolePagerdutyTaskParamsVariant1Service {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRolePagerdutyTaskParamsVariant1Service {
        pub fn builder() -> builder::AutoAssignRolePagerdutyTaskParamsVariant1Service {
            Default::default()
        }
    }
    ///`AutoAssignRolePagerdutyTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto_assign_role_pagerduty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AutoAssignRolePagerdutyTaskParamsVariant1TaskType {
        #[serde(rename = "auto_assign_role_pagerduty")]
        AutoAssignRolePagerduty,
    }
    impl ::std::fmt::Display for AutoAssignRolePagerdutyTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AutoAssignRolePagerduty => {
                    f.write_str("auto_assign_role_pagerduty")
                }
            }
        }
    }
    impl ::std::str::FromStr for AutoAssignRolePagerdutyTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto_assign_role_pagerduty" => Ok(Self::AutoAssignRolePagerduty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for AutoAssignRolePagerdutyTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AutoAssignRolePagerdutyTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AutoAssignRolePagerdutyTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AutoAssignRoleRootlyTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_role_id"
    ///  ],
    ///  "properties": {
    ///    "escalation_policy_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "group_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_role_id": {
    ///      "description": "The role id",
    ///      "type": "string"
    ///    },
    ///    "schedule_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "service_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto_assign_role_rootly"
    ///      ]
    ///    },
    ///    "user_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleRootlyTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_target: ::std::option::Option<
            AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_target: ::std::option::Option<
            AutoAssignRoleRootlyTaskParamsGroupTarget,
        >,
        ///The role id
        pub incident_role_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_target: ::std::option::Option<
            AutoAssignRoleRootlyTaskParamsScheduleTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_target: ::std::option::Option<
            AutoAssignRoleRootlyTaskParamsServiceTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AutoAssignRoleRootlyTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_target: ::std::option::Option<AutoAssignRoleRootlyTaskParamsUserTarget>,
    }
    impl AutoAssignRoleRootlyTaskParams {
        pub fn builder() -> builder::AutoAssignRoleRootlyTaskParams {
            Default::default()
        }
    }
    ///`AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
        pub fn builder() -> builder::AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
            Default::default()
        }
    }
    ///`AutoAssignRoleRootlyTaskParamsGroupTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleRootlyTaskParamsGroupTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsGroupTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleRootlyTaskParamsGroupTarget {
        pub fn builder() -> builder::AutoAssignRoleRootlyTaskParamsGroupTarget {
            Default::default()
        }
    }
    ///`AutoAssignRoleRootlyTaskParamsScheduleTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleRootlyTaskParamsScheduleTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsScheduleTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleRootlyTaskParamsScheduleTarget {
        pub fn builder() -> builder::AutoAssignRoleRootlyTaskParamsScheduleTarget {
            Default::default()
        }
    }
    ///`AutoAssignRoleRootlyTaskParamsServiceTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleRootlyTaskParamsServiceTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsServiceTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleRootlyTaskParamsServiceTarget {
        pub fn builder() -> builder::AutoAssignRoleRootlyTaskParamsServiceTarget {
            Default::default()
        }
    }
    ///`AutoAssignRoleRootlyTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto_assign_role_rootly"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AutoAssignRoleRootlyTaskParamsTaskType {
        #[serde(rename = "auto_assign_role_rootly")]
        AutoAssignRoleRootly,
    }
    impl ::std::fmt::Display for AutoAssignRoleRootlyTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AutoAssignRoleRootly => f.write_str("auto_assign_role_rootly"),
            }
        }
    }
    impl ::std::str::FromStr for AutoAssignRoleRootlyTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto_assign_role_rootly" => Ok(Self::AutoAssignRoleRootly),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AutoAssignRoleRootlyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AutoAssignRoleRootlyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AutoAssignRoleRootlyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AutoAssignRoleRootlyTaskParamsUserTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleRootlyTaskParamsUserTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsUserTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleRootlyTaskParamsUserTarget {
        pub fn builder() -> builder::AutoAssignRoleRootlyTaskParamsUserTarget {
            Default::default()
        }
    }
    ///`AutoAssignRoleVictorOpsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_role_id",
    ///    "team"
    ///  ],
    ///  "properties": {
    ///    "incident_role_id": {
    ///      "description": "The role id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto_assign_role_victor_ops"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleVictorOpsTaskParams {
        ///The role id
        pub incident_role_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<AutoAssignRoleVictorOpsTaskParamsTaskType>,
        pub team: AutoAssignRoleVictorOpsTaskParamsTeam,
    }
    impl AutoAssignRoleVictorOpsTaskParams {
        pub fn builder() -> builder::AutoAssignRoleVictorOpsTaskParams {
            Default::default()
        }
    }
    ///`AutoAssignRoleVictorOpsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto_assign_role_victor_ops"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum AutoAssignRoleVictorOpsTaskParamsTaskType {
        #[serde(rename = "auto_assign_role_victor_ops")]
        AutoAssignRoleVictorOps,
    }
    impl ::std::fmt::Display for AutoAssignRoleVictorOpsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AutoAssignRoleVictorOps => {
                    f.write_str("auto_assign_role_victor_ops")
                }
            }
        }
    }
    impl ::std::str::FromStr for AutoAssignRoleVictorOpsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto_assign_role_victor_ops" => Ok(Self::AutoAssignRoleVictorOps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for AutoAssignRoleVictorOpsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for AutoAssignRoleVictorOpsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for AutoAssignRoleVictorOpsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`AutoAssignRoleVictorOpsTaskParamsTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct AutoAssignRoleVictorOpsTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for AutoAssignRoleVictorOpsTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl AutoAssignRoleVictorOpsTaskParamsTeam {
        pub fn builder() -> builder::AutoAssignRoleVictorOpsTaskParamsTeam {
            Default::default()
        }
    }
    ///`CallPeopleTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "content",
    ///    "name",
    ///    "phone_numbers"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The message to be read by text-to-voice",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name",
    ///      "type": "string"
    ///    },
    ///    "phone_numbers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "A recipient phone number",
    ///        "examples": [
    ///          [
    ///            "14150001111"
    ///          ]
    ///        ],
    ///        "type": "string"
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "call_people"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CallPeopleTaskParams {
        ///The message to be read by text-to-voice
        pub content: ::std::string::String,
        ///The name
        pub name: ::std::string::String,
        pub phone_numbers: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CallPeopleTaskParamsTaskType>,
    }
    impl CallPeopleTaskParams {
        pub fn builder() -> builder::CallPeopleTaskParams {
            Default::default()
        }
    }
    ///`CallPeopleTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "call_people"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CallPeopleTaskParamsTaskType {
        #[serde(rename = "call_people")]
        CallPeople,
    }
    impl ::std::fmt::Display for CallPeopleTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CallPeople => f.write_str("call_people"),
            }
        }
    }
    impl ::std::str::FromStr for CallPeopleTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "call_people" => Ok(Self::CallPeople),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CallPeopleTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CallPeopleTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CallPeopleTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CancelIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "cancellation_message": {
    ///              "description": "Why was the incident cancelled?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CancelIncident {
        pub data: CancelIncidentData,
    }
    impl CancelIncident {
        pub fn builder() -> builder::CancelIncident {
            Default::default()
        }
    }
    ///`CancelIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "cancellation_message": {
    ///          "description": "Why was the incident cancelled?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CancelIncidentData {
        pub attributes: CancelIncidentDataAttributes,
        #[serde(rename = "type")]
        pub type_: CancelIncidentDataType,
    }
    impl CancelIncidentData {
        pub fn builder() -> builder::CancelIncidentData {
            Default::default()
        }
    }
    ///`CancelIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "cancellation_message": {
    ///      "description": "Why was the incident cancelled?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct CancelIncidentDataAttributes {
        ///Why was the incident cancelled?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancellation_message: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CancelIncidentDataAttributes {
        fn default() -> Self {
            Self {
                cancellation_message: Default::default(),
            }
        }
    }
    impl CancelIncidentDataAttributes {
        pub fn builder() -> builder::CancelIncidentDataAttributes {
            Default::default()
        }
    }
    ///`CancelIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CancelIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for CancelIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for CancelIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CancelIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CancelIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CancelIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Catalog`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "icon",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "type": "string",
    ///      "enum": [
    ///        "globe-alt",
    ///        "server-stack",
    ///        "users",
    ///        "user-group",
    ///        "chart-bar",
    ///        "shapes",
    ///        "light-bulb",
    ///        "cursor-arrow-ripple"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the catalog when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Catalog {
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub icon: CatalogIcon,
        pub name: ::std::string::String,
        ///Default position of the catalog when displayed in a list.
        pub position: ::std::option::Option<i64>,
        pub updated_at: ::std::string::String,
    }
    impl Catalog {
        pub fn builder() -> builder::Catalog {
            Default::default()
        }
    }
    ///`CatalogChecklistTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_type",
    ///    "created_at",
    ///    "name",
    ///    "scope_id",
    ///    "scope_type",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "catalog_type": {
    ///      "description": "The catalog type",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Functionality",
    ///        "Environment",
    ///        "Group",
    ///        "Cause",
    ///        "IncidentType",
    ///        "Catalog"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the checklist template",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "fields": {
    ///      "description": "Template fields in position order",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "ID of the catalog property for custom fields",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "field_key": {
    ///            "description": "Key identifying the field",
    ///            "type": "string"
    ///          },
    ///          "field_source": {
    ///            "description": "Source of the field",
    ///            "type": "string",
    ///            "enum": [
    ///              "builtin",
    ///              "custom"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "owners": {
    ///      "description": "Template owners",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "description": "User ID for user owners, or field key for field owners",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "description": "Type of owner",
    ///            "type": "string",
    ///            "enum": [
    ///              "field",
    ///              "user"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "scope_id": {
    ///      "description": "The scope ID",
    ///      "type": "string"
    ///    },
    ///    "scope_type": {
    ///      "description": "The scope type",
    ///      "type": "string",
    ///      "enum": [
    ///        "Team",
    ///        "Catalog"
    ///      ]
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplate {
        ///The catalog type
        pub catalog_type: CatalogChecklistTemplateCatalogType,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the checklist template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Template fields in position order
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub fields: ::std::option::Option<
            ::std::vec::Vec<CatalogChecklistTemplateFieldsItem>,
        >,
        ///The name of the checklist template
        pub name: ::std::string::String,
        ///Template owners
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owners: ::std::option::Option<
            ::std::vec::Vec<CatalogChecklistTemplateOwnersItem>,
        >,
        ///The scope ID
        pub scope_id: ::std::string::String,
        ///The scope type
        pub scope_type: CatalogChecklistTemplateScopeType,
        ///The slug of the checklist template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CatalogChecklistTemplate {
        pub fn builder() -> builder::CatalogChecklistTemplate {
            Default::default()
        }
    }
    ///The catalog type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The catalog type",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Functionality",
    ///    "Environment",
    ///    "Group",
    ///    "Cause",
    ///    "IncidentType",
    ///    "Catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogChecklistTemplateCatalogType {
        Service,
        Functionality,
        Environment,
        Group,
        Cause,
        IncidentType,
        Catalog,
    }
    impl ::std::fmt::Display for CatalogChecklistTemplateCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Functionality => f.write_str("Functionality"),
                Self::Environment => f.write_str("Environment"),
                Self::Group => f.write_str("Group"),
                Self::Cause => f.write_str("Cause"),
                Self::IncidentType => f.write_str("IncidentType"),
                Self::Catalog => f.write_str("Catalog"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogChecklistTemplateCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Functionality" => Ok(Self::Functionality),
                "Environment" => Ok(Self::Environment),
                "Group" => Ok(Self::Group),
                "Cause" => Ok(Self::Cause),
                "IncidentType" => Ok(Self::IncidentType),
                "Catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogChecklistTemplateCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogChecklistTemplateCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogChecklistTemplateCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogChecklistTemplateFieldsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "ID of the catalog property for custom fields",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "field_key": {
    ///      "description": "Key identifying the field",
    ///      "type": "string"
    ///    },
    ///    "field_source": {
    ///      "description": "Source of the field",
    ///      "type": "string",
    ///      "enum": [
    ///        "builtin",
    ///        "custom"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplateFieldsItem {
        ///ID of the catalog property for custom fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_property_id: ::std::option::Option<::std::string::String>,
        ///Key identifying the field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field_key: ::std::option::Option<::std::string::String>,
        ///Source of the field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field_source: ::std::option::Option<
            CatalogChecklistTemplateFieldsItemFieldSource,
        >,
    }
    impl ::std::default::Default for CatalogChecklistTemplateFieldsItem {
        fn default() -> Self {
            Self {
                catalog_property_id: Default::default(),
                field_key: Default::default(),
                field_source: Default::default(),
            }
        }
    }
    impl CatalogChecklistTemplateFieldsItem {
        pub fn builder() -> builder::CatalogChecklistTemplateFieldsItem {
            Default::default()
        }
    }
    ///Source of the field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Source of the field",
    ///  "type": "string",
    ///  "enum": [
    ///    "builtin",
    ///    "custom"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogChecklistTemplateFieldsItemFieldSource {
        #[serde(rename = "builtin")]
        Builtin,
        #[serde(rename = "custom")]
        Custom,
    }
    impl ::std::fmt::Display for CatalogChecklistTemplateFieldsItemFieldSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Builtin => f.write_str("builtin"),
                Self::Custom => f.write_str("custom"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogChecklistTemplateFieldsItemFieldSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "builtin" => Ok(Self::Builtin),
                "custom" => Ok(Self::Custom),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CatalogChecklistTemplateFieldsItemFieldSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogChecklistTemplateFieldsItemFieldSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogChecklistTemplateFieldsItemFieldSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogChecklistTemplateList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog_checklist_template"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the checklist template",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalog_checklist_templates"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplateList {
        pub data: ::std::vec::Vec<CatalogChecklistTemplateListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl CatalogChecklistTemplateList {
        pub fn builder() -> builder::CatalogChecklistTemplateList {
            Default::default()
        }
    }
    ///`CatalogChecklistTemplateListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_checklist_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_checklist_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplateListDataItem {
        pub attributes: CatalogChecklistTemplate,
        ///Unique ID of the checklist template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogChecklistTemplateListDataItemType,
    }
    impl CatalogChecklistTemplateListDataItem {
        pub fn builder() -> builder::CatalogChecklistTemplateListDataItem {
            Default::default()
        }
    }
    ///`CatalogChecklistTemplateListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_checklist_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogChecklistTemplateListDataItemType {
        #[serde(rename = "catalog_checklist_templates")]
        CatalogChecklistTemplates,
    }
    impl ::std::fmt::Display for CatalogChecklistTemplateListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogChecklistTemplates => {
                    f.write_str("catalog_checklist_templates")
                }
            }
        }
    }
    impl ::std::str::FromStr for CatalogChecklistTemplateListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_checklist_templates" => Ok(Self::CatalogChecklistTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogChecklistTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogChecklistTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogChecklistTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogChecklistTemplateOwnersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "User ID for user owners, or field key for field owners",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "Type of owner",
    ///      "type": "string",
    ///      "enum": [
    ///        "field",
    ///        "user"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplateOwnersItem {
        ///User ID for user owners, or field key for field owners
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Type of owner
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<CatalogChecklistTemplateOwnersItemType>,
    }
    impl ::std::default::Default for CatalogChecklistTemplateOwnersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl CatalogChecklistTemplateOwnersItem {
        pub fn builder() -> builder::CatalogChecklistTemplateOwnersItem {
            Default::default()
        }
    }
    ///Type of owner
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of owner",
    ///  "type": "string",
    ///  "enum": [
    ///    "field",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogChecklistTemplateOwnersItemType {
        #[serde(rename = "field")]
        Field,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display for CatalogChecklistTemplateOwnersItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Field => f.write_str("field"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogChecklistTemplateOwnersItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "field" => Ok(Self::Field),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogChecklistTemplateOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogChecklistTemplateOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogChecklistTemplateOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogChecklistTemplateResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog_checklist_template"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the checklist template",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_checklist_templates"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplateResponse {
        pub data: CatalogChecklistTemplateResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogChecklistTemplateResponse {
        pub fn builder() -> builder::CatalogChecklistTemplateResponse {
            Default::default()
        }
    }
    ///`CatalogChecklistTemplateResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_checklist_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_checklist_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogChecklistTemplateResponseData {
        pub attributes: CatalogChecklistTemplate,
        ///Unique ID of the checklist template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogChecklistTemplateResponseDataType,
    }
    impl CatalogChecklistTemplateResponseData {
        pub fn builder() -> builder::CatalogChecklistTemplateResponseData {
            Default::default()
        }
    }
    ///`CatalogChecklistTemplateResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_checklist_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogChecklistTemplateResponseDataType {
        #[serde(rename = "catalog_checklist_templates")]
        CatalogChecklistTemplates,
    }
    impl ::std::fmt::Display for CatalogChecklistTemplateResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogChecklistTemplates => {
                    f.write_str("catalog_checklist_templates")
                }
            }
        }
    }
    impl ::std::str::FromStr for CatalogChecklistTemplateResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_checklist_templates" => Ok(Self::CatalogChecklistTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogChecklistTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogChecklistTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogChecklistTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The scope type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The scope type",
    ///  "type": "string",
    ///  "enum": [
    ///    "Team",
    ///    "Catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogChecklistTemplateScopeType {
        Team,
        Catalog,
    }
    impl ::std::fmt::Display for CatalogChecklistTemplateScopeType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Team => f.write_str("Team"),
                Self::Catalog => f.write_str("Catalog"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogChecklistTemplateScopeType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Team" => Ok(Self::Team),
                "Catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogChecklistTemplateScopeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogChecklistTemplateScopeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogChecklistTemplateScopeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "backstage_id": {
    ///      "description": "The Backstage entity ID this catalog entity is linked to.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this catalog entity",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Unique ID of the catalog property",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The value for this property",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntity {
        ///The Backstage entity ID this catalog entity is linked to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub name: ::std::string::String,
        ///Default position of the item when displayed in a list.
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this catalog entity
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<CatalogEntityPropertiesItem>,
        pub updated_at: ::std::string::String,
    }
    impl CatalogEntity {
        pub fn builder() -> builder::CatalogEntity {
            Default::default()
        }
    }
    ///`CatalogEntityChecklist`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "auditable_id",
    ///    "auditable_type",
    ///    "catalog_checklist_template_id",
    ///    "created_at",
    ///    "status",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "auditable_id": {
    ///      "description": "The ID of the auditable entity",
    ///      "type": "string"
    ///    },
    ///    "auditable_type": {
    ///      "description": "The type of the auditable entity",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Functionality",
    ///        "Environment",
    ///        "Group",
    ///        "Cause",
    ///        "IncidentType",
    ///        "CatalogEntity"
    ///      ]
    ///    },
    ///    "catalog_checklist_template_id": {
    ///      "description": "The ID of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "checklist_fields": {
    ///      "description": "Checklist fields",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "data": {
    ///            "type": "object",
    ///            "properties": {
    ///              "attributes": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "catalog_checklist_template_field_id": {
    ///                    "description": "The ID of the template field",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "catalog_entity_checklist_id": {
    ///                    "description": "The ID of the parent checklist",
    ///                    "type": "string"
    ///                  },
    ///                  "checked": {
    ///                    "description": "Whether the field is checked",
    ///                    "type": "boolean"
    ///                  },
    ///                  "completed_at": {
    ///                    "description": "When the field was checked",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "completed_by_user_id": {
    ///                    "description": "The ID of the user who checked the field",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "created_at": {
    ///                    "description": "Date of creation",
    ///                    "type": "string"
    ///                  },
    ///                  "field_key": {
    ///                    "description": "The field key",
    ///                    "type": "string"
    ///                  },
    ///                  "updated_at": {
    ///                    "description": "Date of last update",
    ///                    "type": "string"
    ///                  },
    ///                  "value_snapshot": {
    ///                    "description": "The value snapshot at time of checking",
    ///                    "type": [
    ///                      "object",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              "id": {
    ///                "description": "ID of the checklist field",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "catalog_entity_checklist_fields"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "checklist_owners": {
    ///      "description": "Checklist owners",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "data": {
    ///            "type": "object",
    ///            "properties": {
    ///              "attributes": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "catalog_entity_checklist_id": {
    ///                    "description": "The ID of the parent checklist",
    ///                    "type": "string"
    ///                  },
    ///                  "created_at": {
    ///                    "description": "Date of creation",
    ///                    "type": "string"
    ///                  },
    ///                  "owner_user_id": {
    ///                    "description": "The ID of the owner user",
    ///                    "type": "string"
    ///                  },
    ///                  "updated_at": {
    ///                    "description": "Date of last update",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "id": {
    ///                "description": "ID of the checklist owner",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "catalog_entity_checklist_owners"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "completed_at": {
    ///      "description": "When the checklist was completed",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "completed_by_user_id": {
    ///      "description": "The ID of the user who completed the checklist",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "started_at": {
    ///      "description": "When the checklist was started",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the checklist",
    ///      "type": "string",
    ///      "enum": [
    ///        "triggered",
    ///        "in_progress",
    ///        "completed",
    ///        "cancelled"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklist {
        ///The ID of the auditable entity
        pub auditable_id: ::std::string::String,
        ///The type of the auditable entity
        pub auditable_type: CatalogEntityChecklistAuditableType,
        ///The ID of the checklist template
        pub catalog_checklist_template_id: ::std::string::String,
        ///Checklist fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub checklist_fields: ::std::option::Option<
            ::std::vec::Vec<CatalogEntityChecklistChecklistFieldsItem>,
        >,
        ///Checklist owners
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub checklist_owners: ::std::option::Option<
            ::std::vec::Vec<CatalogEntityChecklistChecklistOwnersItem>,
        >,
        ///When the checklist was completed
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completed_at: ::std::option::Option<::std::string::String>,
        ///The ID of the user who completed the checklist
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completed_by_user_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///When the checklist was started
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        ///The status of the checklist
        pub status: CatalogEntityChecklistStatus,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CatalogEntityChecklist {
        pub fn builder() -> builder::CatalogEntityChecklist {
            Default::default()
        }
    }
    ///The type of the auditable entity
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the auditable entity",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Functionality",
    ///    "Environment",
    ///    "Group",
    ///    "Cause",
    ///    "IncidentType",
    ///    "CatalogEntity"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityChecklistAuditableType {
        Service,
        Functionality,
        Environment,
        Group,
        Cause,
        IncidentType,
        CatalogEntity,
    }
    impl ::std::fmt::Display for CatalogEntityChecklistAuditableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Functionality => f.write_str("Functionality"),
                Self::Environment => f.write_str("Environment"),
                Self::Group => f.write_str("Group"),
                Self::Cause => f.write_str("Cause"),
                Self::IncidentType => f.write_str("IncidentType"),
                Self::CatalogEntity => f.write_str("CatalogEntity"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityChecklistAuditableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Functionality" => Ok(Self::Functionality),
                "Environment" => Ok(Self::Environment),
                "Group" => Ok(Self::Group),
                "Cause" => Ok(Self::Cause),
                "IncidentType" => Ok(Self::IncidentType),
                "CatalogEntity" => Ok(Self::CatalogEntity),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityChecklistAuditableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityChecklistAuditableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityChecklistAuditableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityChecklistChecklistFieldsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "catalog_checklist_template_field_id": {
    ///              "description": "The ID of the template field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "catalog_entity_checklist_id": {
    ///              "description": "The ID of the parent checklist",
    ///              "type": "string"
    ///            },
    ///            "checked": {
    ///              "description": "Whether the field is checked",
    ///              "type": "boolean"
    ///            },
    ///            "completed_at": {
    ///              "description": "When the field was checked",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "completed_by_user_id": {
    ///              "description": "The ID of the user who checked the field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "created_at": {
    ///              "description": "Date of creation",
    ///              "type": "string"
    ///            },
    ///            "field_key": {
    ///              "description": "The field key",
    ///              "type": "string"
    ///            },
    ///            "updated_at": {
    ///              "description": "Date of last update",
    ///              "type": "string"
    ///            },
    ///            "value_snapshot": {
    ///              "description": "The value snapshot at time of checking",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "description": "ID of the checklist field",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entity_checklist_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistChecklistFieldsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<CatalogEntityChecklistChecklistFieldsItemData>,
    }
    impl ::std::default::Default for CatalogEntityChecklistChecklistFieldsItem {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl CatalogEntityChecklistChecklistFieldsItem {
        pub fn builder() -> builder::CatalogEntityChecklistChecklistFieldsItem {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistChecklistFieldsItemData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "catalog_checklist_template_field_id": {
    ///          "description": "The ID of the template field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "catalog_entity_checklist_id": {
    ///          "description": "The ID of the parent checklist",
    ///          "type": "string"
    ///        },
    ///        "checked": {
    ///          "description": "Whether the field is checked",
    ///          "type": "boolean"
    ///        },
    ///        "completed_at": {
    ///          "description": "When the field was checked",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "completed_by_user_id": {
    ///          "description": "The ID of the user who checked the field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "created_at": {
    ///          "description": "Date of creation",
    ///          "type": "string"
    ///        },
    ///        "field_key": {
    ///          "description": "The field key",
    ///          "type": "string"
    ///        },
    ///        "updated_at": {
    ///          "description": "Date of last update",
    ///          "type": "string"
    ///        },
    ///        "value_snapshot": {
    ///          "description": "The value snapshot at time of checking",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "description": "ID of the checklist field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_checklist_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistChecklistFieldsItemData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<
            CatalogEntityChecklistChecklistFieldsItemDataAttributes,
        >,
        ///ID of the checklist field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<
            CatalogEntityChecklistChecklistFieldsItemDataType,
        >,
    }
    impl ::std::default::Default for CatalogEntityChecklistChecklistFieldsItemData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl CatalogEntityChecklistChecklistFieldsItemData {
        pub fn builder() -> builder::CatalogEntityChecklistChecklistFieldsItemData {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistChecklistFieldsItemDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "catalog_checklist_template_field_id": {
    ///      "description": "The ID of the template field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "catalog_entity_checklist_id": {
    ///      "description": "The ID of the parent checklist",
    ///      "type": "string"
    ///    },
    ///    "checked": {
    ///      "description": "Whether the field is checked",
    ///      "type": "boolean"
    ///    },
    ///    "completed_at": {
    ///      "description": "When the field was checked",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "completed_by_user_id": {
    ///      "description": "The ID of the user who checked the field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "field_key": {
    ///      "description": "The field key",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "value_snapshot": {
    ///      "description": "The value snapshot at time of checking",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistChecklistFieldsItemDataAttributes {
        ///The ID of the template field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_checklist_template_field_id: ::std::option::Option<
            ::std::string::String,
        >,
        ///The ID of the parent checklist
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_entity_checklist_id: ::std::option::Option<::std::string::String>,
        ///Whether the field is checked
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub checked: ::std::option::Option<bool>,
        ///When the field was checked
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completed_at: ::std::option::Option<::std::string::String>,
        ///The ID of the user who checked the field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completed_by_user_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///The field key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field_key: ::std::option::Option<::std::string::String>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
        ///The value snapshot at time of checking
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value_snapshot: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
    }
    impl ::std::default::Default
    for CatalogEntityChecklistChecklistFieldsItemDataAttributes {
        fn default() -> Self {
            Self {
                catalog_checklist_template_field_id: Default::default(),
                catalog_entity_checklist_id: Default::default(),
                checked: Default::default(),
                completed_at: Default::default(),
                completed_by_user_id: Default::default(),
                created_at: Default::default(),
                field_key: Default::default(),
                updated_at: Default::default(),
                value_snapshot: Default::default(),
            }
        }
    }
    impl CatalogEntityChecklistChecklistFieldsItemDataAttributes {
        pub fn builder() -> builder::CatalogEntityChecklistChecklistFieldsItemDataAttributes {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistChecklistFieldsItemDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_checklist_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityChecklistChecklistFieldsItemDataType {
        #[serde(rename = "catalog_entity_checklist_fields")]
        CatalogEntityChecklistFields,
    }
    impl ::std::fmt::Display for CatalogEntityChecklistChecklistFieldsItemDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityChecklistFields => {
                    f.write_str("catalog_entity_checklist_fields")
                }
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityChecklistChecklistFieldsItemDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_checklist_fields" => {
                    Ok(Self::CatalogEntityChecklistFields)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CatalogEntityChecklistChecklistFieldsItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityChecklistChecklistFieldsItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityChecklistChecklistFieldsItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityChecklistChecklistOwnersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "catalog_entity_checklist_id": {
    ///              "description": "The ID of the parent checklist",
    ///              "type": "string"
    ///            },
    ///            "created_at": {
    ///              "description": "Date of creation",
    ///              "type": "string"
    ///            },
    ///            "owner_user_id": {
    ///              "description": "The ID of the owner user",
    ///              "type": "string"
    ///            },
    ///            "updated_at": {
    ///              "description": "Date of last update",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "description": "ID of the checklist owner",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entity_checklist_owners"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistChecklistOwnersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<CatalogEntityChecklistChecklistOwnersItemData>,
    }
    impl ::std::default::Default for CatalogEntityChecklistChecklistOwnersItem {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl CatalogEntityChecklistChecklistOwnersItem {
        pub fn builder() -> builder::CatalogEntityChecklistChecklistOwnersItem {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistChecklistOwnersItemData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "catalog_entity_checklist_id": {
    ///          "description": "The ID of the parent checklist",
    ///          "type": "string"
    ///        },
    ///        "created_at": {
    ///          "description": "Date of creation",
    ///          "type": "string"
    ///        },
    ///        "owner_user_id": {
    ///          "description": "The ID of the owner user",
    ///          "type": "string"
    ///        },
    ///        "updated_at": {
    ///          "description": "Date of last update",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "description": "ID of the checklist owner",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_checklist_owners"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistChecklistOwnersItemData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<
            CatalogEntityChecklistChecklistOwnersItemDataAttributes,
        >,
        ///ID of the checklist owner
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<
            CatalogEntityChecklistChecklistOwnersItemDataType,
        >,
    }
    impl ::std::default::Default for CatalogEntityChecklistChecklistOwnersItemData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl CatalogEntityChecklistChecklistOwnersItemData {
        pub fn builder() -> builder::CatalogEntityChecklistChecklistOwnersItemData {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistChecklistOwnersItemDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "catalog_entity_checklist_id": {
    ///      "description": "The ID of the parent checklist",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "owner_user_id": {
    ///      "description": "The ID of the owner user",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistChecklistOwnersItemDataAttributes {
        ///The ID of the parent checklist
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_entity_checklist_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///The ID of the owner user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_id: ::std::option::Option<::std::string::String>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CatalogEntityChecklistChecklistOwnersItemDataAttributes {
        fn default() -> Self {
            Self {
                catalog_entity_checklist_id: Default::default(),
                created_at: Default::default(),
                owner_user_id: Default::default(),
                updated_at: Default::default(),
            }
        }
    }
    impl CatalogEntityChecklistChecklistOwnersItemDataAttributes {
        pub fn builder() -> builder::CatalogEntityChecklistChecklistOwnersItemDataAttributes {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistChecklistOwnersItemDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_checklist_owners"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityChecklistChecklistOwnersItemDataType {
        #[serde(rename = "catalog_entity_checklist_owners")]
        CatalogEntityChecklistOwners,
    }
    impl ::std::fmt::Display for CatalogEntityChecklistChecklistOwnersItemDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityChecklistOwners => {
                    f.write_str("catalog_entity_checklist_owners")
                }
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityChecklistChecklistOwnersItemDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_checklist_owners" => {
                    Ok(Self::CatalogEntityChecklistOwners)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CatalogEntityChecklistChecklistOwnersItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityChecklistChecklistOwnersItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityChecklistChecklistOwnersItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityChecklistList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog_entity_checklist"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the entity checklist",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalog_entity_checklists"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistList {
        pub data: ::std::vec::Vec<CatalogEntityChecklistListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl CatalogEntityChecklistList {
        pub fn builder() -> builder::CatalogEntityChecklistList {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_entity_checklist"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the entity checklist",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_checklists"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistListDataItem {
        pub attributes: CatalogEntityChecklist,
        ///Unique ID of the entity checklist
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogEntityChecklistListDataItemType,
    }
    impl CatalogEntityChecklistListDataItem {
        pub fn builder() -> builder::CatalogEntityChecklistListDataItem {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_checklists"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityChecklistListDataItemType {
        #[serde(rename = "catalog_entity_checklists")]
        CatalogEntityChecklists,
    }
    impl ::std::fmt::Display for CatalogEntityChecklistListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityChecklists => f.write_str("catalog_entity_checklists"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityChecklistListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_checklists" => Ok(Self::CatalogEntityChecklists),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityChecklistListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityChecklistListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityChecklistListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityChecklistResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog_entity_checklist"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the entity checklist",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entity_checklists"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistResponse {
        pub data: CatalogEntityChecklistResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogEntityChecklistResponse {
        pub fn builder() -> builder::CatalogEntityChecklistResponse {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_entity_checklist"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the entity checklist",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_checklists"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityChecklistResponseData {
        pub attributes: CatalogEntityChecklist,
        ///Unique ID of the entity checklist
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogEntityChecklistResponseDataType,
    }
    impl CatalogEntityChecklistResponseData {
        pub fn builder() -> builder::CatalogEntityChecklistResponseData {
            Default::default()
        }
    }
    ///`CatalogEntityChecklistResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_checklists"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityChecklistResponseDataType {
        #[serde(rename = "catalog_entity_checklists")]
        CatalogEntityChecklists,
    }
    impl ::std::fmt::Display for CatalogEntityChecklistResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityChecklists => f.write_str("catalog_entity_checklists"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityChecklistResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_checklists" => Ok(Self::CatalogEntityChecklists),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityChecklistResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityChecklistResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityChecklistResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the checklist
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the checklist",
    ///  "type": "string",
    ///  "enum": [
    ///    "triggered",
    ///    "in_progress",
    ///    "completed",
    ///    "cancelled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityChecklistStatus {
        #[serde(rename = "triggered")]
        Triggered,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
        #[serde(rename = "cancelled")]
        Cancelled,
    }
    impl ::std::fmt::Display for CatalogEntityChecklistStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Triggered => f.write_str("triggered"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
                Self::Cancelled => f.write_str("cancelled"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityChecklistStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "triggered" => Ok(Self::Triggered),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                "cancelled" => Ok(Self::Cancelled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityChecklistStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityChecklistStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityChecklistStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog_entity"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the catalog_entity",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalog_entities"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityList {
        pub data: ::std::vec::Vec<CatalogEntityListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CatalogEntityList {
        pub fn builder() -> builder::CatalogEntityList {
            Default::default()
        }
    }
    ///`CatalogEntityListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_entity"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_entity",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityListDataItem {
        pub attributes: CatalogEntity,
        ///Unique ID of the catalog_entity
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogEntityListDataItemType,
    }
    impl CatalogEntityListDataItem {
        pub fn builder() -> builder::CatalogEntityListDataItem {
            Default::default()
        }
    }
    ///`CatalogEntityListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityListDataItemType {
        #[serde(rename = "catalog_entities")]
        CatalogEntities,
    }
    impl ::std::fmt::Display for CatalogEntityListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntities => f.write_str("catalog_entities"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entities" => Ok(Self::CatalogEntities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityPropertiesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Unique ID of the catalog property",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The value for this property",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityPropertiesItem {
        ///Unique ID of the catalog property
        pub catalog_property_id: ::std::string::String,
        ///The value for this property
        pub value: ::std::string::String,
    }
    impl CatalogEntityPropertiesItem {
        pub fn builder() -> builder::CatalogEntityPropertiesItem {
            Default::default()
        }
    }
    ///**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.",
    ///  "deprecated": true,
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_entity_id",
    ///    "catalog_field_id",
    ///    "created_at",
    ///    "key",
    ///    "updated_at",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_entity_id": {
    ///      "type": "string"
    ///    },
    ///    "catalog_field_id": {
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "key": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "catalog_entity",
    ///        "slack"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityProperty {
        pub catalog_entity_id: ::std::string::String,
        pub catalog_field_id: ::std::string::String,
        pub created_at: ::std::string::String,
        pub key: CatalogEntityPropertyKey,
        pub updated_at: ::std::string::String,
        pub value: ::std::string::String,
    }
    impl CatalogEntityProperty {
        pub fn builder() -> builder::CatalogEntityProperty {
            Default::default()
        }
    }
    ///`CatalogEntityPropertyKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "catalog_entity",
    ///    "slack"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityPropertyKey {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "slack")]
        Slack,
    }
    impl ::std::fmt::Display for CatalogEntityPropertyKey {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::Slack => f.write_str("slack"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityPropertyKey {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "catalog_entity" => Ok(Self::CatalogEntity),
                "slack" => Ok(Self::Slack),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityPropertyKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogEntityPropertyKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogEntityPropertyKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.",
    ///  "deprecated": true,
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog_entity_property"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the catalog_entity_property",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalog_entity_properties"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityPropertyList {
        pub data: ::std::vec::Vec<CatalogEntityPropertyListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CatalogEntityPropertyList {
        pub fn builder() -> builder::CatalogEntityPropertyList {
            Default::default()
        }
    }
    ///`CatalogEntityPropertyListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_entity_property"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_entity_property",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityPropertyListDataItem {
        pub attributes: CatalogEntityProperty,
        ///Unique ID of the catalog_entity_property
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogEntityPropertyListDataItemType,
    }
    impl CatalogEntityPropertyListDataItem {
        pub fn builder() -> builder::CatalogEntityPropertyListDataItem {
            Default::default()
        }
    }
    ///`CatalogEntityPropertyListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityPropertyListDataItemType {
        #[serde(rename = "catalog_entity_properties")]
        CatalogEntityProperties,
    }
    impl ::std::fmt::Display for CatalogEntityPropertyListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityProperties => f.write_str("catalog_entity_properties"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityPropertyListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_properties" => Ok(Self::CatalogEntityProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityPropertyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityPropertyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityPropertyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.",
    ///  "deprecated": true,
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog_entity_property"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the catalog_entity_property",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entity_properties"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityPropertyResponse {
        pub data: CatalogEntityPropertyResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogEntityPropertyResponse {
        pub fn builder() -> builder::CatalogEntityPropertyResponse {
            Default::default()
        }
    }
    ///`CatalogEntityPropertyResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_entity_property"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_entity_property",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityPropertyResponseData {
        pub attributes: CatalogEntityProperty,
        ///Unique ID of the catalog_entity_property
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogEntityPropertyResponseDataType,
    }
    impl CatalogEntityPropertyResponseData {
        pub fn builder() -> builder::CatalogEntityPropertyResponseData {
            Default::default()
        }
    }
    ///`CatalogEntityPropertyResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityPropertyResponseDataType {
        #[serde(rename = "catalog_entity_properties")]
        CatalogEntityProperties,
    }
    impl ::std::fmt::Display for CatalogEntityPropertyResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityProperties => f.write_str("catalog_entity_properties"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityPropertyResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_properties" => Ok(Self::CatalogEntityProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityPropertyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityPropertyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityPropertyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogEntityResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog_entity"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the catalog_entity",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entities"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityResponse {
        pub data: CatalogEntityResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogEntityResponse {
        pub fn builder() -> builder::CatalogEntityResponse {
            Default::default()
        }
    }
    ///`CatalogEntityResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_entity"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_entity",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogEntityResponseData {
        pub attributes: CatalogEntity,
        ///Unique ID of the catalog_entity
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogEntityResponseDataType,
    }
    impl CatalogEntityResponseData {
        pub fn builder() -> builder::CatalogEntityResponseData {
            Default::default()
        }
    }
    ///`CatalogEntityResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogEntityResponseDataType {
        #[serde(rename = "catalog_entities")]
        CatalogEntities,
    }
    impl ::std::fmt::Display for CatalogEntityResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntities => f.write_str("catalog_entities"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogEntityResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entities" => Ok(Self::CatalogEntities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogEntityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogEntityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogEntityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_id",
    ///    "created_at",
    ///    "kind",
    ///    "multiple",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "catalog_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "catalog_type": {
    ///      "description": "The type of catalog the field belongs to.",
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog",
    ///        "cause",
    ///        "environment",
    ///        "functionality",
    ///        "incident_type",
    ///        "service",
    ///        "team"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "reference"
    ///      ]
    ///    },
    ///    "kind_catalog_id": {
    ///      "description": "Restricts values to items of specified catalog.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "multiple": {
    ///      "description": "Whether the attribute accepts multiple values.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "required": {
    ///      "description": "Whether the field is required.",
    ///      "type": "boolean"
    ///    },
    ///    "slug": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogField {
        pub catalog_id: ::std::option::Option<::std::string::String>,
        ///The type of catalog the field belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_type: ::std::option::Option<CatalogFieldCatalogType>,
        pub created_at: ::std::string::String,
        pub kind: CatalogFieldKind,
        ///Restricts values to items of specified catalog.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind_catalog_id: ::std::option::Option<::std::string::String>,
        ///Whether the attribute accepts multiple values.
        pub multiple: bool,
        pub name: ::std::string::String,
        ///Default position of the item when displayed in a list.
        pub position: ::std::option::Option<i64>,
        ///Whether the field is required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        pub updated_at: ::std::string::String,
    }
    impl CatalogField {
        pub fn builder() -> builder::CatalogField {
            Default::default()
        }
    }
    ///The type of catalog the field belongs to.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of catalog the field belongs to.",
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "cause",
    ///    "environment",
    ///    "functionality",
    ///    "incident_type",
    ///    "service",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogFieldCatalogType {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for CatalogFieldCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Cause => f.write_str("cause"),
                Self::Environment => f.write_str("environment"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogFieldCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "cause" => Ok(Self::Cause),
                "environment" => Ok(Self::Environment),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogFieldCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogFieldCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogFieldCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogFieldKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "reference"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogFieldKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "reference")]
        Reference,
    }
    impl ::std::fmt::Display for CatalogFieldKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Reference => f.write_str("reference"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogFieldKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "reference" => Ok(Self::Reference),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogFieldKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogFieldKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogFieldKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogFieldList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog_field"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the catalog_field",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalog_properties"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogFieldList {
        pub data: ::std::vec::Vec<CatalogFieldListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CatalogFieldList {
        pub fn builder() -> builder::CatalogFieldList {
            Default::default()
        }
    }
    ///`CatalogFieldListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogFieldListDataItem {
        pub attributes: CatalogField,
        ///Unique ID of the catalog_field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogFieldListDataItemType,
    }
    impl CatalogFieldListDataItem {
        pub fn builder() -> builder::CatalogFieldListDataItem {
            Default::default()
        }
    }
    ///`CatalogFieldListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogFieldListDataItemType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for CatalogFieldListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogFieldListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogFieldResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog_field"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the catalog_field",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_properties"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogFieldResponse {
        pub data: CatalogFieldResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogFieldResponse {
        pub fn builder() -> builder::CatalogFieldResponse {
            Default::default()
        }
    }
    ///`CatalogFieldResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogFieldResponseData {
        pub attributes: CatalogField,
        ///Unique ID of the catalog_field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogFieldResponseDataType,
    }
    impl CatalogFieldResponseData {
        pub fn builder() -> builder::CatalogFieldResponseData {
            Default::default()
        }
    }
    ///`CatalogFieldResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogFieldResponseDataType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for CatalogFieldResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogFieldResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogIcon`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "globe-alt",
    ///    "server-stack",
    ///    "users",
    ///    "user-group",
    ///    "chart-bar",
    ///    "shapes",
    ///    "light-bulb",
    ///    "cursor-arrow-ripple"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogIcon {
        #[serde(rename = "globe-alt")]
        GlobeAlt,
        #[serde(rename = "server-stack")]
        ServerStack,
        #[serde(rename = "users")]
        Users,
        #[serde(rename = "user-group")]
        UserGroup,
        #[serde(rename = "chart-bar")]
        ChartBar,
        #[serde(rename = "shapes")]
        Shapes,
        #[serde(rename = "light-bulb")]
        LightBulb,
        #[serde(rename = "cursor-arrow-ripple")]
        CursorArrowRipple,
    }
    impl ::std::fmt::Display for CatalogIcon {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GlobeAlt => f.write_str("globe-alt"),
                Self::ServerStack => f.write_str("server-stack"),
                Self::Users => f.write_str("users"),
                Self::UserGroup => f.write_str("user-group"),
                Self::ChartBar => f.write_str("chart-bar"),
                Self::Shapes => f.write_str("shapes"),
                Self::LightBulb => f.write_str("light-bulb"),
                Self::CursorArrowRipple => f.write_str("cursor-arrow-ripple"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogIcon {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "globe-alt" => Ok(Self::GlobeAlt),
                "server-stack" => Ok(Self::ServerStack),
                "users" => Ok(Self::Users),
                "user-group" => Ok(Self::UserGroup),
                "chart-bar" => Ok(Self::ChartBar),
                "shapes" => Ok(Self::Shapes),
                "light-bulb" => Ok(Self::LightBulb),
                "cursor-arrow-ripple" => Ok(Self::CursorArrowRipple),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the catalog",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalogs"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogList {
        pub data: ::std::vec::Vec<CatalogListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CatalogList {
        pub fn builder() -> builder::CatalogList {
            Default::default()
        }
    }
    ///`CatalogListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalogs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogListDataItem {
        pub attributes: Catalog,
        ///Unique ID of the catalog
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogListDataItemType,
    }
    impl CatalogListDataItem {
        pub fn builder() -> builder::CatalogListDataItem {
            Default::default()
        }
    }
    ///`CatalogListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalogs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogListDataItemType {
        #[serde(rename = "catalogs")]
        Catalogs,
    }
    impl ::std::fmt::Display for CatalogListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalogs => f.write_str("catalogs"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalogs" => Ok(Self::Catalogs),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogProperty`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_id",
    ///    "created_at",
    ///    "kind",
    ///    "multiple",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "catalog_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "catalog_type": {
    ///      "description": "The type of catalog the property belongs to.",
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog",
    ///        "cause",
    ///        "environment",
    ///        "functionality",
    ///        "incident_type",
    ///        "service",
    ///        "team"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "reference"
    ///      ]
    ///    },
    ///    "kind_catalog_id": {
    ///      "description": "Restricts values to items of specified catalog.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "multiple": {
    ///      "description": "Whether the attribute accepts multiple values.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "required": {
    ///      "description": "Whether the property is required.",
    ///      "type": "boolean"
    ///    },
    ///    "slug": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogProperty {
        pub catalog_id: ::std::option::Option<::std::string::String>,
        ///The type of catalog the property belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_type: ::std::option::Option<CatalogPropertyCatalogType>,
        pub created_at: ::std::string::String,
        pub kind: CatalogPropertyKind,
        ///Restricts values to items of specified catalog.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind_catalog_id: ::std::option::Option<::std::string::String>,
        ///Whether the attribute accepts multiple values.
        pub multiple: bool,
        pub name: ::std::string::String,
        ///Default position of the item when displayed in a list.
        pub position: ::std::option::Option<i64>,
        ///Whether the property is required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        pub updated_at: ::std::string::String,
    }
    impl CatalogProperty {
        pub fn builder() -> builder::CatalogProperty {
            Default::default()
        }
    }
    ///The type of catalog the property belongs to.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of catalog the property belongs to.",
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "cause",
    ///    "environment",
    ///    "functionality",
    ///    "incident_type",
    ///    "service",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogPropertyCatalogType {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for CatalogPropertyCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Cause => f.write_str("cause"),
                Self::Environment => f.write_str("environment"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogPropertyCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "cause" => Ok(Self::Cause),
                "environment" => Ok(Self::Environment),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogPropertyCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogPropertyCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogPropertyCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogPropertyKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "reference"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogPropertyKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "reference")]
        Reference,
    }
    impl ::std::fmt::Display for CatalogPropertyKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Reference => f.write_str("reference"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogPropertyKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "reference" => Ok(Self::Reference),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogPropertyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogPropertyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogPropertyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogPropertyList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/catalog_property"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the catalog_property",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "catalog_properties"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogPropertyList {
        pub data: ::std::vec::Vec<CatalogPropertyListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CatalogPropertyList {
        pub fn builder() -> builder::CatalogPropertyList {
            Default::default()
        }
    }
    ///`CatalogPropertyListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_property"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_property",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogPropertyListDataItem {
        pub attributes: CatalogProperty,
        ///Unique ID of the catalog_property
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogPropertyListDataItemType,
    }
    impl CatalogPropertyListDataItem {
        pub fn builder() -> builder::CatalogPropertyListDataItem {
            Default::default()
        }
    }
    ///`CatalogPropertyListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogPropertyListDataItemType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for CatalogPropertyListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogPropertyListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogPropertyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogPropertyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogPropertyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogPropertyResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog_property"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the catalog_property",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_properties"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogPropertyResponse {
        pub data: CatalogPropertyResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogPropertyResponse {
        pub fn builder() -> builder::CatalogPropertyResponse {
            Default::default()
        }
    }
    ///`CatalogPropertyResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog_property"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog_property",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogPropertyResponseData {
        pub attributes: CatalogProperty,
        ///Unique ID of the catalog_property
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogPropertyResponseDataType,
    }
    impl CatalogPropertyResponseData {
        pub fn builder() -> builder::CatalogPropertyResponseData {
            Default::default()
        }
    }
    ///`CatalogPropertyResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogPropertyResponseDataType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for CatalogPropertyResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogPropertyResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogPropertyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CatalogPropertyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CatalogPropertyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CatalogResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/catalog"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the catalog",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalogs"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogResponse {
        pub data: CatalogResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CatalogResponse {
        pub fn builder() -> builder::CatalogResponse {
            Default::default()
        }
    }
    ///`CatalogResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/catalog"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the catalog",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalogs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CatalogResponseData {
        pub attributes: Catalog,
        ///Unique ID of the catalog
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CatalogResponseDataType,
    }
    impl CatalogResponseData {
        pub fn builder() -> builder::CatalogResponseData {
            Default::default()
        }
    }
    ///`CatalogResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalogs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CatalogResponseDataType {
        #[serde(rename = "catalogs")]
        Catalogs,
    }
    impl ::std::fmt::Display for CatalogResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalogs => f.write_str("catalogs"),
            }
        }
    }
    impl ::std::str::FromStr for CatalogResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalogs" => Ok(Self::Catalogs),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CatalogResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CatalogResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CatalogResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Cause`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the cause",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the cause",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the cause",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this cause.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the cause",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Cause {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the cause
        pub name: ::std::string::String,
        ///Position of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this cause.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<CausePropertiesItem>,
        ///The slug of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Cause {
        pub fn builder() -> builder::Cause {
            Default::default()
        }
    }
    ///`CauseList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/cause"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the cause",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "causes"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CauseList {
        pub data: ::std::vec::Vec<CauseListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CauseList {
        pub fn builder() -> builder::CauseList {
            Default::default()
        }
    }
    ///`CauseListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/cause"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the cause",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "causes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CauseListDataItem {
        pub attributes: Cause,
        ///Unique ID of the cause
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CauseListDataItemType,
    }
    impl CauseListDataItem {
        pub fn builder() -> builder::CauseListDataItem {
            Default::default()
        }
    }
    ///`CauseListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "causes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CauseListDataItemType {
        #[serde(rename = "causes")]
        Causes,
    }
    impl ::std::fmt::Display for CauseListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Causes => f.write_str("causes"),
            }
        }
    }
    impl ::std::str::FromStr for CauseListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "causes" => Ok(Self::Causes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CauseListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CauseListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CauseListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CausePropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl CausePropertiesItem {
        pub fn builder() -> builder::CausePropertiesItem {
            Default::default()
        }
    }
    ///`CauseResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/cause"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the cause",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "causes"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CauseResponse {
        pub data: CauseResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CauseResponse {
        pub fn builder() -> builder::CauseResponse {
            Default::default()
        }
    }
    ///`CauseResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/cause"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the cause",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "causes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CauseResponseData {
        pub attributes: Cause,
        ///Unique ID of the cause
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CauseResponseDataType,
    }
    impl CauseResponseData {
        pub fn builder() -> builder::CauseResponseData {
            Default::default()
        }
    }
    ///`CauseResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "causes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CauseResponseDataType {
        #[serde(rename = "causes")]
        Causes,
    }
    impl ::std::fmt::Display for CauseResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Causes => f.write_str("causes"),
            }
        }
    }
    impl ::std::str::FromStr for CauseResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "causes" => Ok(Self::Causes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CauseResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CauseResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CauseResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ChangeGoogleChatSpacePrivacyTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "space"
    ///  ],
    ///  "properties": {
    ///    "audience": {
    ///      "description": "Target audience resource name (e.g. audiences/default). Leave blank to make private.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "space": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "change_google_chat_space_privacy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ChangeGoogleChatSpacePrivacyTaskParams {
        ///Target audience resource name (e.g. audiences/default). Leave blank to make private.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub audience: ::std::option::Option<::std::string::String>,
        pub space: ChangeGoogleChatSpacePrivacyTaskParamsSpace,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            ChangeGoogleChatSpacePrivacyTaskParamsTaskType,
        >,
    }
    impl ChangeGoogleChatSpacePrivacyTaskParams {
        pub fn builder() -> builder::ChangeGoogleChatSpacePrivacyTaskParams {
            Default::default()
        }
    }
    ///`ChangeGoogleChatSpacePrivacyTaskParamsSpace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ChangeGoogleChatSpacePrivacyTaskParamsSpace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ChangeGoogleChatSpacePrivacyTaskParamsSpace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ChangeGoogleChatSpacePrivacyTaskParamsSpace {
        pub fn builder() -> builder::ChangeGoogleChatSpacePrivacyTaskParamsSpace {
            Default::default()
        }
    }
    ///`ChangeGoogleChatSpacePrivacyTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "change_google_chat_space_privacy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ChangeGoogleChatSpacePrivacyTaskParamsTaskType {
        #[serde(rename = "change_google_chat_space_privacy")]
        ChangeGoogleChatSpacePrivacy,
    }
    impl ::std::fmt::Display for ChangeGoogleChatSpacePrivacyTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ChangeGoogleChatSpacePrivacy => {
                    f.write_str("change_google_chat_space_privacy")
                }
            }
        }
    }
    impl ::std::str::FromStr for ChangeGoogleChatSpacePrivacyTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "change_google_chat_space_privacy" => {
                    Ok(Self::ChangeGoogleChatSpacePrivacy)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ChangeGoogleChatSpacePrivacyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ChangeGoogleChatSpacePrivacyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ChangeGoogleChatSpacePrivacyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ChangeSlackChannelPrivacyTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channel",
    ///    "privacy"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "privacy": {
    ///      "type": "string",
    ///      "enum": [
    ///        "private",
    ///        "public"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "change_slack_channel_privacy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ChangeSlackChannelPrivacyTaskParams {
        pub channel: ChangeSlackChannelPrivacyTaskParamsChannel,
        pub privacy: ChangeSlackChannelPrivacyTaskParamsPrivacy,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            ChangeSlackChannelPrivacyTaskParamsTaskType,
        >,
    }
    impl ChangeSlackChannelPrivacyTaskParams {
        pub fn builder() -> builder::ChangeSlackChannelPrivacyTaskParams {
            Default::default()
        }
    }
    ///`ChangeSlackChannelPrivacyTaskParamsChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ChangeSlackChannelPrivacyTaskParamsChannel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ChangeSlackChannelPrivacyTaskParamsChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ChangeSlackChannelPrivacyTaskParamsChannel {
        pub fn builder() -> builder::ChangeSlackChannelPrivacyTaskParamsChannel {
            Default::default()
        }
    }
    ///`ChangeSlackChannelPrivacyTaskParamsPrivacy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "private",
    ///    "public"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ChangeSlackChannelPrivacyTaskParamsPrivacy {
        #[serde(rename = "private")]
        Private,
        #[serde(rename = "public")]
        Public,
    }
    impl ::std::fmt::Display for ChangeSlackChannelPrivacyTaskParamsPrivacy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Private => f.write_str("private"),
                Self::Public => f.write_str("public"),
            }
        }
    }
    impl ::std::str::FromStr for ChangeSlackChannelPrivacyTaskParamsPrivacy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "private" => Ok(Self::Private),
                "public" => Ok(Self::Public),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ChangeSlackChannelPrivacyTaskParamsPrivacy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ChangeSlackChannelPrivacyTaskParamsPrivacy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ChangeSlackChannelPrivacyTaskParamsPrivacy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ChangeSlackChannelPrivacyTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "change_slack_channel_privacy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ChangeSlackChannelPrivacyTaskParamsTaskType {
        #[serde(rename = "change_slack_channel_privacy")]
        ChangeSlackChannelPrivacy,
    }
    impl ::std::fmt::Display for ChangeSlackChannelPrivacyTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ChangeSlackChannelPrivacy => {
                    f.write_str("change_slack_channel_privacy")
                }
            }
        }
    }
    impl ::std::str::FromStr for ChangeSlackChannelPrivacyTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "change_slack_channel_privacy" => Ok(Self::ChangeSlackChannelPrivacy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ChangeSlackChannelPrivacyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ChangeSlackChannelPrivacyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ChangeSlackChannelPrivacyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "communication_type_id",
    ///    "condition_type",
    ///    "created_at",
    ///    "email_channel",
    ///    "is_private",
    ///    "name",
    ///    "sms_channel",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "communication_external_group_members": {
    ///      "description": "External group members",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "email": {
    ///            "description": "Email of the external member",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "ID of the external group member",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Name of the external member",
    ///            "type": "string"
    ///          },
    ///          "phone_number": {
    ///            "description": "Phone number of the external member",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_group_conditions": {
    ///      "description": "Group conditions attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "functionality_ids": {
    ///            "description": "Array of functionality IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "group_ids": {
    ///            "description": "Array of group IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "incident_type_ids": {
    ///            "description": "Array of incident type IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "property_type": {
    ///            "description": "Property type",
    ///            "type": "string",
    ///            "enum": [
    ///              "service",
    ///              "severity",
    ///              "functionality",
    ///              "group",
    ///              "incident_type"
    ///            ]
    ///          },
    ///          "service_ids": {
    ///            "description": "Array of service IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "severity_ids": {
    ///            "description": "Array of severity IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_type_id": {
    ///      "description": "The communication type ID",
    ///      "type": "string"
    ///    },
    ///    "condition_type": {
    ///      "description": "Condition type",
    ///      "type": "string",
    ///      "enum": [
    ///        "any",
    ///        "all"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_channel": {
    ///      "description": "Email channel enabled",
    ///      "type": "boolean"
    ///    },
    ///    "is_private": {
    ///      "description": "Whether the group is private",
    ///      "type": "boolean"
    ///    },
    ///    "member_ids": {
    ///      "description": "Array of member user IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications group",
    ///      "type": "string"
    ///    },
    ///    "slack_channel_ids": {
    ///      "description": "Array of Slack channel IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the communications group",
    ///      "type": "string"
    ///    },
    ///    "sms_channel": {
    ///      "description": "SMS channel enabled",
    ///      "type": "boolean"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroup {
        ///External group members
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_external_group_members: ::std::option::Option<
            ::std::vec::Vec<CommunicationsGroupCommunicationExternalGroupMembersItem>,
        >,
        ///Group conditions attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_group_conditions: ::std::option::Option<
            ::std::vec::Vec<CommunicationsGroupCommunicationGroupConditionsItem>,
        >,
        ///The communication type ID
        pub communication_type_id: ::std::string::String,
        ///Condition type
        pub condition_type: CommunicationsGroupConditionType,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the communications group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Email channel enabled
        pub email_channel: bool,
        ///Whether the group is private
        pub is_private: bool,
        ///Array of member user IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub member_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The name of the communications group
        pub name: ::std::string::String,
        ///Array of Slack channel IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The slug of the communications group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///SMS channel enabled
        pub sms_channel: bool,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CommunicationsGroup {
        pub fn builder() -> builder::CommunicationsGroup {
            Default::default()
        }
    }
    ///`CommunicationsGroupCommunicationExternalGroupMembersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "email": {
    ///      "description": "Email of the external member",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "ID of the external group member",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Name of the external member",
    ///      "type": "string"
    ///    },
    ///    "phone_number": {
    ///      "description": "Phone number of the external member",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroupCommunicationExternalGroupMembersItem {
        ///Email of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
        ///ID of the external group member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Name of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Phone number of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone_number: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CommunicationsGroupCommunicationExternalGroupMembersItem {
        fn default() -> Self {
            Self {
                email: Default::default(),
                id: Default::default(),
                name: Default::default(),
                phone_number: Default::default(),
            }
        }
    }
    impl CommunicationsGroupCommunicationExternalGroupMembersItem {
        pub fn builder() -> builder::CommunicationsGroupCommunicationExternalGroupMembersItem {
            Default::default()
        }
    }
    ///`CommunicationsGroupCommunicationGroupConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "functionality_ids": {
    ///      "description": "Array of functionality IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "Array of group IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "Array of incident type IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "property_type": {
    ///      "description": "Property type",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "severity",
    ///        "functionality",
    ///        "group",
    ///        "incident_type"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Array of service IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "Array of severity IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroupCommunicationGroupConditionsItem {
        ///Array of functionality IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Array of group IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Array of incident type IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Property type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_type: ::std::option::Option<
            CommunicationsGroupCommunicationGroupConditionsItemPropertyType,
        >,
        ///Array of service IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Array of severity IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for CommunicationsGroupCommunicationGroupConditionsItem {
        fn default() -> Self {
            Self {
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                incident_type_ids: Default::default(),
                property_type: Default::default(),
                service_ids: Default::default(),
                severity_ids: Default::default(),
            }
        }
    }
    impl CommunicationsGroupCommunicationGroupConditionsItem {
        pub fn builder() -> builder::CommunicationsGroupCommunicationGroupConditionsItem {
            Default::default()
        }
    }
    ///Property type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Property type",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "severity",
    ///    "functionality",
    ///    "group",
    ///    "incident_type"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsGroupCommunicationGroupConditionsItemPropertyType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "incident_type")]
        IncidentType,
    }
    impl ::std::fmt::Display
    for CommunicationsGroupCommunicationGroupConditionsItemPropertyType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Severity => f.write_str("severity"),
                Self::Functionality => f.write_str("functionality"),
                Self::Group => f.write_str("group"),
                Self::IncidentType => f.write_str("incident_type"),
            }
        }
    }
    impl ::std::str::FromStr
    for CommunicationsGroupCommunicationGroupConditionsItemPropertyType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "severity" => Ok(Self::Severity),
                "functionality" => Ok(Self::Functionality),
                "group" => Ok(Self::Group),
                "incident_type" => Ok(Self::IncidentType),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CommunicationsGroupCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsGroupCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsGroupCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Condition type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Condition type",
    ///  "type": "string",
    ///  "enum": [
    ///    "any",
    ///    "all"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsGroupConditionType {
        #[serde(rename = "any")]
        Any,
        #[serde(rename = "all")]
        All,
    }
    impl ::std::fmt::Display for CommunicationsGroupConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Any => f.write_str("any"),
                Self::All => f.write_str("all"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsGroupConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "any" => Ok(Self::Any),
                "all" => Ok(Self::All),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsGroupConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsGroupConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsGroupConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsGroupResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/communications_group"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the communications group",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_groups"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroupResponse {
        pub data: CommunicationsGroupResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CommunicationsGroupResponse {
        pub fn builder() -> builder::CommunicationsGroupResponse {
            Default::default()
        }
    }
    ///`CommunicationsGroupResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroupResponseData {
        pub attributes: CommunicationsGroup,
        ///Unique ID of the communications group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsGroupResponseDataType,
    }
    impl CommunicationsGroupResponseData {
        pub fn builder() -> builder::CommunicationsGroupResponseData {
            Default::default()
        }
    }
    ///`CommunicationsGroupResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsGroupResponseDataType {
        #[serde(rename = "communications_groups")]
        CommunicationsGroups,
    }
    impl ::std::fmt::Display for CommunicationsGroupResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsGroups => f.write_str("communications_groups"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsGroupResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_groups" => Ok(Self::CommunicationsGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsGroupsResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/communications_group"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the communications group",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "communications_groups"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroupsResponse {
        pub data: ::std::vec::Vec<CommunicationsGroupsResponseDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl CommunicationsGroupsResponse {
        pub fn builder() -> builder::CommunicationsGroupsResponse {
            Default::default()
        }
    }
    ///`CommunicationsGroupsResponseDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsGroupsResponseDataItem {
        pub attributes: CommunicationsGroup,
        ///Unique ID of the communications group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsGroupsResponseDataItemType,
    }
    impl CommunicationsGroupsResponseDataItem {
        pub fn builder() -> builder::CommunicationsGroupsResponseDataItem {
            Default::default()
        }
    }
    ///`CommunicationsGroupsResponseDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsGroupsResponseDataItemType {
        #[serde(rename = "communications_groups")]
        CommunicationsGroups,
    }
    impl ::std::fmt::Display for CommunicationsGroupsResponseDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsGroups => f.write_str("communications_groups"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsGroupsResponseDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_groups" => Ok(Self::CommunicationsGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsGroupsResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsGroupsResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsGroupsResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsStage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications stage",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications stage",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the communications stage",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsStage {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications stage
        pub name: ::std::string::String,
        ///Position of the communications stage
        pub position: ::std::option::Option<i64>,
        ///The slug of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CommunicationsStage {
        pub fn builder() -> builder::CommunicationsStage {
            Default::default()
        }
    }
    ///`CommunicationsStageResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/communications_stage"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the communications stage",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_stages"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsStageResponse {
        pub data: CommunicationsStageResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CommunicationsStageResponse {
        pub fn builder() -> builder::CommunicationsStageResponse {
            Default::default()
        }
    }
    ///`CommunicationsStageResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_stage"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications stage",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_stages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsStageResponseData {
        pub attributes: CommunicationsStage,
        ///Unique ID of the communications stage
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsStageResponseDataType,
    }
    impl CommunicationsStageResponseData {
        pub fn builder() -> builder::CommunicationsStageResponseData {
            Default::default()
        }
    }
    ///`CommunicationsStageResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_stages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsStageResponseDataType {
        #[serde(rename = "communications_stages")]
        CommunicationsStages,
    }
    impl ::std::fmt::Display for CommunicationsStageResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsStages => f.write_str("communications_stages"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsStageResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_stages" => Ok(Self::CommunicationsStages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsStageResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsStageResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsStageResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsStagesResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/communications_stage"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the communications stage",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "communications_stages"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsStagesResponse {
        pub data: ::std::vec::Vec<CommunicationsStagesResponseDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl CommunicationsStagesResponse {
        pub fn builder() -> builder::CommunicationsStagesResponse {
            Default::default()
        }
    }
    ///`CommunicationsStagesResponseDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_stage"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications stage",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_stages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsStagesResponseDataItem {
        pub attributes: CommunicationsStage,
        ///Unique ID of the communications stage
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsStagesResponseDataItemType,
    }
    impl CommunicationsStagesResponseDataItem {
        pub fn builder() -> builder::CommunicationsStagesResponseDataItem {
            Default::default()
        }
    }
    ///`CommunicationsStagesResponseDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_stages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsStagesResponseDataItemType {
        #[serde(rename = "communications_stages")]
        CommunicationsStages,
    }
    impl ::std::fmt::Display for CommunicationsStagesResponseDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsStages => f.write_str("communications_stages"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsStagesResponseDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_stages" => Ok(Self::CommunicationsStages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsStagesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsStagesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsStagesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "communication_template_stages": {
    ///      "description": "Communication template stages",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "data": {
    ///            "type": "object",
    ///            "properties": {
    ///              "attributes": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "communication_stage": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "id": {
    ///                        "description": "The communication stage ID",
    ///                        "type": "string"
    ///                      },
    ///                      "name": {
    ///                        "description": "The communication stage name",
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "communication_template": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "id": {
    ///                        "description": "The communication template ID",
    ///                        "type": "string"
    ///                      },
    ///                      "name": {
    ///                        "description": "The communication template name",
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "created_at": {
    ///                    "description": "Date of creation",
    ///                    "type": "string"
    ///                  },
    ///                  "email_body": {
    ///                    "description": "Email body for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "email_subject": {
    ///                    "description": "Email subject for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "slack_content": {
    ///                    "description": "Slack content for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "sms_content": {
    ///                    "description": "SMS content for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "updated_at": {
    ///                    "description": "Date of last update",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "id": {
    ///                "description": "ID of the communication template stage",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "communications_template_stages"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_type": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "ID of the communication type",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Name of the communication type",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "communication_type_id": {
    ///      "description": "The communication type ID",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications template",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications template",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications template",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the communications template",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplate {
        ///Communication template stages
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_template_stages: ::std::option::Option<
            ::std::vec::Vec<CommunicationsTemplateCommunicationTemplateStagesItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_type: ::std::option::Option<
            CommunicationsTemplateCommunicationType,
        >,
        ///The communication type ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_type_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications template
        pub name: ::std::string::String,
        ///Position of the communications template
        pub position: ::std::option::Option<i64>,
        ///The slug of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CommunicationsTemplate {
        pub fn builder() -> builder::CommunicationsTemplate {
            Default::default()
        }
    }
    ///`CommunicationsTemplateCommunicationTemplateStagesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "communication_stage": {
    ///              "type": "object",
    ///              "properties": {
    ///                "id": {
    ///                  "description": "The communication stage ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "The communication stage name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "communication_template": {
    ///              "type": "object",
    ///              "properties": {
    ///                "id": {
    ///                  "description": "The communication template ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "The communication template name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "created_at": {
    ///              "description": "Date of creation",
    ///              "type": "string"
    ///            },
    ///            "email_body": {
    ///              "description": "Email body for the stage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "email_subject": {
    ///              "description": "Email subject for the stage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_content": {
    ///              "description": "Slack content for the stage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "sms_content": {
    ///              "description": "SMS content for the stage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "updated_at": {
    ///              "description": "Date of last update",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "description": "ID of the communication template stage",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_template_stages"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateCommunicationTemplateStagesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            CommunicationsTemplateCommunicationTemplateStagesItemData,
        >,
    }
    impl ::std::default::Default
    for CommunicationsTemplateCommunicationTemplateStagesItem {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl CommunicationsTemplateCommunicationTemplateStagesItem {
        pub fn builder() -> builder::CommunicationsTemplateCommunicationTemplateStagesItem {
            Default::default()
        }
    }
    ///`CommunicationsTemplateCommunicationTemplateStagesItemData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "communication_stage": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "description": "The communication stage ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "The communication stage name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "communication_template": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "description": "The communication template ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "The communication template name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "created_at": {
    ///          "description": "Date of creation",
    ///          "type": "string"
    ///        },
    ///        "email_body": {
    ///          "description": "Email body for the stage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "email_subject": {
    ///          "description": "Email subject for the stage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_content": {
    ///          "description": "Slack content for the stage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "sms_content": {
    ///          "description": "SMS content for the stage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "updated_at": {
    ///          "description": "Date of last update",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "description": "ID of the communication template stage",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_template_stages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateCommunicationTemplateStagesItemData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<
            CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
        >,
        ///ID of the communication template stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<
            CommunicationsTemplateCommunicationTemplateStagesItemDataType,
        >,
    }
    impl ::std::default::Default
    for CommunicationsTemplateCommunicationTemplateStagesItemData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl CommunicationsTemplateCommunicationTemplateStagesItemData {
        pub fn builder() -> builder::CommunicationsTemplateCommunicationTemplateStagesItemData {
            Default::default()
        }
    }
    ///`CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "communication_stage": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "The communication stage ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "The communication stage name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "communication_template": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "The communication template ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "The communication template name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "email_body": {
    ///      "description": "Email body for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_subject": {
    ///      "description": "Email subject for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_content": {
    ///      "description": "Slack content for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "sms_content": {
    ///      "description": "SMS content for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_stage: ::std::option::Option<
            CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_template: ::std::option::Option<
            CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
        >,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Email body for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_body: ::std::option::Option<::std::string::String>,
        ///Email subject for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_subject: ::std::option::Option<::std::string::String>,
        ///Slack content for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_content: ::std::option::Option<::std::string::String>,
        ///SMS content for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sms_content: ::std::option::Option<::std::string::String>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
        fn default() -> Self {
            Self {
                communication_stage: Default::default(),
                communication_template: Default::default(),
                created_at: Default::default(),
                email_body: Default::default(),
                email_subject: Default::default(),
                slack_content: Default::default(),
                sms_content: Default::default(),
                updated_at: Default::default(),
            }
        }
    }
    impl CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
        pub fn builder() -> builder::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
            Default::default()
        }
    }
    ///`CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "The communication stage ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The communication stage name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
        ///The communication stage ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///The communication stage name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
        pub fn builder() -> builder::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
            Default::default()
        }
    }
    ///`CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "The communication template ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The communication template name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
        ///The communication template ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///The communication template name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
        pub fn builder() -> builder::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
            Default::default()
        }
    }
    ///`CommunicationsTemplateCommunicationTemplateStagesItemDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_template_stages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsTemplateCommunicationTemplateStagesItemDataType {
        #[serde(rename = "communications_template_stages")]
        CommunicationsTemplateStages,
    }
    impl ::std::fmt::Display
    for CommunicationsTemplateCommunicationTemplateStagesItemDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTemplateStages => {
                    f.write_str("communications_template_stages")
                }
            }
        }
    }
    impl ::std::str::FromStr
    for CommunicationsTemplateCommunicationTemplateStagesItemDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_template_stages" => {
                    Ok(Self::CommunicationsTemplateStages)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CommunicationsTemplateCommunicationTemplateStagesItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsTemplateCommunicationTemplateStagesItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsTemplateCommunicationTemplateStagesItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsTemplateCommunicationType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "ID of the communication type",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Name of the communication type",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateCommunicationType {
        ///ID of the communication type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Name of the communication type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CommunicationsTemplateCommunicationType {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CommunicationsTemplateCommunicationType {
        pub fn builder() -> builder::CommunicationsTemplateCommunicationType {
            Default::default()
        }
    }
    ///`CommunicationsTemplateResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/communications_template"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the communications template",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_templates"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateResponse {
        pub data: CommunicationsTemplateResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CommunicationsTemplateResponse {
        pub fn builder() -> builder::CommunicationsTemplateResponse {
            Default::default()
        }
    }
    ///`CommunicationsTemplateResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplateResponseData {
        pub attributes: CommunicationsTemplate,
        ///Unique ID of the communications template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsTemplateResponseDataType,
    }
    impl CommunicationsTemplateResponseData {
        pub fn builder() -> builder::CommunicationsTemplateResponseData {
            Default::default()
        }
    }
    ///`CommunicationsTemplateResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsTemplateResponseDataType {
        #[serde(rename = "communications_templates")]
        CommunicationsTemplates,
    }
    impl ::std::fmt::Display for CommunicationsTemplateResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTemplates => f.write_str("communications_templates"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsTemplateResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_templates" => Ok(Self::CommunicationsTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsTemplatesResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/communications_template"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the communications template",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "communications_templates"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplatesResponse {
        pub data: ::std::vec::Vec<CommunicationsTemplatesResponseDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl CommunicationsTemplatesResponse {
        pub fn builder() -> builder::CommunicationsTemplatesResponse {
            Default::default()
        }
    }
    ///`CommunicationsTemplatesResponseDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTemplatesResponseDataItem {
        pub attributes: CommunicationsTemplate,
        ///Unique ID of the communications template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsTemplatesResponseDataItemType,
    }
    impl CommunicationsTemplatesResponseDataItem {
        pub fn builder() -> builder::CommunicationsTemplatesResponseDataItem {
            Default::default()
        }
    }
    ///`CommunicationsTemplatesResponseDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsTemplatesResponseDataItemType {
        #[serde(rename = "communications_templates")]
        CommunicationsTemplates,
    }
    impl ::std::fmt::Display for CommunicationsTemplatesResponseDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTemplates => f.write_str("communications_templates"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsTemplatesResponseDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_templates" => Ok(Self::CommunicationsTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsTemplatesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsTemplatesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsTemplatesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "color",
    ///    "created_at",
    ///    "name",
    ///    "position",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The color of the communications type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications type",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications type",
    ///      "type": "integer"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the communications type",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsType {
        ///The color of the communications type
        pub color: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications type
        pub name: ::std::string::String,
        ///Position of the communications type
        pub position: i64,
        ///The slug of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CommunicationsType {
        pub fn builder() -> builder::CommunicationsType {
            Default::default()
        }
    }
    ///`CommunicationsTypeResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/communications_type"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the communications type",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_types"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTypeResponse {
        pub data: CommunicationsTypeResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CommunicationsTypeResponse {
        pub fn builder() -> builder::CommunicationsTypeResponse {
            Default::default()
        }
    }
    ///`CommunicationsTypeResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_type"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications type",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTypeResponseData {
        pub attributes: CommunicationsType,
        ///Unique ID of the communications type
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsTypeResponseDataType,
    }
    impl CommunicationsTypeResponseData {
        pub fn builder() -> builder::CommunicationsTypeResponseData {
            Default::default()
        }
    }
    ///`CommunicationsTypeResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsTypeResponseDataType {
        #[serde(rename = "communications_types")]
        CommunicationsTypes,
    }
    impl ::std::fmt::Display for CommunicationsTypeResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTypes => f.write_str("communications_types"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsTypeResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_types" => Ok(Self::CommunicationsTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsTypeResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsTypeResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsTypeResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CommunicationsTypesResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/communications_type"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the communications type",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "communications_types"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTypesResponse {
        pub data: ::std::vec::Vec<CommunicationsTypesResponseDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl CommunicationsTypesResponse {
        pub fn builder() -> builder::CommunicationsTypesResponse {
            Default::default()
        }
    }
    ///`CommunicationsTypesResponseDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/communications_type"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the communications type",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CommunicationsTypesResponseDataItem {
        pub attributes: CommunicationsType,
        ///Unique ID of the communications type
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CommunicationsTypesResponseDataItemType,
    }
    impl CommunicationsTypesResponseDataItem {
        pub fn builder() -> builder::CommunicationsTypesResponseDataItem {
            Default::default()
        }
    }
    ///`CommunicationsTypesResponseDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CommunicationsTypesResponseDataItemType {
        #[serde(rename = "communications_types")]
        CommunicationsTypes,
    }
    impl ::std::fmt::Display for CommunicationsTypesResponseDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTypes => f.write_str("communications_types"),
            }
        }
    }
    impl ::std::str::FromStr for CommunicationsTypesResponseDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_types" => Ok(Self::CommunicationsTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CommunicationsTypesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CommunicationsTypesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CommunicationsTypesResponseDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateAirtableTableRecordTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "base",
    ///    "table"
    ///  ],
    ///  "properties": {
    ///    "base": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "table": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_airtable_table_record"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAirtableTableRecordTaskParams {
        pub base: CreateAirtableTableRecordTaskParamsBase,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        pub table: CreateAirtableTableRecordTaskParamsTable,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateAirtableTableRecordTaskParamsTaskType,
        >,
    }
    impl CreateAirtableTableRecordTaskParams {
        pub fn builder() -> builder::CreateAirtableTableRecordTaskParams {
            Default::default()
        }
    }
    ///`CreateAirtableTableRecordTaskParamsBase`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAirtableTableRecordTaskParamsBase {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAirtableTableRecordTaskParamsBase {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAirtableTableRecordTaskParamsBase {
        pub fn builder() -> builder::CreateAirtableTableRecordTaskParamsBase {
            Default::default()
        }
    }
    ///`CreateAirtableTableRecordTaskParamsTable`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAirtableTableRecordTaskParamsTable {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAirtableTableRecordTaskParamsTable {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAirtableTableRecordTaskParamsTable {
        pub fn builder() -> builder::CreateAirtableTableRecordTaskParamsTable {
            Default::default()
        }
    }
    ///`CreateAirtableTableRecordTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_airtable_table_record"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateAirtableTableRecordTaskParamsTaskType {
        #[serde(rename = "create_airtable_table_record")]
        CreateAirtableTableRecord,
    }
    impl ::std::fmt::Display for CreateAirtableTableRecordTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateAirtableTableRecord => {
                    f.write_str("create_airtable_table_record")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateAirtableTableRecordTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_airtable_table_record" => Ok(Self::CreateAirtableTableRecord),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateAirtableTableRecordTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateAirtableTableRecordTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateAirtableTableRecordTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateAnthropicChatCompletionTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "model",
    ///    "prompt"
    ///  ],
    ///  "properties": {
    ///    "model": {
    ///      "description": "The Anthropic model. eg: claude-3-5-sonnet-20241022",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "prompt": {
    ///      "description": "The prompt to send to Anthropic",
    ///      "type": "string"
    ///    },
    ///    "system_prompt": {
    ///      "description": "The system prompt to send to Anthropic (optional)",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_anthropic_chat_completion_task"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAnthropicChatCompletionTaskParams {
        pub model: CreateAnthropicChatCompletionTaskParamsModel,
        ///The prompt to send to Anthropic
        pub prompt: ::std::string::String,
        ///The system prompt to send to Anthropic (optional)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub system_prompt: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateAnthropicChatCompletionTaskParamsTaskType,
        >,
    }
    impl CreateAnthropicChatCompletionTaskParams {
        pub fn builder() -> builder::CreateAnthropicChatCompletionTaskParams {
            Default::default()
        }
    }
    ///The Anthropic model. eg: claude-3-5-sonnet-20241022
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The Anthropic model. eg: claude-3-5-sonnet-20241022",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAnthropicChatCompletionTaskParamsModel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAnthropicChatCompletionTaskParamsModel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAnthropicChatCompletionTaskParamsModel {
        pub fn builder() -> builder::CreateAnthropicChatCompletionTaskParamsModel {
            Default::default()
        }
    }
    ///`CreateAnthropicChatCompletionTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_anthropic_chat_completion_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateAnthropicChatCompletionTaskParamsTaskType {
        #[serde(rename = "create_anthropic_chat_completion_task")]
        CreateAnthropicChatCompletionTask,
    }
    impl ::std::fmt::Display for CreateAnthropicChatCompletionTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateAnthropicChatCompletionTask => {
                    f.write_str("create_anthropic_chat_completion_task")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateAnthropicChatCompletionTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_anthropic_chat_completion_task" => {
                    Ok(Self::CreateAnthropicChatCompletionTask)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateAnthropicChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateAnthropicChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateAnthropicChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateAsanaSubtaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "parent_task_id",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "completion": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "dependency_direction": {
    ///      "default": "blocking",
    ///      "type": "string",
    ///      "enum": [
    ///        "blocking",
    ///        "blocked_by"
    ///      ]
    ///    },
    ///    "dependent_task_ids": {
    ///      "description": "Dependent task ids. Supports liquid syntax",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "notes": {
    ///      "type": "string"
    ///    },
    ///    "parent_task_id": {
    ///      "description": "The parent task id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_asana_subtask"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The subtask title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAsanaSubtaskTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        pub completion: CreateAsanaSubtaskTaskParamsCompletion,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::create_asana_subtask_task_params_dependency_direction"
        )]
        pub dependency_direction: CreateAsanaSubtaskTaskParamsDependencyDirection,
        ///Dependent task ids. Supports liquid syntax
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub dependent_task_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notes: ::std::option::Option<::std::string::String>,
        ///The parent task id
        pub parent_task_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateAsanaSubtaskTaskParamsTaskType>,
        ///The subtask title
        pub title: ::std::string::String,
    }
    impl CreateAsanaSubtaskTaskParams {
        pub fn builder() -> builder::CreateAsanaSubtaskTaskParams {
            Default::default()
        }
    }
    ///`CreateAsanaSubtaskTaskParamsCompletion`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAsanaSubtaskTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAsanaSubtaskTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAsanaSubtaskTaskParamsCompletion {
        pub fn builder() -> builder::CreateAsanaSubtaskTaskParamsCompletion {
            Default::default()
        }
    }
    ///`CreateAsanaSubtaskTaskParamsDependencyDirection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "blocking",
    ///  "type": "string",
    ///  "enum": [
    ///    "blocking",
    ///    "blocked_by"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateAsanaSubtaskTaskParamsDependencyDirection {
        #[serde(rename = "blocking")]
        Blocking,
        #[serde(rename = "blocked_by")]
        BlockedBy,
    }
    impl ::std::fmt::Display for CreateAsanaSubtaskTaskParamsDependencyDirection {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Blocking => f.write_str("blocking"),
                Self::BlockedBy => f.write_str("blocked_by"),
            }
        }
    }
    impl ::std::str::FromStr for CreateAsanaSubtaskTaskParamsDependencyDirection {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "blocking" => Ok(Self::Blocking),
                "blocked_by" => Ok(Self::BlockedBy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateAsanaSubtaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateAsanaSubtaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateAsanaSubtaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateAsanaSubtaskTaskParamsDependencyDirection {
        fn default() -> Self {
            CreateAsanaSubtaskTaskParamsDependencyDirection::Blocking
        }
    }
    ///`CreateAsanaSubtaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_asana_subtask"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateAsanaSubtaskTaskParamsTaskType {
        #[serde(rename = "create_asana_subtask")]
        CreateAsanaSubtask,
    }
    impl ::std::fmt::Display for CreateAsanaSubtaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateAsanaSubtask => f.write_str("create_asana_subtask"),
            }
        }
    }
    impl ::std::str::FromStr for CreateAsanaSubtaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_asana_subtask" => Ok(Self::CreateAsanaSubtask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateAsanaSubtaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateAsanaSubtaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateAsanaSubtaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateAsanaTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "projects",
    ///    "title",
    ///    "workspace"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "completion": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "dependency_direction": {
    ///      "default": "blocking",
    ///      "type": "string",
    ///      "enum": [
    ///        "blocking",
    ///        "blocked_by"
    ///      ]
    ///    },
    ///    "dependent_task_ids": {
    ///      "description": "Dependent task ids. Supports liquid syntax",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "notes": {
    ///      "type": "string"
    ///    },
    ///    "projects": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_asana_task"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The task title",
    ///      "type": "string"
    ///    },
    ///    "workspace": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAsanaTaskTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        pub completion: CreateAsanaTaskTaskParamsCompletion,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::create_asana_task_task_params_dependency_direction"
        )]
        pub dependency_direction: CreateAsanaTaskTaskParamsDependencyDirection,
        ///Dependent task ids. Supports liquid syntax
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub dependent_task_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notes: ::std::option::Option<::std::string::String>,
        pub projects: ::std::vec::Vec<CreateAsanaTaskTaskParamsProjectsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateAsanaTaskTaskParamsTaskType>,
        ///The task title
        pub title: ::std::string::String,
        pub workspace: CreateAsanaTaskTaskParamsWorkspace,
    }
    impl CreateAsanaTaskTaskParams {
        pub fn builder() -> builder::CreateAsanaTaskTaskParams {
            Default::default()
        }
    }
    ///`CreateAsanaTaskTaskParamsCompletion`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAsanaTaskTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAsanaTaskTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAsanaTaskTaskParamsCompletion {
        pub fn builder() -> builder::CreateAsanaTaskTaskParamsCompletion {
            Default::default()
        }
    }
    ///`CreateAsanaTaskTaskParamsDependencyDirection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "blocking",
    ///  "type": "string",
    ///  "enum": [
    ///    "blocking",
    ///    "blocked_by"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateAsanaTaskTaskParamsDependencyDirection {
        #[serde(rename = "blocking")]
        Blocking,
        #[serde(rename = "blocked_by")]
        BlockedBy,
    }
    impl ::std::fmt::Display for CreateAsanaTaskTaskParamsDependencyDirection {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Blocking => f.write_str("blocking"),
                Self::BlockedBy => f.write_str("blocked_by"),
            }
        }
    }
    impl ::std::str::FromStr for CreateAsanaTaskTaskParamsDependencyDirection {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "blocking" => Ok(Self::Blocking),
                "blocked_by" => Ok(Self::BlockedBy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateAsanaTaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateAsanaTaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateAsanaTaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateAsanaTaskTaskParamsDependencyDirection {
        fn default() -> Self {
            CreateAsanaTaskTaskParamsDependencyDirection::Blocking
        }
    }
    ///`CreateAsanaTaskTaskParamsProjectsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAsanaTaskTaskParamsProjectsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAsanaTaskTaskParamsProjectsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAsanaTaskTaskParamsProjectsItem {
        pub fn builder() -> builder::CreateAsanaTaskTaskParamsProjectsItem {
            Default::default()
        }
    }
    ///`CreateAsanaTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_asana_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateAsanaTaskTaskParamsTaskType {
        #[serde(rename = "create_asana_task")]
        CreateAsanaTask,
    }
    impl ::std::fmt::Display for CreateAsanaTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateAsanaTask => f.write_str("create_asana_task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateAsanaTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_asana_task" => Ok(Self::CreateAsanaTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateAsanaTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateAsanaTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateAsanaTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateAsanaTaskTaskParamsWorkspace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateAsanaTaskTaskParamsWorkspace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateAsanaTaskTaskParamsWorkspace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateAsanaTaskTaskParamsWorkspace {
        pub fn builder() -> builder::CreateAsanaTaskTaskParamsWorkspace {
            Default::default()
        }
    }
    ///`CreateClickupTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The task description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "tags": {
    ///      "description": "The task tags",
    ///      "type": "string"
    ///    },
    ///    "task_payload": {
    ///      "description": "Additional ClickUp task attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_clickup_task"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The task title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateClickupTaskTaskParams {
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The task description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateClickupTaskTaskParamsPriority>,
        ///The task tags
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub tags: ::std::option::Option<::std::string::String>,
        ///Additional ClickUp task attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_payload: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateClickupTaskTaskParamsTaskType>,
        ///The task title
        pub title: ::std::string::String,
    }
    impl CreateClickupTaskTaskParams {
        pub fn builder() -> builder::CreateClickupTaskTaskParams {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateClickupTaskTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateClickupTaskTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateClickupTaskTaskParamsPriority {
        pub fn builder() -> builder::CreateClickupTaskTaskParamsPriority {
            Default::default()
        }
    }
    ///`CreateClickupTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_clickup_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateClickupTaskTaskParamsTaskType {
        #[serde(rename = "create_clickup_task")]
        CreateClickupTask,
    }
    impl ::std::fmt::Display for CreateClickupTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateClickupTask => f.write_str("create_clickup_task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateClickupTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_clickup_task" => Ok(Self::CreateClickupTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateClickupTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateClickupTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateClickupTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateCodaPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Coda page content",
    ///      "type": "string"
    ///    },
    ///    "doc": {
    ///      "description": "The Coda doc object with id and name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "folder_id": {
    ///      "description": "The Coda folder id",
    ///      "type": "string"
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "subtitle": {
    ///      "description": "The Coda page subtitle",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_coda_page"
    ///      ]
    ///    },
    ///    "template": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "Combined doc_id/page_id in format 'doc_id/page_id'",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The Coda page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateCodaPageTaskParams {
        ///The Coda page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub doc: ::std::option::Option<CreateCodaPageTaskParamsDoc>,
        ///The Coda folder id
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub folder_id: ::std::option::Option<::std::string::String>,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        ///Retrospective template to use when creating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        ///The Coda page subtitle
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub subtitle: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateCodaPageTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<CreateCodaPageTaskParamsTemplate>,
        ///The Coda page title
        pub title: ::std::string::String,
    }
    impl CreateCodaPageTaskParams {
        pub fn builder() -> builder::CreateCodaPageTaskParams {
            Default::default()
        }
    }
    ///The Coda doc object with id and name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The Coda doc object with id and name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateCodaPageTaskParamsDoc {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateCodaPageTaskParamsDoc {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateCodaPageTaskParamsDoc {
        pub fn builder() -> builder::CreateCodaPageTaskParamsDoc {
            Default::default()
        }
    }
    ///`CreateCodaPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_coda_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateCodaPageTaskParamsTaskType {
        #[serde(rename = "create_coda_page")]
        CreateCodaPage,
    }
    impl ::std::fmt::Display for CreateCodaPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateCodaPage => f.write_str("create_coda_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateCodaPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_coda_page" => Ok(Self::CreateCodaPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateCodaPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateCodaPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateCodaPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateCodaPageTaskParamsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Combined doc_id/page_id in format 'doc_id/page_id'",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateCodaPageTaskParamsTemplate {
        ///Combined doc_id/page_id in format 'doc_id/page_id'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateCodaPageTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateCodaPageTaskParamsTemplate {
        pub fn builder() -> builder::CreateCodaPageTaskParamsTemplate {
            Default::default()
        }
    }
    ///`CreateConfluencePageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "space",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "ancestor": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "content": {
    ///      "description": "The page content",
    ///      "type": "string"
    ///    },
    ///    "integration": {
    ///      "description": "Specify integration id if you have more than one Confluence instance",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "The Retrospective template to use",
    ///      "type": "string"
    ///    },
    ///    "space": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_confluence_page"
    ///      ]
    ///    },
    ///    "template": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateConfluencePageTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ancestor: ::std::option::Option<CreateConfluencePageTaskParamsAncestor>,
        ///The page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub integration: ::std::option::Option<
            CreateConfluencePageTaskParamsIntegration,
        >,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        ///The Retrospective template to use
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        pub space: CreateConfluencePageTaskParamsSpace,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateConfluencePageTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<CreateConfluencePageTaskParamsTemplate>,
        ///The page title
        pub title: ::std::string::String,
    }
    impl CreateConfluencePageTaskParams {
        pub fn builder() -> builder::CreateConfluencePageTaskParams {
            Default::default()
        }
    }
    ///`CreateConfluencePageTaskParamsAncestor`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateConfluencePageTaskParamsAncestor {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateConfluencePageTaskParamsAncestor {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateConfluencePageTaskParamsAncestor {
        pub fn builder() -> builder::CreateConfluencePageTaskParamsAncestor {
            Default::default()
        }
    }
    ///Specify integration id if you have more than one Confluence instance
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Specify integration id if you have more than one Confluence instance",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateConfluencePageTaskParamsIntegration {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateConfluencePageTaskParamsIntegration {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateConfluencePageTaskParamsIntegration {
        pub fn builder() -> builder::CreateConfluencePageTaskParamsIntegration {
            Default::default()
        }
    }
    ///`CreateConfluencePageTaskParamsSpace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateConfluencePageTaskParamsSpace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateConfluencePageTaskParamsSpace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateConfluencePageTaskParamsSpace {
        pub fn builder() -> builder::CreateConfluencePageTaskParamsSpace {
            Default::default()
        }
    }
    ///`CreateConfluencePageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_confluence_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateConfluencePageTaskParamsTaskType {
        #[serde(rename = "create_confluence_page")]
        CreateConfluencePage,
    }
    impl ::std::fmt::Display for CreateConfluencePageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateConfluencePage => f.write_str("create_confluence_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateConfluencePageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_confluence_page" => Ok(Self::CreateConfluencePage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateConfluencePageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateConfluencePageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateConfluencePageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateConfluencePageTaskParamsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateConfluencePageTaskParamsTemplate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateConfluencePageTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateConfluencePageTaskParamsTemplate {
        pub fn builder() -> builder::CreateConfluencePageTaskParamsTemplate {
            Default::default()
        }
    }
    ///`CreateDatadogNotebookTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "kind",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The notebook content",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The notebook kind",
    ///      "type": "string",
    ///      "enum": [
    ///        "postmortem",
    ///        "runbook",
    ///        "investigation",
    ///        "documentation",
    ///        "report"
    ///      ]
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating notebook, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_datadog_notebook"
    ///      ]
    ///    },
    ///    "template": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The notebook title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateDatadogNotebookTaskParams {
        ///The notebook content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The notebook kind
        pub kind: CreateDatadogNotebookTaskParamsKind,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        ///Retrospective template to use when creating notebook, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateDatadogNotebookTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<CreateDatadogNotebookTaskParamsTemplate>,
        ///The notebook title
        pub title: ::std::string::String,
    }
    impl CreateDatadogNotebookTaskParams {
        pub fn builder() -> builder::CreateDatadogNotebookTaskParams {
            Default::default()
        }
    }
    ///The notebook kind
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The notebook kind",
    ///  "type": "string",
    ///  "enum": [
    ///    "postmortem",
    ///    "runbook",
    ///    "investigation",
    ///    "documentation",
    ///    "report"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateDatadogNotebookTaskParamsKind {
        #[serde(rename = "postmortem")]
        Postmortem,
        #[serde(rename = "runbook")]
        Runbook,
        #[serde(rename = "investigation")]
        Investigation,
        #[serde(rename = "documentation")]
        Documentation,
        #[serde(rename = "report")]
        Report,
    }
    impl ::std::fmt::Display for CreateDatadogNotebookTaskParamsKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Postmortem => f.write_str("postmortem"),
                Self::Runbook => f.write_str("runbook"),
                Self::Investigation => f.write_str("investigation"),
                Self::Documentation => f.write_str("documentation"),
                Self::Report => f.write_str("report"),
            }
        }
    }
    impl ::std::str::FromStr for CreateDatadogNotebookTaskParamsKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "postmortem" => Ok(Self::Postmortem),
                "runbook" => Ok(Self::Runbook),
                "investigation" => Ok(Self::Investigation),
                "documentation" => Ok(Self::Documentation),
                "report" => Ok(Self::Report),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateDatadogNotebookTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateDatadogNotebookTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateDatadogNotebookTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateDatadogNotebookTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_datadog_notebook"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateDatadogNotebookTaskParamsTaskType {
        #[serde(rename = "create_datadog_notebook")]
        CreateDatadogNotebook,
    }
    impl ::std::fmt::Display for CreateDatadogNotebookTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateDatadogNotebook => f.write_str("create_datadog_notebook"),
            }
        }
    }
    impl ::std::str::FromStr for CreateDatadogNotebookTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_datadog_notebook" => Ok(Self::CreateDatadogNotebook),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateDatadogNotebookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateDatadogNotebookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateDatadogNotebookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateDatadogNotebookTaskParamsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateDatadogNotebookTaskParamsTemplate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateDatadogNotebookTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateDatadogNotebookTaskParamsTemplate {
        pub fn builder() -> builder::CreateDatadogNotebookTaskParamsTemplate {
            Default::default()
        }
    }
    ///`CreateDropboxPaperPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The page content",
    ///      "type": "string"
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "namespace": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "parent_folder": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page task, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_dropbox_paper_page"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The page task title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateDropboxPaperPageTaskParams {
        ///The page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub namespace: ::std::option::Option<CreateDropboxPaperPageTaskParamsNamespace>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_folder: ::std::option::Option<
            CreateDropboxPaperPageTaskParamsParentFolder,
        >,
        ///Retrospective template to use when creating page task, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateDropboxPaperPageTaskParamsTaskType>,
        ///The page task title
        pub title: ::std::string::String,
    }
    impl CreateDropboxPaperPageTaskParams {
        pub fn builder() -> builder::CreateDropboxPaperPageTaskParams {
            Default::default()
        }
    }
    ///`CreateDropboxPaperPageTaskParamsNamespace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateDropboxPaperPageTaskParamsNamespace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateDropboxPaperPageTaskParamsNamespace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateDropboxPaperPageTaskParamsNamespace {
        pub fn builder() -> builder::CreateDropboxPaperPageTaskParamsNamespace {
            Default::default()
        }
    }
    ///`CreateDropboxPaperPageTaskParamsParentFolder`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateDropboxPaperPageTaskParamsParentFolder {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateDropboxPaperPageTaskParamsParentFolder {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateDropboxPaperPageTaskParamsParentFolder {
        pub fn builder() -> builder::CreateDropboxPaperPageTaskParamsParentFolder {
            Default::default()
        }
    }
    ///`CreateDropboxPaperPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_dropbox_paper_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateDropboxPaperPageTaskParamsTaskType {
        #[serde(rename = "create_dropbox_paper_page")]
        CreateDropboxPaperPage,
    }
    impl ::std::fmt::Display for CreateDropboxPaperPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateDropboxPaperPage => f.write_str("create_dropbox_paper_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateDropboxPaperPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_dropbox_paper_page" => Ok(Self::CreateDropboxPaperPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateDropboxPaperPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateDropboxPaperPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateDropboxPaperPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateEdgeConnectorActionBody`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "action": {
    ///      "type": "object",
    ///      "required": [
    ///        "action_type",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "action_type": {
    ///          "description": "Action type",
    ///          "type": "string",
    ///          "enum": [
    ///            "script",
    ///            "http"
    ///          ]
    ///        },
    ///        "metadata": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "type": "string"
    ///            },
    ///            "parameters": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "description": {
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "type": "string"
    ///                  },
    ///                  "options": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "required": {
    ///                    "type": "boolean"
    ///                  },
    ///                  "type": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "string",
    ///                      "number",
    ///                      "boolean"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "timeout": {
    ///              "type": "integer"
    ///            }
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "Action name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorActionBody {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub action: ::std::option::Option<CreateEdgeConnectorActionBodyAction>,
    }
    impl ::std::default::Default for CreateEdgeConnectorActionBody {
        fn default() -> Self {
            Self { action: Default::default() }
        }
    }
    impl CreateEdgeConnectorActionBody {
        pub fn builder() -> builder::CreateEdgeConnectorActionBody {
            Default::default()
        }
    }
    ///`CreateEdgeConnectorActionBodyAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "action_type",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "action_type": {
    ///      "description": "Action type",
    ///      "type": "string",
    ///      "enum": [
    ///        "script",
    ///        "http"
    ///      ]
    ///    },
    ///    "metadata": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "type": "string"
    ///        },
    ///        "parameters": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "description": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              },
    ///              "options": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "required": {
    ///                "type": "boolean"
    ///              },
    ///              "type": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "string",
    ///                  "number",
    ///                  "boolean"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "timeout": {
    ///          "type": "integer"
    ///        }
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "Action name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorActionBodyAction {
        ///Action type
        pub action_type: CreateEdgeConnectorActionBodyActionActionType,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub metadata: ::std::option::Option<CreateEdgeConnectorActionBodyActionMetadata>,
        ///Action name
        pub name: ::std::string::String,
    }
    impl CreateEdgeConnectorActionBodyAction {
        pub fn builder() -> builder::CreateEdgeConnectorActionBodyAction {
            Default::default()
        }
    }
    ///Action type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Action type",
    ///  "type": "string",
    ///  "enum": [
    ///    "script",
    ///    "http"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateEdgeConnectorActionBodyActionActionType {
        #[serde(rename = "script")]
        Script,
        #[serde(rename = "http")]
        Http,
    }
    impl ::std::fmt::Display for CreateEdgeConnectorActionBodyActionActionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Script => f.write_str("script"),
                Self::Http => f.write_str("http"),
            }
        }
    }
    impl ::std::str::FromStr for CreateEdgeConnectorActionBodyActionActionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "script" => Ok(Self::Script),
                "http" => Ok(Self::Http),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateEdgeConnectorActionBodyActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateEdgeConnectorActionBodyActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateEdgeConnectorActionBodyActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateEdgeConnectorActionBodyActionMetadata`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "parameters": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "description": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          },
    ///          "options": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "required": {
    ///            "type": "boolean"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "string",
    ///              "number",
    ///              "boolean"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "timeout": {
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorActionBodyActionMetadata {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub parameters: ::std::vec::Vec<
            CreateEdgeConnectorActionBodyActionMetadataParametersItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub timeout: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for CreateEdgeConnectorActionBodyActionMetadata {
        fn default() -> Self {
            Self {
                description: Default::default(),
                parameters: Default::default(),
                timeout: Default::default(),
            }
        }
    }
    impl CreateEdgeConnectorActionBodyActionMetadata {
        pub fn builder() -> builder::CreateEdgeConnectorActionBodyActionMetadata {
            Default::default()
        }
    }
    ///`CreateEdgeConnectorActionBodyActionMetadataParametersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "options": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "required": {
    ///      "type": "boolean"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "string",
    ///        "number",
    ///        "boolean"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorActionBodyActionMetadataParametersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub options: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<
            CreateEdgeConnectorActionBodyActionMetadataParametersItemType,
        >,
    }
    impl ::std::default::Default
    for CreateEdgeConnectorActionBodyActionMetadataParametersItem {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                options: Default::default(),
                required: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl CreateEdgeConnectorActionBodyActionMetadataParametersItem {
        pub fn builder() -> builder::CreateEdgeConnectorActionBodyActionMetadataParametersItem {
            Default::default()
        }
    }
    ///`CreateEdgeConnectorActionBodyActionMetadataParametersItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "string",
    ///    "number",
    ///    "boolean"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateEdgeConnectorActionBodyActionMetadataParametersItemType {
        #[serde(rename = "string")]
        String,
        #[serde(rename = "number")]
        Number,
        #[serde(rename = "boolean")]
        Boolean,
    }
    impl ::std::fmt::Display
    for CreateEdgeConnectorActionBodyActionMetadataParametersItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::String => f.write_str("string"),
                Self::Number => f.write_str("number"),
                Self::Boolean => f.write_str("boolean"),
            }
        }
    }
    impl ::std::str::FromStr
    for CreateEdgeConnectorActionBodyActionMetadataParametersItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "string" => Ok(Self::String),
                "number" => Ok(Self::Number),
                "boolean" => Ok(Self::Boolean),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateEdgeConnectorActionBodyActionMetadataParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateEdgeConnectorActionBodyActionMetadataParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateEdgeConnectorActionBodyActionMetadataParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateEdgeConnectorBody`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "Connector description",
    ///              "type": "string"
    ///            },
    ///            "filters": {
    ///              "description": "Event filters. OR within dimension, AND across dimensions.",
    ///              "type": "object",
    ///              "properties": {
    ///                "environment_ids": {
    ///                  "description": "Filter by environment UUIDs",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "functionality_ids": {
    ///                  "description": "Filter by functionality UUIDs",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "group_ids": {
    ///                  "description": "Filter by group UUIDs",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "service_ids": {
    ///                  "description": "Filter by service UUIDs",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            "name": {
    ///              "description": "Connector name",
    ///              "type": "string"
    ///            },
    ///            "status": {
    ///              "description": "Connector status",
    ///              "type": "string",
    ///              "enum": [
    ///                "active",
    ///                "paused"
    ///              ]
    ///            },
    ///            "subscriptions": {
    ///              "description": "Array of event types to subscribe to",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "edge_connectors"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorBody {
        pub data: CreateEdgeConnectorBodyData,
    }
    impl CreateEdgeConnectorBody {
        pub fn builder() -> builder::CreateEdgeConnectorBody {
            Default::default()
        }
    }
    ///`CreateEdgeConnectorBodyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "Connector description",
    ///          "type": "string"
    ///        },
    ///        "filters": {
    ///          "description": "Event filters. OR within dimension, AND across dimensions.",
    ///          "type": "object",
    ///          "properties": {
    ///            "environment_ids": {
    ///              "description": "Filter by environment UUIDs",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "functionality_ids": {
    ///              "description": "Filter by functionality UUIDs",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "description": "Filter by group UUIDs",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "Filter by service UUIDs",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "name": {
    ///          "description": "Connector name",
    ///          "type": "string"
    ///        },
    ///        "status": {
    ///          "description": "Connector status",
    ///          "type": "string",
    ///          "enum": [
    ///            "active",
    ///            "paused"
    ///          ]
    ///        },
    ///        "subscriptions": {
    ///          "description": "Array of event types to subscribe to",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "edge_connectors"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorBodyData {
        pub attributes: CreateEdgeConnectorBodyDataAttributes,
        #[serde(rename = "type")]
        pub type_: CreateEdgeConnectorBodyDataType,
    }
    impl CreateEdgeConnectorBodyData {
        pub fn builder() -> builder::CreateEdgeConnectorBodyData {
            Default::default()
        }
    }
    ///`CreateEdgeConnectorBodyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "Connector description",
    ///      "type": "string"
    ///    },
    ///    "filters": {
    ///      "description": "Event filters. OR within dimension, AND across dimensions.",
    ///      "type": "object",
    ///      "properties": {
    ///        "environment_ids": {
    ///          "description": "Filter by environment UUIDs",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "functionality_ids": {
    ///          "description": "Filter by functionality UUIDs",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "description": "Filter by group UUIDs",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "Filter by service UUIDs",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "name": {
    ///      "description": "Connector name",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "Connector status",
    ///      "type": "string",
    ///      "enum": [
    ///        "active",
    ///        "paused"
    ///      ]
    ///    },
    ///    "subscriptions": {
    ///      "description": "Array of event types to subscribe to",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateEdgeConnectorBodyDataAttributes {
        ///Connector description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub filters: ::std::option::Option<CreateEdgeConnectorBodyDataAttributesFilters>,
        ///Connector name
        pub name: ::std::string::String,
        ///Connector status
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<CreateEdgeConnectorBodyDataAttributesStatus>,
        ///Array of event types to subscribe to
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub subscriptions: ::std::vec::Vec<::std::string::String>,
    }
    impl CreateEdgeConnectorBodyDataAttributes {
        pub fn builder() -> builder::CreateEdgeConnectorBodyDataAttributes {
            Default::default()
        }
    }
    ///Event filters. OR within dimension, AND across dimensions.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Event filters. OR within dimension, AND across dimensions.",
    ///  "type": "object",
    ///  "properties": {
    ///    "environment_ids": {
    ///      "description": "Filter by environment UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "description": "Filter by functionality UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "Filter by group UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "Filter by service UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct CreateEdgeConnectorBodyDataAttributesFilters {
        ///Filter by environment UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        ///Filter by functionality UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///Filter by group UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        ///Filter by service UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for CreateEdgeConnectorBodyDataAttributesFilters {
        fn default() -> Self {
            Self {
                environment_ids: Default::default(),
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                service_ids: Default::default(),
            }
        }
    }
    impl CreateEdgeConnectorBodyDataAttributesFilters {
        pub fn builder() -> builder::CreateEdgeConnectorBodyDataAttributesFilters {
            Default::default()
        }
    }
    ///Connector status
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Connector status",
    ///  "type": "string",
    ///  "enum": [
    ///    "active",
    ///    "paused"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateEdgeConnectorBodyDataAttributesStatus {
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "paused")]
        Paused,
    }
    impl ::std::fmt::Display for CreateEdgeConnectorBodyDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Active => f.write_str("active"),
                Self::Paused => f.write_str("paused"),
            }
        }
    }
    impl ::std::str::FromStr for CreateEdgeConnectorBodyDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "active" => Ok(Self::Active),
                "paused" => Ok(Self::Paused),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateEdgeConnectorBodyDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateEdgeConnectorBodyDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateEdgeConnectorBodyDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateEdgeConnectorBodyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "edge_connectors"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateEdgeConnectorBodyDataType {
        #[serde(rename = "edge_connectors")]
        EdgeConnectors,
    }
    impl ::std::fmt::Display for CreateEdgeConnectorBodyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EdgeConnectors => f.write_str("edge_connectors"),
            }
        }
    }
    impl ::std::str::FromStr for CreateEdgeConnectorBodyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "edge_connectors" => Ok(Self::EdgeConnectors),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateEdgeConnectorBodyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateEdgeConnectorBodyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateEdgeConnectorBodyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGithubIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "repository",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "The issue body",
    ///      "type": "string"
    ///    },
    ///    "issue_type": {
    ///      "description": "The issue type",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "parent_issue_number": {
    ///      "description": "The parent issue number for sub-issue linking",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "repository": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_github_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGithubIssueTaskParams {
        ///The issue body
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub body: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub issue_type: ::std::option::Option<CreateGithubIssueTaskParamsIssueType>,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<CreateGithubIssueTaskParamsLabelsItem>,
        ///The parent issue number for sub-issue linking
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_issue_number: ::std::option::Option<::std::string::String>,
        pub repository: CreateGithubIssueTaskParamsRepository,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateGithubIssueTaskParamsTaskType>,
        ///The issue title
        pub title: ::std::string::String,
    }
    impl CreateGithubIssueTaskParams {
        pub fn builder() -> builder::CreateGithubIssueTaskParams {
            Default::default()
        }
    }
    ///The issue type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The issue type",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGithubIssueTaskParamsIssueType {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGithubIssueTaskParamsIssueType {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGithubIssueTaskParamsIssueType {
        pub fn builder() -> builder::CreateGithubIssueTaskParamsIssueType {
            Default::default()
        }
    }
    ///`CreateGithubIssueTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGithubIssueTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGithubIssueTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGithubIssueTaskParamsLabelsItem {
        pub fn builder() -> builder::CreateGithubIssueTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///`CreateGithubIssueTaskParamsRepository`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGithubIssueTaskParamsRepository {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGithubIssueTaskParamsRepository {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGithubIssueTaskParamsRepository {
        pub fn builder() -> builder::CreateGithubIssueTaskParamsRepository {
            Default::default()
        }
    }
    ///`CreateGithubIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_github_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGithubIssueTaskParamsTaskType {
        #[serde(rename = "create_github_issue")]
        CreateGithubIssue,
    }
    impl ::std::fmt::Display for CreateGithubIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGithubIssue => f.write_str("create_github_issue"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGithubIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_github_issue" => Ok(Self::CreateGithubIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGithubIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGithubIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGithubIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGitlabIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "repository",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "issue_type": {
    ///      "description": "The issue type",
    ///      "type": "string",
    ///      "enum": [
    ///        "issue",
    ///        "incident",
    ///        "test_case",
    ///        "task"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "string"
    ///    },
    ///    "repository": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_gitlab_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGitlabIssueTaskParams {
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///The issue type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub issue_type: ::std::option::Option<CreateGitlabIssueTaskParamsIssueType>,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<::std::string::String>,
        pub repository: CreateGitlabIssueTaskParamsRepository,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateGitlabIssueTaskParamsTaskType>,
        ///The issue title
        pub title: ::std::string::String,
    }
    impl CreateGitlabIssueTaskParams {
        pub fn builder() -> builder::CreateGitlabIssueTaskParams {
            Default::default()
        }
    }
    ///The issue type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The issue type",
    ///  "type": "string",
    ///  "enum": [
    ///    "issue",
    ///    "incident",
    ///    "test_case",
    ///    "task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGitlabIssueTaskParamsIssueType {
        #[serde(rename = "issue")]
        Issue,
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "test_case")]
        TestCase,
        #[serde(rename = "task")]
        Task,
    }
    impl ::std::fmt::Display for CreateGitlabIssueTaskParamsIssueType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Issue => f.write_str("issue"),
                Self::Incident => f.write_str("incident"),
                Self::TestCase => f.write_str("test_case"),
                Self::Task => f.write_str("task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGitlabIssueTaskParamsIssueType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "issue" => Ok(Self::Issue),
                "incident" => Ok(Self::Incident),
                "test_case" => Ok(Self::TestCase),
                "task" => Ok(Self::Task),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGitlabIssueTaskParamsIssueType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGitlabIssueTaskParamsIssueType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGitlabIssueTaskParamsIssueType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGitlabIssueTaskParamsRepository`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGitlabIssueTaskParamsRepository {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGitlabIssueTaskParamsRepository {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGitlabIssueTaskParamsRepository {
        pub fn builder() -> builder::CreateGitlabIssueTaskParamsRepository {
            Default::default()
        }
    }
    ///`CreateGitlabIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_gitlab_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGitlabIssueTaskParamsTaskType {
        #[serde(rename = "create_gitlab_issue")]
        CreateGitlabIssue,
    }
    impl ::std::fmt::Display for CreateGitlabIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGitlabIssue => f.write_str("create_gitlab_issue"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGitlabIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_gitlab_issue" => Ok(Self::CreateGitlabIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGitlabIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGitlabIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGitlabIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoToMeetingTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "subject"
    ///  ],
    ///  "properties": {
    ///    "conference_call_info": {
    ///      "examples": [
    ///        "voip"
    ///      ],
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "ptsn",
    ///        "free",
    ///        "hyrid",
    ///        "voip"
    ///      ]
    ///    },
    ///    "password_required": {
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "subject": {
    ///      "description": "The meeting subject",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_go_to_meeting_task"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoToMeetingTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conference_call_info: ::std::option::Option<
            CreateGoToMeetingTaskParamsConferenceCallInfo,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub password_required: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateGoToMeetingTaskParamsPostToSlackChannelsItem,
        >,
        ///The meeting subject
        pub subject: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateGoToMeetingTaskParamsTaskType>,
    }
    impl CreateGoToMeetingTaskParams {
        pub fn builder() -> builder::CreateGoToMeetingTaskParams {
            Default::default()
        }
    }
    ///`CreateGoToMeetingTaskParamsConferenceCallInfo`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "examples": [
    ///    "voip"
    ///  ],
    ///  "type": "string",
    ///  "enum": [
    ///    "ptsn",
    ///    "free",
    ///    "hyrid",
    ///    "voip"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoToMeetingTaskParamsConferenceCallInfo {
        #[serde(rename = "ptsn")]
        Ptsn,
        #[serde(rename = "free")]
        Free,
        #[serde(rename = "hyrid")]
        Hyrid,
        #[serde(rename = "voip")]
        Voip,
    }
    impl ::std::fmt::Display for CreateGoToMeetingTaskParamsConferenceCallInfo {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Ptsn => f.write_str("ptsn"),
                Self::Free => f.write_str("free"),
                Self::Hyrid => f.write_str("hyrid"),
                Self::Voip => f.write_str("voip"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoToMeetingTaskParamsConferenceCallInfo {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ptsn" => Ok(Self::Ptsn),
                "free" => Ok(Self::Free),
                "hyrid" => Ok(Self::Hyrid),
                "voip" => Ok(Self::Voip),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateGoToMeetingTaskParamsConferenceCallInfo {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoToMeetingTaskParamsConferenceCallInfo {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoToMeetingTaskParamsConferenceCallInfo {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoToMeetingTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`CreateGoToMeetingTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_go_to_meeting_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoToMeetingTaskParamsTaskType {
        #[serde(rename = "create_go_to_meeting_task")]
        CreateGoToMeetingTask,
    }
    impl ::std::fmt::Display for CreateGoToMeetingTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoToMeetingTask => f.write_str("create_go_to_meeting_task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoToMeetingTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_go_to_meeting_task" => Ok(Self::CreateGoToMeetingTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGoToMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoToMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoToMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleCalendarEventTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "days_until_meeting",
    ///    "description",
    ///    "meeting_duration",
    ///    "summary",
    ///    "time_of_meeting"
    ///  ],
    ///  "properties": {
    ///    "attendees": {
    ///      "description": "Emails of attendees",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "calendar_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "can_guests_invite_others": {
    ///      "type": "boolean"
    ///    },
    ///    "can_guests_modify_event": {
    ///      "type": "boolean"
    ///    },
    ///    "can_guests_see_other_guests": {
    ///      "type": "boolean"
    ///    },
    ///    "conference_solution_key": {
    ///      "description": "Sets the video conference type attached to the meeting",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "eventHangout",
    ///        "eventNamedHangout",
    ///        "hangoutsMeet",
    ///        "addOn"
    ///      ]
    ///    },
    ///    "days_until_meeting": {
    ///      "description": "The days until meeting",
    ///      "type": "integer",
    ///      "maximum": 31.0,
    ///      "minimum": 0.0
    ///    },
    ///    "description": {
    ///      "description": "The event description",
    ///      "type": "string"
    ///    },
    ///    "exclude_weekends": {
    ///      "type": "boolean"
    ///    },
    ///    "meeting_duration": {
    ///      "description": "Meeting duration in format like '1 hour', '30 minutes'",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "send_updates": {
    ///      "description": "Send an email to the attendees notifying them of the event",
    ///      "type": "boolean"
    ///    },
    ///    "summary": {
    ///      "description": "The event summary",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_calendar_event"
    ///      ]
    ///    },
    ///    "time_of_meeting": {
    ///      "description": "Time of meeting in format HH:MM",
    ///      "examples": [
    ///        "14:30"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleCalendarEventTaskParams {
        ///Emails of attendees
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub attendees: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calendar_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub can_guests_invite_others: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub can_guests_modify_event: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub can_guests_see_other_guests: ::std::option::Option<bool>,
        ///Sets the video conference type attached to the meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conference_solution_key: ::std::option::Option<
            CreateGoogleCalendarEventTaskParamsConferenceSolutionKey,
        >,
        ///The days until meeting
        pub days_until_meeting: i64,
        ///The event description
        pub description: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub exclude_weekends: ::std::option::Option<bool>,
        ///Meeting duration in format like '1 hour', '30 minutes'
        pub meeting_duration: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
        >,
        ///Send an email to the attendees notifying them of the event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub send_updates: ::std::option::Option<bool>,
        ///The event summary
        pub summary: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateGoogleCalendarEventTaskParamsTaskType,
        >,
        ///Time of meeting in format HH:MM
        pub time_of_meeting: ::std::string::String,
        ///A valid IANA time zone name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
    }
    impl CreateGoogleCalendarEventTaskParams {
        pub fn builder() -> builder::CreateGoogleCalendarEventTaskParams {
            Default::default()
        }
    }
    ///Sets the video conference type attached to the meeting
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Sets the video conference type attached to the meeting",
    ///  "type": "string",
    ///  "enum": [
    ///    "eventHangout",
    ///    "eventNamedHangout",
    ///    "hangoutsMeet",
    ///    "addOn"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        #[serde(rename = "eventHangout")]
        EventHangout,
        #[serde(rename = "eventNamedHangout")]
        EventNamedHangout,
        #[serde(rename = "hangoutsMeet")]
        HangoutsMeet,
        #[serde(rename = "addOn")]
        AddOn,
    }
    impl ::std::fmt::Display
    for CreateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EventHangout => f.write_str("eventHangout"),
                Self::EventNamedHangout => f.write_str("eventNamedHangout"),
                Self::HangoutsMeet => f.write_str("hangoutsMeet"),
                Self::AddOn => f.write_str("addOn"),
            }
        }
    }
    impl ::std::str::FromStr
    for CreateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "eventHangout" => Ok(Self::EventHangout),
                "eventNamedHangout" => Ok(Self::EventNamedHangout),
                "hangoutsMeet" => Ok(Self::HangoutsMeet),
                "addOn" => Ok(Self::AddOn),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`CreateGoogleCalendarEventTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_calendar_event"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleCalendarEventTaskParamsTaskType {
        #[serde(rename = "create_google_calendar_event")]
        CreateGoogleCalendarEvent,
    }
    impl ::std::fmt::Display for CreateGoogleCalendarEventTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleCalendarEvent => {
                    f.write_str("create_google_calendar_event")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleCalendarEventTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_calendar_event" => Ok(Self::CreateGoogleCalendarEvent),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGoogleCalendarEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleCalendarEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleCalendarEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleChatSpaceTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "audience": {
    ///      "description": "Target audience resource name (e.g. audiences/default). Leave blank for private space.",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_chat_space"
    ///      ]
    ///    },
    ///    "title": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleChatSpaceTaskParams {
        ///Target audience resource name (e.g. audiences/default). Leave blank for private space.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub audience: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateGoogleChatSpaceTaskParamsTaskType>,
        pub title: ::std::string::String,
    }
    impl CreateGoogleChatSpaceTaskParams {
        pub fn builder() -> builder::CreateGoogleChatSpaceTaskParams {
            Default::default()
        }
    }
    ///`CreateGoogleChatSpaceTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_chat_space"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleChatSpaceTaskParamsTaskType {
        #[serde(rename = "create_google_chat_space")]
        CreateGoogleChatSpace,
    }
    impl ::std::fmt::Display for CreateGoogleChatSpaceTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleChatSpace => f.write_str("create_google_chat_space"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleChatSpaceTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_chat_space" => Ok(Self::CreateGoogleChatSpace),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleDocsPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The page content",
    ///      "type": "string"
    ///    },
    ///    "drive": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "parent_folder": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "permissions": {
    ///      "description": "Page permissions JSON",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_docs_page"
    ///      ]
    ///    },
    ///    "template_id": {
    ///      "description": "The Google Doc file ID to use as a template",
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "The page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleDocsPageTaskParams {
        ///The page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub drive: ::std::option::Option<CreateGoogleDocsPageTaskParamsDrive>,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_folder: ::std::option::Option<
            CreateGoogleDocsPageTaskParamsParentFolder,
        >,
        ///Page permissions JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub permissions: ::std::option::Option<::std::string::String>,
        ///Retrospective template to use when creating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateGoogleDocsPageTaskParamsTaskType>,
        ///The Google Doc file ID to use as a template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_id: ::std::option::Option<::std::string::String>,
        ///The page title
        pub title: ::std::string::String,
    }
    impl CreateGoogleDocsPageTaskParams {
        pub fn builder() -> builder::CreateGoogleDocsPageTaskParams {
            Default::default()
        }
    }
    ///`CreateGoogleDocsPageTaskParamsDrive`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleDocsPageTaskParamsDrive {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGoogleDocsPageTaskParamsDrive {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGoogleDocsPageTaskParamsDrive {
        pub fn builder() -> builder::CreateGoogleDocsPageTaskParamsDrive {
            Default::default()
        }
    }
    ///`CreateGoogleDocsPageTaskParamsParentFolder`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleDocsPageTaskParamsParentFolder {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGoogleDocsPageTaskParamsParentFolder {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGoogleDocsPageTaskParamsParentFolder {
        pub fn builder() -> builder::CreateGoogleDocsPageTaskParamsParentFolder {
            Default::default()
        }
    }
    ///`CreateGoogleDocsPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_docs_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleDocsPageTaskParamsTaskType {
        #[serde(rename = "create_google_docs_page")]
        CreateGoogleDocsPage,
    }
    impl ::std::fmt::Display for CreateGoogleDocsPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleDocsPage => f.write_str("create_google_docs_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleDocsPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_docs_page" => Ok(Self::CreateGoogleDocsPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGoogleDocsPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleDocsPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleDocsPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleDocsPermissionsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id",
    ///    "permissions"
    ///  ],
    ///  "properties": {
    ///    "email_message": {
    ///      "description": "Email message notification",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "file_id": {
    ///      "description": "The Google Doc file ID",
    ///      "type": "string"
    ///    },
    ///    "permissions": {
    ///      "description": "Page permissions JSON",
    ///      "type": "string"
    ///    },
    ///    "send_notification_email": {
    ///      "type": "boolean"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_docs_permissions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleDocsPermissionsTaskParams {
        ///Email message notification
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_message: ::std::option::Option<::std::string::String>,
        ///The Google Doc file ID
        pub file_id: ::std::string::String,
        ///Page permissions JSON
        pub permissions: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub send_notification_email: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateGoogleDocsPermissionsTaskParamsTaskType,
        >,
    }
    impl CreateGoogleDocsPermissionsTaskParams {
        pub fn builder() -> builder::CreateGoogleDocsPermissionsTaskParams {
            Default::default()
        }
    }
    ///`CreateGoogleDocsPermissionsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_docs_permissions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleDocsPermissionsTaskParamsTaskType {
        #[serde(rename = "create_google_docs_permissions")]
        CreateGoogleDocsPermissions,
    }
    impl ::std::fmt::Display for CreateGoogleDocsPermissionsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleDocsPermissions => {
                    f.write_str("create_google_docs_permissions")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleDocsPermissionsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_docs_permissions" => Ok(Self::CreateGoogleDocsPermissions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateGoogleDocsPermissionsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleDocsPermissionsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleDocsPermissionsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleGeminiChatCompletionTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "model",
    ///    "prompt"
    ///  ],
    ///  "properties": {
    ///    "model": {
    ///      "description": "The Gemini model. eg: gemini-2.0-flash",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "prompt": {
    ///      "description": "The prompt to send to Gemini",
    ///      "type": "string"
    ///    },
    ///    "system_prompt": {
    ///      "description": "The system prompt to send to Gemini (optional)",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_gemini_chat_completion_task"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleGeminiChatCompletionTaskParams {
        pub model: CreateGoogleGeminiChatCompletionTaskParamsModel,
        ///The prompt to send to Gemini
        pub prompt: ::std::string::String,
        ///The system prompt to send to Gemini (optional)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub system_prompt: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateGoogleGeminiChatCompletionTaskParamsTaskType,
        >,
    }
    impl CreateGoogleGeminiChatCompletionTaskParams {
        pub fn builder() -> builder::CreateGoogleGeminiChatCompletionTaskParams {
            Default::default()
        }
    }
    ///The Gemini model. eg: gemini-2.0-flash
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The Gemini model. eg: gemini-2.0-flash",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleGeminiChatCompletionTaskParamsModel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateGoogleGeminiChatCompletionTaskParamsModel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGoogleGeminiChatCompletionTaskParamsModel {
        pub fn builder() -> builder::CreateGoogleGeminiChatCompletionTaskParamsModel {
            Default::default()
        }
    }
    ///`CreateGoogleGeminiChatCompletionTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_gemini_chat_completion_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleGeminiChatCompletionTaskParamsTaskType {
        #[serde(rename = "create_google_gemini_chat_completion_task")]
        CreateGoogleGeminiChatCompletionTask,
    }
    impl ::std::fmt::Display for CreateGoogleGeminiChatCompletionTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleGeminiChatCompletionTask => {
                    f.write_str("create_google_gemini_chat_completion_task")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleGeminiChatCompletionTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_gemini_chat_completion_task" => {
                    Ok(Self::CreateGoogleGeminiChatCompletionTask)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateGoogleGeminiChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleGeminiChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleGeminiChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleMeetingTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "description",
    ///    "summary"
    ///  ],
    ///  "properties": {
    ///    "conference_solution_key": {
    ///      "description": "[DEPRECATED] Sets the video conference type attached to the meeting",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "eventHangout",
    ///        "eventNamedHangout",
    ///        "hangoutsMeet",
    ///        "addOn"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "[DEPRECATED] The meeting description",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "record_meeting": {
    ///      "description": "Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting",
    ///      "type": "boolean"
    ///    },
    ///    "recording_mode": {
    ///      "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "speaker_view",
    ///        "gallery_view",
    ///        "gallery_view_v2",
    ///        "audio_only"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "[DEPRECATED] The meeting summary",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_meeting"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleMeetingTaskParams {
        ///[DEPRECATED] Sets the video conference type attached to the meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conference_solution_key: ::std::option::Option<
            CreateGoogleMeetingTaskParamsConferenceSolutionKey,
        >,
        ///[DEPRECATED] The meeting description
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
        >,
        ///Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub record_meeting: ::std::option::Option<bool>,
        ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub recording_mode: ::std::option::Option<
            CreateGoogleMeetingTaskParamsRecordingMode,
        >,
        ///[DEPRECATED] The meeting summary
        pub summary: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateGoogleMeetingTaskParamsTaskType>,
    }
    impl CreateGoogleMeetingTaskParams {
        pub fn builder() -> builder::CreateGoogleMeetingTaskParams {
            Default::default()
        }
    }
    ///[DEPRECATED] Sets the video conference type attached to the meeting
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Sets the video conference type attached to the meeting",
    ///  "type": "string",
    ///  "enum": [
    ///    "eventHangout",
    ///    "eventNamedHangout",
    ///    "hangoutsMeet",
    ///    "addOn"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleMeetingTaskParamsConferenceSolutionKey {
        #[serde(rename = "eventHangout")]
        EventHangout,
        #[serde(rename = "eventNamedHangout")]
        EventNamedHangout,
        #[serde(rename = "hangoutsMeet")]
        HangoutsMeet,
        #[serde(rename = "addOn")]
        AddOn,
    }
    impl ::std::fmt::Display for CreateGoogleMeetingTaskParamsConferenceSolutionKey {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EventHangout => f.write_str("eventHangout"),
                Self::EventNamedHangout => f.write_str("eventNamedHangout"),
                Self::HangoutsMeet => f.write_str("hangoutsMeet"),
                Self::AddOn => f.write_str("addOn"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleMeetingTaskParamsConferenceSolutionKey {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "eventHangout" => Ok(Self::EventHangout),
                "eventNamedHangout" => Ok(Self::EventNamedHangout),
                "hangoutsMeet" => Ok(Self::HangoutsMeet),
                "addOn" => Ok(Self::AddOn),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateGoogleMeetingTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleMeetingTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleMeetingTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleMeetingTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///  "type": "string",
    ///  "enum": [
    ///    "speaker_view",
    ///    "gallery_view",
    ///    "gallery_view_v2",
    ///    "audio_only"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleMeetingTaskParamsRecordingMode {
        #[serde(rename = "speaker_view")]
        SpeakerView,
        #[serde(rename = "gallery_view")]
        GalleryView,
        #[serde(rename = "gallery_view_v2")]
        GalleryViewV2,
        #[serde(rename = "audio_only")]
        AudioOnly,
    }
    impl ::std::fmt::Display for CreateGoogleMeetingTaskParamsRecordingMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SpeakerView => f.write_str("speaker_view"),
                Self::GalleryView => f.write_str("gallery_view"),
                Self::GalleryViewV2 => f.write_str("gallery_view_v2"),
                Self::AudioOnly => f.write_str("audio_only"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleMeetingTaskParamsRecordingMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "speaker_view" => Ok(Self::SpeakerView),
                "gallery_view" => Ok(Self::GalleryView),
                "gallery_view_v2" => Ok(Self::GalleryViewV2),
                "audio_only" => Ok(Self::AudioOnly),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGoogleMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateGoogleMeetingTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_meeting"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateGoogleMeetingTaskParamsTaskType {
        #[serde(rename = "create_google_meeting")]
        CreateGoogleMeeting,
    }
    impl ::std::fmt::Display for CreateGoogleMeetingTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleMeeting => f.write_str("create_google_meeting"),
            }
        }
    }
    impl ::std::str::FromStr for CreateGoogleMeetingTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_meeting" => Ok(Self::CreateGoogleMeeting),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateGoogleMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateGoogleMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateGoogleMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateIncidentPostmortemTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_id",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "incident_id": {
    ///      "description": "UUID of the incident that needs a retrospective",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_incident_postmortem"
    ///      ]
    ///    },
    ///    "template": {
    ///      "description": "Retrospective template to use",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The retrospective title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateIncidentPostmortemTaskParams {
        ///UUID of the incident that needs a retrospective
        pub incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateIncidentPostmortemTaskParamsTaskType>,
        ///Retrospective template to use
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<CreateIncidentPostmortemTaskParamsTemplate>,
        ///The retrospective title
        pub title: ::std::string::String,
    }
    impl CreateIncidentPostmortemTaskParams {
        pub fn builder() -> builder::CreateIncidentPostmortemTaskParams {
            Default::default()
        }
    }
    ///`CreateIncidentPostmortemTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_incident_postmortem"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateIncidentPostmortemTaskParamsTaskType {
        #[serde(rename = "create_incident_postmortem")]
        CreateIncidentPostmortem,
    }
    impl ::std::fmt::Display for CreateIncidentPostmortemTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateIncidentPostmortem => {
                    f.write_str("create_incident_postmortem")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateIncidentPostmortemTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_incident_postmortem" => Ok(Self::CreateIncidentPostmortem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateIncidentPostmortemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateIncidentPostmortemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateIncidentPostmortemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Retrospective template to use
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Retrospective template to use",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateIncidentPostmortemTaskParamsTemplate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateIncidentPostmortemTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateIncidentPostmortemTaskParamsTemplate {
        pub fn builder() -> builder::CreateIncidentPostmortemTaskParamsTemplate {
            Default::default()
        }
    }
    ///`CreateIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON. Use 'services', 'functionalities', or 'groups' keys with arrays of names/slugs for name/slug lookup",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "description": "Array of functionality UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "Array of group/team UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "service_ids": {
    ///      "description": "Array of service UUIDs",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_id": {
    ///      "type": "string"
    ///    },
    ///    "summary": {
    ///      "description": "The incident summary",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_incident"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateIncidentTaskParams {
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON. Use 'services', 'functionalities', or 'groups' keys with arrays of names/slugs for name/slug lookup
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        ///Array of functionality UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///Array of group/team UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_type_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        ///Array of service UUIDs
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_id: ::std::option::Option<::std::string::String>,
        ///The incident summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateIncidentTaskParamsTaskType>,
        ///The incident title
        pub title: ::std::string::String,
    }
    impl CreateIncidentTaskParams {
        pub fn builder() -> builder::CreateIncidentTaskParams {
            Default::default()
        }
    }
    ///`CreateIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateIncidentTaskParamsTaskType {
        #[serde(rename = "create_incident")]
        CreateIncident,
    }
    impl ::std::fmt::Display for CreateIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateIncident => f.write_str("create_incident"),
            }
        }
    }
    impl ::std::str::FromStr for CreateIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_incident" => Ok(Self::CreateIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateJiraIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "issue_type",
    ///    "project_key",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "integration": {
    ///      "description": "Specify integration id if you have more than one Jira instance",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "issue_type": {
    ///      "description": "The issue type id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project_key": {
    ///      "description": "The project key",
    ///      "type": "string"
    ///    },
    ///    "reporter_user_email": {
    ///      "description": "The reporter user's email",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_jira_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    },
    ///    "update_payload": {
    ///      "description": "Update payload. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraIssueTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub integration: ::std::option::Option<CreateJiraIssueTaskParamsIntegration>,
        pub issue_type: CreateJiraIssueTaskParamsIssueType,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateJiraIssueTaskParamsPriority>,
        ///The project key
        pub project_key: ::std::string::String,
        ///The reporter user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub reporter_user_email: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<CreateJiraIssueTaskParamsStatus>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateJiraIssueTaskParamsTaskType>,
        ///The issue title
        pub title: ::std::string::String,
        ///Update payload. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_payload: ::std::option::Option<::std::string::String>,
    }
    impl CreateJiraIssueTaskParams {
        pub fn builder() -> builder::CreateJiraIssueTaskParams {
            Default::default()
        }
    }
    ///Specify integration id if you have more than one Jira instance
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Specify integration id if you have more than one Jira instance",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraIssueTaskParamsIntegration {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraIssueTaskParamsIntegration {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraIssueTaskParamsIntegration {
        pub fn builder() -> builder::CreateJiraIssueTaskParamsIntegration {
            Default::default()
        }
    }
    ///The issue type id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The issue type id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraIssueTaskParamsIssueType {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraIssueTaskParamsIssueType {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraIssueTaskParamsIssueType {
        pub fn builder() -> builder::CreateJiraIssueTaskParamsIssueType {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraIssueTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraIssueTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraIssueTaskParamsPriority {
        pub fn builder() -> builder::CreateJiraIssueTaskParamsPriority {
            Default::default()
        }
    }
    ///The status id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraIssueTaskParamsStatus {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraIssueTaskParamsStatus {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraIssueTaskParamsStatus {
        pub fn builder() -> builder::CreateJiraIssueTaskParamsStatus {
            Default::default()
        }
    }
    ///`CreateJiraIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_jira_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateJiraIssueTaskParamsTaskType {
        #[serde(rename = "create_jira_issue")]
        CreateJiraIssue,
    }
    impl ::std::fmt::Display for CreateJiraIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateJiraIssue => f.write_str("create_jira_issue"),
            }
        }
    }
    impl ::std::str::FromStr for CreateJiraIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_jira_issue" => Ok(Self::CreateJiraIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateJiraIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateJiraIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateJiraIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateJiraSubtaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "parent_issue_id",
    ///    "project_key",
    ///    "subtask_issue_type",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "integration": {
    ///      "description": "Specify integration id if you have more than one Jira instance",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "string"
    ///    },
    ///    "parent_issue_id": {
    ///      "description": "The parent issue",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project_key": {
    ///      "description": "The project key",
    ///      "type": "string"
    ///    },
    ///    "reporter_user_email": {
    ///      "description": "The reporter user's email",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "subtask_issue_type": {
    ///      "description": "The issue type id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_jira_subtask"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    },
    ///    "update_payload": {
    ///      "description": "Update payload. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraSubtaskTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub integration: ::std::option::Option<CreateJiraSubtaskTaskParamsIntegration>,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<::std::string::String>,
        ///The parent issue
        pub parent_issue_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateJiraSubtaskTaskParamsPriority>,
        ///The project key
        pub project_key: ::std::string::String,
        ///The reporter user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub reporter_user_email: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<CreateJiraSubtaskTaskParamsStatus>,
        pub subtask_issue_type: CreateJiraSubtaskTaskParamsSubtaskIssueType,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateJiraSubtaskTaskParamsTaskType>,
        ///The issue title
        pub title: ::std::string::String,
        ///Update payload. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_payload: ::std::option::Option<::std::string::String>,
    }
    impl CreateJiraSubtaskTaskParams {
        pub fn builder() -> builder::CreateJiraSubtaskTaskParams {
            Default::default()
        }
    }
    ///Specify integration id if you have more than one Jira instance
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Specify integration id if you have more than one Jira instance",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraSubtaskTaskParamsIntegration {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraSubtaskTaskParamsIntegration {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraSubtaskTaskParamsIntegration {
        pub fn builder() -> builder::CreateJiraSubtaskTaskParamsIntegration {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraSubtaskTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraSubtaskTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraSubtaskTaskParamsPriority {
        pub fn builder() -> builder::CreateJiraSubtaskTaskParamsPriority {
            Default::default()
        }
    }
    ///The status id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraSubtaskTaskParamsStatus {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraSubtaskTaskParamsStatus {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraSubtaskTaskParamsStatus {
        pub fn builder() -> builder::CreateJiraSubtaskTaskParamsStatus {
            Default::default()
        }
    }
    ///The issue type id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The issue type id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJiraSubtaskTaskParamsSubtaskIssueType {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJiraSubtaskTaskParamsSubtaskIssueType {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJiraSubtaskTaskParamsSubtaskIssueType {
        pub fn builder() -> builder::CreateJiraSubtaskTaskParamsSubtaskIssueType {
            Default::default()
        }
    }
    ///`CreateJiraSubtaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_jira_subtask"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateJiraSubtaskTaskParamsTaskType {
        #[serde(rename = "create_jira_subtask")]
        CreateJiraSubtask,
    }
    impl ::std::fmt::Display for CreateJiraSubtaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateJiraSubtask => f.write_str("create_jira_subtask"),
            }
        }
    }
    impl ::std::str::FromStr for CreateJiraSubtaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_jira_subtask" => Ok(Self::CreateJiraSubtask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateJiraSubtaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateJiraSubtaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateJiraSubtaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateJsmopsAlertTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "message"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description field of the alert that is generally used to provide a detailed information about the alert",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "details": {
    ///      "description": "Details payload. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "escalations": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "message": {
    ///      "description": "Message of the alert",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "default": "P3",
    ///      "type": "string",
    ///      "enum": [
    ///        "P3",
    ///        "P1",
    ///        "P2",
    ///        "P4",
    ///        "P5",
    ///        "auto"
    ///      ]
    ///    },
    ///    "schedules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_jsmops_alert"
    ///      ]
    ///    },
    ///    "teams": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJsmopsAlertTaskParams {
        ///Description field of the alert that is generally used to provide a detailed information about the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Details payload. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub details: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub escalations: ::std::vec::Vec<CreateJsmopsAlertTaskParamsEscalationsItem>,
        ///Message of the alert
        pub message: ::std::string::String,
        #[serde(default = "defaults::create_jsmops_alert_task_params_priority")]
        pub priority: CreateJsmopsAlertTaskParamsPriority,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedules: ::std::vec::Vec<CreateJsmopsAlertTaskParamsSchedulesItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateJsmopsAlertTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub teams: ::std::vec::Vec<CreateJsmopsAlertTaskParamsTeamsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<CreateJsmopsAlertTaskParamsUsersItem>,
    }
    impl CreateJsmopsAlertTaskParams {
        pub fn builder() -> builder::CreateJsmopsAlertTaskParams {
            Default::default()
        }
    }
    ///`CreateJsmopsAlertTaskParamsEscalationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJsmopsAlertTaskParamsEscalationsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJsmopsAlertTaskParamsEscalationsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJsmopsAlertTaskParamsEscalationsItem {
        pub fn builder() -> builder::CreateJsmopsAlertTaskParamsEscalationsItem {
            Default::default()
        }
    }
    ///`CreateJsmopsAlertTaskParamsPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "P3",
    ///  "type": "string",
    ///  "enum": [
    ///    "P3",
    ///    "P1",
    ///    "P2",
    ///    "P4",
    ///    "P5",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateJsmopsAlertTaskParamsPriority {
        P3,
        P1,
        P2,
        P4,
        P5,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for CreateJsmopsAlertTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::P3 => f.write_str("P3"),
                Self::P1 => f.write_str("P1"),
                Self::P2 => f.write_str("P2"),
                Self::P4 => f.write_str("P4"),
                Self::P5 => f.write_str("P5"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for CreateJsmopsAlertTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "P3" => Ok(Self::P3),
                "P1" => Ok(Self::P1),
                "P2" => Ok(Self::P2),
                "P4" => Ok(Self::P4),
                "P5" => Ok(Self::P5),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateJsmopsAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateJsmopsAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateJsmopsAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateJsmopsAlertTaskParamsPriority {
        fn default() -> Self {
            CreateJsmopsAlertTaskParamsPriority::P3
        }
    }
    ///`CreateJsmopsAlertTaskParamsSchedulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJsmopsAlertTaskParamsSchedulesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJsmopsAlertTaskParamsSchedulesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJsmopsAlertTaskParamsSchedulesItem {
        pub fn builder() -> builder::CreateJsmopsAlertTaskParamsSchedulesItem {
            Default::default()
        }
    }
    ///`CreateJsmopsAlertTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_jsmops_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateJsmopsAlertTaskParamsTaskType {
        #[serde(rename = "create_jsmops_alert")]
        CreateJsmopsAlert,
    }
    impl ::std::fmt::Display for CreateJsmopsAlertTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateJsmopsAlert => f.write_str("create_jsmops_alert"),
            }
        }
    }
    impl ::std::str::FromStr for CreateJsmopsAlertTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_jsmops_alert" => Ok(Self::CreateJsmopsAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateJsmopsAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateJsmopsAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateJsmopsAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateJsmopsAlertTaskParamsTeamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJsmopsAlertTaskParamsTeamsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJsmopsAlertTaskParamsTeamsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJsmopsAlertTaskParamsTeamsItem {
        pub fn builder() -> builder::CreateJsmopsAlertTaskParamsTeamsItem {
            Default::default()
        }
    }
    ///`CreateJsmopsAlertTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateJsmopsAlertTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateJsmopsAlertTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateJsmopsAlertTaskParamsUsersItem {
        pub fn builder() -> builder::CreateJsmopsAlertTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`CreateLinearIssueCommentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "body",
    ///    "issue_id"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "issue_id": {
    ///      "description": "The issue id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_linear_issue_comment"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueCommentTaskParams {
        ///The issue description
        pub body: ::std::string::String,
        ///The issue id
        pub issue_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateLinearIssueCommentTaskParamsTaskType>,
    }
    impl CreateLinearIssueCommentTaskParams {
        pub fn builder() -> builder::CreateLinearIssueCommentTaskParams {
            Default::default()
        }
    }
    ///`CreateLinearIssueCommentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_linear_issue_comment"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateLinearIssueCommentTaskParamsTaskType {
        #[serde(rename = "create_linear_issue_comment")]
        CreateLinearIssueComment,
    }
    impl ::std::fmt::Display for CreateLinearIssueCommentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateLinearIssueComment => {
                    f.write_str("create_linear_issue_comment")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateLinearIssueCommentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_linear_issue_comment" => Ok(Self::CreateLinearIssueComment),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateLinearIssueCommentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateLinearIssueCommentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateLinearIssueCommentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateLinearIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "state",
    ///    "team",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project": {
    ///      "description": "The project id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "state": {
    ///      "description": "The state id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_linear_issue"
    ///      ]
    ///    },
    ///    "team": {
    ///      "description": "The team id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<CreateLinearIssueTaskParamsLabelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateLinearIssueTaskParamsPriority>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub project: ::std::option::Option<CreateLinearIssueTaskParamsProject>,
        pub state: CreateLinearIssueTaskParamsState,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateLinearIssueTaskParamsTaskType>,
        pub team: CreateLinearIssueTaskParamsTeam,
        ///The issue title
        pub title: ::std::string::String,
    }
    impl CreateLinearIssueTaskParams {
        pub fn builder() -> builder::CreateLinearIssueTaskParams {
            Default::default()
        }
    }
    ///`CreateLinearIssueTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearIssueTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearIssueTaskParamsLabelsItem {
        pub fn builder() -> builder::CreateLinearIssueTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearIssueTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearIssueTaskParamsPriority {
        pub fn builder() -> builder::CreateLinearIssueTaskParamsPriority {
            Default::default()
        }
    }
    ///The project id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The project id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueTaskParamsProject {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearIssueTaskParamsProject {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearIssueTaskParamsProject {
        pub fn builder() -> builder::CreateLinearIssueTaskParamsProject {
            Default::default()
        }
    }
    ///The state id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The state id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueTaskParamsState {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearIssueTaskParamsState {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearIssueTaskParamsState {
        pub fn builder() -> builder::CreateLinearIssueTaskParamsState {
            Default::default()
        }
    }
    ///`CreateLinearIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_linear_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateLinearIssueTaskParamsTaskType {
        #[serde(rename = "create_linear_issue")]
        CreateLinearIssue,
    }
    impl ::std::fmt::Display for CreateLinearIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateLinearIssue => f.write_str("create_linear_issue"),
            }
        }
    }
    impl ::std::str::FromStr for CreateLinearIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_linear_issue" => Ok(Self::CreateLinearIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateLinearIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateLinearIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateLinearIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The team id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The team id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearIssueTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearIssueTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearIssueTaskParamsTeam {
        pub fn builder() -> builder::CreateLinearIssueTaskParamsTeam {
            Default::default()
        }
    }
    ///`CreateLinearSubtaskIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "parent_issue_id",
    ///    "state",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "parent_issue_id": {
    ///      "description": "The parent issue",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "state": {
    ///      "description": "The state id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_linear_subtask_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearSubtaskIssueTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<CreateLinearSubtaskIssueTaskParamsLabelsItem>,
        ///The parent issue
        pub parent_issue_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateLinearSubtaskIssueTaskParamsPriority>,
        pub state: CreateLinearSubtaskIssueTaskParamsState,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateLinearSubtaskIssueTaskParamsTaskType>,
        ///The issue title
        pub title: ::std::string::String,
    }
    impl CreateLinearSubtaskIssueTaskParams {
        pub fn builder() -> builder::CreateLinearSubtaskIssueTaskParams {
            Default::default()
        }
    }
    ///`CreateLinearSubtaskIssueTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearSubtaskIssueTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearSubtaskIssueTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearSubtaskIssueTaskParamsLabelsItem {
        pub fn builder() -> builder::CreateLinearSubtaskIssueTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearSubtaskIssueTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearSubtaskIssueTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearSubtaskIssueTaskParamsPriority {
        pub fn builder() -> builder::CreateLinearSubtaskIssueTaskParamsPriority {
            Default::default()
        }
    }
    ///The state id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The state id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateLinearSubtaskIssueTaskParamsState {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateLinearSubtaskIssueTaskParamsState {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateLinearSubtaskIssueTaskParamsState {
        pub fn builder() -> builder::CreateLinearSubtaskIssueTaskParamsState {
            Default::default()
        }
    }
    ///`CreateLinearSubtaskIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_linear_subtask_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateLinearSubtaskIssueTaskParamsTaskType {
        #[serde(rename = "create_linear_subtask_issue")]
        CreateLinearSubtaskIssue,
    }
    impl ::std::fmt::Display for CreateLinearSubtaskIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateLinearSubtaskIssue => {
                    f.write_str("create_linear_subtask_issue")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateLinearSubtaskIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_linear_subtask_issue" => Ok(Self::CreateLinearSubtaskIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateLinearSubtaskIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateLinearSubtaskIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateLinearSubtaskIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMeetingRecordingPlatform`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "zoom",
    ///    "google_meet",
    ///    "microsoft_teams",
    ///    "webex"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMeetingRecordingPlatform {
        #[serde(rename = "zoom")]
        Zoom,
        #[serde(rename = "google_meet")]
        GoogleMeet,
        #[serde(rename = "microsoft_teams")]
        MicrosoftTeams,
        #[serde(rename = "webex")]
        Webex,
    }
    impl ::std::fmt::Display for CreateMeetingRecordingPlatform {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Zoom => f.write_str("zoom"),
                Self::GoogleMeet => f.write_str("google_meet"),
                Self::MicrosoftTeams => f.write_str("microsoft_teams"),
                Self::Webex => f.write_str("webex"),
            }
        }
    }
    impl ::std::str::FromStr for CreateMeetingRecordingPlatform {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "zoom" => Ok(Self::Zoom),
                "google_meet" => Ok(Self::GoogleMeet),
                "microsoft_teams" => Ok(Self::MicrosoftTeams),
                "webex" => Ok(Self::Webex),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateMeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMicrosoftTeamsChannelTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "team",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "Microsoft Team channel description",
    ///      "type": "string"
    ///    },
    ///    "private": {
    ///      "default": "auto",
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "true",
    ///        "false"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_microsoft_teams_channel"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "Microsoft Team channel title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMicrosoftTeamsChannelTaskParams {
        ///Microsoft Team channel description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::create_microsoft_teams_channel_task_params_private"
        )]
        pub private: CreateMicrosoftTeamsChannelTaskParamsPrivate,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateMicrosoftTeamsChannelTaskParamsTaskType,
        >,
        pub team: CreateMicrosoftTeamsChannelTaskParamsTeam,
        ///Microsoft Team channel title
        pub title: ::std::string::String,
    }
    impl CreateMicrosoftTeamsChannelTaskParams {
        pub fn builder() -> builder::CreateMicrosoftTeamsChannelTaskParams {
            Default::default()
        }
    }
    ///`CreateMicrosoftTeamsChannelTaskParamsPrivate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "auto",
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "true",
    ///    "false"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMicrosoftTeamsChannelTaskParamsPrivate {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "true")]
        True,
        #[serde(rename = "false")]
        False,
    }
    impl ::std::fmt::Display for CreateMicrosoftTeamsChannelTaskParamsPrivate {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::True => f.write_str("true"),
                Self::False => f.write_str("false"),
            }
        }
    }
    impl ::std::str::FromStr for CreateMicrosoftTeamsChannelTaskParamsPrivate {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "true" => Ok(Self::True),
                "false" => Ok(Self::False),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateMicrosoftTeamsChannelTaskParamsPrivate {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMicrosoftTeamsChannelTaskParamsPrivate {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMicrosoftTeamsChannelTaskParamsPrivate {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateMicrosoftTeamsChannelTaskParamsPrivate {
        fn default() -> Self {
            CreateMicrosoftTeamsChannelTaskParamsPrivate::Auto
        }
    }
    ///`CreateMicrosoftTeamsChannelTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_microsoft_teams_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMicrosoftTeamsChannelTaskParamsTaskType {
        #[serde(rename = "create_microsoft_teams_channel")]
        CreateMicrosoftTeamsChannel,
    }
    impl ::std::fmt::Display for CreateMicrosoftTeamsChannelTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateMicrosoftTeamsChannel => {
                    f.write_str("create_microsoft_teams_channel")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateMicrosoftTeamsChannelTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_microsoft_teams_channel" => Ok(Self::CreateMicrosoftTeamsChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMicrosoftTeamsChannelTaskParamsTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMicrosoftTeamsChannelTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMicrosoftTeamsChannelTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMicrosoftTeamsChannelTaskParamsTeam {
        pub fn builder() -> builder::CreateMicrosoftTeamsChannelTaskParamsTeam {
            Default::default()
        }
    }
    ///`CreateMicrosoftTeamsChatTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "members"
    ///  ],
    ///  "properties": {
    ///    "chat_type": {
    ///      "description": "Type of chat to create",
    ///      "default": "group",
    ///      "type": "string",
    ///      "enum": [
    ///        "group",
    ///        "oneOnOne"
    ///      ]
    ///    },
    ///    "members": {
    ///      "description": "Array of members to include in the chat",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "email": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_microsoft_teams_chat"
    ///      ]
    ///    },
    ///    "topic": {
    ///      "description": "Chat topic (only for group chats)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMicrosoftTeamsChatTaskParams {
        ///Type of chat to create
        #[serde(default = "defaults::create_microsoft_teams_chat_task_params_chat_type")]
        pub chat_type: CreateMicrosoftTeamsChatTaskParamsChatType,
        ///Array of members to include in the chat
        pub members: ::std::vec::Vec<CreateMicrosoftTeamsChatTaskParamsMembersItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateMicrosoftTeamsChatTaskParamsTaskType>,
        ///Chat topic (only for group chats)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub topic: ::std::option::Option<::std::string::String>,
    }
    impl CreateMicrosoftTeamsChatTaskParams {
        pub fn builder() -> builder::CreateMicrosoftTeamsChatTaskParams {
            Default::default()
        }
    }
    ///Type of chat to create
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of chat to create",
    ///  "default": "group",
    ///  "type": "string",
    ///  "enum": [
    ///    "group",
    ///    "oneOnOne"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMicrosoftTeamsChatTaskParamsChatType {
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "oneOnOne")]
        OneOnOne,
    }
    impl ::std::fmt::Display for CreateMicrosoftTeamsChatTaskParamsChatType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Group => f.write_str("group"),
                Self::OneOnOne => f.write_str("oneOnOne"),
            }
        }
    }
    impl ::std::str::FromStr for CreateMicrosoftTeamsChatTaskParamsChatType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "group" => Ok(Self::Group),
                "oneOnOne" => Ok(Self::OneOnOne),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateMicrosoftTeamsChatTaskParamsChatType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMicrosoftTeamsChatTaskParamsChatType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMicrosoftTeamsChatTaskParamsChatType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateMicrosoftTeamsChatTaskParamsChatType {
        fn default() -> Self {
            CreateMicrosoftTeamsChatTaskParamsChatType::Group
        }
    }
    ///`CreateMicrosoftTeamsChatTaskParamsMembersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "email": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMicrosoftTeamsChatTaskParamsMembersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMicrosoftTeamsChatTaskParamsMembersItem {
        fn default() -> Self {
            Self {
                email: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMicrosoftTeamsChatTaskParamsMembersItem {
        pub fn builder() -> builder::CreateMicrosoftTeamsChatTaskParamsMembersItem {
            Default::default()
        }
    }
    ///`CreateMicrosoftTeamsChatTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_microsoft_teams_chat"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMicrosoftTeamsChatTaskParamsTaskType {
        #[serde(rename = "create_microsoft_teams_chat")]
        CreateMicrosoftTeamsChat,
    }
    impl ::std::fmt::Display for CreateMicrosoftTeamsChatTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateMicrosoftTeamsChat => {
                    f.write_str("create_microsoft_teams_chat")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateMicrosoftTeamsChatTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_microsoft_teams_chat" => Ok(Self::CreateMicrosoftTeamsChat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateMicrosoftTeamsChatTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMicrosoftTeamsChatTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMicrosoftTeamsChatTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMicrosoftTeamsMeetingTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "subject"
    ///  ],
    ///  "properties": {
    ///    "name": {
    ///      "description": "The meeting name",
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "record_meeting": {
    ///      "description": "Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting",
    ///      "type": "boolean"
    ///    },
    ///    "recording_mode": {
    ///      "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "speaker_view",
    ///        "gallery_view",
    ///        "gallery_view_v2",
    ///        "audio_only"
    ///      ]
    ///    },
    ///    "subject": {
    ///      "description": "The meeting subject",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_microsoft_teams_meeting"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMicrosoftTeamsMeetingTaskParams {
        ///The meeting name
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
        >,
        ///Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub record_meeting: ::std::option::Option<bool>,
        ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub recording_mode: ::std::option::Option<
            CreateMicrosoftTeamsMeetingTaskParamsRecordingMode,
        >,
        ///The meeting subject
        pub subject: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateMicrosoftTeamsMeetingTaskParamsTaskType,
        >,
    }
    impl CreateMicrosoftTeamsMeetingTaskParams {
        pub fn builder() -> builder::CreateMicrosoftTeamsMeetingTaskParams {
            Default::default()
        }
    }
    ///`CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///  "type": "string",
    ///  "enum": [
    ///    "speaker_view",
    ///    "gallery_view",
    ///    "gallery_view_v2",
    ///    "audio_only"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMicrosoftTeamsMeetingTaskParamsRecordingMode {
        #[serde(rename = "speaker_view")]
        SpeakerView,
        #[serde(rename = "gallery_view")]
        GalleryView,
        #[serde(rename = "gallery_view_v2")]
        GalleryViewV2,
        #[serde(rename = "audio_only")]
        AudioOnly,
    }
    impl ::std::fmt::Display for CreateMicrosoftTeamsMeetingTaskParamsRecordingMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SpeakerView => f.write_str("speaker_view"),
                Self::GalleryView => f.write_str("gallery_view"),
                Self::GalleryViewV2 => f.write_str("gallery_view_v2"),
                Self::AudioOnly => f.write_str("audio_only"),
            }
        }
    }
    impl ::std::str::FromStr for CreateMicrosoftTeamsMeetingTaskParamsRecordingMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "speaker_view" => Ok(Self::SpeakerView),
                "gallery_view" => Ok(Self::GalleryView),
                "gallery_view_v2" => Ok(Self::GalleryViewV2),
                "audio_only" => Ok(Self::AudioOnly),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateMicrosoftTeamsMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMicrosoftTeamsMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMicrosoftTeamsMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMicrosoftTeamsMeetingTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_microsoft_teams_meeting"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMicrosoftTeamsMeetingTaskParamsTaskType {
        #[serde(rename = "create_microsoft_teams_meeting")]
        CreateMicrosoftTeamsMeeting,
    }
    impl ::std::fmt::Display for CreateMicrosoftTeamsMeetingTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateMicrosoftTeamsMeeting => {
                    f.write_str("create_microsoft_teams_meeting")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateMicrosoftTeamsMeetingTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_microsoft_teams_meeting" => Ok(Self::CreateMicrosoftTeamsMeeting),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateMicrosoftTeamsMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMicrosoftTeamsMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMicrosoftTeamsMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMistralChatCompletionTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "model",
    ///    "prompt"
    ///  ],
    ///  "properties": {
    ///    "max_tokens": {
    ///      "description": "Maximum number of tokens to generate",
    ///      "type": "integer",
    ///      "minimum": 1.0
    ///    },
    ///    "model": {
    ///      "description": "The Mistral model. eg: mistral-large-latest",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "prompt": {
    ///      "description": "The prompt to send to Mistral",
    ///      "type": "string"
    ///    },
    ///    "system_prompt": {
    ///      "description": "The system prompt to send to Mistral (optional)",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_mistral_chat_completion_task"
    ///      ]
    ///    },
    ///    "temperature": {
    ///      "description": "Sampling temperature (0.0-1.5). Higher values make output more random.",
    ///      "type": "number",
    ///      "maximum": 1.5,
    ///      "minimum": 0.0
    ///    },
    ///    "top_p": {
    ///      "description": "Nucleus sampling parameter (0.0-1.0)",
    ///      "type": "number",
    ///      "maximum": 1.0,
    ///      "minimum": 0.0
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMistralChatCompletionTaskParams {
        ///Maximum number of tokens to generate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub max_tokens: ::std::option::Option<::std::num::NonZeroU64>,
        pub model: CreateMistralChatCompletionTaskParamsModel,
        ///The prompt to send to Mistral
        pub prompt: ::std::string::String,
        ///The system prompt to send to Mistral (optional)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub system_prompt: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateMistralChatCompletionTaskParamsTaskType,
        >,
        ///Sampling temperature (0.0-1.5). Higher values make output more random.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub temperature: ::std::option::Option<f64>,
        ///Nucleus sampling parameter (0.0-1.0)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub top_p: ::std::option::Option<f64>,
    }
    impl CreateMistralChatCompletionTaskParams {
        pub fn builder() -> builder::CreateMistralChatCompletionTaskParams {
            Default::default()
        }
    }
    ///The Mistral model. eg: mistral-large-latest
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The Mistral model. eg: mistral-large-latest",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMistralChatCompletionTaskParamsModel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMistralChatCompletionTaskParamsModel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMistralChatCompletionTaskParamsModel {
        pub fn builder() -> builder::CreateMistralChatCompletionTaskParamsModel {
            Default::default()
        }
    }
    ///`CreateMistralChatCompletionTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_mistral_chat_completion_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMistralChatCompletionTaskParamsTaskType {
        #[serde(rename = "create_mistral_chat_completion_task")]
        CreateMistralChatCompletionTask,
    }
    impl ::std::fmt::Display for CreateMistralChatCompletionTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateMistralChatCompletionTask => {
                    f.write_str("create_mistral_chat_completion_task")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateMistralChatCompletionTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_mistral_chat_completion_task" => {
                    Ok(Self::CreateMistralChatCompletionTask)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateMistralChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMistralChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMistralChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMotionTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title",
    ///    "workspace"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The task description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "duration": {
    ///      "description": "The duration. Eg.  \"NONE\", \"REMINDER\", or a integer greater than 0.",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "status": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_motion_task"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The task title",
    ///      "type": "string"
    ///    },
    ///    "workspace": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMotionTaskTaskParams {
        ///The task description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///The duration. Eg.  "NONE", "REMINDER", or a integer greater than 0.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateMotionTaskTaskParamsPriority>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub project: ::std::option::Option<CreateMotionTaskTaskParamsProject>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<CreateMotionTaskTaskParamsStatus>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateMotionTaskTaskParamsTaskType>,
        ///The task title
        pub title: ::std::string::String,
        pub workspace: CreateMotionTaskTaskParamsWorkspace,
    }
    impl CreateMotionTaskTaskParams {
        pub fn builder() -> builder::CreateMotionTaskTaskParams {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMotionTaskTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMotionTaskTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMotionTaskTaskParamsPriority {
        pub fn builder() -> builder::CreateMotionTaskTaskParamsPriority {
            Default::default()
        }
    }
    ///`CreateMotionTaskTaskParamsProject`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMotionTaskTaskParamsProject {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMotionTaskTaskParamsProject {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMotionTaskTaskParamsProject {
        pub fn builder() -> builder::CreateMotionTaskTaskParamsProject {
            Default::default()
        }
    }
    ///`CreateMotionTaskTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMotionTaskTaskParamsStatus {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMotionTaskTaskParamsStatus {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMotionTaskTaskParamsStatus {
        pub fn builder() -> builder::CreateMotionTaskTaskParamsStatus {
            Default::default()
        }
    }
    ///`CreateMotionTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_motion_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateMotionTaskTaskParamsTaskType {
        #[serde(rename = "create_motion_task")]
        CreateMotionTask,
    }
    impl ::std::fmt::Display for CreateMotionTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateMotionTask => f.write_str("create_motion_task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateMotionTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_motion_task" => Ok(Self::CreateMotionTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateMotionTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateMotionTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateMotionTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateMotionTaskTaskParamsWorkspace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateMotionTaskTaskParamsWorkspace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateMotionTaskTaskParamsWorkspace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateMotionTaskTaskParamsWorkspace {
        pub fn builder() -> builder::CreateMotionTaskTaskParamsWorkspace {
            Default::default()
        }
    }
    ///`CreateNotionPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "parent_page",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "Custom page content with liquid templating support. When provided, only this content will be rendered (no default sections)",
    ///      "type": "string"
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "parent_page": {
    ///      "description": "The parent page id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page task, if desired",
    ///      "type": "string"
    ///    },
    ///    "show_action_items_as_table": {
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_as_table": {
    ///      "type": "boolean"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_notion_page"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The Notion page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateNotionPageTaskParams {
        ///Custom page content with liquid templating support. When provided, only this content will be rendered (no default sections)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        pub parent_page: CreateNotionPageTaskParamsParentPage,
        ///Retrospective template to use when creating page task, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_action_items_as_table: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_as_table: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateNotionPageTaskParamsTaskType>,
        ///The Notion page title
        pub title: ::std::string::String,
    }
    impl CreateNotionPageTaskParams {
        pub fn builder() -> builder::CreateNotionPageTaskParams {
            Default::default()
        }
    }
    ///The parent page id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The parent page id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateNotionPageTaskParamsParentPage {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateNotionPageTaskParamsParentPage {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateNotionPageTaskParamsParentPage {
        pub fn builder() -> builder::CreateNotionPageTaskParamsParentPage {
            Default::default()
        }
    }
    ///`CreateNotionPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_notion_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateNotionPageTaskParamsTaskType {
        #[serde(rename = "create_notion_page")]
        CreateNotionPage,
    }
    impl ::std::fmt::Display for CreateNotionPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateNotionPage => f.write_str("create_notion_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateNotionPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_notion_page" => Ok(Self::CreateNotionPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateNotionPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateNotionPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateNotionPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateOpenaiChatCompletionTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "model",
    ///    "prompt"
    ///  ],
    ///  "properties": {
    ///    "max_tokens": {
    ///      "description": "Maximum number of tokens to generate in the response",
    ///      "type": "integer",
    ///      "minimum": 1.0
    ///    },
    ///    "model": {
    ///      "description": "The OpenAI model. eg: gpt-5-nano",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "prompt": {
    ///      "description": "The prompt to send to OpenAI",
    ///      "type": "string"
    ///    },
    ///    "reasoning_effort": {
    ///      "description": "Constrains effort on reasoning for GPT-5 and o-series models",
    ///      "type": "string",
    ///      "enum": [
    ///        "minimal",
    ///        "low",
    ///        "medium",
    ///        "high"
    ///      ]
    ///    },
    ///    "reasoning_summary": {
    ///      "description": "Summary of the reasoning performed by the model for GPT-5 and o-series models",
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "concise",
    ///        "detailed"
    ///      ]
    ///    },
    ///    "system_prompt": {
    ///      "description": "The system prompt to send to OpenAI (optional)",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "openai_chat_completion"
    ///      ]
    ///    },
    ///    "temperature": {
    ///      "description": "Controls randomness in the response. Higher values make output more random",
    ///      "type": "number",
    ///      "maximum": 2.0,
    ///      "minimum": 0.0
    ///    },
    ///    "top_p": {
    ///      "description": "Controls diversity via nucleus sampling. Lower values make output more focused",
    ///      "type": "number",
    ///      "maximum": 1.0,
    ///      "minimum": 0.0
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpenaiChatCompletionTaskParams {
        ///Maximum number of tokens to generate in the response
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub max_tokens: ::std::option::Option<::std::num::NonZeroU64>,
        pub model: CreateOpenaiChatCompletionTaskParamsModel,
        ///The prompt to send to OpenAI
        pub prompt: ::std::string::String,
        ///Constrains effort on reasoning for GPT-5 and o-series models
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub reasoning_effort: ::std::option::Option<
            CreateOpenaiChatCompletionTaskParamsReasoningEffort,
        >,
        ///Summary of the reasoning performed by the model for GPT-5 and o-series models
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub reasoning_summary: ::std::option::Option<
            CreateOpenaiChatCompletionTaskParamsReasoningSummary,
        >,
        ///The system prompt to send to OpenAI (optional)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub system_prompt: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateOpenaiChatCompletionTaskParamsTaskType,
        >,
        ///Controls randomness in the response. Higher values make output more random
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub temperature: ::std::option::Option<f64>,
        ///Controls diversity via nucleus sampling. Lower values make output more focused
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub top_p: ::std::option::Option<f64>,
    }
    impl CreateOpenaiChatCompletionTaskParams {
        pub fn builder() -> builder::CreateOpenaiChatCompletionTaskParams {
            Default::default()
        }
    }
    ///The OpenAI model. eg: gpt-5-nano
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The OpenAI model. eg: gpt-5-nano",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpenaiChatCompletionTaskParamsModel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateOpenaiChatCompletionTaskParamsModel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOpenaiChatCompletionTaskParamsModel {
        pub fn builder() -> builder::CreateOpenaiChatCompletionTaskParamsModel {
            Default::default()
        }
    }
    ///Constrains effort on reasoning for GPT-5 and o-series models
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Constrains effort on reasoning for GPT-5 and o-series models",
    ///  "type": "string",
    ///  "enum": [
    ///    "minimal",
    ///    "low",
    ///    "medium",
    ///    "high"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateOpenaiChatCompletionTaskParamsReasoningEffort {
        #[serde(rename = "minimal")]
        Minimal,
        #[serde(rename = "low")]
        Low,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "high")]
        High,
    }
    impl ::std::fmt::Display for CreateOpenaiChatCompletionTaskParamsReasoningEffort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Minimal => f.write_str("minimal"),
                Self::Low => f.write_str("low"),
                Self::Medium => f.write_str("medium"),
                Self::High => f.write_str("high"),
            }
        }
    }
    impl ::std::str::FromStr for CreateOpenaiChatCompletionTaskParamsReasoningEffort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "minimal" => Ok(Self::Minimal),
                "low" => Ok(Self::Low),
                "medium" => Ok(Self::Medium),
                "high" => Ok(Self::High),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateOpenaiChatCompletionTaskParamsReasoningEffort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateOpenaiChatCompletionTaskParamsReasoningEffort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateOpenaiChatCompletionTaskParamsReasoningEffort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Summary of the reasoning performed by the model for GPT-5 and o-series models
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Summary of the reasoning performed by the model for GPT-5 and o-series models",
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "concise",
    ///    "detailed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateOpenaiChatCompletionTaskParamsReasoningSummary {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "concise")]
        Concise,
        #[serde(rename = "detailed")]
        Detailed,
    }
    impl ::std::fmt::Display for CreateOpenaiChatCompletionTaskParamsReasoningSummary {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::Concise => f.write_str("concise"),
                Self::Detailed => f.write_str("detailed"),
            }
        }
    }
    impl ::std::str::FromStr for CreateOpenaiChatCompletionTaskParamsReasoningSummary {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "concise" => Ok(Self::Concise),
                "detailed" => Ok(Self::Detailed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateOpenaiChatCompletionTaskParamsReasoningSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateOpenaiChatCompletionTaskParamsReasoningSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateOpenaiChatCompletionTaskParamsReasoningSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateOpenaiChatCompletionTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "openai_chat_completion"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateOpenaiChatCompletionTaskParamsTaskType {
        #[serde(rename = "openai_chat_completion")]
        OpenaiChatCompletion,
    }
    impl ::std::fmt::Display for CreateOpenaiChatCompletionTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OpenaiChatCompletion => f.write_str("openai_chat_completion"),
            }
        }
    }
    impl ::std::str::FromStr for CreateOpenaiChatCompletionTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "openai_chat_completion" => Ok(Self::OpenaiChatCompletion),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateOpenaiChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateOpenaiChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateOpenaiChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateOpsgenieAlertTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "message"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description field of the alert that is generally used to provide a detailed information about the alert",
    ///      "type": "string"
    ///    },
    ///    "details": {
    ///      "description": "Details payload. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "escalations": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "message": {
    ///      "description": "Message of the alert",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "default": "P1",
    ///      "type": "string",
    ///      "enum": [
    ///        "P1",
    ///        "P2",
    ///        "P3",
    ///        "P4",
    ///        "P5",
    ///        "auto"
    ///      ]
    ///    },
    ///    "schedules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_opsgenie_alert"
    ///      ]
    ///    },
    ///    "teams": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpsgenieAlertTaskParams {
        ///Description field of the alert that is generally used to provide a detailed information about the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Details payload. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub details: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub escalations: ::std::vec::Vec<CreateOpsgenieAlertTaskParamsEscalationsItem>,
        ///Message of the alert
        pub message: ::std::string::String,
        #[serde(default = "defaults::create_opsgenie_alert_task_params_priority")]
        pub priority: CreateOpsgenieAlertTaskParamsPriority,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedules: ::std::vec::Vec<CreateOpsgenieAlertTaskParamsSchedulesItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateOpsgenieAlertTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub teams: ::std::vec::Vec<CreateOpsgenieAlertTaskParamsTeamsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<CreateOpsgenieAlertTaskParamsUsersItem>,
    }
    impl CreateOpsgenieAlertTaskParams {
        pub fn builder() -> builder::CreateOpsgenieAlertTaskParams {
            Default::default()
        }
    }
    ///`CreateOpsgenieAlertTaskParamsEscalationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpsgenieAlertTaskParamsEscalationsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateOpsgenieAlertTaskParamsEscalationsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOpsgenieAlertTaskParamsEscalationsItem {
        pub fn builder() -> builder::CreateOpsgenieAlertTaskParamsEscalationsItem {
            Default::default()
        }
    }
    ///`CreateOpsgenieAlertTaskParamsPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "P1",
    ///  "type": "string",
    ///  "enum": [
    ///    "P1",
    ///    "P2",
    ///    "P3",
    ///    "P4",
    ///    "P5",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateOpsgenieAlertTaskParamsPriority {
        P1,
        P2,
        P3,
        P4,
        P5,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for CreateOpsgenieAlertTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::P1 => f.write_str("P1"),
                Self::P2 => f.write_str("P2"),
                Self::P3 => f.write_str("P3"),
                Self::P4 => f.write_str("P4"),
                Self::P5 => f.write_str("P5"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for CreateOpsgenieAlertTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "P1" => Ok(Self::P1),
                "P2" => Ok(Self::P2),
                "P3" => Ok(Self::P3),
                "P4" => Ok(Self::P4),
                "P5" => Ok(Self::P5),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateOpsgenieAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateOpsgenieAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateOpsgenieAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateOpsgenieAlertTaskParamsPriority {
        fn default() -> Self {
            CreateOpsgenieAlertTaskParamsPriority::P1
        }
    }
    ///`CreateOpsgenieAlertTaskParamsSchedulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpsgenieAlertTaskParamsSchedulesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateOpsgenieAlertTaskParamsSchedulesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOpsgenieAlertTaskParamsSchedulesItem {
        pub fn builder() -> builder::CreateOpsgenieAlertTaskParamsSchedulesItem {
            Default::default()
        }
    }
    ///`CreateOpsgenieAlertTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_opsgenie_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateOpsgenieAlertTaskParamsTaskType {
        #[serde(rename = "create_opsgenie_alert")]
        CreateOpsgenieAlert,
    }
    impl ::std::fmt::Display for CreateOpsgenieAlertTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateOpsgenieAlert => f.write_str("create_opsgenie_alert"),
            }
        }
    }
    impl ::std::str::FromStr for CreateOpsgenieAlertTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_opsgenie_alert" => Ok(Self::CreateOpsgenieAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateOpsgenieAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateOpsgenieAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateOpsgenieAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateOpsgenieAlertTaskParamsTeamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpsgenieAlertTaskParamsTeamsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateOpsgenieAlertTaskParamsTeamsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOpsgenieAlertTaskParamsTeamsItem {
        pub fn builder() -> builder::CreateOpsgenieAlertTaskParamsTeamsItem {
            Default::default()
        }
    }
    ///`CreateOpsgenieAlertTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOpsgenieAlertTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateOpsgenieAlertTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOpsgenieAlertTaskParamsUsersItem {
        pub fn builder() -> builder::CreateOpsgenieAlertTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`CreateOutlookEventTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "calendar",
    ///    "days_until_meeting",
    ///    "description",
    ///    "meeting_duration",
    ///    "summary",
    ///    "time_of_meeting"
    ///  ],
    ///  "properties": {
    ///    "attendees": {
    ///      "description": "Emails of attendees",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "calendar": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "days_until_meeting": {
    ///      "description": "The days until meeting",
    ///      "type": "integer",
    ///      "maximum": 31.0,
    ///      "minimum": 0.0
    ///    },
    ///    "description": {
    ///      "description": "The event description",
    ///      "type": "string"
    ///    },
    ///    "enable_online_meeting": {
    ///      "description": "Enable Microsoft Teams online meeting",
    ///      "type": "boolean"
    ///    },
    ///    "exclude_weekends": {
    ///      "type": "boolean"
    ///    },
    ///    "meeting_duration": {
    ///      "description": "Meeting duration in format like '1 hour', '30 minutes'",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "summary": {
    ///      "description": "The event summary",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_outlook_event"
    ///      ]
    ///    },
    ///    "time_of_meeting": {
    ///      "description": "Time of meeting in format HH:MM",
    ///      "examples": [
    ///        "14:30"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOutlookEventTaskParams {
        ///Emails of attendees
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub attendees: ::std::vec::Vec<::std::string::String>,
        pub calendar: CreateOutlookEventTaskParamsCalendar,
        ///The days until meeting
        pub days_until_meeting: i64,
        ///The event description
        pub description: ::std::string::String,
        ///Enable Microsoft Teams online meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enable_online_meeting: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub exclude_weekends: ::std::option::Option<bool>,
        ///Meeting duration in format like '1 hour', '30 minutes'
        pub meeting_duration: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateOutlookEventTaskParamsPostToSlackChannelsItem,
        >,
        ///The event summary
        pub summary: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateOutlookEventTaskParamsTaskType>,
        ///Time of meeting in format HH:MM
        pub time_of_meeting: ::std::string::String,
        ///A valid IANA time zone name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
    }
    impl CreateOutlookEventTaskParams {
        pub fn builder() -> builder::CreateOutlookEventTaskParams {
            Default::default()
        }
    }
    ///`CreateOutlookEventTaskParamsCalendar`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOutlookEventTaskParamsCalendar {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateOutlookEventTaskParamsCalendar {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOutlookEventTaskParamsCalendar {
        pub fn builder() -> builder::CreateOutlookEventTaskParamsCalendar {
            Default::default()
        }
    }
    ///`CreateOutlookEventTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateOutlookEventTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CreateOutlookEventTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateOutlookEventTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateOutlookEventTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`CreateOutlookEventTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_outlook_event"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateOutlookEventTaskParamsTaskType {
        #[serde(rename = "create_outlook_event")]
        CreateOutlookEvent,
    }
    impl ::std::fmt::Display for CreateOutlookEventTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateOutlookEvent => f.write_str("create_outlook_event"),
            }
        }
    }
    impl ::std::str::FromStr for CreateOutlookEventTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_outlook_event" => Ok(Self::CreateOutlookEvent),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateOutlookEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateOutlookEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateOutlookEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreatePagerdutyStatusUpdateTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "message",
    ///    "pagerduty_incident_id"
    ///  ],
    ///  "properties": {
    ///    "message": {
    ///      "description": "A message outlining the incident's resolution in PagerDuty",
    ///      "type": "string"
    ///    },
    ///    "pagerduty_incident_id": {
    ///      "description": "PagerDuty incident id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_pagerduty_status_update"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreatePagerdutyStatusUpdateTaskParams {
        ///A message outlining the incident's resolution in PagerDuty
        pub message: ::std::string::String,
        ///PagerDuty incident id
        pub pagerduty_incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreatePagerdutyStatusUpdateTaskParamsTaskType,
        >,
    }
    impl CreatePagerdutyStatusUpdateTaskParams {
        pub fn builder() -> builder::CreatePagerdutyStatusUpdateTaskParams {
            Default::default()
        }
    }
    ///`CreatePagerdutyStatusUpdateTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_pagerduty_status_update"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreatePagerdutyStatusUpdateTaskParamsTaskType {
        #[serde(rename = "create_pagerduty_status_update")]
        CreatePagerdutyStatusUpdate,
    }
    impl ::std::fmt::Display for CreatePagerdutyStatusUpdateTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatePagerdutyStatusUpdate => {
                    f.write_str("create_pagerduty_status_update")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreatePagerdutyStatusUpdateTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_pagerduty_status_update" => Ok(Self::CreatePagerdutyStatusUpdate),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreatePagerdutyStatusUpdateTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreatePagerdutyStatusUpdateTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreatePagerdutyStatusUpdateTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreatePagertreeAlertTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description of alert as text",
    ///      "type": "string"
    ///    },
    ///    "incident": {
    ///      "description": "Setting to true makes an alert a Pagertree incident",
    ///      "type": "boolean"
    ///    },
    ///    "severity": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "SEV-1",
    ///        "SEV-2",
    ///        "SEV-3",
    ///        "SEV-4"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_pagertree_alert"
    ///      ]
    ///    },
    ///    "teams": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "Title of alert as text",
    ///      "type": "string"
    ///    },
    ///    "urgency": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "critical",
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreatePagertreeAlertTaskParams {
        ///Description of alert as text
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Setting to true makes an alert a Pagertree incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity: ::std::option::Option<CreatePagertreeAlertTaskParamsSeverity>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreatePagertreeAlertTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub teams: ::std::vec::Vec<CreatePagertreeAlertTaskParamsTeamsItem>,
        ///Title of alert as text
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub urgency: ::std::option::Option<CreatePagertreeAlertTaskParamsUrgency>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<CreatePagertreeAlertTaskParamsUsersItem>,
    }
    impl ::std::default::Default for CreatePagertreeAlertTaskParams {
        fn default() -> Self {
            Self {
                description: Default::default(),
                incident: Default::default(),
                severity: Default::default(),
                task_type: Default::default(),
                teams: Default::default(),
                title: Default::default(),
                urgency: Default::default(),
                users: Default::default(),
            }
        }
    }
    impl CreatePagertreeAlertTaskParams {
        pub fn builder() -> builder::CreatePagertreeAlertTaskParams {
            Default::default()
        }
    }
    ///`CreatePagertreeAlertTaskParamsSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "SEV-1",
    ///    "SEV-2",
    ///    "SEV-3",
    ///    "SEV-4"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreatePagertreeAlertTaskParamsSeverity {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "SEV-1")]
        Sev1,
        #[serde(rename = "SEV-2")]
        Sev2,
        #[serde(rename = "SEV-3")]
        Sev3,
        #[serde(rename = "SEV-4")]
        Sev4,
    }
    impl ::std::fmt::Display for CreatePagertreeAlertTaskParamsSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::Sev1 => f.write_str("SEV-1"),
                Self::Sev2 => f.write_str("SEV-2"),
                Self::Sev3 => f.write_str("SEV-3"),
                Self::Sev4 => f.write_str("SEV-4"),
            }
        }
    }
    impl ::std::str::FromStr for CreatePagertreeAlertTaskParamsSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "SEV-1" => Ok(Self::Sev1),
                "SEV-2" => Ok(Self::Sev2),
                "SEV-3" => Ok(Self::Sev3),
                "SEV-4" => Ok(Self::Sev4),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreatePagertreeAlertTaskParamsSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreatePagertreeAlertTaskParamsSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreatePagertreeAlertTaskParamsSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreatePagertreeAlertTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_pagertree_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreatePagertreeAlertTaskParamsTaskType {
        #[serde(rename = "create_pagertree_alert")]
        CreatePagertreeAlert,
    }
    impl ::std::fmt::Display for CreatePagertreeAlertTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatePagertreeAlert => f.write_str("create_pagertree_alert"),
            }
        }
    }
    impl ::std::str::FromStr for CreatePagertreeAlertTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_pagertree_alert" => Ok(Self::CreatePagertreeAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreatePagertreeAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreatePagertreeAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreatePagertreeAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreatePagertreeAlertTaskParamsTeamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreatePagertreeAlertTaskParamsTeamsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreatePagertreeAlertTaskParamsTeamsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreatePagertreeAlertTaskParamsTeamsItem {
        pub fn builder() -> builder::CreatePagertreeAlertTaskParamsTeamsItem {
            Default::default()
        }
    }
    ///`CreatePagertreeAlertTaskParamsUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "critical",
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreatePagertreeAlertTaskParamsUrgency {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "critical")]
        Critical,
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for CreatePagertreeAlertTaskParamsUrgency {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::Critical => f.write_str("critical"),
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for CreatePagertreeAlertTaskParamsUrgency {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "critical" => Ok(Self::Critical),
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreatePagertreeAlertTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreatePagertreeAlertTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreatePagertreeAlertTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreatePagertreeAlertTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreatePagertreeAlertTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreatePagertreeAlertTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreatePagertreeAlertTaskParamsUsersItem {
        pub fn builder() -> builder::CreatePagertreeAlertTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`CreateQuipPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The page content",
    ///      "type": "string"
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "parent_folder_id": {
    ///      "description": "The parent folder id",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_docs_page"
    ///      ]
    ///    },
    ///    "template_id": {
    ///      "description": "The Quip file ID to use as a template",
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "The page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateQuipPageTaskParams {
        ///The page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        ///The parent folder id
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_folder_id: ::std::option::Option<::std::string::String>,
        ///Retrospective template to use when creating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateQuipPageTaskParamsTaskType>,
        ///The Quip file ID to use as a template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_id: ::std::option::Option<::std::string::String>,
        ///The page title
        pub title: ::std::string::String,
    }
    impl CreateQuipPageTaskParams {
        pub fn builder() -> builder::CreateQuipPageTaskParams {
            Default::default()
        }
    }
    ///`CreateQuipPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_docs_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateQuipPageTaskParamsTaskType {
        #[serde(rename = "create_google_docs_page")]
        CreateGoogleDocsPage,
    }
    impl ::std::fmt::Display for CreateQuipPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleDocsPage => f.write_str("create_google_docs_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateQuipPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_docs_page" => Ok(Self::CreateGoogleDocsPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateQuipPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateQuipPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateQuipPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateServiceNowIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "completion": {
    ///      "description": "The completion id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The incident description",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_service_now_incident"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateServiceNowIncidentTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion: ::std::option::Option<
            CreateServiceNowIncidentTaskParamsCompletion,
        >,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The incident description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateServiceNowIncidentTaskParamsPriority>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateServiceNowIncidentTaskParamsTaskType>,
        ///The incident title
        pub title: ::std::string::String,
    }
    impl CreateServiceNowIncidentTaskParams {
        pub fn builder() -> builder::CreateServiceNowIncidentTaskParams {
            Default::default()
        }
    }
    ///The completion id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The completion id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateServiceNowIncidentTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateServiceNowIncidentTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateServiceNowIncidentTaskParamsCompletion {
        pub fn builder() -> builder::CreateServiceNowIncidentTaskParamsCompletion {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateServiceNowIncidentTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateServiceNowIncidentTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateServiceNowIncidentTaskParamsPriority {
        pub fn builder() -> builder::CreateServiceNowIncidentTaskParamsPriority {
            Default::default()
        }
    }
    ///`CreateServiceNowIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_service_now_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateServiceNowIncidentTaskParamsTaskType {
        #[serde(rename = "create_service_now_incident")]
        CreateServiceNowIncident,
    }
    impl ::std::fmt::Display for CreateServiceNowIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateServiceNowIncident => {
                    f.write_str("create_service_now_incident")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateServiceNowIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_service_now_incident" => Ok(Self::CreateServiceNowIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateServiceNowIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateServiceNowIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateServiceNowIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateSharepointPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "drive",
    ///    "site",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The page content",
    ///      "type": "string"
    ///    },
    ///    "drive": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "mark_post_mortem_as_published": {
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "parent_folder": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "site": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_sharepoint_page"
    ///      ]
    ///    },
    ///    "template_id": {
    ///      "description": "The SharePoint file ID to use as a template",
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "The page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSharepointPageTaskParams {
        ///The page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        pub drive: CreateSharepointPageTaskParamsDrive,
        #[serde(default = "defaults::default_bool::<true>")]
        pub mark_post_mortem_as_published: bool,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_folder: ::std::option::Option<
            CreateSharepointPageTaskParamsParentFolder,
        >,
        ///Retrospective template to use when creating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        pub site: CreateSharepointPageTaskParamsSite,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateSharepointPageTaskParamsTaskType>,
        ///The SharePoint file ID to use as a template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_id: ::std::option::Option<::std::string::String>,
        ///The page title
        pub title: ::std::string::String,
    }
    impl CreateSharepointPageTaskParams {
        pub fn builder() -> builder::CreateSharepointPageTaskParams {
            Default::default()
        }
    }
    ///`CreateSharepointPageTaskParamsDrive`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSharepointPageTaskParamsDrive {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateSharepointPageTaskParamsDrive {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateSharepointPageTaskParamsDrive {
        pub fn builder() -> builder::CreateSharepointPageTaskParamsDrive {
            Default::default()
        }
    }
    ///`CreateSharepointPageTaskParamsParentFolder`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSharepointPageTaskParamsParentFolder {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateSharepointPageTaskParamsParentFolder {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateSharepointPageTaskParamsParentFolder {
        pub fn builder() -> builder::CreateSharepointPageTaskParamsParentFolder {
            Default::default()
        }
    }
    ///`CreateSharepointPageTaskParamsSite`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSharepointPageTaskParamsSite {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateSharepointPageTaskParamsSite {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateSharepointPageTaskParamsSite {
        pub fn builder() -> builder::CreateSharepointPageTaskParamsSite {
            Default::default()
        }
    }
    ///`CreateSharepointPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_sharepoint_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateSharepointPageTaskParamsTaskType {
        #[serde(rename = "create_sharepoint_page")]
        CreateSharepointPage,
    }
    impl ::std::fmt::Display for CreateSharepointPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateSharepointPage => f.write_str("create_sharepoint_page"),
            }
        }
    }
    impl ::std::str::FromStr for CreateSharepointPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_sharepoint_page" => Ok(Self::CreateSharepointPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateSharepointPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateSharepointPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateSharepointPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateShortcutStoryTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "project"
    ///      ],
    ///      "properties": {
    ///        "project": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "workflow_state"
    ///      ],
    ///      "properties": {
    ///        "workflow_state": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "archivation",
    ///    "kind",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "archivation": {
    ///      "description": "The archivation id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The incident description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "group": {
    ///      "description": "The group id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "bug",
    ///        "chore",
    ///        "feature"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "description": "The story labels",
    ///      "type": "string"
    ///    },
    ///    "project": {
    ///      "description": "The project id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_shortcut_story"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": "string"
    ///    },
    ///    "workflow_state": {
    ///      "description": "The workflow state id workflow state name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum CreateShortcutStoryTaskParams {
        Variant0 {
            archivation: CreateShortcutStoryTaskParamsVariant0Archivation,
            ///The incident description
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            description: ::std::option::Option<::std::string::String>,
            ///The due date
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            due_date: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            group: ::std::option::Option<CreateShortcutStoryTaskParamsVariant0Group>,
            kind: CreateShortcutStoryTaskParamsVariant0Kind,
            ///The story labels
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            labels: ::std::option::Option<::std::string::String>,
            project: CreateShortcutStoryTaskParamsVariant0Project,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                CreateShortcutStoryTaskParamsVariant0TaskType,
            >,
            ///The incident title
            title: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            workflow_state: ::std::option::Option<
                CreateShortcutStoryTaskParamsVariant0WorkflowState,
            >,
        },
        Variant1 {
            archivation: CreateShortcutStoryTaskParamsVariant1Archivation,
            ///The incident description
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            description: ::std::option::Option<::std::string::String>,
            ///The due date
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            due_date: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            group: ::std::option::Option<CreateShortcutStoryTaskParamsVariant1Group>,
            kind: CreateShortcutStoryTaskParamsVariant1Kind,
            ///The story labels
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            labels: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            project: ::std::option::Option<CreateShortcutStoryTaskParamsVariant1Project>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                CreateShortcutStoryTaskParamsVariant1TaskType,
            >,
            ///The incident title
            title: ::std::string::String,
            workflow_state: CreateShortcutStoryTaskParamsVariant1WorkflowState,
        },
    }
    ///The archivation id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The archivation id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant0Archivation {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant0Archivation {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant0Archivation {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant0Archivation {
            Default::default()
        }
    }
    ///The group id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The group id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant0Group {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant0Group {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant0Group {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant0Group {
            Default::default()
        }
    }
    ///`CreateShortcutStoryTaskParamsVariant0Kind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "bug",
    ///    "chore",
    ///    "feature"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateShortcutStoryTaskParamsVariant0Kind {
        #[serde(rename = "bug")]
        Bug,
        #[serde(rename = "chore")]
        Chore,
        #[serde(rename = "feature")]
        Feature,
    }
    impl ::std::fmt::Display for CreateShortcutStoryTaskParamsVariant0Kind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Bug => f.write_str("bug"),
                Self::Chore => f.write_str("chore"),
                Self::Feature => f.write_str("feature"),
            }
        }
    }
    impl ::std::str::FromStr for CreateShortcutStoryTaskParamsVariant0Kind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "bug" => Ok(Self::Bug),
                "chore" => Ok(Self::Chore),
                "feature" => Ok(Self::Feature),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateShortcutStoryTaskParamsVariant0Kind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateShortcutStoryTaskParamsVariant0Kind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateShortcutStoryTaskParamsVariant0Kind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateShortcutStoryTaskParamsVariant0Project`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant0Project {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant0Project {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant0Project {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant0Project {
            Default::default()
        }
    }
    ///`CreateShortcutStoryTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_shortcut_story"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateShortcutStoryTaskParamsVariant0TaskType {
        #[serde(rename = "create_shortcut_story")]
        CreateShortcutStory,
    }
    impl ::std::fmt::Display for CreateShortcutStoryTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateShortcutStory => f.write_str("create_shortcut_story"),
            }
        }
    }
    impl ::std::str::FromStr for CreateShortcutStoryTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_shortcut_story" => Ok(Self::CreateShortcutStory),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateShortcutStoryTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateShortcutStoryTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateShortcutStoryTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The workflow state id workflow state name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The workflow state id workflow state name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant0WorkflowState {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant0WorkflowState {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant0WorkflowState {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant0WorkflowState {
            Default::default()
        }
    }
    ///The archivation id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The archivation id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant1Archivation {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant1Archivation {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant1Archivation {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant1Archivation {
            Default::default()
        }
    }
    ///The group id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The group id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant1Group {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant1Group {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant1Group {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant1Group {
            Default::default()
        }
    }
    ///`CreateShortcutStoryTaskParamsVariant1Kind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "bug",
    ///    "chore",
    ///    "feature"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateShortcutStoryTaskParamsVariant1Kind {
        #[serde(rename = "bug")]
        Bug,
        #[serde(rename = "chore")]
        Chore,
        #[serde(rename = "feature")]
        Feature,
    }
    impl ::std::fmt::Display for CreateShortcutStoryTaskParamsVariant1Kind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Bug => f.write_str("bug"),
                Self::Chore => f.write_str("chore"),
                Self::Feature => f.write_str("feature"),
            }
        }
    }
    impl ::std::str::FromStr for CreateShortcutStoryTaskParamsVariant1Kind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "bug" => Ok(Self::Bug),
                "chore" => Ok(Self::Chore),
                "feature" => Ok(Self::Feature),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateShortcutStoryTaskParamsVariant1Kind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateShortcutStoryTaskParamsVariant1Kind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateShortcutStoryTaskParamsVariant1Kind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The project id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The project id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant1Project {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant1Project {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant1Project {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant1Project {
            Default::default()
        }
    }
    ///`CreateShortcutStoryTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_shortcut_story"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateShortcutStoryTaskParamsVariant1TaskType {
        #[serde(rename = "create_shortcut_story")]
        CreateShortcutStory,
    }
    impl ::std::fmt::Display for CreateShortcutStoryTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateShortcutStory => f.write_str("create_shortcut_story"),
            }
        }
    }
    impl ::std::str::FromStr for CreateShortcutStoryTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_shortcut_story" => Ok(Self::CreateShortcutStory),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateShortcutStoryTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateShortcutStoryTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateShortcutStoryTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateShortcutStoryTaskParamsVariant1WorkflowState`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutStoryTaskParamsVariant1WorkflowState {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant1WorkflowState {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutStoryTaskParamsVariant1WorkflowState {
        pub fn builder() -> builder::CreateShortcutStoryTaskParamsVariant1WorkflowState {
            Default::default()
        }
    }
    ///`CreateShortcutTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "description",
    ///    "parent_story_id"
    ///  ],
    ///  "properties": {
    ///    "completion": {
    ///      "description": "The completion id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The task description",
    ///      "type": "string"
    ///    },
    ///    "parent_story_id": {
    ///      "description": "The parent story",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_shortcut_task"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutTaskTaskParams {
        pub completion: CreateShortcutTaskTaskParamsCompletion,
        ///The task description
        pub description: ::std::string::String,
        ///The parent story
        pub parent_story_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateShortcutTaskTaskParamsTaskType>,
    }
    impl CreateShortcutTaskTaskParams {
        pub fn builder() -> builder::CreateShortcutTaskTaskParams {
            Default::default()
        }
    }
    ///The completion id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The completion id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateShortcutTaskTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateShortcutTaskTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateShortcutTaskTaskParamsCompletion {
        pub fn builder() -> builder::CreateShortcutTaskTaskParamsCompletion {
            Default::default()
        }
    }
    ///`CreateShortcutTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_shortcut_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateShortcutTaskTaskParamsTaskType {
        #[serde(rename = "create_shortcut_task")]
        CreateShortcutTask,
    }
    impl ::std::fmt::Display for CreateShortcutTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateShortcutTask => f.write_str("create_shortcut_task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateShortcutTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_shortcut_task" => Ok(Self::CreateShortcutTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateShortcutTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateShortcutTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateShortcutTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateSlackChannelTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title",
    ///    "workspace"
    ///  ],
    ///  "properties": {
    ///    "private": {
    ///      "default": "auto",
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "true",
    ///        "false"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_slack_channel"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "Slack channel title",
    ///      "type": "string"
    ///    },
    ///    "workspace": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSlackChannelTaskParams {
        #[serde(default = "defaults::create_slack_channel_task_params_private")]
        pub private: CreateSlackChannelTaskParamsPrivate,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateSlackChannelTaskParamsTaskType>,
        ///Slack channel title
        pub title: ::std::string::String,
        pub workspace: CreateSlackChannelTaskParamsWorkspace,
    }
    impl CreateSlackChannelTaskParams {
        pub fn builder() -> builder::CreateSlackChannelTaskParams {
            Default::default()
        }
    }
    ///`CreateSlackChannelTaskParamsPrivate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "auto",
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "true",
    ///    "false"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateSlackChannelTaskParamsPrivate {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "true")]
        True,
        #[serde(rename = "false")]
        False,
    }
    impl ::std::fmt::Display for CreateSlackChannelTaskParamsPrivate {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::True => f.write_str("true"),
                Self::False => f.write_str("false"),
            }
        }
    }
    impl ::std::str::FromStr for CreateSlackChannelTaskParamsPrivate {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "true" => Ok(Self::True),
                "false" => Ok(Self::False),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateSlackChannelTaskParamsPrivate {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateSlackChannelTaskParamsPrivate {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateSlackChannelTaskParamsPrivate {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateSlackChannelTaskParamsPrivate {
        fn default() -> Self {
            CreateSlackChannelTaskParamsPrivate::Auto
        }
    }
    ///`CreateSlackChannelTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_slack_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateSlackChannelTaskParamsTaskType {
        #[serde(rename = "create_slack_channel")]
        CreateSlackChannel,
    }
    impl ::std::fmt::Display for CreateSlackChannelTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateSlackChannel => f.write_str("create_slack_channel"),
            }
        }
    }
    impl ::std::str::FromStr for CreateSlackChannelTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_slack_channel" => Ok(Self::CreateSlackChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateSlackChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateSlackChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateSlackChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateSlackChannelTaskParamsWorkspace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSlackChannelTaskParamsWorkspace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateSlackChannelTaskParamsWorkspace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateSlackChannelTaskParamsWorkspace {
        pub fn builder() -> builder::CreateSlackChannelTaskParamsWorkspace {
            Default::default()
        }
    }
    ///`CreateSubIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "summary": {
    ///      "description": "The sub incident summary",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_sub_incident"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The sub incident title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateSubIncidentTaskParams {
        ///The sub incident summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateSubIncidentTaskParamsTaskType>,
        ///The sub incident title
        pub title: ::std::string::String,
    }
    impl CreateSubIncidentTaskParams {
        pub fn builder() -> builder::CreateSubIncidentTaskParams {
            Default::default()
        }
    }
    ///`CreateSubIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_sub_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateSubIncidentTaskParamsTaskType {
        #[serde(rename = "create_sub_incident")]
        CreateSubIncident,
    }
    impl ::std::fmt::Display for CreateSubIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateSubIncident => f.write_str("create_sub_incident"),
            }
        }
    }
    impl ::std::str::FromStr for CreateSubIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_sub_incident" => Ok(Self::CreateSubIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateSubIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateSubIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateSubIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateTrelloCardTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "board",
    ///    "list",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "archivation": {
    ///      "description": "The archivation id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "board": {
    ///      "description": "The board id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The card description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "list": {
    ///      "description": "The list id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_trello_card"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The card title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateTrelloCardTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub archivation: ::std::option::Option<CreateTrelloCardTaskParamsArchivation>,
        pub board: CreateTrelloCardTaskParamsBoard,
        ///The card description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<CreateTrelloCardTaskParamsLabelsItem>,
        pub list: CreateTrelloCardTaskParamsList,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateTrelloCardTaskParamsTaskType>,
        ///The card title
        pub title: ::std::string::String,
    }
    impl CreateTrelloCardTaskParams {
        pub fn builder() -> builder::CreateTrelloCardTaskParams {
            Default::default()
        }
    }
    ///The archivation id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The archivation id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateTrelloCardTaskParamsArchivation {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateTrelloCardTaskParamsArchivation {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateTrelloCardTaskParamsArchivation {
        pub fn builder() -> builder::CreateTrelloCardTaskParamsArchivation {
            Default::default()
        }
    }
    ///The board id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The board id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateTrelloCardTaskParamsBoard {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateTrelloCardTaskParamsBoard {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateTrelloCardTaskParamsBoard {
        pub fn builder() -> builder::CreateTrelloCardTaskParamsBoard {
            Default::default()
        }
    }
    ///`CreateTrelloCardTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateTrelloCardTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateTrelloCardTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateTrelloCardTaskParamsLabelsItem {
        pub fn builder() -> builder::CreateTrelloCardTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///The list id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The list id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateTrelloCardTaskParamsList {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateTrelloCardTaskParamsList {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateTrelloCardTaskParamsList {
        pub fn builder() -> builder::CreateTrelloCardTaskParamsList {
            Default::default()
        }
    }
    ///`CreateTrelloCardTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_trello_card"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateTrelloCardTaskParamsTaskType {
        #[serde(rename = "create_trello_card")]
        CreateTrelloCard,
    }
    impl ::std::fmt::Display for CreateTrelloCardTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateTrelloCard => f.write_str("create_trello_card"),
            }
        }
    }
    impl ::std::str::FromStr for CreateTrelloCardTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_trello_card" => Ok(Self::CreateTrelloCard),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateTrelloCardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateTrelloCardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateTrelloCardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateWatsonxChatCompletionTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "model",
    ///    "project_id",
    ///    "prompt"
    ///  ],
    ///  "properties": {
    ///    "model": {
    ///      "description": "The WatsonX model. eg: ibm/granite-3-b8b-instruct",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project_id": {
    ///      "type": "string"
    ///    },
    ///    "prompt": {
    ///      "description": "The prompt to send to WatsonX",
    ///      "type": "string"
    ///    },
    ///    "system_prompt": {
    ///      "description": "The system prompt to send to WatsonX (optional)",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_watsonx_chat_completion_task"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateWatsonxChatCompletionTaskParams {
        pub model: CreateWatsonxChatCompletionTaskParamsModel,
        pub project_id: ::std::string::String,
        ///The prompt to send to WatsonX
        pub prompt: ::std::string::String,
        ///The system prompt to send to WatsonX (optional)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub system_prompt: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            CreateWatsonxChatCompletionTaskParamsTaskType,
        >,
    }
    impl CreateWatsonxChatCompletionTaskParams {
        pub fn builder() -> builder::CreateWatsonxChatCompletionTaskParams {
            Default::default()
        }
    }
    ///The WatsonX model. eg: ibm/granite-3-b8b-instruct
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The WatsonX model. eg: ibm/granite-3-b8b-instruct",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateWatsonxChatCompletionTaskParamsModel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateWatsonxChatCompletionTaskParamsModel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateWatsonxChatCompletionTaskParamsModel {
        pub fn builder() -> builder::CreateWatsonxChatCompletionTaskParamsModel {
            Default::default()
        }
    }
    ///`CreateWatsonxChatCompletionTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_watsonx_chat_completion_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateWatsonxChatCompletionTaskParamsTaskType {
        #[serde(rename = "create_watsonx_chat_completion_task")]
        CreateWatsonxChatCompletionTask,
    }
    impl ::std::fmt::Display for CreateWatsonxChatCompletionTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateWatsonxChatCompletionTask => {
                    f.write_str("create_watsonx_chat_completion_task")
                }
            }
        }
    }
    impl ::std::str::FromStr for CreateWatsonxChatCompletionTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_watsonx_chat_completion_task" => {
                    Ok(Self::CreateWatsonxChatCompletionTask)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for CreateWatsonxChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateWatsonxChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateWatsonxChatCompletionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateWebexMeetingTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "topic"
    ///  ],
    ///  "properties": {
    ///    "password": {
    ///      "description": "The meeting password",
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "record_meeting": {
    ///      "description": "Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting",
    ///      "type": "boolean"
    ///    },
    ///    "recording_mode": {
    ///      "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "speaker_view",
    ///        "gallery_view",
    ///        "gallery_view_v2",
    ///        "audio_only"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_webex_meeting"
    ///      ]
    ///    },
    ///    "topic": {
    ///      "description": "The meeting topic",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateWebexMeetingTaskParams {
        ///The meeting password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub password: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateWebexMeetingTaskParamsPostToSlackChannelsItem,
        >,
        ///Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub record_meeting: ::std::option::Option<bool>,
        ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub recording_mode: ::std::option::Option<
            CreateWebexMeetingTaskParamsRecordingMode,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateWebexMeetingTaskParamsTaskType>,
        ///The meeting topic
        pub topic: ::std::string::String,
    }
    impl CreateWebexMeetingTaskParams {
        pub fn builder() -> builder::CreateWebexMeetingTaskParams {
            Default::default()
        }
    }
    ///`CreateWebexMeetingTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///  "type": "string",
    ///  "enum": [
    ///    "speaker_view",
    ///    "gallery_view",
    ///    "gallery_view_v2",
    ///    "audio_only"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateWebexMeetingTaskParamsRecordingMode {
        #[serde(rename = "speaker_view")]
        SpeakerView,
        #[serde(rename = "gallery_view")]
        GalleryView,
        #[serde(rename = "gallery_view_v2")]
        GalleryViewV2,
        #[serde(rename = "audio_only")]
        AudioOnly,
    }
    impl ::std::fmt::Display for CreateWebexMeetingTaskParamsRecordingMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SpeakerView => f.write_str("speaker_view"),
                Self::GalleryView => f.write_str("gallery_view"),
                Self::GalleryViewV2 => f.write_str("gallery_view_v2"),
                Self::AudioOnly => f.write_str("audio_only"),
            }
        }
    }
    impl ::std::str::FromStr for CreateWebexMeetingTaskParamsRecordingMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "speaker_view" => Ok(Self::SpeakerView),
                "gallery_view" => Ok(Self::GalleryView),
                "gallery_view_v2" => Ok(Self::GalleryViewV2),
                "audio_only" => Ok(Self::AudioOnly),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateWebexMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateWebexMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateWebexMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateWebexMeetingTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_webex_meeting"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateWebexMeetingTaskParamsTaskType {
        #[serde(rename = "create_webex_meeting")]
        CreateWebexMeeting,
    }
    impl ::std::fmt::Display for CreateWebexMeetingTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateWebexMeeting => f.write_str("create_webex_meeting"),
            }
        }
    }
    impl ::std::str::FromStr for CreateWebexMeetingTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_webex_meeting" => Ok(Self::CreateWebexMeeting),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateWebexMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateWebexMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateWebexMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateZendeskJiraLinkTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "jira_issue_id",
    ///    "jira_issue_key",
    ///    "zendesk_ticket_id"
    ///  ],
    ///  "properties": {
    ///    "jira_issue_id": {
    ///      "description": "Jira Issue Id.",
    ///      "type": "string"
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "Jira Issue Key.",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_zendesk_jira_link"
    ///      ]
    ///    },
    ///    "zendesk_ticket_id": {
    ///      "description": "Zendesk Ticket Id.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateZendeskJiraLinkTaskParams {
        ///Jira Issue Id.
        pub jira_issue_id: ::std::string::String,
        ///Jira Issue Key.
        pub jira_issue_key: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateZendeskJiraLinkTaskParamsTaskType>,
        ///Zendesk Ticket Id.
        pub zendesk_ticket_id: ::std::string::String,
    }
    impl CreateZendeskJiraLinkTaskParams {
        pub fn builder() -> builder::CreateZendeskJiraLinkTaskParams {
            Default::default()
        }
    }
    ///`CreateZendeskJiraLinkTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_zendesk_jira_link"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateZendeskJiraLinkTaskParamsTaskType {
        #[serde(rename = "create_zendesk_jira_link")]
        CreateZendeskJiraLink,
    }
    impl ::std::fmt::Display for CreateZendeskJiraLinkTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateZendeskJiraLink => f.write_str("create_zendesk_jira_link"),
            }
        }
    }
    impl ::std::str::FromStr for CreateZendeskJiraLinkTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_zendesk_jira_link" => Ok(Self::CreateZendeskJiraLink),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateZendeskJiraLinkTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateZendeskJiraLinkTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateZendeskJiraLinkTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateZendeskTicketTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "kind",
    ///    "subject"
    ///  ],
    ///  "properties": {
    ///    "comment": {
    ///      "description": "The ticket comment",
    ///      "type": "string"
    ///    },
    ///    "completion": {
    ///      "description": "The completion id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "problem",
    ///        "incident",
    ///        "question",
    ///        "task"
    ///      ]
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "subject": {
    ///      "description": "The ticket subject",
    ///      "type": "string"
    ///    },
    ///    "tags": {
    ///      "description": "The ticket tags",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_zendesk_ticket"
    ///      ]
    ///    },
    ///    "ticket_payload": {
    ///      "description": "Additional Zendesk ticket attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateZendeskTicketTaskParams {
        ///The ticket comment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub comment: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion: ::std::option::Option<CreateZendeskTicketTaskParamsCompletion>,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        pub kind: CreateZendeskTicketTaskParamsKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<CreateZendeskTicketTaskParamsPriority>,
        ///The ticket subject
        pub subject: ::std::string::String,
        ///The ticket tags
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub tags: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateZendeskTicketTaskParamsTaskType>,
        ///Additional Zendesk ticket attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ticket_payload: ::std::option::Option<::std::string::String>,
    }
    impl CreateZendeskTicketTaskParams {
        pub fn builder() -> builder::CreateZendeskTicketTaskParams {
            Default::default()
        }
    }
    ///The completion id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The completion id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateZendeskTicketTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateZendeskTicketTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateZendeskTicketTaskParamsCompletion {
        pub fn builder() -> builder::CreateZendeskTicketTaskParamsCompletion {
            Default::default()
        }
    }
    ///`CreateZendeskTicketTaskParamsKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "problem",
    ///    "incident",
    ///    "question",
    ///    "task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateZendeskTicketTaskParamsKind {
        #[serde(rename = "problem")]
        Problem,
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "question")]
        Question,
        #[serde(rename = "task")]
        Task,
    }
    impl ::std::fmt::Display for CreateZendeskTicketTaskParamsKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Problem => f.write_str("problem"),
                Self::Incident => f.write_str("incident"),
                Self::Question => f.write_str("question"),
                Self::Task => f.write_str("task"),
            }
        }
    }
    impl ::std::str::FromStr for CreateZendeskTicketTaskParamsKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "problem" => Ok(Self::Problem),
                "incident" => Ok(Self::Incident),
                "question" => Ok(Self::Question),
                "task" => Ok(Self::Task),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateZendeskTicketTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateZendeskTicketTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateZendeskTicketTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateZendeskTicketTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateZendeskTicketTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateZendeskTicketTaskParamsPriority {
        pub fn builder() -> builder::CreateZendeskTicketTaskParamsPriority {
            Default::default()
        }
    }
    ///`CreateZendeskTicketTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_zendesk_ticket"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateZendeskTicketTaskParamsTaskType {
        #[serde(rename = "create_zendesk_ticket")]
        CreateZendeskTicket,
    }
    impl ::std::fmt::Display for CreateZendeskTicketTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateZendeskTicket => f.write_str("create_zendesk_ticket"),
            }
        }
    }
    impl ::std::str::FromStr for CreateZendeskTicketTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_zendesk_ticket" => Ok(Self::CreateZendeskTicket),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateZendeskTicketTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateZendeskTicketTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateZendeskTicketTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateZoomMeetingTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "topic"
    ///  ],
    ///  "properties": {
    ///    "alternative_hosts": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Alternative host email",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "auto_recording": {
    ///      "default": "none",
    ///      "type": "string",
    ///      "enum": [
    ///        "none",
    ///        "local",
    ///        "cloud"
    ///      ]
    ///    },
    ///    "create_as_email": {
    ///      "description": "The email to use if creating as email",
    ///      "type": "string"
    ///    },
    ///    "enable_zoom_bot_auto_join": {
    ///      "description": "Allow the Rootly bot to start recording without waiting for host approval",
    ///      "type": "boolean"
    ///    },
    ///    "password": {
    ///      "description": "The meeting password",
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "record_meeting": {
    ///      "description": "Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting",
    ///      "type": "boolean"
    ///    },
    ///    "recording_mode": {
    ///      "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "speaker_view",
    ///        "gallery_view",
    ///        "gallery_view_v2",
    ///        "audio_only"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_zoom_meeting"
    ///      ]
    ///    },
    ///    "topic": {
    ///      "description": "The meeting topic",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateZoomMeetingTaskParams {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alternative_hosts: ::std::vec::Vec<::std::string::String>,
        #[serde(default = "defaults::create_zoom_meeting_task_params_auto_recording")]
        pub auto_recording: CreateZoomMeetingTaskParamsAutoRecording,
        ///The email to use if creating as email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub create_as_email: ::std::option::Option<::std::string::String>,
        ///Allow the Rootly bot to start recording without waiting for host approval
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enable_zoom_bot_auto_join: ::std::option::Option<bool>,
        ///The meeting password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub password: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            CreateZoomMeetingTaskParamsPostToSlackChannelsItem,
        >,
        ///Rootly AI will record the meeting and automatically generate a transcript and summary from your meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub record_meeting: ::std::option::Option<bool>,
        ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub recording_mode: ::std::option::Option<
            CreateZoomMeetingTaskParamsRecordingMode,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<CreateZoomMeetingTaskParamsTaskType>,
        ///The meeting topic
        pub topic: ::std::string::String,
    }
    impl CreateZoomMeetingTaskParams {
        pub fn builder() -> builder::CreateZoomMeetingTaskParams {
            Default::default()
        }
    }
    ///`CreateZoomMeetingTaskParamsAutoRecording`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "none",
    ///  "type": "string",
    ///  "enum": [
    ///    "none",
    ///    "local",
    ///    "cloud"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateZoomMeetingTaskParamsAutoRecording {
        #[serde(rename = "none")]
        None,
        #[serde(rename = "local")]
        Local,
        #[serde(rename = "cloud")]
        Cloud,
    }
    impl ::std::fmt::Display for CreateZoomMeetingTaskParamsAutoRecording {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::None => f.write_str("none"),
                Self::Local => f.write_str("local"),
                Self::Cloud => f.write_str("cloud"),
            }
        }
    }
    impl ::std::str::FromStr for CreateZoomMeetingTaskParamsAutoRecording {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "none" => Ok(Self::None),
                "local" => Ok(Self::Local),
                "cloud" => Ok(Self::Cloud),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateZoomMeetingTaskParamsAutoRecording {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateZoomMeetingTaskParamsAutoRecording {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateZoomMeetingTaskParamsAutoRecording {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for CreateZoomMeetingTaskParamsAutoRecording {
        fn default() -> Self {
            CreateZoomMeetingTaskParamsAutoRecording::None
        }
    }
    ///`CreateZoomMeetingTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The video layout for the bot's recording (e.g. speaker_view, gallery_view, gallery_view_v2, audio_only)",
    ///  "type": "string",
    ///  "enum": [
    ///    "speaker_view",
    ///    "gallery_view",
    ///    "gallery_view_v2",
    ///    "audio_only"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateZoomMeetingTaskParamsRecordingMode {
        #[serde(rename = "speaker_view")]
        SpeakerView,
        #[serde(rename = "gallery_view")]
        GalleryView,
        #[serde(rename = "gallery_view_v2")]
        GalleryViewV2,
        #[serde(rename = "audio_only")]
        AudioOnly,
    }
    impl ::std::fmt::Display for CreateZoomMeetingTaskParamsRecordingMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SpeakerView => f.write_str("speaker_view"),
                Self::GalleryView => f.write_str("gallery_view"),
                Self::GalleryViewV2 => f.write_str("gallery_view_v2"),
                Self::AudioOnly => f.write_str("audio_only"),
            }
        }
    }
    impl ::std::str::FromStr for CreateZoomMeetingTaskParamsRecordingMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "speaker_view" => Ok(Self::SpeakerView),
                "gallery_view" => Ok(Self::GalleryView),
                "gallery_view_v2" => Ok(Self::GalleryViewV2),
                "audio_only" => Ok(Self::AudioOnly),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateZoomMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateZoomMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateZoomMeetingTaskParamsRecordingMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CreateZoomMeetingTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_zoom_meeting"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CreateZoomMeetingTaskParamsTaskType {
        #[serde(rename = "create_zoom_meeting")]
        CreateZoomMeeting,
    }
    impl ::std::fmt::Display for CreateZoomMeetingTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateZoomMeeting => f.write_str("create_zoom_meeting"),
            }
        }
    }
    impl ::std::str::FromStr for CreateZoomMeetingTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_zoom_meeting" => Ok(Self::CreateZoomMeeting),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CreateZoomMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CreateZoomMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CreateZoomMeetingTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CustomField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "label",
    ///    "position",
    ///    "required",
    ///    "shown",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "description": "The default value for text field kinds",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the custom_field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the custom_field is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "label": {
    ///      "description": "The name of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the custom_field",
    ///      "type": "integer"
    ///    },
    ///    "required": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Where the custom_field is required",
    ///        "type": "string",
    ///        "enum": [
    ///          "incident_form",
    ///          "incident_mitigation_form",
    ///          "incident_resolution_form",
    ///          "incident_post_mortem_form",
    ///          "incident_slack_form",
    ///          "incident_mitigation_slack_form",
    ///          "incident_resolution_slack_form"
    ///        ]
    ///      }
    ///    },
    ///    "shown": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the custom_field is shown",
    ///        "type": "string",
    ///        "enum": [
    ///          "incident_form",
    ///          "incident_mitigation_form",
    ///          "incident_resolution_form",
    ///          "incident_post_mortem_form",
    ///          "incident_slack_form",
    ///          "incident_mitigation_slack_form",
    ///          "incident_resolution_slack_form",
    ///          "incident_post_mortem"
    ///        ]
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomField {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The default value for text field kinds
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<::std::string::String>,
        ///The description of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the custom_field is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The kind of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<::std::string::String>,
        ///The name of the custom_field
        pub label: ::std::string::String,
        ///The position of the custom_field
        pub position: i64,
        pub required: ::std::option::Option<::std::vec::Vec<CustomFieldRequiredItem>>,
        pub shown: ::std::vec::Vec<CustomFieldShownItem>,
        ///The slug of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl CustomField {
        pub fn builder() -> builder::CustomField {
            Default::default()
        }
    }
    ///`CustomFieldList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/custom_field"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the custom_field",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "custom_fields"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldList {
        pub data: ::std::vec::Vec<CustomFieldListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CustomFieldList {
        pub fn builder() -> builder::CustomFieldList {
            Default::default()
        }
    }
    ///`CustomFieldListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/custom_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldListDataItem {
        pub attributes: CustomField,
        ///Unique ID of the custom_field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CustomFieldListDataItemType,
    }
    impl CustomFieldListDataItem {
        pub fn builder() -> builder::CustomFieldListDataItem {
            Default::default()
        }
    }
    ///`CustomFieldListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFieldListDataItemType {
        #[serde(rename = "custom_fields")]
        CustomFields,
    }
    impl ::std::fmt::Display for CustomFieldListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFields => f.write_str("custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFieldListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_fields" => Ok(Self::CustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CustomFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CustomFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CustomFieldOption`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "color",
    ///    "created_at",
    ///    "position",
    ///    "updated_at",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the custom_field_option",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "custom_field_id": {
    ///      "description": "The ID of the parent custom field",
    ///      "type": "integer"
    ///    },
    ///    "default": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "The position of the custom_field_option",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The value of the custom_field_option",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldOption {
        ///The hex color of the custom_field_option
        pub color: ::std::string::String,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The ID of the parent custom field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_field_id: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The position of the custom_field_option
        pub position: i64,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The value of the custom_field_option
        pub value: ::std::string::String,
    }
    impl CustomFieldOption {
        pub fn builder() -> builder::CustomFieldOption {
            Default::default()
        }
    }
    ///`CustomFieldOptionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/custom_field_option"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the custom_field_option",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "custom_field_options"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldOptionList {
        pub data: ::std::vec::Vec<CustomFieldOptionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CustomFieldOptionList {
        pub fn builder() -> builder::CustomFieldOptionList {
            Default::default()
        }
    }
    ///`CustomFieldOptionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/custom_field_option"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the custom_field_option",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldOptionListDataItem {
        pub attributes: CustomFieldOption,
        ///Unique ID of the custom_field_option
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CustomFieldOptionListDataItemType,
    }
    impl CustomFieldOptionListDataItem {
        pub fn builder() -> builder::CustomFieldOptionListDataItem {
            Default::default()
        }
    }
    ///`CustomFieldOptionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFieldOptionListDataItemType {
        #[serde(rename = "custom_field_options")]
        CustomFieldOptions,
    }
    impl ::std::fmt::Display for CustomFieldOptionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFieldOptions => f.write_str("custom_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFieldOptionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field_options" => Ok(Self::CustomFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFieldOptionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CustomFieldOptionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CustomFieldOptionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CustomFieldOptionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/custom_field_option"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the custom_field_option",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_field_options"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldOptionResponse {
        pub data: CustomFieldOptionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CustomFieldOptionResponse {
        pub fn builder() -> builder::CustomFieldOptionResponse {
            Default::default()
        }
    }
    ///`CustomFieldOptionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/custom_field_option"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the custom_field_option",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldOptionResponseData {
        pub attributes: CustomFieldOption,
        ///Unique ID of the custom_field_option
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CustomFieldOptionResponseDataType,
    }
    impl CustomFieldOptionResponseData {
        pub fn builder() -> builder::CustomFieldOptionResponseData {
            Default::default()
        }
    }
    ///`CustomFieldOptionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFieldOptionResponseDataType {
        #[serde(rename = "custom_field_options")]
        CustomFieldOptions,
    }
    impl ::std::fmt::Display for CustomFieldOptionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFieldOptions => f.write_str("custom_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFieldOptionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field_options" => Ok(Self::CustomFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFieldOptionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CustomFieldOptionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for CustomFieldOptionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Where the custom_field is required
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Where the custom_field is required",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form",
    ///    "incident_mitigation_form",
    ///    "incident_resolution_form",
    ///    "incident_post_mortem_form",
    ///    "incident_slack_form",
    ///    "incident_mitigation_slack_form",
    ///    "incident_resolution_slack_form"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFieldRequiredItem {
        #[serde(rename = "incident_form")]
        IncidentForm,
        #[serde(rename = "incident_mitigation_form")]
        IncidentMitigationForm,
        #[serde(rename = "incident_resolution_form")]
        IncidentResolutionForm,
        #[serde(rename = "incident_post_mortem_form")]
        IncidentPostMortemForm,
        #[serde(rename = "incident_slack_form")]
        IncidentSlackForm,
        #[serde(rename = "incident_mitigation_slack_form")]
        IncidentMitigationSlackForm,
        #[serde(rename = "incident_resolution_slack_form")]
        IncidentResolutionSlackForm,
    }
    impl ::std::fmt::Display for CustomFieldRequiredItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentForm => f.write_str("incident_form"),
                Self::IncidentMitigationForm => f.write_str("incident_mitigation_form"),
                Self::IncidentResolutionForm => f.write_str("incident_resolution_form"),
                Self::IncidentPostMortemForm => f.write_str("incident_post_mortem_form"),
                Self::IncidentSlackForm => f.write_str("incident_slack_form"),
                Self::IncidentMitigationSlackForm => {
                    f.write_str("incident_mitigation_slack_form")
                }
                Self::IncidentResolutionSlackForm => {
                    f.write_str("incident_resolution_slack_form")
                }
            }
        }
    }
    impl ::std::str::FromStr for CustomFieldRequiredItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form" => Ok(Self::IncidentForm),
                "incident_mitigation_form" => Ok(Self::IncidentMitigationForm),
                "incident_resolution_form" => Ok(Self::IncidentResolutionForm),
                "incident_post_mortem_form" => Ok(Self::IncidentPostMortemForm),
                "incident_slack_form" => Ok(Self::IncidentSlackForm),
                "incident_mitigation_slack_form" => Ok(Self::IncidentMitigationSlackForm),
                "incident_resolution_slack_form" => Ok(Self::IncidentResolutionSlackForm),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFieldRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CustomFieldRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CustomFieldRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CustomFieldResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/custom_field"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the custom_field",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_fields"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldResponse {
        pub data: CustomFieldResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CustomFieldResponse {
        pub fn builder() -> builder::CustomFieldResponse {
            Default::default()
        }
    }
    ///`CustomFieldResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/custom_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFieldResponseData {
        pub attributes: CustomField,
        ///Unique ID of the custom_field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CustomFieldResponseDataType,
    }
    impl CustomFieldResponseData {
        pub fn builder() -> builder::CustomFieldResponseData {
            Default::default()
        }
    }
    ///`CustomFieldResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFieldResponseDataType {
        #[serde(rename = "custom_fields")]
        CustomFields,
    }
    impl ::std::fmt::Display for CustomFieldResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFields => f.write_str("custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFieldResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_fields" => Ok(Self::CustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for CustomFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CustomFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Where the custom_field is shown
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Where the custom_field is shown",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form",
    ///    "incident_mitigation_form",
    ///    "incident_resolution_form",
    ///    "incident_post_mortem_form",
    ///    "incident_slack_form",
    ///    "incident_mitigation_slack_form",
    ///    "incident_resolution_slack_form",
    ///    "incident_post_mortem"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFieldShownItem {
        #[serde(rename = "incident_form")]
        IncidentForm,
        #[serde(rename = "incident_mitigation_form")]
        IncidentMitigationForm,
        #[serde(rename = "incident_resolution_form")]
        IncidentResolutionForm,
        #[serde(rename = "incident_post_mortem_form")]
        IncidentPostMortemForm,
        #[serde(rename = "incident_slack_form")]
        IncidentSlackForm,
        #[serde(rename = "incident_mitigation_slack_form")]
        IncidentMitigationSlackForm,
        #[serde(rename = "incident_resolution_slack_form")]
        IncidentResolutionSlackForm,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
    }
    impl ::std::fmt::Display for CustomFieldShownItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentForm => f.write_str("incident_form"),
                Self::IncidentMitigationForm => f.write_str("incident_mitigation_form"),
                Self::IncidentResolutionForm => f.write_str("incident_resolution_form"),
                Self::IncidentPostMortemForm => f.write_str("incident_post_mortem_form"),
                Self::IncidentSlackForm => f.write_str("incident_slack_form"),
                Self::IncidentMitigationSlackForm => {
                    f.write_str("incident_mitigation_slack_form")
                }
                Self::IncidentResolutionSlackForm => {
                    f.write_str("incident_resolution_slack_form")
                }
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFieldShownItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form" => Ok(Self::IncidentForm),
                "incident_mitigation_form" => Ok(Self::IncidentMitigationForm),
                "incident_resolution_form" => Ok(Self::IncidentResolutionForm),
                "incident_post_mortem_form" => Ok(Self::IncidentPostMortemForm),
                "incident_slack_form" => Ok(Self::IncidentSlackForm),
                "incident_mitigation_slack_form" => Ok(Self::IncidentMitigationSlackForm),
                "incident_resolution_slack_form" => Ok(Self::IncidentResolutionSlackForm),
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFieldShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CustomFieldShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CustomFieldShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CustomForm`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "command",
    ///    "created_at",
    ///    "enabled",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "command": {
    ///      "description": "The Slack command used to trigger this form.",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation.",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the custom form.",
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "description": "The custom form slug. Add this to form_field.shown or form_field.required to associate form fields with custom forms.",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomForm {
        ///The Slack command used to trigger this form.
        pub command: ::std::string::String,
        ///Date of creation.
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub enabled: bool,
        ///The name of the custom form.
        pub name: ::std::string::String,
        ///The custom form slug. Add this to form_field.shown or form_field.required to associate form fields with custom forms.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update.
        pub updated_at: ::std::string::String,
    }
    impl CustomForm {
        pub fn builder() -> builder::CustomForm {
            Default::default()
        }
    }
    ///`CustomFormList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/custom_form"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique id of the custom form.",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "custom_forms"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFormList {
        pub data: ::std::vec::Vec<CustomFormListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl CustomFormList {
        pub fn builder() -> builder::CustomFormList {
            Default::default()
        }
    }
    ///`CustomFormListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/custom_form"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique id of the custom form.",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_forms"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFormListDataItem {
        pub attributes: CustomForm,
        ///Unique id of the custom form.
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CustomFormListDataItemType,
    }
    impl CustomFormListDataItem {
        pub fn builder() -> builder::CustomFormListDataItem {
            Default::default()
        }
    }
    ///`CustomFormListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_forms"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFormListDataItemType {
        #[serde(rename = "custom_forms")]
        CustomForms,
    }
    impl ::std::fmt::Display for CustomFormListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomForms => f.write_str("custom_forms"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFormListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_forms" => Ok(Self::CustomForms),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFormListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CustomFormListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CustomFormListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`CustomFormResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/custom_form"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique id of the custom form.",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_forms"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFormResponse {
        pub data: CustomFormResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl CustomFormResponse {
        pub fn builder() -> builder::CustomFormResponse {
            Default::default()
        }
    }
    ///`CustomFormResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/custom_form"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique id of the custom form.",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_forms"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct CustomFormResponseData {
        pub attributes: CustomForm,
        ///Unique id of the custom form.
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: CustomFormResponseDataType,
    }
    impl CustomFormResponseData {
        pub fn builder() -> builder::CustomFormResponseData {
            Default::default()
        }
    }
    ///`CustomFormResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_forms"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum CustomFormResponseDataType {
        #[serde(rename = "custom_forms")]
        CustomForms,
    }
    impl ::std::fmt::Display for CustomFormResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomForms => f.write_str("custom_forms"),
            }
        }
    }
    impl ::std::str::FromStr for CustomFormResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_forms" => Ok(Self::CustomForms),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for CustomFormResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for CustomFormResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for CustomFormResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Dashboard`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "owner",
    ///    "public"
    ///  ],
    ///  "properties": {
    ///    "auto_refresh": {
    ///      "description": "Whether the dashboard auto-updates the UI with new data.",
    ///      "type": "boolean"
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the dashboard",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "#FCF2CF",
    ///        "#D7F5E1",
    ///        "#E9E2FF",
    ///        "#FAE6E8",
    ///        "#FAEEE6"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the dashboard",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "description": "The emoji icon of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "owner": {
    ///      "description": "The owner type of the dashboard",
    ///      "type": "string",
    ///      "enum": [
    ///        "user",
    ///        "team"
    ///      ]
    ///    },
    ///    "period": {
    ///      "description": "The grouping period for dashboard panel data",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public": {
    ///      "description": "Whether the dashboard is public",
    ///      "type": "boolean"
    ///    },
    ///    "range": {
    ///      "description": "The date range for dashboard panel data",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "team_id": {
    ///      "description": "The dashboard team",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "The dashboard user owner if owner is of type user",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Dashboard {
        ///Whether the dashboard auto-updates the UI with new data.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_refresh: ::std::option::Option<bool>,
        ///The hex color of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<DashboardColor>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///The description of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The emoji icon of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<::std::string::String>,
        ///The name of the dashboard
        pub name: ::std::string::String,
        ///The owner type of the dashboard
        pub owner: DashboardOwner,
        ///The grouping period for dashboard panel data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub period: ::std::option::Option<::std::string::String>,
        ///Whether the dashboard is public
        pub public: bool,
        ///The date range for dashboard panel data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub range: ::std::option::Option<::std::string::String>,
        ///The dashboard team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub team_id: ::std::option::Option<i64>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
        ///The dashboard user owner if owner is of type user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl Dashboard {
        pub fn builder() -> builder::Dashboard {
            Default::default()
        }
    }
    ///The hex color of the dashboard
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The hex color of the dashboard",
    ///  "type": "string",
    ///  "enum": [
    ///    "#FCF2CF",
    ///    "#D7F5E1",
    ///    "#E9E2FF",
    ///    "#FAE6E8",
    ///    "#FAEEE6"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardColor {
        #[serde(rename = "#FCF2CF")]
        Fcf2cf,
        #[serde(rename = "#D7F5E1")]
        D7f5e1,
        #[serde(rename = "#E9E2FF")]
        E9e2ff,
        #[serde(rename = "#FAE6E8")]
        Fae6e8,
        #[serde(rename = "#FAEEE6")]
        Faeee6,
    }
    impl ::std::fmt::Display for DashboardColor {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Fcf2cf => f.write_str("#FCF2CF"),
                Self::D7f5e1 => f.write_str("#D7F5E1"),
                Self::E9e2ff => f.write_str("#E9E2FF"),
                Self::Fae6e8 => f.write_str("#FAE6E8"),
                Self::Faeee6 => f.write_str("#FAEEE6"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardColor {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "#FCF2CF" => Ok(Self::Fcf2cf),
                "#D7F5E1" => Ok(Self::D7f5e1),
                "#E9E2FF" => Ok(Self::E9e2ff),
                "#FAE6E8" => Ok(Self::Fae6e8),
                "#FAEEE6" => Ok(Self::Faeee6),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for DashboardColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for DashboardColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/dashboard"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the dashboard",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "dashboards"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardList {
        pub data: ::std::vec::Vec<DashboardListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl DashboardList {
        pub fn builder() -> builder::DashboardList {
            Default::default()
        }
    }
    ///`DashboardListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/dashboard"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboards"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardListDataItem {
        pub attributes: Dashboard,
        ///Unique ID of the dashboard
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: DashboardListDataItemType,
    }
    impl DashboardListDataItem {
        pub fn builder() -> builder::DashboardListDataItem {
            Default::default()
        }
    }
    ///`DashboardListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboards"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardListDataItemType {
        #[serde(rename = "dashboards")]
        Dashboards,
    }
    impl ::std::fmt::Display for DashboardListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Dashboards => f.write_str("dashboards"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboards" => Ok(Self::Dashboards),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for DashboardListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for DashboardListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The owner type of the dashboard
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The owner type of the dashboard",
    ///  "type": "string",
    ///  "enum": [
    ///    "user",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardOwner {
        #[serde(rename = "user")]
        User,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for DashboardOwner {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("user"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardOwner {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user" => Ok(Self::User),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for DashboardOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for DashboardOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "params"
    ///  ],
    ///  "properties": {
    ///    "dashboard_id": {
    ///      "description": "The panel dashboard",
    ///      "type": "string"
    ///    },
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the dashboard_panel",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "datalabels": {
    ///          "type": "object",
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            }
    ///          }
    ///        },
    ///        "datasets": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "aggregate": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "properties": {
    ///                  "cumulative": {
    ///                    "type": [
    ///                      "boolean",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "key": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "operation": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "count",
    ///                      "sum",
    ///                      "average"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              "collection": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "alerts",
    ///                  "incidents",
    ///                  "incident_post_mortems",
    ///                  "incident_action_items",
    ///                  "users"
    ///                ]
    ///              },
    ///              "filter": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "operation": {
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "and",
    ///                        "or"
    ///                      ]
    ///                    },
    ///                    "rules": {
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "object",
    ///                        "properties": {
    ///                          "condition": {
    ///                            "type": "string"
    ///                          },
    ///                          "key": {
    ///                            "type": "string"
    ///                          },
    ///                          "operation": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "and",
    ///                              "or"
    ///                            ]
    ///                          },
    ///                          "value": {
    ///                            "type": "string"
    ///                          }
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "group_by": {
    ///                "oneOf": [
    ///                  {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  {
    ///                    "type": [
    ///                      "object",
    ///                      "null"
    ///                    ],
    ///                    "required": [
    ///                      "key",
    ///                      "value"
    ///                    ],
    ///                    "properties": {
    ///                      "key": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "custom_field",
    ///                          "incident_role",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              },
    ///              "name": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "type": "string"
    ///        },
    ///        "display": {
    ///          "type": "string",
    ///          "enum": [
    ///            "line_chart",
    ///            "line_stepped_chart",
    ///            "column_chart",
    ///            "stacked_column_chart",
    ///            "monitoring_chart",
    ///            "pie_chart",
    ///            "table",
    ///            "aggregate_value"
    ///          ]
    ///        },
    ///        "legend": {
    ///          "type": "object",
    ///          "properties": {
    ///            "groups": {
    ///              "default": "all",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "charted"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "table_fields": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "h",
    ///        "w",
    ///        "x",
    ///        "y"
    ///      ],
    ///      "properties": {
    ///        "h": {
    ///          "type": "number"
    ///        },
    ///        "w": {
    ///          "type": "number"
    ///        },
    ///        "x": {
    ///          "type": "number"
    ///        },
    ///        "y": {
    ///          "type": "number"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanel {
        ///The panel dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub dashboard_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub data: ::std::vec::Vec<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///The name of the dashboard_panel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        pub params: DashboardPanelParams,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<DashboardPanelPosition>,
    }
    impl DashboardPanel {
        pub fn builder() -> builder::DashboardPanel {
            Default::default()
        }
    }
    ///`DashboardPanelList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/dashboard_panel"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the dashboard_panel",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "dashboard_panels"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelList {
        pub data: ::std::vec::Vec<DashboardPanelListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl DashboardPanelList {
        pub fn builder() -> builder::DashboardPanelList {
            Default::default()
        }
    }
    ///`DashboardPanelListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/dashboard_panel"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the dashboard_panel",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboard_panels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelListDataItem {
        pub attributes: DashboardPanel,
        ///Unique ID of the dashboard_panel
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: DashboardPanelListDataItemType,
    }
    impl DashboardPanelListDataItem {
        pub fn builder() -> builder::DashboardPanelListDataItem {
            Default::default()
        }
    }
    ///`DashboardPanelListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboard_panels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelListDataItemType {
        #[serde(rename = "dashboard_panels")]
        DashboardPanels,
    }
    impl ::std::fmt::Display for DashboardPanelListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::DashboardPanels => f.write_str("dashboard_panels"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboard_panels" => Ok(Self::DashboardPanels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardPanelListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "datalabels": {
    ///      "type": "object",
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    "datasets": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "aggregate": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "properties": {
    ///              "cumulative": {
    ///                "type": [
    ///                  "boolean",
    ///                  "null"
    ///                ]
    ///              },
    ///              "key": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "operation": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "count",
    ///                  "sum",
    ///                  "average"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "collection": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alerts",
    ///              "incidents",
    ///              "incident_post_mortems",
    ///              "incident_action_items",
    ///              "users"
    ///            ]
    ///          },
    ///          "filter": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "operation": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "and",
    ///                    "or"
    ///                  ]
    ///                },
    ///                "rules": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "condition": {
    ///                        "type": "string"
    ///                      },
    ///                      "key": {
    ///                        "type": "string"
    ///                      },
    ///                      "operation": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "and",
    ///                          "or"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "group_by": {
    ///            "oneOf": [
    ///              {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "custom_field",
    ///                      "incident_role",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          },
    ///          "name": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "display": {
    ///      "type": "string",
    ///      "enum": [
    ///        "line_chart",
    ///        "line_stepped_chart",
    ///        "column_chart",
    ///        "stacked_column_chart",
    ///        "monitoring_chart",
    ///        "pie_chart",
    ///        "table",
    ///        "aggregate_value"
    ///      ]
    ///    },
    ///    "legend": {
    ///      "type": "object",
    ///      "properties": {
    ///        "groups": {
    ///          "default": "all",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "charted"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "table_fields": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub datalabels: ::std::option::Option<DashboardPanelParamsDatalabels>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub datasets: ::std::vec::Vec<DashboardPanelParamsDatasetsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub display: ::std::option::Option<DashboardPanelParamsDisplay>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub legend: ::std::option::Option<DashboardPanelParamsLegend>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub table_fields: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for DashboardPanelParams {
        fn default() -> Self {
            Self {
                datalabels: Default::default(),
                datasets: Default::default(),
                description: Default::default(),
                display: Default::default(),
                legend: Default::default(),
                table_fields: Default::default(),
            }
        }
    }
    impl DashboardPanelParams {
        pub fn builder() -> builder::DashboardPanelParams {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatalabels`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsDatalabels {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for DashboardPanelParamsDatalabels {
        fn default() -> Self {
            Self {
                enabled: Default::default(),
            }
        }
    }
    impl DashboardPanelParamsDatalabels {
        pub fn builder() -> builder::DashboardPanelParamsDatalabels {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatasetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "aggregate": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "cumulative": {
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "key": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "operation": {
    ///          "type": "string",
    ///          "enum": [
    ///            "count",
    ///            "sum",
    ///            "average"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "collection": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts",
    ///        "incidents",
    ///        "incident_post_mortems",
    ///        "incident_action_items",
    ///        "users"
    ///      ]
    ///    },
    ///    "filter": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "operation": {
    ///            "type": "string",
    ///            "enum": [
    ///              "and",
    ///              "or"
    ///            ]
    ///          },
    ///          "rules": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "condition": {
    ///                  "type": "string"
    ///                },
    ///                "key": {
    ///                  "type": "string"
    ///                },
    ///                "operation": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "and",
    ///                    "or"
    ///                  ]
    ///                },
    ///                "value": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "group_by": {
    ///      "oneOf": [
    ///        {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "key",
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "key": {
    ///              "type": "string",
    ///              "enum": [
    ///                "custom_field",
    ///                "incident_role",
    ///                "alert_field"
    ///              ]
    ///            },
    ///            "value": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsDatasetsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub aggregate: ::std::option::Option<DashboardPanelParamsDatasetsItemAggregate>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub collection: ::std::option::Option<
            DashboardPanelParamsDatasetsItemCollection,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub filter: ::std::vec::Vec<DashboardPanelParamsDatasetsItemFilterItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by: ::std::option::Option<DashboardPanelParamsDatasetsItemGroupBy>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for DashboardPanelParamsDatasetsItem {
        fn default() -> Self {
            Self {
                aggregate: Default::default(),
                collection: Default::default(),
                filter: Default::default(),
                group_by: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl DashboardPanelParamsDatasetsItem {
        pub fn builder() -> builder::DashboardPanelParamsDatasetsItem {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatasetsItemAggregate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "cumulative": {
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "key": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "count",
    ///        "sum",
    ///        "average"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsDatasetsItemAggregate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cumulative: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            DashboardPanelParamsDatasetsItemAggregateOperation,
        >,
    }
    impl ::std::default::Default for DashboardPanelParamsDatasetsItemAggregate {
        fn default() -> Self {
            Self {
                cumulative: Default::default(),
                key: Default::default(),
                operation: Default::default(),
            }
        }
    }
    impl DashboardPanelParamsDatasetsItemAggregate {
        pub fn builder() -> builder::DashboardPanelParamsDatasetsItemAggregate {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatasetsItemAggregateOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "count",
    ///    "sum",
    ///    "average"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsDatasetsItemAggregateOperation {
        #[serde(rename = "count")]
        Count,
        #[serde(rename = "sum")]
        Sum,
        #[serde(rename = "average")]
        Average,
    }
    impl ::std::fmt::Display for DashboardPanelParamsDatasetsItemAggregateOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Count => f.write_str("count"),
                Self::Sum => f.write_str("sum"),
                Self::Average => f.write_str("average"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelParamsDatasetsItemAggregateOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "count" => Ok(Self::Count),
                "sum" => Ok(Self::Sum),
                "average" => Ok(Self::Average),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for DashboardPanelParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParamsDatasetsItemCollection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts",
    ///    "incidents",
    ///    "incident_post_mortems",
    ///    "incident_action_items",
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsDatasetsItemCollection {
        #[serde(rename = "alerts")]
        Alerts,
        #[serde(rename = "incidents")]
        Incidents,
        #[serde(rename = "incident_post_mortems")]
        IncidentPostMortems,
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display for DashboardPanelParamsDatasetsItemCollection {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
                Self::Incidents => f.write_str("incidents"),
                Self::IncidentPostMortems => f.write_str("incident_post_mortems"),
                Self::IncidentActionItems => f.write_str("incident_action_items"),
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelParamsDatasetsItemCollection {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                "incidents" => Ok(Self::Incidents),
                "incident_post_mortems" => Ok(Self::IncidentPostMortems),
                "incident_action_items" => Ok(Self::IncidentActionItems),
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardPanelParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParamsDatasetsItemFilterItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "condition": {
    ///            "type": "string"
    ///          },
    ///          "key": {
    ///            "type": "string"
    ///          },
    ///          "operation": {
    ///            "type": "string",
    ///            "enum": [
    ///              "and",
    ///              "or"
    ///            ]
    ///          },
    ///          "value": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsDatasetsItemFilterItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            DashboardPanelParamsDatasetsItemFilterItemOperation,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<DashboardPanelParamsDatasetsItemFilterItemRulesItem>,
    }
    impl ::std::default::Default for DashboardPanelParamsDatasetsItemFilterItem {
        fn default() -> Self {
            Self {
                operation: Default::default(),
                rules: Default::default(),
            }
        }
    }
    impl DashboardPanelParamsDatasetsItemFilterItem {
        pub fn builder() -> builder::DashboardPanelParamsDatasetsItemFilterItem {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatasetsItemFilterItemOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsDatasetsItemFilterItemOperation {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display for DashboardPanelParamsDatasetsItemFilterItemOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelParamsDatasetsItemFilterItemOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for DashboardPanelParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParamsDatasetsItemFilterItemRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "condition": {
    ///      "type": "string"
    ///    },
    ///    "key": {
    ///      "type": "string"
    ///    },
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsDatasetsItemFilterItemRulesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for DashboardPanelParamsDatasetsItemFilterItemRulesItem {
        fn default() -> Self {
            Self {
                condition: Default::default(),
                key: Default::default(),
                operation: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl DashboardPanelParamsDatasetsItemFilterItemRulesItem {
        pub fn builder() -> builder::DashboardPanelParamsDatasetsItemFilterItemRulesItem {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display
    for DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr
    for DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParamsDatasetsItemGroupBy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "key",
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "key": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_field",
    ///            "incident_role",
    ///            "alert_field"
    ///          ]
    ///        },
    ///        "value": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum DashboardPanelParamsDatasetsItemGroupBy {
        Variant0(::std::option::Option<::std::string::String>),
        Variant1(::std::option::Option<DashboardPanelParamsDatasetsItemGroupByVariant1>),
    }
    impl ::std::convert::From<::std::option::Option<::std::string::String>>
    for DashboardPanelParamsDatasetsItemGroupBy {
        fn from(value: ::std::option::Option<::std::string::String>) -> Self {
            Self::Variant0(value)
        }
    }
    impl ::std::convert::From<
        ::std::option::Option<DashboardPanelParamsDatasetsItemGroupByVariant1>,
    > for DashboardPanelParamsDatasetsItemGroupBy {
        fn from(
            value: ::std::option::Option<DashboardPanelParamsDatasetsItemGroupByVariant1>,
        ) -> Self {
            Self::Variant1(value)
        }
    }
    ///`DashboardPanelParamsDatasetsItemGroupByVariant1`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field",
    ///        "incident_role",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsDatasetsItemGroupByVariant1 {
        pub key: DashboardPanelParamsDatasetsItemGroupByVariant1Key,
        pub value: ::std::string::String,
    }
    impl DashboardPanelParamsDatasetsItemGroupByVariant1 {
        pub fn builder() -> builder::DashboardPanelParamsDatasetsItemGroupByVariant1 {
            Default::default()
        }
    }
    ///`DashboardPanelParamsDatasetsItemGroupByVariant1Key`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field",
    ///    "incident_role",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsDatasetsItemGroupByVariant1Key {
        #[serde(rename = "custom_field")]
        CustomField,
        #[serde(rename = "incident_role")]
        IncidentRole,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display for DashboardPanelParamsDatasetsItemGroupByVariant1Key {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomField => f.write_str("custom_field"),
                Self::IncidentRole => f.write_str("incident_role"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelParamsDatasetsItemGroupByVariant1Key {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field" => Ok(Self::CustomField),
                "incident_role" => Ok(Self::IncidentRole),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for DashboardPanelParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParamsDisplay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "line_chart",
    ///    "line_stepped_chart",
    ///    "column_chart",
    ///    "stacked_column_chart",
    ///    "monitoring_chart",
    ///    "pie_chart",
    ///    "table",
    ///    "aggregate_value"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsDisplay {
        #[serde(rename = "line_chart")]
        LineChart,
        #[serde(rename = "line_stepped_chart")]
        LineSteppedChart,
        #[serde(rename = "column_chart")]
        ColumnChart,
        #[serde(rename = "stacked_column_chart")]
        StackedColumnChart,
        #[serde(rename = "monitoring_chart")]
        MonitoringChart,
        #[serde(rename = "pie_chart")]
        PieChart,
        #[serde(rename = "table")]
        Table,
        #[serde(rename = "aggregate_value")]
        AggregateValue,
    }
    impl ::std::fmt::Display for DashboardPanelParamsDisplay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LineChart => f.write_str("line_chart"),
                Self::LineSteppedChart => f.write_str("line_stepped_chart"),
                Self::ColumnChart => f.write_str("column_chart"),
                Self::StackedColumnChart => f.write_str("stacked_column_chart"),
                Self::MonitoringChart => f.write_str("monitoring_chart"),
                Self::PieChart => f.write_str("pie_chart"),
                Self::Table => f.write_str("table"),
                Self::AggregateValue => f.write_str("aggregate_value"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelParamsDisplay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "line_chart" => Ok(Self::LineChart),
                "line_stepped_chart" => Ok(Self::LineSteppedChart),
                "column_chart" => Ok(Self::ColumnChart),
                "stacked_column_chart" => Ok(Self::StackedColumnChart),
                "monitoring_chart" => Ok(Self::MonitoringChart),
                "pie_chart" => Ok(Self::PieChart),
                "table" => Ok(Self::Table),
                "aggregate_value" => Ok(Self::AggregateValue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardPanelParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for DashboardPanelParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardPanelParamsLegend`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "groups": {
    ///      "default": "all",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "charted"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelParamsLegend {
        #[serde(default = "defaults::dashboard_panel_params_legend_groups")]
        pub groups: DashboardPanelParamsLegendGroups,
    }
    impl ::std::default::Default for DashboardPanelParamsLegend {
        fn default() -> Self {
            Self {
                groups: defaults::dashboard_panel_params_legend_groups(),
            }
        }
    }
    impl DashboardPanelParamsLegend {
        pub fn builder() -> builder::DashboardPanelParamsLegend {
            Default::default()
        }
    }
    ///`DashboardPanelParamsLegendGroups`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "all",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "charted"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelParamsLegendGroups {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "charted")]
        Charted,
    }
    impl ::std::fmt::Display for DashboardPanelParamsLegendGroups {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Charted => f.write_str("charted"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelParamsLegendGroups {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "charted" => Ok(Self::Charted),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardPanelParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for DashboardPanelParamsLegendGroups {
        fn default() -> Self {
            DashboardPanelParamsLegendGroups::All
        }
    }
    ///`DashboardPanelPosition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "h",
    ///    "w",
    ///    "x",
    ///    "y"
    ///  ],
    ///  "properties": {
    ///    "h": {
    ///      "type": "number"
    ///    },
    ///    "w": {
    ///      "type": "number"
    ///    },
    ///    "x": {
    ///      "type": "number"
    ///    },
    ///    "y": {
    ///      "type": "number"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelPosition {
        pub h: f64,
        pub w: f64,
        pub x: f64,
        pub y: f64,
    }
    impl DashboardPanelPosition {
        pub fn builder() -> builder::DashboardPanelPosition {
            Default::default()
        }
    }
    ///`DashboardPanelResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/dashboard_panel"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the dashboard_panel",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "dashboard_panels"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelResponse {
        pub data: DashboardPanelResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl DashboardPanelResponse {
        pub fn builder() -> builder::DashboardPanelResponse {
            Default::default()
        }
    }
    ///`DashboardPanelResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/dashboard_panel"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the dashboard_panel",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboard_panels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardPanelResponseData {
        pub attributes: DashboardPanel,
        ///Unique ID of the dashboard_panel
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: DashboardPanelResponseDataType,
    }
    impl DashboardPanelResponseData {
        pub fn builder() -> builder::DashboardPanelResponseData {
            Default::default()
        }
    }
    ///`DashboardPanelResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboard_panels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardPanelResponseDataType {
        #[serde(rename = "dashboard_panels")]
        DashboardPanels,
    }
    impl ::std::fmt::Display for DashboardPanelResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::DashboardPanels => f.write_str("dashboard_panels"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardPanelResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboard_panels" => Ok(Self::DashboardPanels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardPanelResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for DashboardPanelResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for DashboardPanelResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DashboardResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/dashboard"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the dashboard",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "dashboards"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardResponse {
        pub data: DashboardResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl DashboardResponse {
        pub fn builder() -> builder::DashboardResponse {
            Default::default()
        }
    }
    ///`DashboardResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/dashboard"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboards"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DashboardResponseData {
        pub attributes: Dashboard,
        ///Unique ID of the dashboard
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: DashboardResponseDataType,
    }
    impl DashboardResponseData {
        pub fn builder() -> builder::DashboardResponseData {
            Default::default()
        }
    }
    ///`DashboardResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboards"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DashboardResponseDataType {
        #[serde(rename = "dashboards")]
        Dashboards,
    }
    impl ::std::fmt::Display for DashboardResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Dashboards => f.write_str("dashboards"),
            }
        }
    }
    impl ::std::str::FromStr for DashboardResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboards" => Ok(Self::Dashboards),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DashboardResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for DashboardResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for DashboardResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`DeleteAlertRouteResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "deleted": {
    ///              "type": "boolean"
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DeleteAlertRouteResponse {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<DeleteAlertRouteResponseData>,
    }
    impl ::std::default::Default for DeleteAlertRouteResponse {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl DeleteAlertRouteResponse {
        pub fn builder() -> builder::DeleteAlertRouteResponse {
            Default::default()
        }
    }
    ///`DeleteAlertRouteResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "deleted": {
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DeleteAlertRouteResponseData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<DeleteAlertRouteResponseDataAttributes>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for DeleteAlertRouteResponseData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl DeleteAlertRouteResponseData {
        pub fn builder() -> builder::DeleteAlertRouteResponseData {
            Default::default()
        }
    }
    ///`DeleteAlertRouteResponseDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "deleted": {
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DeleteAlertRouteResponseDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deleted: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for DeleteAlertRouteResponseDataAttributes {
        fn default() -> Self {
            Self {
                deleted: Default::default(),
            }
        }
    }
    impl DeleteAlertRouteResponseDataAttributes {
        pub fn builder() -> builder::DeleteAlertRouteResponseDataAttributes {
            Default::default()
        }
    }
    ///`DuplicateIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "auto_cancel_incident": {
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "duplicate_incident_id": {
    ///              "type": "string"
    ///            },
    ///            "reason_for_cancellation": {
    ///              "description": "Why was the incident cancelled?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DuplicateIncident {
        pub data: DuplicateIncidentData,
    }
    impl DuplicateIncident {
        pub fn builder() -> builder::DuplicateIncident {
            Default::default()
        }
    }
    ///`DuplicateIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "auto_cancel_incident": {
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "duplicate_incident_id": {
    ///          "type": "string"
    ///        },
    ///        "reason_for_cancellation": {
    ///          "description": "Why was the incident cancelled?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct DuplicateIncidentData {
        pub attributes: DuplicateIncidentDataAttributes,
        #[serde(rename = "type")]
        pub type_: DuplicateIncidentDataType,
    }
    impl DuplicateIncidentData {
        pub fn builder() -> builder::DuplicateIncidentData {
            Default::default()
        }
    }
    ///`DuplicateIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "auto_cancel_incident": {
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "duplicate_incident_id": {
    ///      "type": "string"
    ///    },
    ///    "reason_for_cancellation": {
    ///      "description": "Why was the incident cancelled?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct DuplicateIncidentDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_cancel_incident: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duplicate_incident_id: ::std::option::Option<::std::string::String>,
        ///Why was the incident cancelled?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub reason_for_cancellation: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for DuplicateIncidentDataAttributes {
        fn default() -> Self {
            Self {
                auto_cancel_incident: Default::default(),
                duplicate_incident_id: Default::default(),
                reason_for_cancellation: Default::default(),
            }
        }
    }
    impl DuplicateIncidentDataAttributes {
        pub fn builder() -> builder::DuplicateIncidentDataAttributes {
            Default::default()
        }
    }
    ///`DuplicateIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum DuplicateIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for DuplicateIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for DuplicateIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for DuplicateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for DuplicateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for DuplicateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EdgeConnector`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "status"
    ///          ],
    ///          "properties": {
    ///            "created_at": {
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "deliveries_completed_count": {
    ///              "description": "Number of completed deliveries",
    ///              "type": "integer"
    ///            },
    ///            "deliveries_count": {
    ///              "description": "Total number of deliveries",
    ///              "type": "integer"
    ///            },
    ///            "deliveries_failed_count": {
    ///              "description": "Number of failed deliveries",
    ///              "type": "integer"
    ///            },
    ///            "deliveries_queued_count": {
    ///              "description": "Number of queued deliveries",
    ///              "type": "integer"
    ///            },
    ///            "deliveries_running_count": {
    ///              "description": "Number of running deliveries",
    ///              "type": "integer"
    ///            },
    ///            "description": {
    ///              "description": "Connector description",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "last_poll_at": {
    ///              "description": "Last time connector polled",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "name": {
    ///              "description": "Connector name",
    ///              "type": "string"
    ///            },
    ///            "online": {
    ///              "description": "Whether connector is currently online",
    ///              "type": "boolean"
    ///            },
    ///            "status": {
    ///              "description": "Connector status",
    ///              "type": "string",
    ///              "enum": [
    ///                "active",
    ///                "paused"
    ///              ]
    ///            },
    ///            "subscriptions": {
    ///              "description": "Array of event types to subscribe to",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "updated_at": {
    ///              "type": "string",
    ///              "format": "date-time"
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "edge_connectors"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnector {
        pub data: EdgeConnectorData,
    }
    impl EdgeConnector {
        pub fn builder() -> builder::EdgeConnector {
            Default::default()
        }
    }
    ///`EdgeConnectorAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "action_type",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "action_type": {
    ///              "description": "Action type",
    ///              "type": "string",
    ///              "enum": [
    ///                "script",
    ///                "http"
    ///              ]
    ///            },
    ///            "created_at": {
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "description": {
    ///              "description": "Action description",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "icon": {
    ///              "description": "Action icon",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "bolt",
    ///                "bolt-slash",
    ///                "cog",
    ///                "command-line",
    ///                "code-bracket",
    ///                "server",
    ///                "server-stack",
    ///                "play",
    ///                "arrow-path",
    ///                "wrench-screwdriver",
    ///                "cube",
    ///                "rocket-launch"
    ///              ]
    ///            },
    ///            "last_executed_at": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "name": {
    ///              "description": "Action name",
    ///              "type": "string"
    ///            },
    ///            "parameters": {
    ///              "description": "Parameter definitions",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "default": {
    ///                    "description": "Default value (any type)",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "description": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "name": {
    ///                    "type": "string"
    ///                  },
    ///                  "options": {
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "required": {
    ///                    "type": "boolean"
    ///                  },
    ///                  "type": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "string",
    ///                      "number",
    ///                      "boolean"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slug": {
    ///              "description": "Action slug",
    ///              "type": "string"
    ///            },
    ///            "timeout": {
    ///              "description": "Timeout in seconds",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "updated_at": {
    ///              "type": "string",
    ///              "format": "date-time"
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "edge_connector_actions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnectorAction {
        pub data: EdgeConnectorActionData,
    }
    impl EdgeConnectorAction {
        pub fn builder() -> builder::EdgeConnectorAction {
            Default::default()
        }
    }
    ///`EdgeConnectorActionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "action_type",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "action_type": {
    ///          "description": "Action type",
    ///          "type": "string",
    ///          "enum": [
    ///            "script",
    ///            "http"
    ///          ]
    ///        },
    ///        "created_at": {
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "description": {
    ///          "description": "Action description",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "icon": {
    ///          "description": "Action icon",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "bolt",
    ///            "bolt-slash",
    ///            "cog",
    ///            "command-line",
    ///            "code-bracket",
    ///            "server",
    ///            "server-stack",
    ///            "play",
    ///            "arrow-path",
    ///            "wrench-screwdriver",
    ///            "cube",
    ///            "rocket-launch"
    ///          ]
    ///        },
    ///        "last_executed_at": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "name": {
    ///          "description": "Action name",
    ///          "type": "string"
    ///        },
    ///        "parameters": {
    ///          "description": "Parameter definitions",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "default": {
    ///                "description": "Default value (any type)",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "description": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              },
    ///              "options": {
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "required": {
    ///                "type": "boolean"
    ///              },
    ///              "type": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "string",
    ///                  "number",
    ///                  "boolean"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slug": {
    ///          "description": "Action slug",
    ///          "type": "string"
    ///        },
    ///        "timeout": {
    ///          "description": "Timeout in seconds",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "updated_at": {
    ///          "type": "string",
    ///          "format": "date-time"
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "edge_connector_actions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnectorActionData {
        pub attributes: EdgeConnectorActionDataAttributes,
        pub id: ::uuid::Uuid,
        #[serde(rename = "type")]
        pub type_: EdgeConnectorActionDataType,
    }
    impl EdgeConnectorActionData {
        pub fn builder() -> builder::EdgeConnectorActionData {
            Default::default()
        }
    }
    ///`EdgeConnectorActionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "action_type",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "action_type": {
    ///      "description": "Action type",
    ///      "type": "string",
    ///      "enum": [
    ///        "script",
    ///        "http"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "description": {
    ///      "description": "Action description",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "description": "Action icon",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "bolt",
    ///        "bolt-slash",
    ///        "cog",
    ///        "command-line",
    ///        "code-bracket",
    ///        "server",
    ///        "server-stack",
    ///        "play",
    ///        "arrow-path",
    ///        "wrench-screwdriver",
    ///        "cube",
    ///        "rocket-launch"
    ///      ]
    ///    },
    ///    "last_executed_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "name": {
    ///      "description": "Action name",
    ///      "type": "string"
    ///    },
    ///    "parameters": {
    ///      "description": "Parameter definitions",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "default": {
    ///            "description": "Default value (any type)",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "description": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          },
    ///          "options": {
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "required": {
    ///            "type": "boolean"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "string",
    ///              "number",
    ///              "boolean"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "Action slug",
    ///      "type": "string"
    ///    },
    ///    "timeout": {
    ///      "description": "Timeout in seconds",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "type": "string",
    ///      "format": "date-time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnectorActionDataAttributes {
        ///Action type
        pub action_type: EdgeConnectorActionDataAttributesActionType,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///Action description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Action icon
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<EdgeConnectorActionDataAttributesIcon>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_executed_at: ::std::option::Option<
            ::chrono::DateTime<::chrono::offset::Utc>,
        >,
        ///Action name
        pub name: ::std::string::String,
        ///Parameter definitions
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parameters: ::std::option::Option<
            ::std::vec::Vec<EdgeConnectorActionDataAttributesParametersItem>,
        >,
        ///Action slug
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Timeout in seconds
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub timeout: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
    }
    impl EdgeConnectorActionDataAttributes {
        pub fn builder() -> builder::EdgeConnectorActionDataAttributes {
            Default::default()
        }
    }
    ///Action type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Action type",
    ///  "type": "string",
    ///  "enum": [
    ///    "script",
    ///    "http"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EdgeConnectorActionDataAttributesActionType {
        #[serde(rename = "script")]
        Script,
        #[serde(rename = "http")]
        Http,
    }
    impl ::std::fmt::Display for EdgeConnectorActionDataAttributesActionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Script => f.write_str("script"),
                Self::Http => f.write_str("http"),
            }
        }
    }
    impl ::std::str::FromStr for EdgeConnectorActionDataAttributesActionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "script" => Ok(Self::Script),
                "http" => Ok(Self::Http),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EdgeConnectorActionDataAttributesActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EdgeConnectorActionDataAttributesActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EdgeConnectorActionDataAttributesActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Action icon
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Action icon",
    ///  "type": "string",
    ///  "enum": [
    ///    "bolt",
    ///    "bolt-slash",
    ///    "cog",
    ///    "command-line",
    ///    "code-bracket",
    ///    "server",
    ///    "server-stack",
    ///    "play",
    ///    "arrow-path",
    ///    "wrench-screwdriver",
    ///    "cube",
    ///    "rocket-launch"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EdgeConnectorActionDataAttributesIcon {
        #[serde(rename = "bolt")]
        Bolt,
        #[serde(rename = "bolt-slash")]
        BoltSlash,
        #[serde(rename = "cog")]
        Cog,
        #[serde(rename = "command-line")]
        CommandLine,
        #[serde(rename = "code-bracket")]
        CodeBracket,
        #[serde(rename = "server")]
        Server,
        #[serde(rename = "server-stack")]
        ServerStack,
        #[serde(rename = "play")]
        Play,
        #[serde(rename = "arrow-path")]
        ArrowPath,
        #[serde(rename = "wrench-screwdriver")]
        WrenchScrewdriver,
        #[serde(rename = "cube")]
        Cube,
        #[serde(rename = "rocket-launch")]
        RocketLaunch,
    }
    impl ::std::fmt::Display for EdgeConnectorActionDataAttributesIcon {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Bolt => f.write_str("bolt"),
                Self::BoltSlash => f.write_str("bolt-slash"),
                Self::Cog => f.write_str("cog"),
                Self::CommandLine => f.write_str("command-line"),
                Self::CodeBracket => f.write_str("code-bracket"),
                Self::Server => f.write_str("server"),
                Self::ServerStack => f.write_str("server-stack"),
                Self::Play => f.write_str("play"),
                Self::ArrowPath => f.write_str("arrow-path"),
                Self::WrenchScrewdriver => f.write_str("wrench-screwdriver"),
                Self::Cube => f.write_str("cube"),
                Self::RocketLaunch => f.write_str("rocket-launch"),
            }
        }
    }
    impl ::std::str::FromStr for EdgeConnectorActionDataAttributesIcon {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "bolt" => Ok(Self::Bolt),
                "bolt-slash" => Ok(Self::BoltSlash),
                "cog" => Ok(Self::Cog),
                "command-line" => Ok(Self::CommandLine),
                "code-bracket" => Ok(Self::CodeBracket),
                "server" => Ok(Self::Server),
                "server-stack" => Ok(Self::ServerStack),
                "play" => Ok(Self::Play),
                "arrow-path" => Ok(Self::ArrowPath),
                "wrench-screwdriver" => Ok(Self::WrenchScrewdriver),
                "cube" => Ok(Self::Cube),
                "rocket-launch" => Ok(Self::RocketLaunch),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EdgeConnectorActionDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EdgeConnectorActionDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EdgeConnectorActionDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EdgeConnectorActionDataAttributesParametersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "default": {
    ///      "description": "Default value (any type)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "options": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "required": {
    ///      "type": "boolean"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "string",
    ///        "number",
    ///        "boolean"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnectorActionDataAttributesParametersItem {
        ///Default value (any type)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub options: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<
            EdgeConnectorActionDataAttributesParametersItemType,
        >,
    }
    impl ::std::default::Default for EdgeConnectorActionDataAttributesParametersItem {
        fn default() -> Self {
            Self {
                default: Default::default(),
                description: Default::default(),
                name: Default::default(),
                options: Default::default(),
                required: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl EdgeConnectorActionDataAttributesParametersItem {
        pub fn builder() -> builder::EdgeConnectorActionDataAttributesParametersItem {
            Default::default()
        }
    }
    ///`EdgeConnectorActionDataAttributesParametersItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "string",
    ///    "number",
    ///    "boolean"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EdgeConnectorActionDataAttributesParametersItemType {
        #[serde(rename = "string")]
        String,
        #[serde(rename = "number")]
        Number,
        #[serde(rename = "boolean")]
        Boolean,
    }
    impl ::std::fmt::Display for EdgeConnectorActionDataAttributesParametersItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::String => f.write_str("string"),
                Self::Number => f.write_str("number"),
                Self::Boolean => f.write_str("boolean"),
            }
        }
    }
    impl ::std::str::FromStr for EdgeConnectorActionDataAttributesParametersItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "string" => Ok(Self::String),
                "number" => Ok(Self::Number),
                "boolean" => Ok(Self::Boolean),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EdgeConnectorActionDataAttributesParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EdgeConnectorActionDataAttributesParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EdgeConnectorActionDataAttributesParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EdgeConnectorActionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "edge_connector_actions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EdgeConnectorActionDataType {
        #[serde(rename = "edge_connector_actions")]
        EdgeConnectorActions,
    }
    impl ::std::fmt::Display for EdgeConnectorActionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EdgeConnectorActions => f.write_str("edge_connector_actions"),
            }
        }
    }
    impl ::std::str::FromStr for EdgeConnectorActionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "edge_connector_actions" => Ok(Self::EdgeConnectorActions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EdgeConnectorActionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EdgeConnectorActionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for EdgeConnectorActionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EdgeConnectorData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "status"
    ///      ],
    ///      "properties": {
    ///        "created_at": {
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "deliveries_completed_count": {
    ///          "description": "Number of completed deliveries",
    ///          "type": "integer"
    ///        },
    ///        "deliveries_count": {
    ///          "description": "Total number of deliveries",
    ///          "type": "integer"
    ///        },
    ///        "deliveries_failed_count": {
    ///          "description": "Number of failed deliveries",
    ///          "type": "integer"
    ///        },
    ///        "deliveries_queued_count": {
    ///          "description": "Number of queued deliveries",
    ///          "type": "integer"
    ///        },
    ///        "deliveries_running_count": {
    ///          "description": "Number of running deliveries",
    ///          "type": "integer"
    ///        },
    ///        "description": {
    ///          "description": "Connector description",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "last_poll_at": {
    ///          "description": "Last time connector polled",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "name": {
    ///          "description": "Connector name",
    ///          "type": "string"
    ///        },
    ///        "online": {
    ///          "description": "Whether connector is currently online",
    ///          "type": "boolean"
    ///        },
    ///        "status": {
    ///          "description": "Connector status",
    ///          "type": "string",
    ///          "enum": [
    ///            "active",
    ///            "paused"
    ///          ]
    ///        },
    ///        "subscriptions": {
    ///          "description": "Array of event types to subscribe to",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "updated_at": {
    ///          "type": "string",
    ///          "format": "date-time"
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "edge_connectors"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnectorData {
        pub attributes: EdgeConnectorDataAttributes,
        pub id: ::uuid::Uuid,
        #[serde(rename = "type")]
        pub type_: EdgeConnectorDataType,
    }
    impl EdgeConnectorData {
        pub fn builder() -> builder::EdgeConnectorData {
            Default::default()
        }
    }
    ///`EdgeConnectorDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "deliveries_completed_count": {
    ///      "description": "Number of completed deliveries",
    ///      "type": "integer"
    ///    },
    ///    "deliveries_count": {
    ///      "description": "Total number of deliveries",
    ///      "type": "integer"
    ///    },
    ///    "deliveries_failed_count": {
    ///      "description": "Number of failed deliveries",
    ///      "type": "integer"
    ///    },
    ///    "deliveries_queued_count": {
    ///      "description": "Number of queued deliveries",
    ///      "type": "integer"
    ///    },
    ///    "deliveries_running_count": {
    ///      "description": "Number of running deliveries",
    ///      "type": "integer"
    ///    },
    ///    "description": {
    ///      "description": "Connector description",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "last_poll_at": {
    ///      "description": "Last time connector polled",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "name": {
    ///      "description": "Connector name",
    ///      "type": "string"
    ///    },
    ///    "online": {
    ///      "description": "Whether connector is currently online",
    ///      "type": "boolean"
    ///    },
    ///    "status": {
    ///      "description": "Connector status",
    ///      "type": "string",
    ///      "enum": [
    ///        "active",
    ///        "paused"
    ///      ]
    ///    },
    ///    "subscriptions": {
    ///      "description": "Array of event types to subscribe to",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "type": "string",
    ///      "format": "date-time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EdgeConnectorDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///Number of completed deliveries
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deliveries_completed_count: ::std::option::Option<i64>,
        ///Total number of deliveries
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deliveries_count: ::std::option::Option<i64>,
        ///Number of failed deliveries
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deliveries_failed_count: ::std::option::Option<i64>,
        ///Number of queued deliveries
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deliveries_queued_count: ::std::option::Option<i64>,
        ///Number of running deliveries
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deliveries_running_count: ::std::option::Option<i64>,
        ///Connector description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Last time connector polled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_poll_at: ::std::option::Option<
            ::chrono::DateTime<::chrono::offset::Utc>,
        >,
        ///Connector name
        pub name: ::std::string::String,
        ///Whether connector is currently online
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub online: ::std::option::Option<bool>,
        ///Connector status
        pub status: EdgeConnectorDataAttributesStatus,
        ///Array of event types to subscribe to
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub subscriptions: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
    }
    impl EdgeConnectorDataAttributes {
        pub fn builder() -> builder::EdgeConnectorDataAttributes {
            Default::default()
        }
    }
    ///Connector status
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Connector status",
    ///  "type": "string",
    ///  "enum": [
    ///    "active",
    ///    "paused"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EdgeConnectorDataAttributesStatus {
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "paused")]
        Paused,
    }
    impl ::std::fmt::Display for EdgeConnectorDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Active => f.write_str("active"),
                Self::Paused => f.write_str("paused"),
            }
        }
    }
    impl ::std::str::FromStr for EdgeConnectorDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "active" => Ok(Self::Active),
                "paused" => Ok(Self::Paused),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EdgeConnectorDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EdgeConnectorDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EdgeConnectorDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EdgeConnectorDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "edge_connectors"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EdgeConnectorDataType {
        #[serde(rename = "edge_connectors")]
        EdgeConnectors,
    }
    impl ::std::fmt::Display for EdgeConnectorDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EdgeConnectors => f.write_str("edge_connectors"),
            }
        }
    }
    impl ::std::str::FromStr for EdgeConnectorDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "edge_connectors" => Ok(Self::EdgeConnectors),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EdgeConnectorDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for EdgeConnectorDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for EdgeConnectorDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Environment`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the environment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the environment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the environment",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails attached to the environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the environment",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this environment.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the environment",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Environment {
        ///The hex color of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the environment
        pub name: ::std::string::String,
        ///Emails attached to the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this environment.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub properties: ::std::option::Option<
            ::std::vec::Vec<EnvironmentPropertiesItem>,
        >,
        ///Slack Aliases associated with this environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<EnvironmentSlackAliasesItem>,
        >,
        ///Slack Channels associated with this environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<EnvironmentSlackChannelsItem>,
        >,
        ///The slug of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Environment {
        pub fn builder() -> builder::Environment {
            Default::default()
        }
    }
    ///`EnvironmentList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/environment"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the environment",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "environments"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentList {
        pub data: ::std::vec::Vec<EnvironmentListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl EnvironmentList {
        pub fn builder() -> builder::EnvironmentList {
            Default::default()
        }
    }
    ///`EnvironmentListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/environment"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the environment",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "environments"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentListDataItem {
        pub attributes: Environment,
        ///Unique ID of the environment
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: EnvironmentListDataItemType,
    }
    impl EnvironmentListDataItem {
        pub fn builder() -> builder::EnvironmentListDataItem {
            Default::default()
        }
    }
    ///`EnvironmentListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EnvironmentListDataItemType {
        #[serde(rename = "environments")]
        Environments,
    }
    impl ::std::fmt::Display for EnvironmentListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
            }
        }
    }
    impl ::std::str::FromStr for EnvironmentListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EnvironmentListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EnvironmentListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for EnvironmentListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl EnvironmentPropertiesItem {
        pub fn builder() -> builder::EnvironmentPropertiesItem {
            Default::default()
        }
    }
    ///`EnvironmentResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/environment"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the environment",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "environments"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentResponse {
        pub data: EnvironmentResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl EnvironmentResponse {
        pub fn builder() -> builder::EnvironmentResponse {
            Default::default()
        }
    }
    ///`EnvironmentResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/environment"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the environment",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "environments"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentResponseData {
        pub attributes: Environment,
        ///Unique ID of the environment
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: EnvironmentResponseDataType,
    }
    impl EnvironmentResponseData {
        pub fn builder() -> builder::EnvironmentResponseData {
            Default::default()
        }
    }
    ///`EnvironmentResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EnvironmentResponseDataType {
        #[serde(rename = "environments")]
        Environments,
    }
    impl ::std::fmt::Display for EnvironmentResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
            }
        }
    }
    impl ::std::str::FromStr for EnvironmentResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EnvironmentResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EnvironmentResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for EnvironmentResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EnvironmentSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl EnvironmentSlackAliasesItem {
        pub fn builder() -> builder::EnvironmentSlackAliasesItem {
            Default::default()
        }
    }
    ///`EnvironmentSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EnvironmentSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl EnvironmentSlackChannelsItem {
        pub fn builder() -> builder::EnvironmentSlackChannelsItem {
            Default::default()
        }
    }
    ///`ErrorsList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "errors": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "status",
    ///          "title"
    ///        ],
    ///        "properties": {
    ///          "code": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "detail": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "status": {
    ///            "type": "string"
    ///          },
    ///          "title": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ErrorsList {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub errors: ::std::vec::Vec<ErrorsListErrorsItem>,
    }
    impl ::std::default::Default for ErrorsList {
        fn default() -> Self {
            Self { errors: Default::default() }
        }
    }
    impl ErrorsList {
        pub fn builder() -> builder::ErrorsList {
            Default::default()
        }
    }
    ///`ErrorsListErrorsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "code": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "detail": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ErrorsListErrorsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub code: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub detail: ::std::option::Option<::std::string::String>,
        pub status: ::std::string::String,
        pub title: ::std::string::String,
    }
    impl ErrorsListErrorsItem {
        pub fn builder() -> builder::ErrorsListErrorsItem {
            Default::default()
        }
    }
    ///`EscalateAlert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "escalation_policy_id": {
    ///              "description": "The ID of the escalation policy to escalate to. If omitted, uses the alert's current escalation policy from metadata. Required for resolved alerts whose metadata may have been cleared.",
    ///              "type": "string"
    ///            },
    ///            "escalation_policy_level": {
    ///              "description": "The escalation policy level to escalate to. If omitted, defaults to the next level (same EP) or level 1 (different EP).",
    ///              "type": "integer",
    ///              "minimum": 1.0
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalateAlert {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<EscalateAlertData>,
    }
    impl ::std::default::Default for EscalateAlert {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl EscalateAlert {
        pub fn builder() -> builder::EscalateAlert {
            Default::default()
        }
    }
    ///`EscalateAlertData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "escalation_policy_id": {
    ///          "description": "The ID of the escalation policy to escalate to. If omitted, uses the alert's current escalation policy from metadata. Required for resolved alerts whose metadata may have been cleared.",
    ///          "type": "string"
    ///        },
    ///        "escalation_policy_level": {
    ///          "description": "The escalation policy level to escalate to. If omitted, defaults to the next level (same EP) or level 1 (different EP).",
    ///          "type": "integer",
    ///          "minimum": 1.0
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalateAlertData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<EscalateAlertDataAttributes>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<EscalateAlertDataType>,
    }
    impl ::std::default::Default for EscalateAlertData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl EscalateAlertData {
        pub fn builder() -> builder::EscalateAlertData {
            Default::default()
        }
    }
    ///`EscalateAlertDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "escalation_policy_id": {
    ///      "description": "The ID of the escalation policy to escalate to. If omitted, uses the alert's current escalation policy from metadata. Required for resolved alerts whose metadata may have been cleared.",
    ///      "type": "string"
    ///    },
    ///    "escalation_policy_level": {
    ///      "description": "The escalation policy level to escalate to. If omitted, defaults to the next level (same EP) or level 1 (different EP).",
    ///      "type": "integer",
    ///      "minimum": 1.0
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct EscalateAlertDataAttributes {
        ///The ID of the escalation policy to escalate to. If omitted, uses the alert's current escalation policy from metadata. Required for resolved alerts whose metadata may have been cleared.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The escalation policy level to escalate to. If omitted, defaults to the next level (same EP) or level 1 (different EP).
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_level: ::std::option::Option<::std::num::NonZeroU64>,
    }
    impl ::std::default::Default for EscalateAlertDataAttributes {
        fn default() -> Self {
            Self {
                escalation_policy_id: Default::default(),
                escalation_policy_level: Default::default(),
            }
        }
    }
    impl EscalateAlertDataAttributes {
        pub fn builder() -> builder::EscalateAlertDataAttributes {
            Default::default()
        }
    }
    ///`EscalateAlertDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalateAlertDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for EscalateAlertDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for EscalateAlertDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalateAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for EscalateAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for EscalateAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_by_user_id",
    ///    "name",
    ///    "repeat_count"
    ///  ],
    ///  "properties": {
    ///    "business_hours": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "days": {
    ///          "description": "Business days",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "M",
    ///              "T",
    ///              "W",
    ///              "R",
    ///              "F",
    ///              "U",
    ///              "S"
    ///            ]
    ///          }
    ///        },
    ///        "end_time": {
    ///          "description": "End time for business hours (HH:MM)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "start_time": {
    ///          "description": "Start time for business hours (HH:MM)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "time_zone": {
    ///          "description": "Time zone for business hours",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "created_by_user_id": {
    ///      "description": "User who created the escalation policy",
    ///      "type": "integer"
    ///    },
    ///    "description": {
    ///      "description": "The description of the escalation policy",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_ids": {
    ///      "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "last_updated_by_user_id": {
    ///      "description": "User who updated the escalation policy",
    ///      "type": "integer"
    ///    },
    ///    "name": {
    ///      "description": "The name of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "repeat_count": {
    ///      "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///      "type": "integer"
    ///    },
    ///    "service_ids": {
    ///      "description": "Associated services (alerting the service will trigger escalation policy)",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicy {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub business_hours: ::std::option::Option<EscalationPolicyBusinessHours>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///User who created the escalation policy
        pub created_by_user_id: i64,
        ///The description of the escalation policy
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Associated groups (alerting the group will trigger escalation policy)
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        ///User who updated the escalation policy
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_updated_by_user_id: ::std::option::Option<i64>,
        ///The name of the escalation policy
        pub name: ::std::string::String,
        ///The number of times this policy will be executed until someone acknowledges the alert
        pub repeat_count: i64,
        ///Associated services (alerting the service will trigger escalation policy)
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl EscalationPolicy {
        pub fn builder() -> builder::EscalationPolicy {
            Default::default()
        }
    }
    ///`EscalationPolicyBusinessHours`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "days": {
    ///      "description": "Business days",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U",
    ///          "S"
    ///        ]
    ///      }
    ///    },
    ///    "end_time": {
    ///      "description": "End time for business hours (HH:MM)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for business hours (HH:MM)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "Time zone for business hours",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "International Date Line West",
    ///        "Etc/GMT+12",
    ///        "American Samoa",
    ///        "Pacific/Pago_Pago",
    ///        "Midway Island",
    ///        "Pacific/Midway",
    ///        "Hawaii",
    ///        "Pacific/Honolulu",
    ///        "Alaska",
    ///        "America/Juneau",
    ///        "Pacific Time (US & Canada)",
    ///        "America/Los_Angeles",
    ///        "Tijuana",
    ///        "America/Tijuana",
    ///        "Arizona",
    ///        "America/Phoenix",
    ///        "Mazatlan",
    ///        "America/Mazatlan",
    ///        "Mountain Time (US & Canada)",
    ///        "America/Denver",
    ///        "Central America",
    ///        "America/Guatemala",
    ///        "Central Time (US & Canada)",
    ///        "America/Chicago",
    ///        "Chihuahua",
    ///        "America/Chihuahua",
    ///        "Guadalajara",
    ///        "America/Mexico_City",
    ///        "Mexico City",
    ///        "Monterrey",
    ///        "America/Monterrey",
    ///        "Saskatchewan",
    ///        "America/Regina",
    ///        "Bogota",
    ///        "America/Bogota",
    ///        "Eastern Time (US & Canada)",
    ///        "America/New_York",
    ///        "Indiana (East)",
    ///        "America/Indiana/Indianapolis",
    ///        "Lima",
    ///        "America/Lima",
    ///        "Quito",
    ///        "Atlantic Time (Canada)",
    ///        "America/Halifax",
    ///        "Caracas",
    ///        "America/Caracas",
    ///        "Georgetown",
    ///        "America/Guyana",
    ///        "La Paz",
    ///        "America/La_Paz",
    ///        "Puerto Rico",
    ///        "America/Puerto_Rico",
    ///        "Santiago",
    ///        "America/Santiago",
    ///        "Newfoundland",
    ///        "America/St_Johns",
    ///        "Asuncion",
    ///        "America/Asuncion",
    ///        "Brasilia",
    ///        "America/Sao_Paulo",
    ///        "Buenos Aires",
    ///        "America/Argentina/Buenos_Aires",
    ///        "Montevideo",
    ///        "America/Montevideo",
    ///        "Greenland",
    ///        "America/Nuuk",
    ///        "Mid-Atlantic",
    ///        "Atlantic/South_Georgia",
    ///        "Azores",
    ///        "Atlantic/Azores",
    ///        "Cape Verde Is.",
    ///        "Atlantic/Cape_Verde",
    ///        "Edinburgh",
    ///        "Europe/London",
    ///        "Lisbon",
    ///        "Europe/Lisbon",
    ///        "London",
    ///        "Monrovia",
    ///        "Africa/Monrovia",
    ///        "UTC",
    ///        "Etc/UTC",
    ///        "Amsterdam",
    ///        "Europe/Amsterdam",
    ///        "Belgrade",
    ///        "Europe/Belgrade",
    ///        "Berlin",
    ///        "Europe/Berlin",
    ///        "Bern",
    ///        "Europe/Zurich",
    ///        "Bratislava",
    ///        "Europe/Bratislava",
    ///        "Brussels",
    ///        "Europe/Brussels",
    ///        "Budapest",
    ///        "Europe/Budapest",
    ///        "Casablanca",
    ///        "Africa/Casablanca",
    ///        "Copenhagen",
    ///        "Europe/Copenhagen",
    ///        "Dublin",
    ///        "Europe/Dublin",
    ///        "Ljubljana",
    ///        "Europe/Ljubljana",
    ///        "Madrid",
    ///        "Europe/Madrid",
    ///        "Paris",
    ///        "Europe/Paris",
    ///        "Prague",
    ///        "Europe/Prague",
    ///        "Rome",
    ///        "Europe/Rome",
    ///        "Sarajevo",
    ///        "Europe/Sarajevo",
    ///        "Skopje",
    ///        "Europe/Skopje",
    ///        "Stockholm",
    ///        "Europe/Stockholm",
    ///        "Vienna",
    ///        "Europe/Vienna",
    ///        "Warsaw",
    ///        "Europe/Warsaw",
    ///        "West Central Africa",
    ///        "Africa/Algiers",
    ///        "Zagreb",
    ///        "Europe/Zagreb",
    ///        "Zurich",
    ///        "Athens",
    ///        "Europe/Athens",
    ///        "Bucharest",
    ///        "Europe/Bucharest",
    ///        "Cairo",
    ///        "Africa/Cairo",
    ///        "Harare",
    ///        "Africa/Harare",
    ///        "Helsinki",
    ///        "Europe/Helsinki",
    ///        "Jerusalem",
    ///        "Asia/Jerusalem",
    ///        "Kaliningrad",
    ///        "Europe/Kaliningrad",
    ///        "Kyiv",
    ///        "Europe/Kiev",
    ///        "Pretoria",
    ///        "Africa/Johannesburg",
    ///        "Riga",
    ///        "Europe/Riga",
    ///        "Sofia",
    ///        "Europe/Sofia",
    ///        "Tallinn",
    ///        "Europe/Tallinn",
    ///        "Vilnius",
    ///        "Europe/Vilnius",
    ///        "Baghdad",
    ///        "Asia/Baghdad",
    ///        "Istanbul",
    ///        "Europe/Istanbul",
    ///        "Kuwait",
    ///        "Asia/Kuwait",
    ///        "Minsk",
    ///        "Europe/Minsk",
    ///        "Moscow",
    ///        "Europe/Moscow",
    ///        "Nairobi",
    ///        "Africa/Nairobi",
    ///        "Riyadh",
    ///        "Asia/Riyadh",
    ///        "St. Petersburg",
    ///        "Volgograd",
    ///        "Europe/Volgograd",
    ///        "Tehran",
    ///        "Asia/Tehran",
    ///        "Abu Dhabi",
    ///        "Asia/Muscat",
    ///        "Baku",
    ///        "Asia/Baku",
    ///        "Muscat",
    ///        "Samara",
    ///        "Europe/Samara",
    ///        "Tbilisi",
    ///        "Asia/Tbilisi",
    ///        "Yerevan",
    ///        "Asia/Yerevan",
    ///        "Kabul",
    ///        "Asia/Kabul",
    ///        "Almaty",
    ///        "Asia/Almaty",
    ///        "Astana",
    ///        "Ekaterinburg",
    ///        "Asia/Yekaterinburg",
    ///        "Islamabad",
    ///        "Asia/Karachi",
    ///        "Karachi",
    ///        "Tashkent",
    ///        "Asia/Tashkent",
    ///        "Chennai",
    ///        "Asia/Kolkata",
    ///        "Kolkata",
    ///        "Mumbai",
    ///        "New Delhi",
    ///        "Sri Jayawardenepura",
    ///        "Asia/Colombo",
    ///        "Kathmandu",
    ///        "Asia/Kathmandu",
    ///        "Dhaka",
    ///        "Asia/Dhaka",
    ///        "Urumqi",
    ///        "Asia/Urumqi",
    ///        "Rangoon",
    ///        "Asia/Rangoon",
    ///        "Bangkok",
    ///        "Asia/Bangkok",
    ///        "Hanoi",
    ///        "Jakarta",
    ///        "Asia/Jakarta",
    ///        "Krasnoyarsk",
    ///        "Asia/Krasnoyarsk",
    ///        "Novosibirsk",
    ///        "Asia/Novosibirsk",
    ///        "Beijing",
    ///        "Asia/Shanghai",
    ///        "Chongqing",
    ///        "Asia/Chongqing",
    ///        "Hong Kong",
    ///        "Asia/Hong_Kong",
    ///        "Irkutsk",
    ///        "Asia/Irkutsk",
    ///        "Kuala Lumpur",
    ///        "Asia/Kuala_Lumpur",
    ///        "Perth",
    ///        "Australia/Perth",
    ///        "Singapore",
    ///        "Asia/Singapore",
    ///        "Taipei",
    ///        "Asia/Taipei",
    ///        "Ulaanbaatar",
    ///        "Asia/Ulaanbaatar",
    ///        "Osaka",
    ///        "Asia/Tokyo",
    ///        "Sapporo",
    ///        "Seoul",
    ///        "Asia/Seoul",
    ///        "Tokyo",
    ///        "Yakutsk",
    ///        "Asia/Yakutsk",
    ///        "Adelaide",
    ///        "Australia/Adelaide",
    ///        "Darwin",
    ///        "Australia/Darwin",
    ///        "Brisbane",
    ///        "Australia/Brisbane",
    ///        "Canberra",
    ///        "Australia/Canberra",
    ///        "Guam",
    ///        "Pacific/Guam",
    ///        "Hobart",
    ///        "Australia/Hobart",
    ///        "Melbourne",
    ///        "Australia/Melbourne",
    ///        "Port Moresby",
    ///        "Pacific/Port_Moresby",
    ///        "Sydney",
    ///        "Australia/Sydney",
    ///        "Vladivostok",
    ///        "Asia/Vladivostok",
    ///        "Magadan",
    ///        "Asia/Magadan",
    ///        "New Caledonia",
    ///        "Pacific/Noumea",
    ///        "Solomon Is.",
    ///        "Pacific/Guadalcanal",
    ///        "Srednekolymsk",
    ///        "Asia/Srednekolymsk",
    ///        "Auckland",
    ///        "Pacific/Auckland",
    ///        "Fiji",
    ///        "Pacific/Fiji",
    ///        "Kamchatka",
    ///        "Asia/Kamchatka",
    ///        "Marshall Is.",
    ///        "Pacific/Majuro",
    ///        "Wellington",
    ///        "Chatham Is.",
    ///        "Pacific/Chatham",
    ///        "Nuku'alofa",
    ///        "Pacific/Tongatapu",
    ///        "Samoa",
    ///        "Pacific/Apia",
    ///        "Tokelau Is.",
    ///        "Pacific/Fakaofo"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyBusinessHours {
        ///Business days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub days: ::std::option::Option<
            ::std::vec::Vec<EscalationPolicyBusinessHoursDaysItem>,
        >,
        ///End time for business hours (HH:MM)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        ///Start time for business hours (HH:MM)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
        ///Time zone for business hours
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<EscalationPolicyBusinessHoursTimeZone>,
    }
    impl ::std::default::Default for EscalationPolicyBusinessHours {
        fn default() -> Self {
            Self {
                days: Default::default(),
                end_time: Default::default(),
                start_time: Default::default(),
                time_zone: Default::default(),
            }
        }
    }
    impl EscalationPolicyBusinessHours {
        pub fn builder() -> builder::EscalationPolicyBusinessHours {
            Default::default()
        }
    }
    ///`EscalationPolicyBusinessHoursDaysItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U",
    ///    "S"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyBusinessHoursDaysItem {
        M,
        T,
        W,
        R,
        F,
        U,
        S,
    }
    impl ::std::fmt::Display for EscalationPolicyBusinessHoursDaysItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
                Self::S => f.write_str("S"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyBusinessHoursDaysItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                "S" => Ok(Self::S),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Time zone for business hours
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone for business hours",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyBusinessHoursTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display for EscalationPolicyBusinessHoursTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyBusinessHoursTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyLevel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "delay",
    ///    "escalation_policy_id",
    ///    "notification_target_params",
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "delay": {
    ///      "description": "Delay before notifying targets in the next Escalation Level.",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The ID of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "escalation_policy_path_id": {
    ///      "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "notification_target_params": {
    ///      "description": "Escalation level's notification targets",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "The ID of notification target",
    ///            "type": "string"
    ///          },
    ///          "team_members": {
    ///            "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "all",
    ///              "admins",
    ///              "escalate"
    ///            ]
    ///          },
    ///          "type": {
    ///            "description": "The type of the notification target",
    ///            "type": "string",
    ///            "enum": [
    ///              "team",
    ///              "user",
    ///              "schedule",
    ///              "slack_channel",
    ///              "service"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "paging_strategy_configuration_schedule_strategy": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "on_call_only",
    ///        "everyone"
    ///      ]
    ///    },
    ///    "paging_strategy_configuration_strategy": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "default",
    ///        "random",
    ///        "cycle",
    ///        "alert"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the escalation policy level",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyLevel {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Delay before notifying targets in the next Escalation Level.
        pub delay: i64,
        ///The ID of the escalation policy
        pub escalation_policy_id: ::std::string::String,
        ///The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_path_id: ::std::option::Option<::std::string::String>,
        ///Escalation level's notification targets
        pub notification_target_params: ::std::vec::Vec<
            ::std::option::Option<EscalationPolicyLevelNotificationTargetParamsItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub paging_strategy_configuration_schedule_strategy: ::std::option::Option<
            EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub paging_strategy_configuration_strategy: ::std::option::Option<
            EscalationPolicyLevelPagingStrategyConfigurationStrategy,
        >,
        ///Position of the escalation policy level
        pub position: i64,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl EscalationPolicyLevel {
        pub fn builder() -> builder::EscalationPolicyLevel {
            Default::default()
        }
    }
    ///`EscalationPolicyLevelList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/escalation_policy_level"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the escalation policy level",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyLevelList {
        pub data: ::std::vec::Vec<EscalationPolicyLevelListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl EscalationPolicyLevelList {
        pub fn builder() -> builder::EscalationPolicyLevelList {
            Default::default()
        }
    }
    ///`EscalationPolicyLevelListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/escalation_policy_level"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the escalation policy level",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyLevelListDataItem {
        pub attributes: EscalationPolicyLevel,
        ///Unique ID of the escalation policy level
        pub id: ::std::string::String,
    }
    impl EscalationPolicyLevelListDataItem {
        pub fn builder() -> builder::EscalationPolicyLevelListDataItem {
            Default::default()
        }
    }
    ///`EscalationPolicyLevelNotificationTargetParamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of notification target",
    ///      "type": "string"
    ///    },
    ///    "team_members": {
    ///      "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "all",
    ///        "admins",
    ///        "escalate"
    ///      ]
    ///    },
    ///    "type": {
    ///      "description": "The type of the notification target",
    ///      "type": "string",
    ///      "enum": [
    ///        "team",
    ///        "user",
    ///        "schedule",
    ///        "slack_channel",
    ///        "service"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyLevelNotificationTargetParamsItem {
        ///The ID of notification target
        pub id: ::std::string::String,
        ///For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub team_members: ::std::option::Option<
            EscalationPolicyLevelNotificationTargetParamsItemTeamMembers,
        >,
        ///The type of the notification target
        #[serde(rename = "type")]
        pub type_: EscalationPolicyLevelNotificationTargetParamsItemType,
    }
    impl EscalationPolicyLevelNotificationTargetParamsItem {
        pub fn builder() -> builder::EscalationPolicyLevelNotificationTargetParamsItem {
            Default::default()
        }
    }
    ///For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "admins",
    ///    "escalate"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyLevelNotificationTargetParamsItemTeamMembers {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "admins")]
        Admins,
        #[serde(rename = "escalate")]
        Escalate,
    }
    impl ::std::fmt::Display
    for EscalationPolicyLevelNotificationTargetParamsItemTeamMembers {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Admins => f.write_str("admins"),
                Self::Escalate => f.write_str("escalate"),
            }
        }
    }
    impl ::std::str::FromStr
    for EscalationPolicyLevelNotificationTargetParamsItemTeamMembers {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "admins" => Ok(Self::Admins),
                "escalate" => Ok(Self::Escalate),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EscalationPolicyLevelNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyLevelNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyLevelNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the notification target
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target",
    ///  "type": "string",
    ///  "enum": [
    ///    "team",
    ///    "user",
    ///    "schedule",
    ///    "slack_channel",
    ///    "service"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyLevelNotificationTargetParamsItemType {
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "schedule")]
        Schedule,
        #[serde(rename = "slack_channel")]
        SlackChannel,
        #[serde(rename = "service")]
        Service,
    }
    impl ::std::fmt::Display for EscalationPolicyLevelNotificationTargetParamsItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Team => f.write_str("team"),
                Self::User => f.write_str("user"),
                Self::Schedule => f.write_str("schedule"),
                Self::SlackChannel => f.write_str("slack_channel"),
                Self::Service => f.write_str("service"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyLevelNotificationTargetParamsItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "team" => Ok(Self::Team),
                "user" => Ok(Self::User),
                "schedule" => Ok(Self::Schedule),
                "slack_channel" => Ok(Self::SlackChannel),
                "service" => Ok(Self::Service),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EscalationPolicyLevelNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyLevelNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyLevelNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_only",
    ///    "everyone"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy {
        #[serde(rename = "on_call_only")]
        OnCallOnly,
        #[serde(rename = "everyone")]
        Everyone,
    }
    impl ::std::fmt::Display
    for EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallOnly => f.write_str("on_call_only"),
                Self::Everyone => f.write_str("everyone"),
            }
        }
    }
    impl ::std::str::FromStr
    for EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_only" => Ok(Self::OnCallOnly),
                "everyone" => Ok(Self::Everyone),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyLevelPagingStrategyConfigurationStrategy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "default",
    ///    "random",
    ///    "cycle",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyLevelPagingStrategyConfigurationStrategy {
        #[serde(rename = "default")]
        Default,
        #[serde(rename = "random")]
        Random,
        #[serde(rename = "cycle")]
        Cycle,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display
    for EscalationPolicyLevelPagingStrategyConfigurationStrategy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Default => f.write_str("default"),
                Self::Random => f.write_str("random"),
                Self::Cycle => f.write_str("cycle"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr
    for EscalationPolicyLevelPagingStrategyConfigurationStrategy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "default" => Ok(Self::Default),
                "random" => Ok(Self::Random),
                "cycle" => Ok(Self::Cycle),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EscalationPolicyLevelPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyLevelPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyLevelPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyLevelResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/escalation_policy_level"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the escalation policy level",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_levels"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyLevelResponse {
        pub data: EscalationPolicyLevelResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl EscalationPolicyLevelResponse {
        pub fn builder() -> builder::EscalationPolicyLevelResponse {
            Default::default()
        }
    }
    ///`EscalationPolicyLevelResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/escalation_policy_level"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the escalation policy level",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_levels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyLevelResponseData {
        pub attributes: EscalationPolicyLevel,
        ///Unique ID of the escalation policy level
        pub id: ::std::string::String,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<EscalationPolicyLevelResponseDataType>,
    }
    impl EscalationPolicyLevelResponseData {
        pub fn builder() -> builder::EscalationPolicyLevelResponseData {
            Default::default()
        }
    }
    ///`EscalationPolicyLevelResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_levels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyLevelResponseDataType {
        #[serde(rename = "escalation_levels")]
        EscalationLevels,
    }
    impl ::std::fmt::Display for EscalationPolicyLevelResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationLevels => f.write_str("escalation_levels"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyLevelResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_levels" => Ok(Self::EscalationLevels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyLevelResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyLevelResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyLevelResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/escalation_policy"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the escalation policy",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "escalation_policies"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyList {
        pub data: ::std::vec::Vec<EscalationPolicyListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl EscalationPolicyList {
        pub fn builder() -> builder::EscalationPolicyList {
            Default::default()
        }
    }
    ///`EscalationPolicyListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/escalation_policy"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_policies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyListDataItem {
        pub attributes: EscalationPolicy,
        ///Unique ID of the escalation policy
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: EscalationPolicyListDataItemType,
    }
    impl EscalationPolicyListDataItem {
        pub fn builder() -> builder::EscalationPolicyListDataItem {
            Default::default()
        }
    }
    ///`EscalationPolicyListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyListDataItemType {
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for EscalationPolicyListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPath`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "default",
    ///    "escalation_policy_id",
    ///    "name",
    ///    "notification_type",
    ///    "repeat",
    ///    "repeat_count"
    ///  ],
    ///  "properties": {
    ///    "after_deferral_behavior": {
    ///      "description": "What happens after a deferral path finishes",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "re_evaluate",
    ///        "execute_path"
    ///      ]
    ///    },
    ///    "after_deferral_path_id": {
    ///      "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "description": "Whether this escalation path is the default path",
    ///      "type": "boolean"
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The ID of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "initial_delay": {
    ///      "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///      "type": "integer"
    ///    },
    ///    "match_mode": {
    ///      "description": "How path rules are matched.",
    ///      "type": "string",
    ///      "enum": [
    ///        "match-all-rules",
    ///        "match-any-rule"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the escalation path",
    ///      "type": "string"
    ///    },
    ///    "notification_type": {
    ///      "description": "Notification rule type",
    ///      "type": "string"
    ///    },
    ///    "path_type": {
    ///      "description": "The type of escalation path",
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation",
    ///        "deferral"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of this path in the paths for this EP.",
    ///      "type": "integer"
    ///    },
    ///    "repeat": {
    ///      "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_count": {
    ///      "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "rules": {
    ///      "description": "Escalation path rules",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "oneOf": [
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "urgency_ids"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "alert_urgency"
    ///                ]
    ///              },
    ///              "urgency_ids": {
    ///                "description": "Alert urgency ids for which this escalation path should be used",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "within_working_hour"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "working_hour"
    ///                ]
    ///              },
    ///              "within_working_hour": {
    ///                "description": "Whether the escalation path should be used within working hours",
    ///                "type": "boolean"
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "json_path",
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "json_path": {
    ///                "description": "JSON path to extract value from payload",
    ///                "type": "string"
    ///              },
    ///              "operator": {
    ///                "description": "How JSON path value should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "is_set",
    ///                  "is_not_set"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "json_path"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value with which JSON path value should be matched",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "fieldable_id",
    ///              "fieldable_type",
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "fieldable_id": {
    ///                "description": "The ID of the alert field",
    ///                "type": "string"
    ///              },
    ///              "fieldable_type": {
    ///                "description": "The type of the fieldable (e.g., AlertField)",
    ///                "type": "string"
    ///              },
    ///              "operator": {
    ///                "description": "How the alert field value should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "is_empty",
    ///                  "is_not_empty",
    ///                  "contains_key",
    ///                  "does_not_contain_key",
    ///                  "starts_with",
    ///                  "does_not_start_with",
    ///                  "matches",
    ///                  "does_not_match"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "field"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Values to match against",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "service_ids"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service"
    ///                ]
    ///              },
    ///              "service_ids": {
    ///                "description": "Service ids for which this escalation path should be used",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "time_blocks",
    ///              "time_zone"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "deferral_window"
    ///                ]
    ///              },
    ///              "time_blocks": {
    ///                "description": "Time windows during which alerts are deferred",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "all_day": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "end_time": {
    ///                      "description": "Formatted as HH:MM",
    ///                      "type": "string"
    ///                    },
    ///                    "friday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "monday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "position": {
    ///                      "type": [
    ///                        "integer",
    ///                        "null"
    ///                      ]
    ///                    },
    ///                    "saturday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "start_time": {
    ///                      "description": "Formatted as HH:MM",
    ///                      "type": "string"
    ///                    },
    ///                    "sunday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "thursday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "tuesday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "wednesday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "time_zone": {
    ///                "description": "Time zone for the deferral window",
    ///                "type": "string",
    ///                "enum": [
    ///                  "International Date Line West",
    ///                  "Etc/GMT+12",
    ///                  "American Samoa",
    ///                  "Pacific/Pago_Pago",
    ///                  "Midway Island",
    ///                  "Pacific/Midway",
    ///                  "Hawaii",
    ///                  "Pacific/Honolulu",
    ///                  "Alaska",
    ///                  "America/Juneau",
    ///                  "Pacific Time (US & Canada)",
    ///                  "America/Los_Angeles",
    ///                  "Tijuana",
    ///                  "America/Tijuana",
    ///                  "Arizona",
    ///                  "America/Phoenix",
    ///                  "Mazatlan",
    ///                  "America/Mazatlan",
    ///                  "Mountain Time (US & Canada)",
    ///                  "America/Denver",
    ///                  "Central America",
    ///                  "America/Guatemala",
    ///                  "Central Time (US & Canada)",
    ///                  "America/Chicago",
    ///                  "Chihuahua",
    ///                  "America/Chihuahua",
    ///                  "Guadalajara",
    ///                  "America/Mexico_City",
    ///                  "Mexico City",
    ///                  "Monterrey",
    ///                  "America/Monterrey",
    ///                  "Saskatchewan",
    ///                  "America/Regina",
    ///                  "Bogota",
    ///                  "America/Bogota",
    ///                  "Eastern Time (US & Canada)",
    ///                  "America/New_York",
    ///                  "Indiana (East)",
    ///                  "America/Indiana/Indianapolis",
    ///                  "Lima",
    ///                  "America/Lima",
    ///                  "Quito",
    ///                  "Atlantic Time (Canada)",
    ///                  "America/Halifax",
    ///                  "Caracas",
    ///                  "America/Caracas",
    ///                  "Georgetown",
    ///                  "America/Guyana",
    ///                  "La Paz",
    ///                  "America/La_Paz",
    ///                  "Puerto Rico",
    ///                  "America/Puerto_Rico",
    ///                  "Santiago",
    ///                  "America/Santiago",
    ///                  "Newfoundland",
    ///                  "America/St_Johns",
    ///                  "Asuncion",
    ///                  "America/Asuncion",
    ///                  "Brasilia",
    ///                  "America/Sao_Paulo",
    ///                  "Buenos Aires",
    ///                  "America/Argentina/Buenos_Aires",
    ///                  "Montevideo",
    ///                  "America/Montevideo",
    ///                  "Greenland",
    ///                  "America/Nuuk",
    ///                  "Mid-Atlantic",
    ///                  "Atlantic/South_Georgia",
    ///                  "Azores",
    ///                  "Atlantic/Azores",
    ///                  "Cape Verde Is.",
    ///                  "Atlantic/Cape_Verde",
    ///                  "Edinburgh",
    ///                  "Europe/London",
    ///                  "Lisbon",
    ///                  "Europe/Lisbon",
    ///                  "London",
    ///                  "Monrovia",
    ///                  "Africa/Monrovia",
    ///                  "UTC",
    ///                  "Etc/UTC",
    ///                  "Amsterdam",
    ///                  "Europe/Amsterdam",
    ///                  "Belgrade",
    ///                  "Europe/Belgrade",
    ///                  "Berlin",
    ///                  "Europe/Berlin",
    ///                  "Bern",
    ///                  "Europe/Zurich",
    ///                  "Bratislava",
    ///                  "Europe/Bratislava",
    ///                  "Brussels",
    ///                  "Europe/Brussels",
    ///                  "Budapest",
    ///                  "Europe/Budapest",
    ///                  "Casablanca",
    ///                  "Africa/Casablanca",
    ///                  "Copenhagen",
    ///                  "Europe/Copenhagen",
    ///                  "Dublin",
    ///                  "Europe/Dublin",
    ///                  "Ljubljana",
    ///                  "Europe/Ljubljana",
    ///                  "Madrid",
    ///                  "Europe/Madrid",
    ///                  "Paris",
    ///                  "Europe/Paris",
    ///                  "Prague",
    ///                  "Europe/Prague",
    ///                  "Rome",
    ///                  "Europe/Rome",
    ///                  "Sarajevo",
    ///                  "Europe/Sarajevo",
    ///                  "Skopje",
    ///                  "Europe/Skopje",
    ///                  "Stockholm",
    ///                  "Europe/Stockholm",
    ///                  "Vienna",
    ///                  "Europe/Vienna",
    ///                  "Warsaw",
    ///                  "Europe/Warsaw",
    ///                  "West Central Africa",
    ///                  "Africa/Algiers",
    ///                  "Zagreb",
    ///                  "Europe/Zagreb",
    ///                  "Zurich",
    ///                  "Athens",
    ///                  "Europe/Athens",
    ///                  "Bucharest",
    ///                  "Europe/Bucharest",
    ///                  "Cairo",
    ///                  "Africa/Cairo",
    ///                  "Harare",
    ///                  "Africa/Harare",
    ///                  "Helsinki",
    ///                  "Europe/Helsinki",
    ///                  "Jerusalem",
    ///                  "Asia/Jerusalem",
    ///                  "Kaliningrad",
    ///                  "Europe/Kaliningrad",
    ///                  "Kyiv",
    ///                  "Europe/Kiev",
    ///                  "Pretoria",
    ///                  "Africa/Johannesburg",
    ///                  "Riga",
    ///                  "Europe/Riga",
    ///                  "Sofia",
    ///                  "Europe/Sofia",
    ///                  "Tallinn",
    ///                  "Europe/Tallinn",
    ///                  "Vilnius",
    ///                  "Europe/Vilnius",
    ///                  "Baghdad",
    ///                  "Asia/Baghdad",
    ///                  "Istanbul",
    ///                  "Europe/Istanbul",
    ///                  "Kuwait",
    ///                  "Asia/Kuwait",
    ///                  "Minsk",
    ///                  "Europe/Minsk",
    ///                  "Moscow",
    ///                  "Europe/Moscow",
    ///                  "Nairobi",
    ///                  "Africa/Nairobi",
    ///                  "Riyadh",
    ///                  "Asia/Riyadh",
    ///                  "St. Petersburg",
    ///                  "Volgograd",
    ///                  "Europe/Volgograd",
    ///                  "Tehran",
    ///                  "Asia/Tehran",
    ///                  "Abu Dhabi",
    ///                  "Asia/Muscat",
    ///                  "Baku",
    ///                  "Asia/Baku",
    ///                  "Muscat",
    ///                  "Samara",
    ///                  "Europe/Samara",
    ///                  "Tbilisi",
    ///                  "Asia/Tbilisi",
    ///                  "Yerevan",
    ///                  "Asia/Yerevan",
    ///                  "Kabul",
    ///                  "Asia/Kabul",
    ///                  "Almaty",
    ///                  "Asia/Almaty",
    ///                  "Astana",
    ///                  "Ekaterinburg",
    ///                  "Asia/Yekaterinburg",
    ///                  "Islamabad",
    ///                  "Asia/Karachi",
    ///                  "Karachi",
    ///                  "Tashkent",
    ///                  "Asia/Tashkent",
    ///                  "Chennai",
    ///                  "Asia/Kolkata",
    ///                  "Kolkata",
    ///                  "Mumbai",
    ///                  "New Delhi",
    ///                  "Sri Jayawardenepura",
    ///                  "Asia/Colombo",
    ///                  "Kathmandu",
    ///                  "Asia/Kathmandu",
    ///                  "Dhaka",
    ///                  "Asia/Dhaka",
    ///                  "Urumqi",
    ///                  "Asia/Urumqi",
    ///                  "Rangoon",
    ///                  "Asia/Rangoon",
    ///                  "Bangkok",
    ///                  "Asia/Bangkok",
    ///                  "Hanoi",
    ///                  "Jakarta",
    ///                  "Asia/Jakarta",
    ///                  "Krasnoyarsk",
    ///                  "Asia/Krasnoyarsk",
    ///                  "Novosibirsk",
    ///                  "Asia/Novosibirsk",
    ///                  "Beijing",
    ///                  "Asia/Shanghai",
    ///                  "Chongqing",
    ///                  "Asia/Chongqing",
    ///                  "Hong Kong",
    ///                  "Asia/Hong_Kong",
    ///                  "Irkutsk",
    ///                  "Asia/Irkutsk",
    ///                  "Kuala Lumpur",
    ///                  "Asia/Kuala_Lumpur",
    ///                  "Perth",
    ///                  "Australia/Perth",
    ///                  "Singapore",
    ///                  "Asia/Singapore",
    ///                  "Taipei",
    ///                  "Asia/Taipei",
    ///                  "Ulaanbaatar",
    ///                  "Asia/Ulaanbaatar",
    ///                  "Osaka",
    ///                  "Asia/Tokyo",
    ///                  "Sapporo",
    ///                  "Seoul",
    ///                  "Asia/Seoul",
    ///                  "Tokyo",
    ///                  "Yakutsk",
    ///                  "Asia/Yakutsk",
    ///                  "Adelaide",
    ///                  "Australia/Adelaide",
    ///                  "Darwin",
    ///                  "Australia/Darwin",
    ///                  "Brisbane",
    ///                  "Australia/Brisbane",
    ///                  "Canberra",
    ///                  "Australia/Canberra",
    ///                  "Guam",
    ///                  "Pacific/Guam",
    ///                  "Hobart",
    ///                  "Australia/Hobart",
    ///                  "Melbourne",
    ///                  "Australia/Melbourne",
    ///                  "Port Moresby",
    ///                  "Pacific/Port_Moresby",
    ///                  "Sydney",
    ///                  "Australia/Sydney",
    ///                  "Vladivostok",
    ///                  "Asia/Vladivostok",
    ///                  "Magadan",
    ///                  "Asia/Magadan",
    ///                  "New Caledonia",
    ///                  "Pacific/Noumea",
    ///                  "Solomon Is.",
    ///                  "Pacific/Guadalcanal",
    ///                  "Srednekolymsk",
    ///                  "Asia/Srednekolymsk",
    ///                  "Auckland",
    ///                  "Pacific/Auckland",
    ///                  "Fiji",
    ///                  "Pacific/Fiji",
    ///                  "Kamchatka",
    ///                  "Asia/Kamchatka",
    ///                  "Marshall Is.",
    ///                  "Pacific/Majuro",
    ///                  "Wellington",
    ///                  "Chatham Is.",
    ///                  "Pacific/Chatham",
    ///                  "Nuku'alofa",
    ///                  "Pacific/Tongatapu",
    ///                  "Samoa",
    ///                  "Pacific/Apia",
    ///                  "Tokelau Is.",
    ///                  "Pacific/Fakaofo"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "operator",
    ///              "rule_type",
    ///              "values"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "description": "How the alert source should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "is_one_of",
    ///                  "is_not_one_of"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "source"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "description": "Whether the alert must (or must not) have related incidents",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_set",
    ///                  "is_not_set"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "related_incidents"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "time_restriction_time_zone": {
    ///      "description": "Time zone used for time restrictions.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "International Date Line West",
    ///        "Etc/GMT+12",
    ///        "American Samoa",
    ///        "Pacific/Pago_Pago",
    ///        "Midway Island",
    ///        "Pacific/Midway",
    ///        "Hawaii",
    ///        "Pacific/Honolulu",
    ///        "Alaska",
    ///        "America/Juneau",
    ///        "Pacific Time (US & Canada)",
    ///        "America/Los_Angeles",
    ///        "Tijuana",
    ///        "America/Tijuana",
    ///        "Arizona",
    ///        "America/Phoenix",
    ///        "Mazatlan",
    ///        "America/Mazatlan",
    ///        "Mountain Time (US & Canada)",
    ///        "America/Denver",
    ///        "Central America",
    ///        "America/Guatemala",
    ///        "Central Time (US & Canada)",
    ///        "America/Chicago",
    ///        "Chihuahua",
    ///        "America/Chihuahua",
    ///        "Guadalajara",
    ///        "America/Mexico_City",
    ///        "Mexico City",
    ///        "Monterrey",
    ///        "America/Monterrey",
    ///        "Saskatchewan",
    ///        "America/Regina",
    ///        "Bogota",
    ///        "America/Bogota",
    ///        "Eastern Time (US & Canada)",
    ///        "America/New_York",
    ///        "Indiana (East)",
    ///        "America/Indiana/Indianapolis",
    ///        "Lima",
    ///        "America/Lima",
    ///        "Quito",
    ///        "Atlantic Time (Canada)",
    ///        "America/Halifax",
    ///        "Caracas",
    ///        "America/Caracas",
    ///        "Georgetown",
    ///        "America/Guyana",
    ///        "La Paz",
    ///        "America/La_Paz",
    ///        "Puerto Rico",
    ///        "America/Puerto_Rico",
    ///        "Santiago",
    ///        "America/Santiago",
    ///        "Newfoundland",
    ///        "America/St_Johns",
    ///        "Asuncion",
    ///        "America/Asuncion",
    ///        "Brasilia",
    ///        "America/Sao_Paulo",
    ///        "Buenos Aires",
    ///        "America/Argentina/Buenos_Aires",
    ///        "Montevideo",
    ///        "America/Montevideo",
    ///        "Greenland",
    ///        "America/Nuuk",
    ///        "Mid-Atlantic",
    ///        "Atlantic/South_Georgia",
    ///        "Azores",
    ///        "Atlantic/Azores",
    ///        "Cape Verde Is.",
    ///        "Atlantic/Cape_Verde",
    ///        "Edinburgh",
    ///        "Europe/London",
    ///        "Lisbon",
    ///        "Europe/Lisbon",
    ///        "London",
    ///        "Monrovia",
    ///        "Africa/Monrovia",
    ///        "UTC",
    ///        "Etc/UTC",
    ///        "Amsterdam",
    ///        "Europe/Amsterdam",
    ///        "Belgrade",
    ///        "Europe/Belgrade",
    ///        "Berlin",
    ///        "Europe/Berlin",
    ///        "Bern",
    ///        "Europe/Zurich",
    ///        "Bratislava",
    ///        "Europe/Bratislava",
    ///        "Brussels",
    ///        "Europe/Brussels",
    ///        "Budapest",
    ///        "Europe/Budapest",
    ///        "Casablanca",
    ///        "Africa/Casablanca",
    ///        "Copenhagen",
    ///        "Europe/Copenhagen",
    ///        "Dublin",
    ///        "Europe/Dublin",
    ///        "Ljubljana",
    ///        "Europe/Ljubljana",
    ///        "Madrid",
    ///        "Europe/Madrid",
    ///        "Paris",
    ///        "Europe/Paris",
    ///        "Prague",
    ///        "Europe/Prague",
    ///        "Rome",
    ///        "Europe/Rome",
    ///        "Sarajevo",
    ///        "Europe/Sarajevo",
    ///        "Skopje",
    ///        "Europe/Skopje",
    ///        "Stockholm",
    ///        "Europe/Stockholm",
    ///        "Vienna",
    ///        "Europe/Vienna",
    ///        "Warsaw",
    ///        "Europe/Warsaw",
    ///        "West Central Africa",
    ///        "Africa/Algiers",
    ///        "Zagreb",
    ///        "Europe/Zagreb",
    ///        "Zurich",
    ///        "Athens",
    ///        "Europe/Athens",
    ///        "Bucharest",
    ///        "Europe/Bucharest",
    ///        "Cairo",
    ///        "Africa/Cairo",
    ///        "Harare",
    ///        "Africa/Harare",
    ///        "Helsinki",
    ///        "Europe/Helsinki",
    ///        "Jerusalem",
    ///        "Asia/Jerusalem",
    ///        "Kaliningrad",
    ///        "Europe/Kaliningrad",
    ///        "Kyiv",
    ///        "Europe/Kiev",
    ///        "Pretoria",
    ///        "Africa/Johannesburg",
    ///        "Riga",
    ///        "Europe/Riga",
    ///        "Sofia",
    ///        "Europe/Sofia",
    ///        "Tallinn",
    ///        "Europe/Tallinn",
    ///        "Vilnius",
    ///        "Europe/Vilnius",
    ///        "Baghdad",
    ///        "Asia/Baghdad",
    ///        "Istanbul",
    ///        "Europe/Istanbul",
    ///        "Kuwait",
    ///        "Asia/Kuwait",
    ///        "Minsk",
    ///        "Europe/Minsk",
    ///        "Moscow",
    ///        "Europe/Moscow",
    ///        "Nairobi",
    ///        "Africa/Nairobi",
    ///        "Riyadh",
    ///        "Asia/Riyadh",
    ///        "St. Petersburg",
    ///        "Volgograd",
    ///        "Europe/Volgograd",
    ///        "Tehran",
    ///        "Asia/Tehran",
    ///        "Abu Dhabi",
    ///        "Asia/Muscat",
    ///        "Baku",
    ///        "Asia/Baku",
    ///        "Muscat",
    ///        "Samara",
    ///        "Europe/Samara",
    ///        "Tbilisi",
    ///        "Asia/Tbilisi",
    ///        "Yerevan",
    ///        "Asia/Yerevan",
    ///        "Kabul",
    ///        "Asia/Kabul",
    ///        "Almaty",
    ///        "Asia/Almaty",
    ///        "Astana",
    ///        "Ekaterinburg",
    ///        "Asia/Yekaterinburg",
    ///        "Islamabad",
    ///        "Asia/Karachi",
    ///        "Karachi",
    ///        "Tashkent",
    ///        "Asia/Tashkent",
    ///        "Chennai",
    ///        "Asia/Kolkata",
    ///        "Kolkata",
    ///        "Mumbai",
    ///        "New Delhi",
    ///        "Sri Jayawardenepura",
    ///        "Asia/Colombo",
    ///        "Kathmandu",
    ///        "Asia/Kathmandu",
    ///        "Dhaka",
    ///        "Asia/Dhaka",
    ///        "Urumqi",
    ///        "Asia/Urumqi",
    ///        "Rangoon",
    ///        "Asia/Rangoon",
    ///        "Bangkok",
    ///        "Asia/Bangkok",
    ///        "Hanoi",
    ///        "Jakarta",
    ///        "Asia/Jakarta",
    ///        "Krasnoyarsk",
    ///        "Asia/Krasnoyarsk",
    ///        "Novosibirsk",
    ///        "Asia/Novosibirsk",
    ///        "Beijing",
    ///        "Asia/Shanghai",
    ///        "Chongqing",
    ///        "Asia/Chongqing",
    ///        "Hong Kong",
    ///        "Asia/Hong_Kong",
    ///        "Irkutsk",
    ///        "Asia/Irkutsk",
    ///        "Kuala Lumpur",
    ///        "Asia/Kuala_Lumpur",
    ///        "Perth",
    ///        "Australia/Perth",
    ///        "Singapore",
    ///        "Asia/Singapore",
    ///        "Taipei",
    ///        "Asia/Taipei",
    ///        "Ulaanbaatar",
    ///        "Asia/Ulaanbaatar",
    ///        "Osaka",
    ///        "Asia/Tokyo",
    ///        "Sapporo",
    ///        "Seoul",
    ///        "Asia/Seoul",
    ///        "Tokyo",
    ///        "Yakutsk",
    ///        "Asia/Yakutsk",
    ///        "Adelaide",
    ///        "Australia/Adelaide",
    ///        "Darwin",
    ///        "Australia/Darwin",
    ///        "Brisbane",
    ///        "Australia/Brisbane",
    ///        "Canberra",
    ///        "Australia/Canberra",
    ///        "Guam",
    ///        "Pacific/Guam",
    ///        "Hobart",
    ///        "Australia/Hobart",
    ///        "Melbourne",
    ///        "Australia/Melbourne",
    ///        "Port Moresby",
    ///        "Pacific/Port_Moresby",
    ///        "Sydney",
    ///        "Australia/Sydney",
    ///        "Vladivostok",
    ///        "Asia/Vladivostok",
    ///        "Magadan",
    ///        "Asia/Magadan",
    ///        "New Caledonia",
    ///        "Pacific/Noumea",
    ///        "Solomon Is.",
    ///        "Pacific/Guadalcanal",
    ///        "Srednekolymsk",
    ///        "Asia/Srednekolymsk",
    ///        "Auckland",
    ///        "Pacific/Auckland",
    ///        "Fiji",
    ///        "Pacific/Fiji",
    ///        "Kamchatka",
    ///        "Asia/Kamchatka",
    ///        "Marshall Is.",
    ///        "Pacific/Majuro",
    ///        "Wellington",
    ///        "Chatham Is.",
    ///        "Pacific/Chatham",
    ///        "Nuku'alofa",
    ///        "Pacific/Tongatapu",
    ///        "Samoa",
    ///        "Pacific/Apia",
    ///        "Tokelau Is.",
    ///        "Pacific/Fakaofo"
    ///      ]
    ///    },
    ///    "time_restrictions": {
    ///      "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "end_day": {
    ///            "type": "string",
    ///            "enum": [
    ///              "monday",
    ///              "tuesday",
    ///              "wednesday",
    ///              "thursday",
    ///              "friday",
    ///              "saturday",
    ///              "sunday"
    ///            ]
    ///          },
    ///          "end_time": {
    ///            "description": "Formatted as HH:MM",
    ///            "type": "string"
    ///          },
    ///          "start_day": {
    ///            "type": "string",
    ///            "enum": [
    ///              "monday",
    ///              "tuesday",
    ///              "wednesday",
    ///              "thursday",
    ///              "friday",
    ///              "saturday",
    ///              "sunday"
    ///            ]
    ///          },
    ///          "start_time": {
    ///            "description": "Formatted as HH:MM",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPath {
        ///What happens after a deferral path finishes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub after_deferral_behavior: ::std::option::Option<
            EscalationPolicyPathAfterDeferralBehavior,
        >,
        ///The escalation path to execute after this deferral path when after_deferral_behavior is execute_path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub after_deferral_path_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Whether this escalation path is the default path
        pub default: bool,
        ///The ID of the escalation policy
        pub escalation_policy_id: ::std::string::String,
        ///Initial delay for escalation path in minutes. Maximum 1 week (10080).
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub initial_delay: ::std::option::Option<i64>,
        ///How path rules are matched.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub match_mode: ::std::option::Option<EscalationPolicyPathMatchMode>,
        ///The name of the escalation path
        pub name: ::std::string::String,
        ///Notification rule type
        pub notification_type: ::std::string::String,
        ///The type of escalation path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub path_type: ::std::option::Option<EscalationPolicyPathPathType>,
        ///The position of this path in the paths for this EP.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether this path should be repeated until someone acknowledges the alert
        pub repeat: ::std::option::Option<bool>,
        ///The number of times this path will be executed until someone acknowledges the alert
        pub repeat_count: ::std::option::Option<i64>,
        ///Escalation path rules
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<::std::option::Option<EscalationPolicyPathRulesItem>>,
        ///Time zone used for time restrictions.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_restriction_time_zone: ::std::option::Option<
            EscalationPolicyPathTimeRestrictionTimeZone,
        >,
        ///If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub time_restrictions: ::std::vec::Vec<EscalationPolicyPathTimeRestrictionsItem>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl EscalationPolicyPath {
        pub fn builder() -> builder::EscalationPolicyPath {
            Default::default()
        }
    }
    ///What happens after a deferral path finishes
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "What happens after a deferral path finishes",
    ///  "type": "string",
    ///  "enum": [
    ///    "re_evaluate",
    ///    "execute_path"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathAfterDeferralBehavior {
        #[serde(rename = "re_evaluate")]
        ReEvaluate,
        #[serde(rename = "execute_path")]
        ExecutePath,
    }
    impl ::std::fmt::Display for EscalationPolicyPathAfterDeferralBehavior {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ReEvaluate => f.write_str("re_evaluate"),
                Self::ExecutePath => f.write_str("execute_path"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathAfterDeferralBehavior {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "re_evaluate" => Ok(Self::ReEvaluate),
                "execute_path" => Ok(Self::ExecutePath),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPathList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/escalation_policy_path"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the escalation policy path",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPathList {
        pub data: ::std::vec::Vec<EscalationPolicyPathListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl EscalationPolicyPathList {
        pub fn builder() -> builder::EscalationPolicyPathList {
            Default::default()
        }
    }
    ///`EscalationPolicyPathListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/escalation_policy_path"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the escalation policy path",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPathListDataItem {
        pub attributes: EscalationPolicyPath,
        ///Unique ID of the escalation policy path
        pub id: ::std::string::String,
    }
    impl EscalationPolicyPathListDataItem {
        pub fn builder() -> builder::EscalationPolicyPathListDataItem {
            Default::default()
        }
    }
    ///How path rules are matched.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How path rules are matched.",
    ///  "type": "string",
    ///  "enum": [
    ///    "match-all-rules",
    ///    "match-any-rule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathMatchMode {
        #[serde(rename = "match-all-rules")]
        MatchAllRules,
        #[serde(rename = "match-any-rule")]
        MatchAnyRule,
    }
    impl ::std::fmt::Display for EscalationPolicyPathMatchMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::MatchAllRules => f.write_str("match-all-rules"),
                Self::MatchAnyRule => f.write_str("match-any-rule"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathMatchMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "match-all-rules" => Ok(Self::MatchAllRules),
                "match-any-rule" => Ok(Self::MatchAnyRule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of escalation path
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of escalation path",
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation",
    ///    "deferral"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathPathType {
        #[serde(rename = "escalation")]
        Escalation,
        #[serde(rename = "deferral")]
        Deferral,
    }
    impl ::std::fmt::Display for EscalationPolicyPathPathType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Escalation => f.write_str("escalation"),
                Self::Deferral => f.write_str("deferral"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathPathType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation" => Ok(Self::Escalation),
                "deferral" => Ok(Self::Deferral),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPathResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/escalation_policy_path"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the escalation policy path",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_paths"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPathResponse {
        pub data: EscalationPolicyPathResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl EscalationPolicyPathResponse {
        pub fn builder() -> builder::EscalationPolicyPathResponse {
            Default::default()
        }
    }
    ///`EscalationPolicyPathResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/escalation_policy_path"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the escalation policy path",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_paths"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPathResponseData {
        pub attributes: EscalationPolicyPath,
        ///Unique ID of the escalation policy path
        pub id: ::std::string::String,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<EscalationPolicyPathResponseDataType>,
    }
    impl EscalationPolicyPathResponseData {
        pub fn builder() -> builder::EscalationPolicyPathResponseData {
            Default::default()
        }
    }
    ///`EscalationPolicyPathResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_paths"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathResponseDataType {
        #[serde(rename = "escalation_paths")]
        EscalationPaths,
    }
    impl ::std::fmt::Display for EscalationPolicyPathResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPaths => f.write_str("escalation_paths"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_paths" => Ok(Self::EscalationPaths),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPathRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "urgency_ids"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_urgency"
    ///          ]
    ///        },
    ///        "urgency_ids": {
    ///          "description": "Alert urgency ids for which this escalation path should be used",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "within_working_hour"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "working_hour"
    ///          ]
    ///        },
    ///        "within_working_hour": {
    ///          "description": "Whether the escalation path should be used within working hours",
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "json_path",
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "json_path": {
    ///          "description": "JSON path to extract value from payload",
    ///          "type": "string"
    ///        },
    ///        "operator": {
    ///          "description": "How JSON path value should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "contains",
    ///            "does_not_contain",
    ///            "is_one_of",
    ///            "is_not_one_of",
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "json_path"
    ///          ]
    ///        },
    ///        "value": {
    ///          "description": "Value with which JSON path value should be matched",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "fieldable_id",
    ///        "fieldable_type",
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "fieldable_id": {
    ///          "description": "The ID of the alert field",
    ///          "type": "string"
    ///        },
    ///        "fieldable_type": {
    ///          "description": "The type of the fieldable (e.g., AlertField)",
    ///          "type": "string"
    ///        },
    ///        "operator": {
    ///          "description": "How the alert field value should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "is_one_of",
    ///            "is_not_one_of",
    ///            "contains",
    ///            "does_not_contain",
    ///            "is_empty",
    ///            "is_not_empty",
    ///            "contains_key",
    ///            "does_not_contain_key",
    ///            "starts_with",
    ///            "does_not_start_with",
    ///            "matches",
    ///            "does_not_match"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "field"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Values to match against",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "service_ids"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "service"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Service ids for which this escalation path should be used",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "time_blocks",
    ///        "time_zone"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "deferral_window"
    ///          ]
    ///        },
    ///        "time_blocks": {
    ///          "description": "Time windows during which alerts are deferred",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "all_day": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "end_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "friday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "monday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "position": {
    ///                "type": [
    ///                  "integer",
    ///                  "null"
    ///                ]
    ///              },
    ///              "saturday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "start_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "sunday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "thursday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "tuesday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "wednesday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "time_zone": {
    ///          "description": "Time zone for the deferral window",
    ///          "type": "string",
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "operator",
    ///        "rule_type",
    ///        "values"
    ///      ],
    ///      "properties": {
    ///        "operator": {
    ///          "description": "How the alert source should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "is_one_of",
    ///            "is_not_one_of"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "source"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Alert source values to match against (e.g., manual, datadog)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "operator": {
    ///          "description": "Whether the alert must (or must not) have related incidents",
    ///          "type": "string",
    ///          "enum": [
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "related_incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(tag = "rule_type")]
    pub enum EscalationPolicyPathRulesItem {
        #[serde(rename = "alert_urgency")]
        AlertUrgency {
            ///Alert urgency ids for which this escalation path should be used
            urgency_ids: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "working_hour")]
        WorkingHour {
            ///Whether the escalation path should be used within working hours
            within_working_hour: bool,
        },
        #[serde(rename = "json_path")]
        JsonPath {
            ///JSON path to extract value from payload
            json_path: ::std::string::String,
            ///How JSON path value should be matched
            operator: EscalationPolicyPathRulesItemOperator,
            ///Value with which JSON path value should be matched
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            value: ::std::option::Option<::std::string::String>,
            ///Values to match against (for is_one_of / is_not_one_of operators)
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "field")]
        Field {
            ///The ID of the alert field
            fieldable_id: ::std::string::String,
            ///The type of the fieldable (e.g., AlertField)
            fieldable_type: ::std::string::String,
            ///How the alert field value should be matched
            operator: EscalationPolicyPathRulesItemOperator,
            ///Values to match against
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "service")]
        Service {
            ///Service ids for which this escalation path should be used
            service_ids: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "deferral_window")]
        DeferralWindow {
            ///Time windows during which alerts are deferred
            time_blocks: ::std::vec::Vec<EscalationPolicyPathRulesItemTimeBlocksItem>,
            ///Time zone for the deferral window
            time_zone: EscalationPolicyPathRulesItemTimeZone,
        },
        #[serde(rename = "source")]
        Source {
            ///How the alert source should be matched
            operator: EscalationPolicyPathRulesItemOperator,
            ///Alert source values to match against (e.g., manual, datadog)
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "related_incidents")]
        RelatedIncidents {
            ///Whether the alert must (or must not) have related incidents
            operator: EscalationPolicyPathRulesItemOperator,
        },
    }
    ///How JSON path value should be matched
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How JSON path value should be matched",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain",
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "is_set",
    ///    "is_not_set"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathRulesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "is_set")]
        IsSet,
        #[serde(rename = "is_not_set")]
        IsNotSet,
    }
    impl ::std::fmt::Display for EscalationPolicyPathRulesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::IsSet => f.write_str("is_set"),
                Self::IsNotSet => f.write_str("is_not_set"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathRulesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "is_set" => Ok(Self::IsSet),
                "is_not_set" => Ok(Self::IsNotSet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPathRulesItemTimeBlocksItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "all_day": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "end_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "friday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "monday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "saturday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "start_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "sunday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "thursday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "tuesday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "wednesday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPathRulesItemTimeBlocksItem {
        #[serde(default)]
        pub all_day: bool,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        #[serde(default)]
        pub friday: bool,
        #[serde(default)]
        pub monday: bool,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default)]
        pub saturday: bool,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
        #[serde(default)]
        pub sunday: bool,
        #[serde(default)]
        pub thursday: bool,
        #[serde(default)]
        pub tuesday: bool,
        #[serde(default)]
        pub wednesday: bool,
    }
    impl ::std::default::Default for EscalationPolicyPathRulesItemTimeBlocksItem {
        fn default() -> Self {
            Self {
                all_day: Default::default(),
                end_time: Default::default(),
                friday: Default::default(),
                monday: Default::default(),
                position: Default::default(),
                saturday: Default::default(),
                start_time: Default::default(),
                sunday: Default::default(),
                thursday: Default::default(),
                tuesday: Default::default(),
                wednesday: Default::default(),
            }
        }
    }
    impl EscalationPolicyPathRulesItemTimeBlocksItem {
        pub fn builder() -> builder::EscalationPolicyPathRulesItemTimeBlocksItem {
            Default::default()
        }
    }
    ///Time zone for the deferral window
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone for the deferral window",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathRulesItemTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display for EscalationPolicyPathRulesItemTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathRulesItemTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Time zone used for time restrictions.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone used for time restrictions.",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathTimeRestrictionTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display for EscalationPolicyPathTimeRestrictionTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathTimeRestrictionTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyPathTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPathTimeRestrictionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "end_day": {
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "end_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "start_day": {
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyPathTimeRestrictionsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_day: ::std::option::Option<
            EscalationPolicyPathTimeRestrictionsItemEndDay,
        >,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_day: ::std::option::Option<
            EscalationPolicyPathTimeRestrictionsItemStartDay,
        >,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for EscalationPolicyPathTimeRestrictionsItem {
        fn default() -> Self {
            Self {
                end_day: Default::default(),
                end_time: Default::default(),
                start_day: Default::default(),
                start_time: Default::default(),
            }
        }
    }
    impl EscalationPolicyPathTimeRestrictionsItem {
        pub fn builder() -> builder::EscalationPolicyPathTimeRestrictionsItem {
            Default::default()
        }
    }
    ///`EscalationPolicyPathTimeRestrictionsItemEndDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathTimeRestrictionsItemEndDay {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display for EscalationPolicyPathTimeRestrictionsItemEndDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathTimeRestrictionsItemEndDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EscalationPolicyPathTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyPathTimeRestrictionsItemStartDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyPathTimeRestrictionsItemStartDay {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display for EscalationPolicyPathTimeRestrictionsItemStartDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyPathTimeRestrictionsItemStartDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for EscalationPolicyPathTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyPathTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyPathTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`EscalationPolicyResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/escalation_policy"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the escalation policy",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_policies"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyResponse {
        pub data: EscalationPolicyResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl EscalationPolicyResponse {
        pub fn builder() -> builder::EscalationPolicyResponse {
            Default::default()
        }
    }
    ///`EscalationPolicyResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/escalation_policy"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_policies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct EscalationPolicyResponseData {
        pub attributes: EscalationPolicy,
        ///Unique ID of the escalation policy
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: EscalationPolicyResponseDataType,
    }
    impl EscalationPolicyResponseData {
        pub fn builder() -> builder::EscalationPolicyResponseData {
            Default::default()
        }
    }
    ///`EscalationPolicyResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum EscalationPolicyResponseDataType {
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for EscalationPolicyResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for EscalationPolicyResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for EscalationPolicyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for EscalationPolicyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for EscalationPolicyResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "default_values",
    ///    "input_kind",
    ///    "kind",
    ///    "name",
    ///    "required",
    ///    "shown",
    ///    "updated_at",
    ///    "value_kind"
    ///  ],
    ///  "properties": {
    ///    "auto_set_by_catalog_property_id": {
    ///      "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "default_values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The default values.",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the form field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the form field is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "input_kind": {
    ///      "description": "The input kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "textarea",
    ///        "select",
    ///        "multi_select",
    ///        "date",
    ///        "datetime",
    ///        "number",
    ///        "checkbox",
    ///        "tags",
    ///        "rich_text"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "custom",
    ///        "title",
    ///        "summary",
    ///        "mitigation_message",
    ///        "resolution_message",
    ///        "severity",
    ///        "environments",
    ///        "types",
    ///        "services",
    ///        "causes",
    ///        "functionalities",
    ///        "teams",
    ///        "visibility",
    ///        "mark_as_test",
    ///        "mark_as_backfilled",
    ///        "labels",
    ///        "notify_emails",
    ///        "trigger_manual_workflows",
    ///        "show_ongoing_incidents",
    ///        "attach_alerts",
    ///        "mark_as_in_triage",
    ///        "in_triage_at",
    ///        "started_at",
    ///        "detected_at",
    ///        "acknowledged_at",
    ///        "mitigated_at",
    ///        "resolved_at",
    ///        "closed_at",
    ///        "custom_sub_status",
    ///        "manual_starting_datetime_field"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the form field",
    ///      "type": "string"
    ///    },
    ///    "required": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "show_on_incident_details": {
    ///      "description": "Whether the form field is shown on the incident details panel",
    ///      "type": "boolean"
    ///    },
    ///    "shown": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the form field",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "value_kind": {
    ///      "description": "The value kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "inherit",
    ///        "group",
    ///        "service",
    ///        "functionality",
    ///        "user",
    ///        "catalog_entity",
    ///        "environment",
    ///        "cause",
    ///        "incident_type"
    ///      ]
    ///    },
    ///    "value_kind_catalog_id": {
    ///      "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormField {
        ///Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_set_by_catalog_property_id: ::std::option::Option<
            ::std::string::String,
        >,
        ///Date of creation
        pub created_at: ::std::string::String,
        pub default_values: ::std::vec::Vec<::std::string::String>,
        ///The description of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the form field is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The input kind of the form field
        pub input_kind: FormFieldInputKind,
        ///The kind of the form field
        pub kind: FormFieldKind,
        ///The name of the form field
        pub name: ::std::string::String,
        pub required: ::std::vec::Vec<::std::string::String>,
        ///Whether the form field is shown on the incident details panel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_on_incident_details: ::std::option::Option<bool>,
        pub shown: ::std::vec::Vec<::std::string::String>,
        ///The slug of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The value kind of the form field
        pub value_kind: FormFieldValueKind,
        ///The ID of the catalog used when value_kind is `catalog_entity`
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value_kind_catalog_id: ::std::option::Option<::std::string::String>,
    }
    impl FormField {
        pub fn builder() -> builder::FormField {
            Default::default()
        }
    }
    ///The input kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The input kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "textarea",
    ///    "select",
    ///    "multi_select",
    ///    "date",
    ///    "datetime",
    ///    "number",
    ///    "checkbox",
    ///    "tags",
    ///    "rich_text"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldInputKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "textarea")]
        Textarea,
        #[serde(rename = "select")]
        Select,
        #[serde(rename = "multi_select")]
        MultiSelect,
        #[serde(rename = "date")]
        Date,
        #[serde(rename = "datetime")]
        Datetime,
        #[serde(rename = "number")]
        Number,
        #[serde(rename = "checkbox")]
        Checkbox,
        #[serde(rename = "tags")]
        Tags,
        #[serde(rename = "rich_text")]
        RichText,
    }
    impl ::std::fmt::Display for FormFieldInputKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Textarea => f.write_str("textarea"),
                Self::Select => f.write_str("select"),
                Self::MultiSelect => f.write_str("multi_select"),
                Self::Date => f.write_str("date"),
                Self::Datetime => f.write_str("datetime"),
                Self::Number => f.write_str("number"),
                Self::Checkbox => f.write_str("checkbox"),
                Self::Tags => f.write_str("tags"),
                Self::RichText => f.write_str("rich_text"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldInputKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "textarea" => Ok(Self::Textarea),
                "select" => Ok(Self::Select),
                "multi_select" => Ok(Self::MultiSelect),
                "date" => Ok(Self::Date),
                "datetime" => Ok(Self::Datetime),
                "number" => Ok(Self::Number),
                "checkbox" => Ok(Self::Checkbox),
                "tags" => Ok(Self::Tags),
                "rich_text" => Ok(Self::RichText),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormFieldInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormFieldInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "custom",
    ///    "title",
    ///    "summary",
    ///    "mitigation_message",
    ///    "resolution_message",
    ///    "severity",
    ///    "environments",
    ///    "types",
    ///    "services",
    ///    "causes",
    ///    "functionalities",
    ///    "teams",
    ///    "visibility",
    ///    "mark_as_test",
    ///    "mark_as_backfilled",
    ///    "labels",
    ///    "notify_emails",
    ///    "trigger_manual_workflows",
    ///    "show_ongoing_incidents",
    ///    "attach_alerts",
    ///    "mark_as_in_triage",
    ///    "in_triage_at",
    ///    "started_at",
    ///    "detected_at",
    ///    "acknowledged_at",
    ///    "mitigated_at",
    ///    "resolved_at",
    ///    "closed_at",
    ///    "custom_sub_status",
    ///    "manual_starting_datetime_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldKind {
        #[serde(rename = "custom")]
        Custom,
        #[serde(rename = "title")]
        Title,
        #[serde(rename = "summary")]
        Summary,
        #[serde(rename = "mitigation_message")]
        MitigationMessage,
        #[serde(rename = "resolution_message")]
        ResolutionMessage,
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "types")]
        Types,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "teams")]
        Teams,
        #[serde(rename = "visibility")]
        Visibility,
        #[serde(rename = "mark_as_test")]
        MarkAsTest,
        #[serde(rename = "mark_as_backfilled")]
        MarkAsBackfilled,
        #[serde(rename = "labels")]
        Labels,
        #[serde(rename = "notify_emails")]
        NotifyEmails,
        #[serde(rename = "trigger_manual_workflows")]
        TriggerManualWorkflows,
        #[serde(rename = "show_ongoing_incidents")]
        ShowOngoingIncidents,
        #[serde(rename = "attach_alerts")]
        AttachAlerts,
        #[serde(rename = "mark_as_in_triage")]
        MarkAsInTriage,
        #[serde(rename = "in_triage_at")]
        InTriageAt,
        #[serde(rename = "started_at")]
        StartedAt,
        #[serde(rename = "detected_at")]
        DetectedAt,
        #[serde(rename = "acknowledged_at")]
        AcknowledgedAt,
        #[serde(rename = "mitigated_at")]
        MitigatedAt,
        #[serde(rename = "resolved_at")]
        ResolvedAt,
        #[serde(rename = "closed_at")]
        ClosedAt,
        #[serde(rename = "custom_sub_status")]
        CustomSubStatus,
        #[serde(rename = "manual_starting_datetime_field")]
        ManualStartingDatetimeField,
    }
    impl ::std::fmt::Display for FormFieldKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Custom => f.write_str("custom"),
                Self::Title => f.write_str("title"),
                Self::Summary => f.write_str("summary"),
                Self::MitigationMessage => f.write_str("mitigation_message"),
                Self::ResolutionMessage => f.write_str("resolution_message"),
                Self::Severity => f.write_str("severity"),
                Self::Environments => f.write_str("environments"),
                Self::Types => f.write_str("types"),
                Self::Services => f.write_str("services"),
                Self::Causes => f.write_str("causes"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Teams => f.write_str("teams"),
                Self::Visibility => f.write_str("visibility"),
                Self::MarkAsTest => f.write_str("mark_as_test"),
                Self::MarkAsBackfilled => f.write_str("mark_as_backfilled"),
                Self::Labels => f.write_str("labels"),
                Self::NotifyEmails => f.write_str("notify_emails"),
                Self::TriggerManualWorkflows => f.write_str("trigger_manual_workflows"),
                Self::ShowOngoingIncidents => f.write_str("show_ongoing_incidents"),
                Self::AttachAlerts => f.write_str("attach_alerts"),
                Self::MarkAsInTriage => f.write_str("mark_as_in_triage"),
                Self::InTriageAt => f.write_str("in_triage_at"),
                Self::StartedAt => f.write_str("started_at"),
                Self::DetectedAt => f.write_str("detected_at"),
                Self::AcknowledgedAt => f.write_str("acknowledged_at"),
                Self::MitigatedAt => f.write_str("mitigated_at"),
                Self::ResolvedAt => f.write_str("resolved_at"),
                Self::ClosedAt => f.write_str("closed_at"),
                Self::CustomSubStatus => f.write_str("custom_sub_status"),
                Self::ManualStartingDatetimeField => {
                    f.write_str("manual_starting_datetime_field")
                }
            }
        }
    }
    impl ::std::str::FromStr for FormFieldKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom" => Ok(Self::Custom),
                "title" => Ok(Self::Title),
                "summary" => Ok(Self::Summary),
                "mitigation_message" => Ok(Self::MitigationMessage),
                "resolution_message" => Ok(Self::ResolutionMessage),
                "severity" => Ok(Self::Severity),
                "environments" => Ok(Self::Environments),
                "types" => Ok(Self::Types),
                "services" => Ok(Self::Services),
                "causes" => Ok(Self::Causes),
                "functionalities" => Ok(Self::Functionalities),
                "teams" => Ok(Self::Teams),
                "visibility" => Ok(Self::Visibility),
                "mark_as_test" => Ok(Self::MarkAsTest),
                "mark_as_backfilled" => Ok(Self::MarkAsBackfilled),
                "labels" => Ok(Self::Labels),
                "notify_emails" => Ok(Self::NotifyEmails),
                "trigger_manual_workflows" => Ok(Self::TriggerManualWorkflows),
                "show_ongoing_incidents" => Ok(Self::ShowOngoingIncidents),
                "attach_alerts" => Ok(Self::AttachAlerts),
                "mark_as_in_triage" => Ok(Self::MarkAsInTriage),
                "in_triage_at" => Ok(Self::InTriageAt),
                "started_at" => Ok(Self::StartedAt),
                "detected_at" => Ok(Self::DetectedAt),
                "acknowledged_at" => Ok(Self::AcknowledgedAt),
                "mitigated_at" => Ok(Self::MitigatedAt),
                "resolved_at" => Ok(Self::ResolvedAt),
                "closed_at" => Ok(Self::ClosedAt),
                "custom_sub_status" => Ok(Self::CustomSubStatus),
                "manual_starting_datetime_field" => Ok(Self::ManualStartingDatetimeField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormFieldKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormFieldKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_field"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form field",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_fields"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldList {
        pub data: ::std::vec::Vec<FormFieldListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormFieldList {
        pub fn builder() -> builder::FormFieldList {
            Default::default()
        }
    }
    ///`FormFieldListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldListDataItem {
        pub attributes: FormField,
        ///Unique ID of the form field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldListDataItemType,
    }
    impl FormFieldListDataItem {
        pub fn builder() -> builder::FormFieldListDataItem {
            Default::default()
        }
    }
    ///`FormFieldListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldListDataItemType {
        #[serde(rename = "form_fields")]
        FormFields,
    }
    impl ::std::fmt::Display for FormFieldListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFields => f.write_str("form_fields"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_fields" => Ok(Self::FormFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormFieldListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldOption`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "color",
    ///    "created_at",
    ///    "position",
    ///    "updated_at",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the form field option",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "type": "boolean"
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the parent custom field",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field option",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the form field option",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The value of the form field option",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldOption {
        ///The hex color of the form field option
        pub color: ::std::string::String,
        ///Date of creation
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The ID of the parent custom field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::std::string::String>,
        ///Unique ID of the form field option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///The position of the form field option
        pub position: i64,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The value of the form field option
        pub value: ::std::string::String,
    }
    impl FormFieldOption {
        pub fn builder() -> builder::FormFieldOption {
            Default::default()
        }
    }
    ///`FormFieldOptionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_field_option"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form field option",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_field_options"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldOptionList {
        pub data: ::std::vec::Vec<FormFieldOptionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormFieldOptionList {
        pub fn builder() -> builder::FormFieldOptionList {
            Default::default()
        }
    }
    ///`FormFieldOptionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_option"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field option",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldOptionListDataItem {
        pub attributes: FormFieldOption,
        ///Unique ID of the form field option
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldOptionListDataItemType,
    }
    impl FormFieldOptionListDataItem {
        pub fn builder() -> builder::FormFieldOptionListDataItem {
            Default::default()
        }
    }
    ///`FormFieldOptionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldOptionListDataItemType {
        #[serde(rename = "form_field_options")]
        FormFieldOptions,
    }
    impl ::std::fmt::Display for FormFieldOptionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldOptions => f.write_str("form_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldOptionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_options" => Ok(Self::FormFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldOptionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldOptionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldOptionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldOptionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_field_option"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form field option",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_options"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldOptionResponse {
        pub data: FormFieldOptionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormFieldOptionResponse {
        pub fn builder() -> builder::FormFieldOptionResponse {
            Default::default()
        }
    }
    ///`FormFieldOptionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_option"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field option",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldOptionResponseData {
        pub attributes: FormFieldOption,
        ///Unique ID of the form field option
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldOptionResponseDataType,
    }
    impl FormFieldOptionResponseData {
        pub fn builder() -> builder::FormFieldOptionResponseData {
            Default::default()
        }
    }
    ///`FormFieldOptionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldOptionResponseDataType {
        #[serde(rename = "form_field_options")]
        FormFieldOptions,
    }
    impl ::std::fmt::Display for FormFieldOptionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldOptions => f.write_str("form_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldOptionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_options" => Ok(Self::FormFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldOptionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldOptionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldOptionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPlacement`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form",
    ///    "form_field_id",
    ///    "form_set_id",
    ///    "position",
    ///    "required"
    ///  ],
    ///  "properties": {
    ///    "form": {
    ///      "description": "The form this field is placed on.",
    ///      "type": "string"
    ///    },
    ///    "form_field_id": {
    ///      "description": "The form field that is placed.",
    ///      "type": "string"
    ///    },
    ///    "form_set_id": {
    ///      "description": "The form set this field is placed in.",
    ///      "type": "string"
    ///    },
    ///    "non_editable": {
    ///      "description": "Whether the field is read-only and cannot be edited by users.",
    ///      "type": "boolean"
    ///    },
    ///    "placement_operator": {
    ///      "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of the field placement.",
    ///      "type": "integer"
    ///    },
    ///    "required": {
    ///      "description": "Whether the field is unconditionally required on this form.",
    ///      "type": "boolean"
    ///    },
    ///    "required_operator": {
    ///      "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacement {
        ///The form this field is placed on.
        pub form: ::std::string::String,
        ///The form field that is placed.
        pub form_field_id: ::std::string::String,
        ///The form set this field is placed in.
        pub form_set_id: ::std::string::String,
        ///Whether the field is read-only and cannot be edited by users.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub non_editable: ::std::option::Option<bool>,
        ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub placement_operator: ::std::option::Option<
            FormFieldPlacementPlacementOperator,
        >,
        ///The position of the field placement.
        pub position: i64,
        ///Whether the field is unconditionally required on this form.
        pub required: bool,
        ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required_operator: ::std::option::Option<FormFieldPlacementRequiredOperator>,
    }
    impl FormFieldPlacement {
        pub fn builder() -> builder::FormFieldPlacement {
            Default::default()
        }
    }
    ///`FormFieldPlacementCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "comparison",
    ///    "conditioned",
    ///    "form_field_id",
    ///    "form_field_placement_id",
    ///    "position",
    ///    "values"
    ///  ],
    ///  "properties": {
    ///    "comparison": {
    ///      "description": "The condition comparison.",
    ///      "type": "string",
    ///      "enum": [
    ///        "equal",
    ///        "not_equal",
    ///        "is_set",
    ///        "is_not_set"
    ///      ]
    ///    },
    ///    "conditioned": {
    ///      "description": "The resource or attribute the condition applies.",
    ///      "type": "string",
    ///      "enum": [
    ///        "placement",
    ///        "required"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The condition field.",
    ///      "type": "string"
    ///    },
    ///    "form_field_placement_id": {
    ///      "description": "The form field placement this condition applies.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The condition position.",
    ///      "type": "integer"
    ///    },
    ///    "values": {
    ///      "description": "The values for comparison.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value for comparison.",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementCondition {
        ///The condition comparison.
        pub comparison: FormFieldPlacementConditionComparison,
        ///The resource or attribute the condition applies.
        pub conditioned: FormFieldPlacementConditionConditioned,
        ///The condition field.
        pub form_field_id: ::std::string::String,
        ///The form field placement this condition applies.
        pub form_field_placement_id: ::std::string::String,
        ///The condition position.
        pub position: i64,
        ///The values for comparison.
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl FormFieldPlacementCondition {
        pub fn builder() -> builder::FormFieldPlacementCondition {
            Default::default()
        }
    }
    ///The condition comparison.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition comparison.",
    ///  "type": "string",
    ///  "enum": [
    ///    "equal",
    ///    "not_equal",
    ///    "is_set",
    ///    "is_not_set"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementConditionComparison {
        #[serde(rename = "equal")]
        Equal,
        #[serde(rename = "not_equal")]
        NotEqual,
        #[serde(rename = "is_set")]
        IsSet,
        #[serde(rename = "is_not_set")]
        IsNotSet,
    }
    impl ::std::fmt::Display for FormFieldPlacementConditionComparison {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Equal => f.write_str("equal"),
                Self::NotEqual => f.write_str("not_equal"),
                Self::IsSet => f.write_str("is_set"),
                Self::IsNotSet => f.write_str("is_not_set"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementConditionComparison {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "equal" => Ok(Self::Equal),
                "not_equal" => Ok(Self::NotEqual),
                "is_set" => Ok(Self::IsSet),
                "is_not_set" => Ok(Self::IsNotSet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementConditionComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementConditionComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementConditionComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The resource or attribute the condition applies.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The resource or attribute the condition applies.",
    ///  "type": "string",
    ///  "enum": [
    ///    "placement",
    ///    "required"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementConditionConditioned {
        #[serde(rename = "placement")]
        Placement,
        #[serde(rename = "required")]
        Required,
    }
    impl ::std::fmt::Display for FormFieldPlacementConditionConditioned {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Placement => f.write_str("placement"),
                Self::Required => f.write_str("required"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementConditionConditioned {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "placement" => Ok(Self::Placement),
                "required" => Ok(Self::Required),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementConditionConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementConditionConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementConditionConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPlacementConditionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_field_placement_condition"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form set condition",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_field_placement_conditions"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementConditionList {
        pub data: ::std::vec::Vec<FormFieldPlacementConditionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormFieldPlacementConditionList {
        pub fn builder() -> builder::FormFieldPlacementConditionList {
            Default::default()
        }
    }
    ///`FormFieldPlacementConditionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_placement_condition"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form set condition",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placement_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementConditionListDataItem {
        pub attributes: FormFieldPlacementCondition,
        ///Unique ID of the form set condition
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldPlacementConditionListDataItemType,
    }
    impl FormFieldPlacementConditionListDataItem {
        pub fn builder() -> builder::FormFieldPlacementConditionListDataItem {
            Default::default()
        }
    }
    ///`FormFieldPlacementConditionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placement_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementConditionListDataItemType {
        #[serde(rename = "form_field_placement_conditions")]
        FormFieldPlacementConditions,
    }
    impl ::std::fmt::Display for FormFieldPlacementConditionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacementConditions => {
                    f.write_str("form_field_placement_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementConditionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placement_conditions" => {
                    Ok(Self::FormFieldPlacementConditions)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPlacementConditionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_field_placement_condition"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form set condition",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_placement_conditions"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementConditionResponse {
        pub data: FormFieldPlacementConditionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormFieldPlacementConditionResponse {
        pub fn builder() -> builder::FormFieldPlacementConditionResponse {
            Default::default()
        }
    }
    ///`FormFieldPlacementConditionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_placement_condition"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form set condition",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placement_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementConditionResponseData {
        pub attributes: FormFieldPlacementCondition,
        ///Unique ID of the form set condition
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldPlacementConditionResponseDataType,
    }
    impl FormFieldPlacementConditionResponseData {
        pub fn builder() -> builder::FormFieldPlacementConditionResponseData {
            Default::default()
        }
    }
    ///`FormFieldPlacementConditionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placement_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementConditionResponseDataType {
        #[serde(rename = "form_field_placement_conditions")]
        FormFieldPlacementConditions,
    }
    impl ::std::fmt::Display for FormFieldPlacementConditionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacementConditions => {
                    f.write_str("form_field_placement_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementConditionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placement_conditions" => {
                    Ok(Self::FormFieldPlacementConditions)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPlacementList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_field_placement"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form field placement",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_field_placements"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementList {
        pub data: ::std::vec::Vec<FormFieldPlacementListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormFieldPlacementList {
        pub fn builder() -> builder::FormFieldPlacementList {
            Default::default()
        }
    }
    ///`FormFieldPlacementListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_placement"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field placement",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placements"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementListDataItem {
        pub attributes: FormFieldPlacement,
        ///Unique ID of the form field placement
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldPlacementListDataItemType,
    }
    impl FormFieldPlacementListDataItem {
        pub fn builder() -> builder::FormFieldPlacementListDataItem {
            Default::default()
        }
    }
    ///`FormFieldPlacementListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placements"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementListDataItemType {
        #[serde(rename = "form_field_placements")]
        FormFieldPlacements,
    }
    impl ::std::fmt::Display for FormFieldPlacementListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacements => f.write_str("form_field_placements"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placements" => Ok(Self::FormFieldPlacements),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementPlacementOperator {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display for FormFieldPlacementPlacementOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementPlacementOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementRequiredOperator {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display for FormFieldPlacementRequiredOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementRequiredOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPlacementResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_field_placement"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form field placement",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_placements"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementResponse {
        pub data: FormFieldPlacementResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormFieldPlacementResponse {
        pub fn builder() -> builder::FormFieldPlacementResponse {
            Default::default()
        }
    }
    ///`FormFieldPlacementResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_placement"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field placement",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placements"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPlacementResponseData {
        pub attributes: FormFieldPlacement,
        ///Unique ID of the form field placement
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldPlacementResponseDataType,
    }
    impl FormFieldPlacementResponseData {
        pub fn builder() -> builder::FormFieldPlacementResponseData {
            Default::default()
        }
    }
    ///`FormFieldPlacementResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placements"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPlacementResponseDataType {
        #[serde(rename = "form_field_placements")]
        FormFieldPlacements,
    }
    impl ::std::fmt::Display for FormFieldPlacementResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacements => f.write_str("form_field_placements"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPlacementResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placements" => Ok(Self::FormFieldPlacements),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPlacementResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPlacementResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPlacementResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPosition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form",
    ///    "form_field_id",
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "form": {
    ///      "description": "The form for the position",
    ///      "type": "string",
    ///      "enum": [
    ///        "web_new_incident_form",
    ///        "web_update_incident_form",
    ///        "web_incident_post_mortem_form",
    ///        "web_incident_mitigation_form",
    ///        "web_incident_resolution_form",
    ///        "web_incident_cancellation_form",
    ///        "web_scheduled_incident_form",
    ///        "web_update_scheduled_incident_form",
    ///        "incident_post_mortem",
    ///        "slack_new_incident_form",
    ///        "slack_update_incident_form",
    ///        "slack_update_incident_status_form",
    ///        "slack_incident_mitigation_form",
    ///        "slack_incident_resolution_form",
    ///        "slack_incident_cancellation_form",
    ///        "slack_scheduled_incident_form",
    ///        "slack_update_scheduled_incident_form"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the form_field_position",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPosition {
        ///The form for the position
        pub form: FormFieldPositionForm,
        ///The ID of the form field.
        pub form_field_id: ::std::string::String,
        ///The position of the form_field_position
        pub position: i64,
    }
    impl FormFieldPosition {
        pub fn builder() -> builder::FormFieldPosition {
            Default::default()
        }
    }
    ///The form for the position
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The form for the position",
    ///  "type": "string",
    ///  "enum": [
    ///    "web_new_incident_form",
    ///    "web_update_incident_form",
    ///    "web_incident_post_mortem_form",
    ///    "web_incident_mitigation_form",
    ///    "web_incident_resolution_form",
    ///    "web_incident_cancellation_form",
    ///    "web_scheduled_incident_form",
    ///    "web_update_scheduled_incident_form",
    ///    "incident_post_mortem",
    ///    "slack_new_incident_form",
    ///    "slack_update_incident_form",
    ///    "slack_update_incident_status_form",
    ///    "slack_incident_mitigation_form",
    ///    "slack_incident_resolution_form",
    ///    "slack_incident_cancellation_form",
    ///    "slack_scheduled_incident_form",
    ///    "slack_update_scheduled_incident_form"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPositionForm {
        #[serde(rename = "web_new_incident_form")]
        WebNewIncidentForm,
        #[serde(rename = "web_update_incident_form")]
        WebUpdateIncidentForm,
        #[serde(rename = "web_incident_post_mortem_form")]
        WebIncidentPostMortemForm,
        #[serde(rename = "web_incident_mitigation_form")]
        WebIncidentMitigationForm,
        #[serde(rename = "web_incident_resolution_form")]
        WebIncidentResolutionForm,
        #[serde(rename = "web_incident_cancellation_form")]
        WebIncidentCancellationForm,
        #[serde(rename = "web_scheduled_incident_form")]
        WebScheduledIncidentForm,
        #[serde(rename = "web_update_scheduled_incident_form")]
        WebUpdateScheduledIncidentForm,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
        #[serde(rename = "slack_new_incident_form")]
        SlackNewIncidentForm,
        #[serde(rename = "slack_update_incident_form")]
        SlackUpdateIncidentForm,
        #[serde(rename = "slack_update_incident_status_form")]
        SlackUpdateIncidentStatusForm,
        #[serde(rename = "slack_incident_mitigation_form")]
        SlackIncidentMitigationForm,
        #[serde(rename = "slack_incident_resolution_form")]
        SlackIncidentResolutionForm,
        #[serde(rename = "slack_incident_cancellation_form")]
        SlackIncidentCancellationForm,
        #[serde(rename = "slack_scheduled_incident_form")]
        SlackScheduledIncidentForm,
        #[serde(rename = "slack_update_scheduled_incident_form")]
        SlackUpdateScheduledIncidentForm,
    }
    impl ::std::fmt::Display for FormFieldPositionForm {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebNewIncidentForm => f.write_str("web_new_incident_form"),
                Self::WebUpdateIncidentForm => f.write_str("web_update_incident_form"),
                Self::WebIncidentPostMortemForm => {
                    f.write_str("web_incident_post_mortem_form")
                }
                Self::WebIncidentMitigationForm => {
                    f.write_str("web_incident_mitigation_form")
                }
                Self::WebIncidentResolutionForm => {
                    f.write_str("web_incident_resolution_form")
                }
                Self::WebIncidentCancellationForm => {
                    f.write_str("web_incident_cancellation_form")
                }
                Self::WebScheduledIncidentForm => {
                    f.write_str("web_scheduled_incident_form")
                }
                Self::WebUpdateScheduledIncidentForm => {
                    f.write_str("web_update_scheduled_incident_form")
                }
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
                Self::SlackNewIncidentForm => f.write_str("slack_new_incident_form"),
                Self::SlackUpdateIncidentForm => {
                    f.write_str("slack_update_incident_form")
                }
                Self::SlackUpdateIncidentStatusForm => {
                    f.write_str("slack_update_incident_status_form")
                }
                Self::SlackIncidentMitigationForm => {
                    f.write_str("slack_incident_mitigation_form")
                }
                Self::SlackIncidentResolutionForm => {
                    f.write_str("slack_incident_resolution_form")
                }
                Self::SlackIncidentCancellationForm => {
                    f.write_str("slack_incident_cancellation_form")
                }
                Self::SlackScheduledIncidentForm => {
                    f.write_str("slack_scheduled_incident_form")
                }
                Self::SlackUpdateScheduledIncidentForm => {
                    f.write_str("slack_update_scheduled_incident_form")
                }
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPositionForm {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "web_new_incident_form" => Ok(Self::WebNewIncidentForm),
                "web_update_incident_form" => Ok(Self::WebUpdateIncidentForm),
                "web_incident_post_mortem_form" => Ok(Self::WebIncidentPostMortemForm),
                "web_incident_mitigation_form" => Ok(Self::WebIncidentMitigationForm),
                "web_incident_resolution_form" => Ok(Self::WebIncidentResolutionForm),
                "web_incident_cancellation_form" => Ok(Self::WebIncidentCancellationForm),
                "web_scheduled_incident_form" => Ok(Self::WebScheduledIncidentForm),
                "web_update_scheduled_incident_form" => {
                    Ok(Self::WebUpdateScheduledIncidentForm)
                }
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                "slack_new_incident_form" => Ok(Self::SlackNewIncidentForm),
                "slack_update_incident_form" => Ok(Self::SlackUpdateIncidentForm),
                "slack_update_incident_status_form" => {
                    Ok(Self::SlackUpdateIncidentStatusForm)
                }
                "slack_incident_mitigation_form" => Ok(Self::SlackIncidentMitigationForm),
                "slack_incident_resolution_form" => Ok(Self::SlackIncidentResolutionForm),
                "slack_incident_cancellation_form" => {
                    Ok(Self::SlackIncidentCancellationForm)
                }
                "slack_scheduled_incident_form" => Ok(Self::SlackScheduledIncidentForm),
                "slack_update_scheduled_incident_form" => {
                    Ok(Self::SlackUpdateScheduledIncidentForm)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPositionForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormFieldPositionForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormFieldPositionForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPositionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_field_position"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form_field_position",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_field_positions"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPositionList {
        pub data: ::std::vec::Vec<FormFieldPositionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormFieldPositionList {
        pub fn builder() -> builder::FormFieldPositionList {
            Default::default()
        }
    }
    ///`FormFieldPositionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_position"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form_field_position",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_positions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPositionListDataItem {
        pub attributes: FormFieldPosition,
        ///Unique ID of the form_field_position
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldPositionListDataItemType,
    }
    impl FormFieldPositionListDataItem {
        pub fn builder() -> builder::FormFieldPositionListDataItem {
            Default::default()
        }
    }
    ///`FormFieldPositionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_positions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPositionListDataItemType {
        #[serde(rename = "form_field_positions")]
        FormFieldPositions,
    }
    impl ::std::fmt::Display for FormFieldPositionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPositions => f.write_str("form_field_positions"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPositionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_positions" => Ok(Self::FormFieldPositions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPositionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPositionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPositionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldPositionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_field_position"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form_field_position",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_positions"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPositionResponse {
        pub data: FormFieldPositionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormFieldPositionResponse {
        pub fn builder() -> builder::FormFieldPositionResponse {
            Default::default()
        }
    }
    ///`FormFieldPositionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field_position"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form_field_position",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_positions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldPositionResponseData {
        pub attributes: FormFieldPosition,
        ///Unique ID of the form_field_position
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldPositionResponseDataType,
    }
    impl FormFieldPositionResponseData {
        pub fn builder() -> builder::FormFieldPositionResponseData {
            Default::default()
        }
    }
    ///`FormFieldPositionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_positions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldPositionResponseDataType {
        #[serde(rename = "form_field_positions")]
        FormFieldPositions,
    }
    impl ::std::fmt::Display for FormFieldPositionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPositions => f.write_str("form_field_positions"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldPositionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_positions" => Ok(Self::FormFieldPositions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldPositionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormFieldPositionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormFieldPositionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormFieldResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_field"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form field",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_fields"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldResponse {
        pub data: FormFieldResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormFieldResponse {
        pub fn builder() -> builder::FormFieldResponse {
            Default::default()
        }
    }
    ///`FormFieldResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_field"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form field",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormFieldResponseData {
        pub attributes: FormField,
        ///Unique ID of the form field
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormFieldResponseDataType,
    }
    impl FormFieldResponseData {
        pub fn builder() -> builder::FormFieldResponseData {
            Default::default()
        }
    }
    ///`FormFieldResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldResponseDataType {
        #[serde(rename = "form_fields")]
        FormFields,
    }
    impl ::std::fmt::Display for FormFieldResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFields => f.write_str("form_fields"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_fields" => Ok(Self::FormFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormFieldResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The value kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The value kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "inherit",
    ///    "group",
    ///    "service",
    ///    "functionality",
    ///    "user",
    ///    "catalog_entity",
    ///    "environment",
    ///    "cause",
    ///    "incident_type"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormFieldValueKind {
        #[serde(rename = "inherit")]
        Inherit,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
    }
    impl ::std::fmt::Display for FormFieldValueKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Inherit => f.write_str("inherit"),
                Self::Group => f.write_str("group"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::User => f.write_str("user"),
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::Environment => f.write_str("environment"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
            }
        }
    }
    impl ::std::str::FromStr for FormFieldValueKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "inherit" => Ok(Self::Inherit),
                "group" => Ok(Self::Group),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "user" => Ok(Self::User),
                "catalog_entity" => Ok(Self::CatalogEntity),
                "environment" => Ok(Self::Environment),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormFieldValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormFieldValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormFieldValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormSet`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "forms",
    ///    "is_default",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "forms": {
    ///      "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "is_default": {
    ///      "description": "Whether the form set is default",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the form set",
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the form set",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSet {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`
        pub forms: ::std::vec::Vec<::std::string::String>,
        ///Whether the form set is default
        pub is_default: bool,
        ///The name of the form set
        pub name: ::std::string::String,
        ///The slug of the form set
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl FormSet {
        pub fn builder() -> builder::FormSet {
            Default::default()
        }
    }
    ///`FormSetCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "comparison",
    ///    "form_field_id",
    ///    "form_set_id",
    ///    "values"
    ///  ],
    ///  "properties": {
    ///    "comparison": {
    ///      "description": "The condition comparison.",
    ///      "type": "string",
    ///      "enum": [
    ///        "equal"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The form field this condition applies.",
    ///      "type": "string"
    ///    },
    ///    "form_set_id": {
    ///      "description": "The form set this condition applies.",
    ///      "type": "string"
    ///    },
    ///    "values": {
    ///      "description": "The values for comparison.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value for comparison.",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetCondition {
        ///The condition comparison.
        pub comparison: FormSetConditionComparison,
        ///The form field this condition applies.
        pub form_field_id: ::std::string::String,
        ///The form set this condition applies.
        pub form_set_id: ::std::string::String,
        ///The values for comparison.
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl FormSetCondition {
        pub fn builder() -> builder::FormSetCondition {
            Default::default()
        }
    }
    ///The condition comparison.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition comparison.",
    ///  "type": "string",
    ///  "enum": [
    ///    "equal"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormSetConditionComparison {
        #[serde(rename = "equal")]
        Equal,
    }
    impl ::std::fmt::Display for FormSetConditionComparison {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Equal => f.write_str("equal"),
            }
        }
    }
    impl ::std::str::FromStr for FormSetConditionComparison {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "equal" => Ok(Self::Equal),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormSetConditionComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormSetConditionComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormSetConditionComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormSetConditionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_set_condition"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form set condition",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_set_conditions"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetConditionList {
        pub data: ::std::vec::Vec<FormSetConditionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormSetConditionList {
        pub fn builder() -> builder::FormSetConditionList {
            Default::default()
        }
    }
    ///`FormSetConditionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_set_condition"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form set condition",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_set_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetConditionListDataItem {
        pub attributes: FormSetCondition,
        ///Unique ID of the form set condition
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormSetConditionListDataItemType,
    }
    impl FormSetConditionListDataItem {
        pub fn builder() -> builder::FormSetConditionListDataItem {
            Default::default()
        }
    }
    ///`FormSetConditionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_set_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormSetConditionListDataItemType {
        #[serde(rename = "form_set_conditions")]
        FormSetConditions,
    }
    impl ::std::fmt::Display for FormSetConditionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSetConditions => f.write_str("form_set_conditions"),
            }
        }
    }
    impl ::std::str::FromStr for FormSetConditionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_set_conditions" => Ok(Self::FormSetConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormSetConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormSetConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormSetConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormSetConditionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_set_condition"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form set condition",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_set_conditions"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetConditionResponse {
        pub data: FormSetConditionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormSetConditionResponse {
        pub fn builder() -> builder::FormSetConditionResponse {
            Default::default()
        }
    }
    ///`FormSetConditionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_set_condition"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form set condition",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_set_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetConditionResponseData {
        pub attributes: FormSetCondition,
        ///Unique ID of the form set condition
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormSetConditionResponseDataType,
    }
    impl FormSetConditionResponseData {
        pub fn builder() -> builder::FormSetConditionResponseData {
            Default::default()
        }
    }
    ///`FormSetConditionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_set_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormSetConditionResponseDataType {
        #[serde(rename = "form_set_conditions")]
        FormSetConditions,
    }
    impl ::std::fmt::Display for FormSetConditionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSetConditions => f.write_str("form_set_conditions"),
            }
        }
    }
    impl ::std::str::FromStr for FormSetConditionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_set_conditions" => Ok(Self::FormSetConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormSetConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FormSetConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FormSetConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormSetList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/form_set"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the form set",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "form_sets"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetList {
        pub data: ::std::vec::Vec<FormSetListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FormSetList {
        pub fn builder() -> builder::FormSetList {
            Default::default()
        }
    }
    ///`FormSetListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_set"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form set",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetListDataItem {
        pub attributes: FormSet,
        ///Unique ID of the form set
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormSetListDataItemType,
    }
    impl FormSetListDataItem {
        pub fn builder() -> builder::FormSetListDataItem {
            Default::default()
        }
    }
    ///`FormSetListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormSetListDataItemType {
        #[serde(rename = "form_sets")]
        FormSets,
    }
    impl ::std::fmt::Display for FormSetListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSets => f.write_str("form_sets"),
            }
        }
    }
    impl ::std::str::FromStr for FormSetListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_sets" => Ok(Self::FormSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormSetListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormSetListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormSetListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FormSetResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/form_set"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the form set",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_sets"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetResponse {
        pub data: FormSetResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FormSetResponse {
        pub fn builder() -> builder::FormSetResponse {
            Default::default()
        }
    }
    ///`FormSetResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/form_set"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the form set",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FormSetResponseData {
        pub attributes: FormSet,
        ///Unique ID of the form set
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FormSetResponseDataType,
    }
    impl FormSetResponseData {
        pub fn builder() -> builder::FormSetResponseData {
            Default::default()
        }
    }
    ///`FormSetResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FormSetResponseDataType {
        #[serde(rename = "form_sets")]
        FormSets,
    }
    impl ::std::fmt::Display for FormSetResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSets => f.write_str("form_sets"),
            }
        }
    }
    impl ::std::str::FromStr for FormSetResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_sets" => Ok(Self::FormSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FormSetResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for FormSetResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for FormSetResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Functionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "Environments associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The escalation policy id of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the functionality",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails attached to the functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie service id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_team_id": {
    ///      "description": "The Opsgenie team id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owner Teams associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_ids": {
    ///      "description": "Owner Users associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty service id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the functionality",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this functionality.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Services associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the functionality",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Functionality {
        ///The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Environments associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The escalation policy id of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The external id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///The name of the functionality
        pub name: ::std::string::String,
        ///Emails attached to the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie service id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The Opsgenie team id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_team_id: ::std::option::Option<::std::string::String>,
        ///Owner Teams associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Owner Users associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The PagerDuty service id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///Position of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this functionality.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub properties: ::std::option::Option<
            ::std::vec::Vec<FunctionalityPropertiesItem>,
        >,
        ///The public description of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///Services associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Service Now CI sys id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<FunctionalitySlackAliasesItem>,
        >,
        ///Slack Channels associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<FunctionalitySlackChannelsItem>,
        >,
        ///The slug of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Functionality {
        pub fn builder() -> builder::Functionality {
            Default::default()
        }
    }
    ///`FunctionalityList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/functionality"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the functionality",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "functionalities"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalityList {
        pub data: ::std::vec::Vec<FunctionalityListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl FunctionalityList {
        pub fn builder() -> builder::FunctionalityList {
            Default::default()
        }
    }
    ///`FunctionalityListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/functionality"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the functionality",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalityListDataItem {
        pub attributes: Functionality,
        ///Unique ID of the functionality
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FunctionalityListDataItemType,
    }
    impl FunctionalityListDataItem {
        pub fn builder() -> builder::FunctionalityListDataItem {
            Default::default()
        }
    }
    ///`FunctionalityListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FunctionalityListDataItemType {
        #[serde(rename = "functionalities")]
        Functionalities,
    }
    impl ::std::fmt::Display for FunctionalityListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Functionalities => f.write_str("functionalities"),
            }
        }
    }
    impl ::std::str::FromStr for FunctionalityListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "functionalities" => Ok(Self::Functionalities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FunctionalityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FunctionalityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FunctionalityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalityPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl FunctionalityPropertiesItem {
        pub fn builder() -> builder::FunctionalityPropertiesItem {
            Default::default()
        }
    }
    ///`FunctionalityResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/functionality"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the functionality",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "functionalities"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalityResponse {
        pub data: FunctionalityResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl FunctionalityResponse {
        pub fn builder() -> builder::FunctionalityResponse {
            Default::default()
        }
    }
    ///`FunctionalityResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/functionality"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the functionality",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalityResponseData {
        pub attributes: Functionality,
        ///Unique ID of the functionality
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: FunctionalityResponseDataType,
    }
    impl FunctionalityResponseData {
        pub fn builder() -> builder::FunctionalityResponseData {
            Default::default()
        }
    }
    ///`FunctionalityResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum FunctionalityResponseDataType {
        #[serde(rename = "functionalities")]
        Functionalities,
    }
    impl ::std::fmt::Display for FunctionalityResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Functionalities => f.write_str("functionalities"),
            }
        }
    }
    impl ::std::str::FromStr for FunctionalityResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "functionalities" => Ok(Self::Functionalities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for FunctionalityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for FunctionalityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for FunctionalityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`FunctionalitySlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalitySlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl FunctionalitySlackAliasesItem {
        pub fn builder() -> builder::FunctionalitySlackAliasesItem {
            Default::default()
        }
    }
    ///`FunctionalitySlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct FunctionalitySlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl FunctionalitySlackChannelsItem {
        pub fn builder() -> builder::FunctionalitySlackChannelsItem {
            Default::default()
        }
    }
    ///`GeneratePhoneNumberLiveCallRouterCountryCode`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "AU",
    ///    "CA",
    ///    "DE",
    ///    "NL",
    ///    "NZ",
    ///    "SE",
    ///    "CH",
    ///    "GB",
    ///    "US"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GeneratePhoneNumberLiveCallRouterCountryCode {
        #[serde(rename = "AU")]
        Au,
        #[serde(rename = "CA")]
        Ca,
        #[serde(rename = "DE")]
        De,
        #[serde(rename = "NL")]
        Nl,
        #[serde(rename = "NZ")]
        Nz,
        #[serde(rename = "SE")]
        Se,
        #[serde(rename = "CH")]
        Ch,
        #[serde(rename = "GB")]
        Gb,
        #[serde(rename = "US")]
        Us,
    }
    impl ::std::fmt::Display for GeneratePhoneNumberLiveCallRouterCountryCode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Au => f.write_str("AU"),
                Self::Ca => f.write_str("CA"),
                Self::De => f.write_str("DE"),
                Self::Nl => f.write_str("NL"),
                Self::Nz => f.write_str("NZ"),
                Self::Se => f.write_str("SE"),
                Self::Ch => f.write_str("CH"),
                Self::Gb => f.write_str("GB"),
                Self::Us => f.write_str("US"),
            }
        }
    }
    impl ::std::str::FromStr for GeneratePhoneNumberLiveCallRouterCountryCode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AU" => Ok(Self::Au),
                "CA" => Ok(Self::Ca),
                "DE" => Ok(Self::De),
                "NL" => Ok(Self::Nl),
                "NZ" => Ok(Self::Nz),
                "SE" => Ok(Self::Se),
                "CH" => Ok(Self::Ch),
                "GB" => Ok(Self::Gb),
                "US" => Ok(Self::Us),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GeneratePhoneNumberLiveCallRouterCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GeneratePhoneNumberLiveCallRouterCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GeneratePhoneNumberLiveCallRouterCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GeneratePhoneNumberLiveCallRouterPhoneType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "local",
    ///    "toll_free",
    ///    "mobile"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GeneratePhoneNumberLiveCallRouterPhoneType {
        #[serde(rename = "local")]
        Local,
        #[serde(rename = "toll_free")]
        TollFree,
        #[serde(rename = "mobile")]
        Mobile,
    }
    impl ::std::fmt::Display for GeneratePhoneNumberLiveCallRouterPhoneType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Local => f.write_str("local"),
                Self::TollFree => f.write_str("toll_free"),
                Self::Mobile => f.write_str("mobile"),
            }
        }
    }
    impl ::std::str::FromStr for GeneratePhoneNumberLiveCallRouterPhoneType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "local" => Ok(Self::Local),
                "toll_free" => Ok(Self::TollFree),
                "mobile" => Ok(Self::Mobile),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GeneratePhoneNumberLiveCallRouterPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GeneratePhoneNumberLiveCallRouterPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GeneratePhoneNumberLiveCallRouterPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetAlertInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments",
    ///    "services",
    ///    "groups",
    ///    "functionalities",
    ///    "responders",
    ///    "incidents",
    ///    "notified_users",
    ///    "events",
    ///    "alert_urgency",
    ///    "heartbeat",
    ///    "live_call_router",
    ///    "alert_group",
    ///    "group_leader_alert",
    ///    "group_member_alerts",
    ///    "alert_field_values",
    ///    "alerting_targets",
    ///    "escalation_policies",
    ///    "alert_call_recording"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetAlertInclude {
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "responders")]
        Responders,
        #[serde(rename = "incidents")]
        Incidents,
        #[serde(rename = "notified_users")]
        NotifiedUsers,
        #[serde(rename = "events")]
        Events,
        #[serde(rename = "alert_urgency")]
        AlertUrgency,
        #[serde(rename = "heartbeat")]
        Heartbeat,
        #[serde(rename = "live_call_router")]
        LiveCallRouter,
        #[serde(rename = "alert_group")]
        AlertGroup,
        #[serde(rename = "group_leader_alert")]
        GroupLeaderAlert,
        #[serde(rename = "group_member_alerts")]
        GroupMemberAlerts,
        #[serde(rename = "alert_field_values")]
        AlertFieldValues,
        #[serde(rename = "alerting_targets")]
        AlertingTargets,
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
        #[serde(rename = "alert_call_recording")]
        AlertCallRecording,
    }
    impl ::std::fmt::Display for GetAlertInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
                Self::Services => f.write_str("services"),
                Self::Groups => f.write_str("groups"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Responders => f.write_str("responders"),
                Self::Incidents => f.write_str("incidents"),
                Self::NotifiedUsers => f.write_str("notified_users"),
                Self::Events => f.write_str("events"),
                Self::AlertUrgency => f.write_str("alert_urgency"),
                Self::Heartbeat => f.write_str("heartbeat"),
                Self::LiveCallRouter => f.write_str("live_call_router"),
                Self::AlertGroup => f.write_str("alert_group"),
                Self::GroupLeaderAlert => f.write_str("group_leader_alert"),
                Self::GroupMemberAlerts => f.write_str("group_member_alerts"),
                Self::AlertFieldValues => f.write_str("alert_field_values"),
                Self::AlertingTargets => f.write_str("alerting_targets"),
                Self::EscalationPolicies => f.write_str("escalation_policies"),
                Self::AlertCallRecording => f.write_str("alert_call_recording"),
            }
        }
    }
    impl ::std::str::FromStr for GetAlertInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                "services" => Ok(Self::Services),
                "groups" => Ok(Self::Groups),
                "functionalities" => Ok(Self::Functionalities),
                "responders" => Ok(Self::Responders),
                "incidents" => Ok(Self::Incidents),
                "notified_users" => Ok(Self::NotifiedUsers),
                "events" => Ok(Self::Events),
                "alert_urgency" => Ok(Self::AlertUrgency),
                "heartbeat" => Ok(Self::Heartbeat),
                "live_call_router" => Ok(Self::LiveCallRouter),
                "alert_group" => Ok(Self::AlertGroup),
                "group_leader_alert" => Ok(Self::GroupLeaderAlert),
                "group_member_alerts" => Ok(Self::GroupMemberAlerts),
                "alert_field_values" => Ok(Self::AlertFieldValues),
                "alerting_targets" => Ok(Self::AlertingTargets),
                "escalation_policies" => Ok(Self::EscalationPolicies),
                "alert_call_recording" => Ok(Self::AlertCallRecording),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetAlertInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetAlertInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetAlertInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetAlertsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "past_duration"
    ///  ],
    ///  "properties": {
    ///    "environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "ID of environment impacted by incident",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "environments_impacted_by_incident": {
    ///      "type": "boolean"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "parent_message_thread_task": {
    ///      "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "past_duration": {
    ///      "description": "How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "ID of service impacted by incident",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "services_impacted_by_incident": {
    ///      "type": "boolean"
    ///    },
    ///    "sources": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "get_alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetAlertsTaskParams {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environments_impacted_by_incident: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_message_thread_task: ::std::option::Option<
            GetAlertsTaskParamsParentMessageThreadTask,
        >,
        ///How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)
        pub past_duration: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            GetAlertsTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub services_impacted_by_incident: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sources: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<GetAlertsTaskParamsTaskType>,
    }
    impl GetAlertsTaskParams {
        pub fn builder() -> builder::GetAlertsTaskParams {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetAlertsTaskParamsParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for GetAlertsTaskParamsParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetAlertsTaskParamsParentMessageThreadTask {
        pub fn builder() -> builder::GetAlertsTaskParamsParentMessageThreadTask {
            Default::default()
        }
    }
    ///`GetAlertsTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetAlertsTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for GetAlertsTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetAlertsTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::GetAlertsTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`GetAlertsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "get_alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetAlertsTaskParamsTaskType {
        #[serde(rename = "get_alerts")]
        GetAlerts,
    }
    impl ::std::fmt::Display for GetAlertsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GetAlerts => f.write_str("get_alerts"),
            }
        }
    }
    impl ::std::str::FromStr for GetAlertsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "get_alerts" => Ok(Self::GetAlerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetAlertsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetAlertsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetAlertsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetCatalogEntityInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetCatalogEntityInclude {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "properties")]
        Properties,
    }
    impl ::std::fmt::Display for GetCatalogEntityInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Properties => f.write_str("properties"),
            }
        }
    }
    impl ::std::str::FromStr for GetCatalogEntityInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "properties" => Ok(Self::Properties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetCatalogEntityInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetCatalogEntityInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetCatalogEntityInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetCatalogEntityPropertyInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity",
    ///    "catalog_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetCatalogEntityPropertyInclude {
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "catalog_field")]
        CatalogField,
    }
    impl ::std::fmt::Display for GetCatalogEntityPropertyInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::CatalogField => f.write_str("catalog_field"),
            }
        }
    }
    impl ::std::str::FromStr for GetCatalogEntityPropertyInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity" => Ok(Self::CatalogEntity),
                "catalog_field" => Ok(Self::CatalogField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetCatalogEntityPropertyInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetCatalogEntityPropertyInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetCatalogEntityPropertyInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetCustomFieldInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetCustomFieldInclude {
        #[serde(rename = "options")]
        Options,
    }
    impl ::std::fmt::Display for GetCustomFieldInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Options => f.write_str("options"),
            }
        }
    }
    impl ::std::str::FromStr for GetCustomFieldInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "options" => Ok(Self::Options),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetCustomFieldInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetCustomFieldInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetCustomFieldInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetDashboardInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "panels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetDashboardInclude {
        #[serde(rename = "panels")]
        Panels,
    }
    impl ::std::fmt::Display for GetDashboardInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Panels => f.write_str("panels"),
            }
        }
    }
    impl ::std::str::FromStr for GetDashboardInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "panels" => Ok(Self::Panels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetDashboardInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetDashboardInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetDashboardInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetEscalationPathInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policy_levels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetEscalationPathInclude {
        #[serde(rename = "escalation_policy_levels")]
        EscalationPolicyLevels,
    }
    impl ::std::fmt::Display for GetEscalationPathInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicyLevels => f.write_str("escalation_policy_levels"),
            }
        }
    }
    impl ::std::str::FromStr for GetEscalationPathInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policy_levels" => Ok(Self::EscalationPolicyLevels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetEscalationPathInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetEscalationPathInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetEscalationPathInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetEscalationPolicyInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policy_levels",
    ///    "escalation_policy_paths",
    ///    "groups",
    ///    "services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetEscalationPolicyInclude {
        #[serde(rename = "escalation_policy_levels")]
        EscalationPolicyLevels,
        #[serde(rename = "escalation_policy_paths")]
        EscalationPolicyPaths,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "services")]
        Services,
    }
    impl ::std::fmt::Display for GetEscalationPolicyInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicyLevels => f.write_str("escalation_policy_levels"),
                Self::EscalationPolicyPaths => f.write_str("escalation_policy_paths"),
                Self::Groups => f.write_str("groups"),
                Self::Services => f.write_str("services"),
            }
        }
    }
    impl ::std::str::FromStr for GetEscalationPolicyInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policy_levels" => Ok(Self::EscalationPolicyLevels),
                "escalation_policy_paths" => Ok(Self::EscalationPolicyPaths),
                "groups" => Ok(Self::Groups),
                "services" => Ok(Self::Services),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetEscalationPolicyInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetEscalationPolicyInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetEscalationPolicyInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetFormFieldInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "options",
    ///    "positions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetFormFieldInclude {
        #[serde(rename = "options")]
        Options,
        #[serde(rename = "positions")]
        Positions,
    }
    impl ::std::fmt::Display for GetFormFieldInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Options => f.write_str("options"),
                Self::Positions => f.write_str("positions"),
            }
        }
    }
    impl ::std::str::FromStr for GetFormFieldInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "options" => Ok(Self::Options),
                "positions" => Ok(Self::Positions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetFormFieldInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetFormFieldInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetFormFieldInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetGithubCommitsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "service_ids"
    ///      ],
    ///      "properties": {
    ///        "service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "github_repository_names"
    ///      ],
    ///      "properties": {
    ///        "github_repository_names": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "branch",
    ///    "past_duration"
    ///  ],
    ///  "properties": {
    ///    "branch": {
    ///      "description": "The branch",
    ///      "type": "string"
    ///    },
    ///    "github_repository_names": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "past_duration": {
    ///      "description": "How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "ID of service impacted by incident",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "services_impacted_by_incident": {
    ///      "type": "boolean"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "get_github_commits"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum GetGithubCommitsTaskParams {
        Variant0 {
            ///The branch
            branch: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            github_repository_names: ::std::vec::Vec<::std::string::String>,
            ///How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)
            past_duration: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            post_to_incident_timeline: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            post_to_slack_channels: ::std::vec::Vec<
                GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem,
            >,
            service_ids: ::std::vec::Vec<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            services_impacted_by_incident: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<GetGithubCommitsTaskParamsVariant0TaskType>,
        },
        Variant1 {
            ///The branch
            branch: ::std::string::String,
            github_repository_names: ::std::vec::Vec<::std::string::String>,
            ///How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)
            past_duration: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            post_to_incident_timeline: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            post_to_slack_channels: ::std::vec::Vec<
                GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            service_ids: ::std::vec::Vec<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            services_impacted_by_incident: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<GetGithubCommitsTaskParamsVariant1TaskType>,
        },
    }
    ///`GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
        pub fn builder() -> builder::GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`GetGithubCommitsTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "get_github_commits"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetGithubCommitsTaskParamsVariant0TaskType {
        #[serde(rename = "get_github_commits")]
        GetGithubCommits,
    }
    impl ::std::fmt::Display for GetGithubCommitsTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GetGithubCommits => f.write_str("get_github_commits"),
            }
        }
    }
    impl ::std::str::FromStr for GetGithubCommitsTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "get_github_commits" => Ok(Self::GetGithubCommits),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetGithubCommitsTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetGithubCommitsTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetGithubCommitsTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
        pub fn builder() -> builder::GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`GetGithubCommitsTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "get_github_commits"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetGithubCommitsTaskParamsVariant1TaskType {
        #[serde(rename = "get_github_commits")]
        GetGithubCommits,
    }
    impl ::std::fmt::Display for GetGithubCommitsTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GetGithubCommits => f.write_str("get_github_commits"),
            }
        }
    }
    impl ::std::str::FromStr for GetGithubCommitsTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "get_github_commits" => Ok(Self::GetGithubCommits),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetGithubCommitsTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetGithubCommitsTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetGithubCommitsTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetGitlabCommitsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "service_ids"
    ///      ],
    ///      "properties": {
    ///        "service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "gitlab_repository_names"
    ///      ],
    ///      "properties": {
    ///        "gitlab_repository_names": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "branch",
    ///    "past_duration"
    ///  ],
    ///  "properties": {
    ///    "branch": {
    ///      "description": "The branch",
    ///      "type": "string"
    ///    },
    ///    "gitlab_repository_names": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "past_duration": {
    ///      "description": "How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "ID of service impacted by incident",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "services_impacted_by_incident": {
    ///      "type": "boolean"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "get_gitlab_commits"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum GetGitlabCommitsTaskParams {
        Variant0 {
            ///The branch
            branch: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            gitlab_repository_names: ::std::vec::Vec<::std::string::String>,
            ///How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)
            past_duration: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            post_to_incident_timeline: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            post_to_slack_channels: ::std::vec::Vec<
                GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem,
            >,
            service_ids: ::std::vec::Vec<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            services_impacted_by_incident: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<GetGitlabCommitsTaskParamsVariant0TaskType>,
        },
        Variant1 {
            ///The branch
            branch: ::std::string::String,
            gitlab_repository_names: ::std::vec::Vec<::std::string::String>,
            ///How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)
            past_duration: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            post_to_incident_timeline: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            post_to_slack_channels: ::std::vec::Vec<
                GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            service_ids: ::std::vec::Vec<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            services_impacted_by_incident: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<GetGitlabCommitsTaskParamsVariant1TaskType>,
        },
    }
    ///`GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
        pub fn builder() -> builder::GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`GetGitlabCommitsTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "get_gitlab_commits"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetGitlabCommitsTaskParamsVariant0TaskType {
        #[serde(rename = "get_gitlab_commits")]
        GetGitlabCommits,
    }
    impl ::std::fmt::Display for GetGitlabCommitsTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GetGitlabCommits => f.write_str("get_gitlab_commits"),
            }
        }
    }
    impl ::std::str::FromStr for GetGitlabCommitsTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "get_gitlab_commits" => Ok(Self::GetGitlabCommits),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetGitlabCommitsTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetGitlabCommitsTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetGitlabCommitsTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
        pub fn builder() -> builder::GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`GetGitlabCommitsTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "get_gitlab_commits"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetGitlabCommitsTaskParamsVariant1TaskType {
        #[serde(rename = "get_gitlab_commits")]
        GetGitlabCommits,
    }
    impl ::std::fmt::Display for GetGitlabCommitsTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GetGitlabCommits => f.write_str("get_gitlab_commits"),
            }
        }
    }
    impl ::std::str::FromStr for GetGitlabCommitsTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "get_gitlab_commits" => Ok(Self::GetGitlabCommits),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetGitlabCommitsTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetGitlabCommitsTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetGitlabCommitsTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetIncidentInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_statuses",
    ///    "causes",
    ///    "subscribers",
    ///    "roles",
    ///    "slack_messages",
    ///    "environments",
    ///    "incident_types",
    ///    "services",
    ///    "functionalities",
    ///    "groups",
    ///    "events",
    ///    "action_items",
    ///    "custom_field_selections",
    ///    "feedbacks",
    ///    "incident_post_mortem",
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetIncidentInclude {
        #[serde(rename = "sub_statuses")]
        SubStatuses,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "subscribers")]
        Subscribers,
        #[serde(rename = "roles")]
        Roles,
        #[serde(rename = "slack_messages")]
        SlackMessages,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "events")]
        Events,
        #[serde(rename = "action_items")]
        ActionItems,
        #[serde(rename = "custom_field_selections")]
        CustomFieldSelections,
        #[serde(rename = "feedbacks")]
        Feedbacks,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for GetIncidentInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatuses => f.write_str("sub_statuses"),
                Self::Causes => f.write_str("causes"),
                Self::Subscribers => f.write_str("subscribers"),
                Self::Roles => f.write_str("roles"),
                Self::SlackMessages => f.write_str("slack_messages"),
                Self::Environments => f.write_str("environments"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Services => f.write_str("services"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Groups => f.write_str("groups"),
                Self::Events => f.write_str("events"),
                Self::ActionItems => f.write_str("action_items"),
                Self::CustomFieldSelections => f.write_str("custom_field_selections"),
                Self::Feedbacks => f.write_str("feedbacks"),
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for GetIncidentInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_statuses" => Ok(Self::SubStatuses),
                "causes" => Ok(Self::Causes),
                "subscribers" => Ok(Self::Subscribers),
                "roles" => Ok(Self::Roles),
                "slack_messages" => Ok(Self::SlackMessages),
                "environments" => Ok(Self::Environments),
                "incident_types" => Ok(Self::IncidentTypes),
                "services" => Ok(Self::Services),
                "functionalities" => Ok(Self::Functionalities),
                "groups" => Ok(Self::Groups),
                "events" => Ok(Self::Events),
                "action_items" => Ok(Self::ActionItems),
                "custom_field_selections" => Ok(Self::CustomFieldSelections),
                "feedbacks" => Ok(Self::Feedbacks),
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetIncidentInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetIncidentInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetIncidentInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetIncidentSubStatusInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_status",
    ///    "assigned_by_user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetIncidentSubStatusInclude {
        #[serde(rename = "sub_status")]
        SubStatus,
        #[serde(rename = "assigned_by_user")]
        AssignedByUser,
    }
    impl ::std::fmt::Display for GetIncidentSubStatusInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatus => f.write_str("sub_status"),
                Self::AssignedByUser => f.write_str("assigned_by_user"),
            }
        }
    }
    impl ::std::str::FromStr for GetIncidentSubStatusInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_status" => Ok(Self::SubStatus),
                "assigned_by_user" => Ok(Self::AssignedByUser),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetIncidentSubStatusInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetIncidentSubStatusInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetIncidentSubStatusInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetPlaybookInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "environments",
    ///    "services",
    ///    "functionalities",
    ///    "groups",
    ///    "causes",
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetPlaybookInclude {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for GetPlaybookInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::Environments => f.write_str("environments"),
                Self::Services => f.write_str("services"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Groups => f.write_str("groups"),
                Self::Causes => f.write_str("causes"),
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for GetPlaybookInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "environments" => Ok(Self::Environments),
                "services" => Ok(Self::Services),
                "functionalities" => Ok(Self::Functionalities),
                "groups" => Ok(Self::Groups),
                "causes" => Ok(Self::Causes),
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetPlaybookInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetPlaybookInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetPlaybookInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetPulsesTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "past_duration"
    ///  ],
    ///  "properties": {
    ///    "environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "ID of environment impacted by incident",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "environments_impacted_by_incident": {
    ///      "type": "boolean"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "parent_message_thread_task": {
    ///      "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "past_duration": {
    ///      "description": "How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "refs": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "ID of service impacted by incident",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "services_impacted_by_incident": {
    ///      "type": "boolean"
    ///    },
    ///    "sources": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "get_pulses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetPulsesTaskParams {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environments_impacted_by_incident: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_message_thread_task: ::std::option::Option<
            GetPulsesTaskParamsParentMessageThreadTask,
        >,
        ///How far back to fetch commits (in format '1 minute', '30 days', '3 months', etc.)
        pub past_duration: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            GetPulsesTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub refs: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub services_impacted_by_incident: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sources: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<GetPulsesTaskParamsTaskType>,
    }
    impl GetPulsesTaskParams {
        pub fn builder() -> builder::GetPulsesTaskParams {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetPulsesTaskParamsParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for GetPulsesTaskParamsParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetPulsesTaskParamsParentMessageThreadTask {
        pub fn builder() -> builder::GetPulsesTaskParamsParentMessageThreadTask {
            Default::default()
        }
    }
    ///`GetPulsesTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct GetPulsesTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for GetPulsesTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl GetPulsesTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::GetPulsesTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`GetPulsesTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "get_pulses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetPulsesTaskParamsTaskType {
        #[serde(rename = "get_pulses")]
        GetPulses,
    }
    impl ::std::fmt::Display for GetPulsesTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GetPulses => f.write_str("get_pulses"),
            }
        }
    }
    impl ::std::str::FromStr for GetPulsesTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "get_pulses" => Ok(Self::GetPulses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetPulsesTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetPulsesTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetPulsesTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetRetrospectiveConfigurationInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "groups",
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetRetrospectiveConfigurationInclude {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for GetRetrospectiveConfigurationInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::Groups => f.write_str("groups"),
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for GetRetrospectiveConfigurationInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "groups" => Ok(Self::Groups),
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetRetrospectiveConfigurationInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetRetrospectiveConfigurationInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetRetrospectiveConfigurationInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetRetrospectiveProcessGroupInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_group_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetRetrospectiveProcessGroupInclude {
        #[serde(rename = "retrospective_process_group_steps")]
        RetrospectiveProcessGroupSteps,
    }
    impl ::std::fmt::Display for GetRetrospectiveProcessGroupInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroupSteps => {
                    f.write_str("retrospective_process_group_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for GetRetrospectiveProcessGroupInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_group_steps" => {
                    Ok(Self::RetrospectiveProcessGroupSteps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetRetrospectiveProcessGroupInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetRetrospectiveProcessGroupInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetRetrospectiveProcessGroupInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetRetrospectiveProcessInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_steps",
    ///    "severities",
    ///    "incident_types",
    ///    "groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetRetrospectiveProcessInclude {
        #[serde(rename = "retrospective_steps")]
        RetrospectiveSteps,
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "groups")]
        Groups,
    }
    impl ::std::fmt::Display for GetRetrospectiveProcessInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveSteps => f.write_str("retrospective_steps"),
                Self::Severities => f.write_str("severities"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Groups => f.write_str("groups"),
            }
        }
    }
    impl ::std::str::FromStr for GetRetrospectiveProcessInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_steps" => Ok(Self::RetrospectiveSteps),
                "severities" => Ok(Self::Severities),
                "incident_types" => Ok(Self::IncidentTypes),
                "groups" => Ok(Self::Groups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetRetrospectiveProcessInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for GetRetrospectiveProcessInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for GetRetrospectiveProcessInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetTeamInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users",
    ///    "schedules",
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetTeamInclude {
        #[serde(rename = "users")]
        Users,
        #[serde(rename = "schedules")]
        Schedules,
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for GetTeamInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
                Self::Schedules => f.write_str("schedules"),
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for GetTeamInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                "schedules" => Ok(Self::Schedules),
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetTeamInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetTeamInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetTeamInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetUserInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "email_addresses",
    ///    "phone_numbers",
    ///    "devices",
    ///    "role",
    ///    "on_call_role",
    ///    "teams",
    ///    "schedules",
    ///    "notification_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetUserInclude {
        #[serde(rename = "email_addresses")]
        EmailAddresses,
        #[serde(rename = "phone_numbers")]
        PhoneNumbers,
        #[serde(rename = "devices")]
        Devices,
        #[serde(rename = "role")]
        Role,
        #[serde(rename = "on_call_role")]
        OnCallRole,
        #[serde(rename = "teams")]
        Teams,
        #[serde(rename = "schedules")]
        Schedules,
        #[serde(rename = "notification_rules")]
        NotificationRules,
    }
    impl ::std::fmt::Display for GetUserInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EmailAddresses => f.write_str("email_addresses"),
                Self::PhoneNumbers => f.write_str("phone_numbers"),
                Self::Devices => f.write_str("devices"),
                Self::Role => f.write_str("role"),
                Self::OnCallRole => f.write_str("on_call_role"),
                Self::Teams => f.write_str("teams"),
                Self::Schedules => f.write_str("schedules"),
                Self::NotificationRules => f.write_str("notification_rules"),
            }
        }
    }
    impl ::std::str::FromStr for GetUserInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email_addresses" => Ok(Self::EmailAddresses),
                "phone_numbers" => Ok(Self::PhoneNumbers),
                "devices" => Ok(Self::Devices),
                "role" => Ok(Self::Role),
                "on_call_role" => Ok(Self::OnCallRole),
                "teams" => Ok(Self::Teams),
                "schedules" => Ok(Self::Schedules),
                "notification_rules" => Ok(Self::NotificationRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetUserInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetUserInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetUserInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`GetWorkflowInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_conditions",
    ///    "alert_field_conditions",
    ///    "genius_tasks",
    ///    "genius_workflow_runs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum GetWorkflowInclude {
        #[serde(rename = "form_field_conditions")]
        FormFieldConditions,
        #[serde(rename = "alert_field_conditions")]
        AlertFieldConditions,
        #[serde(rename = "genius_tasks")]
        GeniusTasks,
        #[serde(rename = "genius_workflow_runs")]
        GeniusWorkflowRuns,
    }
    impl ::std::fmt::Display for GetWorkflowInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldConditions => f.write_str("form_field_conditions"),
                Self::AlertFieldConditions => f.write_str("alert_field_conditions"),
                Self::GeniusTasks => f.write_str("genius_tasks"),
                Self::GeniusWorkflowRuns => f.write_str("genius_workflow_runs"),
            }
        }
    }
    impl ::std::str::FromStr for GetWorkflowInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_conditions" => Ok(Self::FormFieldConditions),
                "alert_field_conditions" => Ok(Self::AlertFieldConditions),
                "genius_tasks" => Ok(Self::GeniusTasks),
                "genius_workflow_runs" => Ok(Self::GeniusWorkflowRuns),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for GetWorkflowInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for GetWorkflowInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for GetWorkflowInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Heartbeat`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_summary",
    ///    "created_at",
    ///    "email_address",
    ///    "enabled",
    ///    "interval",
    ///    "interval_unit",
    ///    "name",
    ///    "notification_target_id",
    ///    "notification_target_type",
    ///    "status",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alert_description": {
    ///      "description": "Description of alerts triggered when heartbeat expires.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_summary": {
    ///      "description": "Summary of alerts triggered when heartbeat expires.",
    ///      "type": "string"
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "Urgency of alerts triggered when heartbeat expires.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the heartbeat",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_address": {
    ///      "description": "Email address to receive heartbeat pings.",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "description": "Whether to trigger alerts when heartbeat is expired.",
    ///      "type": "boolean"
    ///    },
    ///    "expires_at": {
    ///      "description": "When heartbeat expires",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "interval": {
    ///      "type": "integer"
    ///    },
    ///    "interval_unit": {
    ///      "type": "string",
    ///      "enum": [
    ///        "minutes",
    ///        "hours",
    ///        "days"
    ///      ]
    ///    },
    ///    "last_pinged_at": {
    ///      "description": "When the heartbeat was last pinged.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the heartbeat",
    ///      "type": "string"
    ///    },
    ///    "notification_target_id": {
    ///      "type": "string"
    ///    },
    ///    "notification_target_type": {
    ///      "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Group",
    ///        "Service",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    },
    ///    "ping_url": {
    ///      "description": "URL to receive heartbeat pings.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "secret": {
    ///      "description": "Secret used as bearer token when pinging heartbeat.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "waiting",
    ///        "active",
    ///        "expired"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Heartbeat {
        ///Description of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_description: ::std::option::Option<::std::string::String>,
        ///Summary of alerts triggered when heartbeat expires.
        pub alert_summary: ::std::string::String,
        ///Urgency of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the heartbeat
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Email address to receive heartbeat pings.
        pub email_address: ::std::string::String,
        ///Whether to trigger alerts when heartbeat is expired.
        pub enabled: bool,
        ///When heartbeat expires
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expires_at: ::std::option::Option<::std::string::String>,
        pub interval: i64,
        pub interval_unit: HeartbeatIntervalUnit,
        ///When the heartbeat was last pinged.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_pinged_at: ::std::option::Option<::std::string::String>,
        ///The name of the heartbeat
        pub name: ::std::string::String,
        pub notification_target_id: ::std::string::String,
        ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub notification_target_type: HeartbeatNotificationTargetType,
        ///URL to receive heartbeat pings.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ping_url: ::std::option::Option<::std::string::String>,
        ///Secret used as bearer token when pinging heartbeat.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub secret: ::std::option::Option<::std::string::String>,
        pub status: HeartbeatStatus,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Heartbeat {
        pub fn builder() -> builder::Heartbeat {
            Default::default()
        }
    }
    ///`HeartbeatIntervalUnit`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "minutes",
    ///    "hours",
    ///    "days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HeartbeatIntervalUnit {
        #[serde(rename = "minutes")]
        Minutes,
        #[serde(rename = "hours")]
        Hours,
        #[serde(rename = "days")]
        Days,
    }
    impl ::std::fmt::Display for HeartbeatIntervalUnit {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Minutes => f.write_str("minutes"),
                Self::Hours => f.write_str("hours"),
                Self::Days => f.write_str("days"),
            }
        }
    }
    impl ::std::str::FromStr for HeartbeatIntervalUnit {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "minutes" => Ok(Self::Minutes),
                "hours" => Ok(Self::Hours),
                "days" => Ok(Self::Days),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HeartbeatIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for HeartbeatIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for HeartbeatIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`HeartbeatList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/heartbeat"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the heartbeat",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "heartbeats"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct HeartbeatList {
        pub data: ::std::vec::Vec<HeartbeatListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl HeartbeatList {
        pub fn builder() -> builder::HeartbeatList {
            Default::default()
        }
    }
    ///`HeartbeatListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/heartbeat"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the heartbeat",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "heartbeats"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct HeartbeatListDataItem {
        pub attributes: Heartbeat,
        ///Unique ID of the heartbeat
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: HeartbeatListDataItemType,
    }
    impl HeartbeatListDataItem {
        pub fn builder() -> builder::HeartbeatListDataItem {
            Default::default()
        }
    }
    ///`HeartbeatListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "heartbeats"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HeartbeatListDataItemType {
        #[serde(rename = "heartbeats")]
        Heartbeats,
    }
    impl ::std::fmt::Display for HeartbeatListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Heartbeats => f.write_str("heartbeats"),
            }
        }
    }
    impl ::std::str::FromStr for HeartbeatListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "heartbeats" => Ok(Self::Heartbeats),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HeartbeatListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for HeartbeatListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for HeartbeatListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Group",
    ///    "Service",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HeartbeatNotificationTargetType {
        User,
        Group,
        Service,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for HeartbeatNotificationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Group => f.write_str("Group"),
                Self::Service => f.write_str("Service"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for HeartbeatNotificationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Group" => Ok(Self::Group),
                "Service" => Ok(Self::Service),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HeartbeatNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for HeartbeatNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for HeartbeatNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`HeartbeatResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/heartbeat"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the heartbeat",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "heartbeats"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct HeartbeatResponse {
        pub data: HeartbeatResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl HeartbeatResponse {
        pub fn builder() -> builder::HeartbeatResponse {
            Default::default()
        }
    }
    ///`HeartbeatResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/heartbeat"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the heartbeat",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "heartbeats"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct HeartbeatResponseData {
        pub attributes: Heartbeat,
        ///Unique ID of the heartbeat
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: HeartbeatResponseDataType,
    }
    impl HeartbeatResponseData {
        pub fn builder() -> builder::HeartbeatResponseData {
            Default::default()
        }
    }
    ///`HeartbeatResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "heartbeats"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HeartbeatResponseDataType {
        #[serde(rename = "heartbeats")]
        Heartbeats,
    }
    impl ::std::fmt::Display for HeartbeatResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Heartbeats => f.write_str("heartbeats"),
            }
        }
    }
    impl ::std::str::FromStr for HeartbeatResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "heartbeats" => Ok(Self::Heartbeats),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HeartbeatResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for HeartbeatResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for HeartbeatResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`HeartbeatStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "waiting",
    ///    "active",
    ///    "expired"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HeartbeatStatus {
        #[serde(rename = "waiting")]
        Waiting,
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "expired")]
        Expired,
    }
    impl ::std::fmt::Display for HeartbeatStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Waiting => f.write_str("waiting"),
                Self::Active => f.write_str("active"),
                Self::Expired => f.write_str("expired"),
            }
        }
    }
    impl ::std::str::FromStr for HeartbeatStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "waiting" => Ok(Self::Waiting),
                "active" => Ok(Self::Active),
                "expired" => Ok(Self::Expired),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HeartbeatStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for HeartbeatStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for HeartbeatStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`HttpClientTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "succeed_on_status",
    ///    "url"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "HTTP body",
    ///      "type": "string"
    ///    },
    ///    "event_message": {
    ///      "type": "string"
    ///    },
    ///    "event_url": {
    ///      "type": "string"
    ///    },
    ///    "headers": {
    ///      "description": "JSON map of HTTP headers",
    ///      "type": "string"
    ///    },
    ///    "method": {
    ///      "description": "HTTP method",
    ///      "default": "GET",
    ///      "type": "string",
    ///      "enum": [
    ///        "GET",
    ///        "POST",
    ///        "PATCH",
    ///        "PUT",
    ///        "DELETE",
    ///        "OPTIONS"
    ///      ]
    ///    },
    ///    "params": {
    ///      "description": "JSON map of HTTP query parameters",
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "retry_count": {
    ///      "description": "Number of times to retry on HTTP 429 responses (0-4). 0 disables retry.",
    ///      "default": 0,
    ///      "examples": [
    ///        3
    ///      ],
    ///      "type": "integer"
    ///    },
    ///    "retry_wait_time": {
    ///      "description": "Seconds to wait before each retry (1-15). Retry-After header is honored when present and <= 90s, taking the larger of retry_wait_time and the header value.",
    ///      "default": 1,
    ///      "examples": [
    ///        2
    ///      ],
    ///      "type": "integer"
    ///    },
    ///    "succeed_on_status": {
    ///      "description": "HTTP status code expected. Can be a regular expression. Eg: 200, 200|203, 20[0-3]",
    ///      "examples": [
    ///        200
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "http_client"
    ///      ]
    ///    },
    ///    "url": {
    ///      "description": "URL endpoint",
    ///      "examples": [
    ///        "https://example.com/foo.json"
    ///      ],
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct HttpClientTaskParams {
        ///HTTP body
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub body: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event_message: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event_url: ::std::option::Option<::std::string::String>,
        ///JSON map of HTTP headers
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub headers: ::std::option::Option<::std::string::String>,
        ///HTTP method
        #[serde(default = "defaults::http_client_task_params_method")]
        pub method: HttpClientTaskParamsMethod,
        ///JSON map of HTTP query parameters
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub params: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            HttpClientTaskParamsPostToSlackChannelsItem,
        >,
        ///Number of times to retry on HTTP 429 responses (0-4). 0 disables retry.
        #[serde(default)]
        pub retry_count: i64,
        ///Seconds to wait before each retry (1-15). Retry-After header is honored when present and <= 90s, taking the larger of retry_wait_time and the header value.
        #[serde(default = "defaults::default_u64::<i64, 1>")]
        pub retry_wait_time: i64,
        ///HTTP status code expected. Can be a regular expression. Eg: 200, 200|203, 20[0-3]
        pub succeed_on_status: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<HttpClientTaskParamsTaskType>,
        ///URL endpoint
        pub url: ::std::string::String,
    }
    impl HttpClientTaskParams {
        pub fn builder() -> builder::HttpClientTaskParams {
            Default::default()
        }
    }
    ///HTTP method
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "HTTP method",
    ///  "default": "GET",
    ///  "type": "string",
    ///  "enum": [
    ///    "GET",
    ///    "POST",
    ///    "PATCH",
    ///    "PUT",
    ///    "DELETE",
    ///    "OPTIONS"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HttpClientTaskParamsMethod {
        #[serde(rename = "GET")]
        Get,
        #[serde(rename = "POST")]
        Post,
        #[serde(rename = "PATCH")]
        Patch,
        #[serde(rename = "PUT")]
        Put,
        #[serde(rename = "DELETE")]
        Delete,
        #[serde(rename = "OPTIONS")]
        Options,
    }
    impl ::std::fmt::Display for HttpClientTaskParamsMethod {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Get => f.write_str("GET"),
                Self::Post => f.write_str("POST"),
                Self::Patch => f.write_str("PATCH"),
                Self::Put => f.write_str("PUT"),
                Self::Delete => f.write_str("DELETE"),
                Self::Options => f.write_str("OPTIONS"),
            }
        }
    }
    impl ::std::str::FromStr for HttpClientTaskParamsMethod {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "GET" => Ok(Self::Get),
                "POST" => Ok(Self::Post),
                "PATCH" => Ok(Self::Patch),
                "PUT" => Ok(Self::Put),
                "DELETE" => Ok(Self::Delete),
                "OPTIONS" => Ok(Self::Options),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HttpClientTaskParamsMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for HttpClientTaskParamsMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for HttpClientTaskParamsMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for HttpClientTaskParamsMethod {
        fn default() -> Self {
            HttpClientTaskParamsMethod::Get
        }
    }
    ///`HttpClientTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct HttpClientTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for HttpClientTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl HttpClientTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::HttpClientTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`HttpClientTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "http_client"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum HttpClientTaskParamsTaskType {
        #[serde(rename = "http_client")]
        HttpClient,
    }
    impl ::std::fmt::Display for HttpClientTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::HttpClient => f.write_str("http_client"),
            }
        }
    }
    impl ::std::str::FromStr for HttpClientTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "http_client" => Ok(Self::HttpClient),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for HttpClientTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for HttpClientTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for HttpClientTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ImportMeetingRecording`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "platform",
    ///    "recall_recording_id",
    ///    "source"
    ///  ],
    ///  "properties": {
    ///    "ended_at": {
    ///      "description": "When the recording ended",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "meeting_url": {
    ///      "description": "Original meeting URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "platform": {
    ///      "description": "Meeting platform",
    ///      "type": "string",
    ///      "enum": [
    ///        "zoom",
    ///        "google_meet",
    ///        "microsoft_teams",
    ///        "webex"
    ///      ]
    ///    },
    ///    "recall_recording_id": {
    ///      "description": "External recording UUID (required when source is recall_desktop_sdk)",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "source": {
    ///      "description": "Import source (currently only \"recall_desktop_sdk\")",
    ///      "type": "string",
    ///      "enum": [
    ///        "recall_desktop_sdk"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "When the recording started",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ImportMeetingRecording {
        ///When the recording ended
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///Original meeting URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meeting_url: ::std::option::Option<::std::string::String>,
        ///Meeting platform
        pub platform: ImportMeetingRecordingPlatform,
        ///External recording UUID (required when source is recall_desktop_sdk)
        pub recall_recording_id: ::uuid::Uuid,
        ///Import source (currently only "recall_desktop_sdk")
        pub source: ImportMeetingRecordingSource,
        ///When the recording started
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
    }
    impl ImportMeetingRecording {
        pub fn builder() -> builder::ImportMeetingRecording {
            Default::default()
        }
    }
    ///Meeting platform
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Meeting platform",
    ///  "type": "string",
    ///  "enum": [
    ///    "zoom",
    ///    "google_meet",
    ///    "microsoft_teams",
    ///    "webex"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ImportMeetingRecordingPlatform {
        #[serde(rename = "zoom")]
        Zoom,
        #[serde(rename = "google_meet")]
        GoogleMeet,
        #[serde(rename = "microsoft_teams")]
        MicrosoftTeams,
        #[serde(rename = "webex")]
        Webex,
    }
    impl ::std::fmt::Display for ImportMeetingRecordingPlatform {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Zoom => f.write_str("zoom"),
                Self::GoogleMeet => f.write_str("google_meet"),
                Self::MicrosoftTeams => f.write_str("microsoft_teams"),
                Self::Webex => f.write_str("webex"),
            }
        }
    }
    impl ::std::str::FromStr for ImportMeetingRecordingPlatform {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "zoom" => Ok(Self::Zoom),
                "google_meet" => Ok(Self::GoogleMeet),
                "microsoft_teams" => Ok(Self::MicrosoftTeams),
                "webex" => Ok(Self::Webex),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ImportMeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ImportMeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ImportMeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Import source (currently only "recall_desktop_sdk")
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Import source (currently only \"recall_desktop_sdk\")",
    ///  "type": "string",
    ///  "enum": [
    ///    "recall_desktop_sdk"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ImportMeetingRecordingSource {
        #[serde(rename = "recall_desktop_sdk")]
        RecallDesktopSdk,
    }
    impl ::std::fmt::Display for ImportMeetingRecordingSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RecallDesktopSdk => f.write_str("recall_desktop_sdk"),
            }
        }
    }
    impl ::std::str::FromStr for ImportMeetingRecordingSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "recall_desktop_sdk" => Ok(Self::RecallDesktopSdk),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ImportMeetingRecordingSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ImportMeetingRecordingSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ImportMeetingRecordingSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InTriageIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InTriageIncident {
        pub data: InTriageIncidentData,
    }
    impl InTriageIncident {
        pub fn builder() -> builder::InTriageIncident {
            Default::default()
        }
    }
    ///`InTriageIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InTriageIncidentData {
        #[serde(rename = "type")]
        pub type_: InTriageIncidentDataType,
    }
    impl InTriageIncidentData {
        pub fn builder() -> builder::InTriageIncidentData {
            Default::default()
        }
    }
    ///`InTriageIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InTriageIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for InTriageIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for InTriageIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for InTriageIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for InTriageIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for InTriageIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Incident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "acknowledged_at": {
    ///      "description": "Date of acknowledgment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "airtable_base_key": {
    ///      "description": "Airtable base key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "airtable_record_id": {
    ///      "description": "Airtable record ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "airtable_record_url": {
    ///      "description": "Airtable record URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "airtable_table_name": {
    ///      "description": "Airtable table name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "asana_task_id": {
    ///      "description": "Asana task ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "asana_task_url": {
    ///      "description": "Asana task URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cancellation_message": {
    ///      "description": "Why was the incident cancelled?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cancelled_at": {
    ///      "description": "Date of cancellation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cancelled_by": {
    ///      "description": "The user who cancelled the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "clickup_task_id": {
    ///      "description": "ClickUp task ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "clickup_task_url": {
    ///      "description": "ClickUp task URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "closed_at": {
    ///      "description": "Date of closure",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "closed_by": {
    ///      "description": "The user who closed the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "confluence_page_id": {
    ///      "description": "Confluence page ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "confluence_page_url": {
    ///      "description": "Confluence page URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "datadog_notebook_id": {
    ///      "description": "Datadog notebook ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "datadog_notebook_url": {
    ///      "description": "Datadog notebook URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "detected_at": {
    ///      "description": "Date of detection",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "duplicate_incident_id": {
    ///      "description": "ID of duplicated incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environments": {
    ///      "description": "The Environments of the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/environment_response"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "freshservice_task_id": {
    ///      "description": "Freshservice task ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "freshservice_task_url": {
    ///      "description": "Freshservice task URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "freshservice_ticket_id": {
    ///      "description": "Freshservice ticket ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "freshservice_ticket_url": {
    ///      "description": "Freshservice ticket URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionalities": {
    ///      "description": "The Functionalities of the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/functionality_response"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "github_issue_id": {
    ///      "description": "GitHub issue ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_issue_url": {
    ///      "description": "GitHub issue URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_issue_id": {
    ///      "description": "GitLab issue ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_issue_url": {
    ///      "description": "GitLab issue URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_drive_id": {
    ///      "description": "Google Drive document ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_drive_parent_id": {
    ///      "description": "Google Drive parent folder ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_drive_url": {
    ///      "description": "Google Drive URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_meeting_id": {
    ///      "description": "Google meeting ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_meeting_url": {
    ///      "description": "Google meeting URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "groups": {
    ///      "description": "The Teams of to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/team_response"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident",
    ///      "type": "string"
    ///    },
    ///    "in_triage_at": {
    ///      "description": "Date of triage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "in_triage_by": {
    ///      "description": "The user who triaged the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_types": {
    ///      "description": "The Incident Types of the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/incident_type_response"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "jira_issue_id": {
    ///      "description": "Jira issue ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "Jira issue key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_url": {
    ///      "description": "Jira issue URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the incident",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "linear_issue_id": {
    ///      "description": "Linear issue ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "linear_issue_url": {
    ///      "description": "Linear issue URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "mattermost_channel_id": {
    ///      "description": "Mattermost channel ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "mattermost_channel_name": {
    ///      "description": "Mattermost channel name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "mattermost_channel_url": {
    ///      "description": "Mattermost channel URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_channel_id": {
    ///      "description": "Microsoft Teams channel ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_channel_name": {
    ///      "description": "Microsoft Teams channel name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_channel_short_url": {
    ///      "description": "Microsoft Teams channel short URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_channel_url": {
    ///      "description": "Microsoft Teams channel URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_chat_id": {
    ///      "description": "Microsoft Teams chat ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_chat_url": {
    ///      "description": "Microsoft Teams chat URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_meeting_id": {
    ///      "description": "Microsoft Teams meeting ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_meeting_url": {
    ///      "description": "Microsoft Teams meeting URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "microsoft_teams_team_id": {
    ///      "description": "Microsoft Teams team ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "mitigated_at": {
    ///      "description": "Date of mitigation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "mitigated_by": {
    ///      "description": "The user who mitigated the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "mitigation_message": {
    ///      "description": "How was the incident mitigated?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "motion_task_id": {
    ///      "description": "Motion task ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "motion_task_url": {
    ///      "description": "Motion task URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "muted_service_ids": {
    ///      "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_alert_id": {
    ///      "description": "Opsgenie alert ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_alert_url": {
    ///      "description": "Opsgenie alert URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_incident_id": {
    ///      "description": "Opsgenie incident ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_incident_url": {
    ///      "description": "Opsgenie incident URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_incident_id": {
    ///      "description": "PagerDuty incident ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_incident_number": {
    ///      "description": "PagerDuty incident number",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_incident_url": {
    ///      "description": "PagerDuty incident URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "parent_incident_id": {
    ///      "description": "ID of parent incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "private": {
    ///      "description": "The visibility of the incident",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "public_title": {
    ///      "description": "The public title of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "quip_page_id": {
    ///      "description": "Quip page ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "quip_page_url": {
    ///      "description": "Quip page URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolution_message": {
    ///      "description": "How was the incident resolved?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolved_at": {
    ///      "description": "Date of resolution",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolved_by": {
    ///      "description": "The user who resolved the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "retrospective_progress_status": {
    ///      "description": "The status of the retrospective progress",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "not_started",
    ///        "active",
    ///        "completed",
    ///        "skipped"
    ///      ]
    ///    },
    ///    "scheduled_for": {
    ///      "description": "Date of when the maintenance begins",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "scheduled_until": {
    ///      "description": "Date of when the maintenance ends",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "sequential_id": {
    ///      "description": "Sequential ID of the incident",
    ///      "type": "integer"
    ///    },
    ///    "service_now_incident_id": {
    ///      "description": "ServiceNow incident ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_now_incident_key": {
    ///      "description": "ServiceNow incident key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_now_incident_url": {
    ///      "description": "ServiceNow incident URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "services": {
    ///      "description": "The Services of the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/service_response"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "severity": {
    ///      "description": "The Severity of the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/severity_response"
    ///        }
    ///      ]
    ///    },
    ///    "sharepoint_page_id": {
    ///      "description": "SharePoint page ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "sharepoint_page_url": {
    ///      "description": "SharePoint page URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "short_url": {
    ///      "description": "The short url to the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shortcut_story_id": {
    ///      "description": "Shortcut story ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shortcut_story_url": {
    ///      "description": "Shortcut story URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shortcut_task_id": {
    ///      "description": "Shortcut task ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shortcut_task_url": {
    ///      "description": "Shortcut task URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_archived": {
    ///      "description": "Whether the Slack channel is archived",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_deep_link": {
    ///      "description": "Slack channel deep link",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_id": {
    ///      "description": "Slack channel id",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_name": {
    ///      "description": "Slack channel name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_short_url": {
    ///      "description": "Slack channel short url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_url": {
    ///      "description": "Slack channel url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_last_message_ts": {
    ///      "description": "Timestamp of last Slack message",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the incident",
    ///      "type": "string"
    ///    },
    ///    "source": {
    ///      "description": "The source of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "Date of start",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_by": {
    ///      "description": "The user who started the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the incident",
    ///      "type": "string"
    ///    },
    ///    "trello_card_id": {
    ///      "description": "Trello card ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "trello_card_url": {
    ///      "description": "Trello card URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "url": {
    ///      "description": "The url to the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user": {
    ///      "description": "The user who created the incident",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "victor_ops_incident_id": {
    ///      "description": "VictorOps incident ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "victor_ops_incident_url": {
    ///      "description": "VictorOps incident URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "webex_meeting_id": {
    ///      "description": "Webex meeting ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "webex_meeting_url": {
    ///      "description": "Webex meeting URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zendesk_ticket_id": {
    ///      "description": "Zendesk ticket ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zendesk_ticket_url": {
    ///      "description": "Zendesk ticket URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zoom_meeting_global_dial_in_numbers": {
    ///      "description": "Zoom meeting global dial-in numbers",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "city": {
    ///            "type": "string"
    ///          },
    ///          "country": {
    ///            "type": "string"
    ///          },
    ///          "country_name": {
    ///            "type": "string"
    ///          },
    ///          "number": {
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "zoom_meeting_h323_password": {
    ///      "description": "Zoom meeting H323 password",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zoom_meeting_id": {
    ///      "description": "Zoom meeting ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zoom_meeting_join_url": {
    ///      "description": "Zoom meeting join URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zoom_meeting_password": {
    ///      "description": "Zoom meeting password",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zoom_meeting_pstn_password": {
    ///      "description": "Zoom meeting PSTN password",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "zoom_meeting_start_url": {
    ///      "description": "Zoom meeting start URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Incident {
        ///Date of acknowledgment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub acknowledged_at: ::std::option::Option<::std::string::String>,
        ///Airtable base key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub airtable_base_key: ::std::option::Option<::std::string::String>,
        ///Airtable record ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub airtable_record_id: ::std::option::Option<::std::string::String>,
        ///Airtable record URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub airtable_record_url: ::std::option::Option<::std::string::String>,
        ///Airtable table name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub airtable_table_name: ::std::option::Option<::std::string::String>,
        ///Asana task ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub asana_task_id: ::std::option::Option<::std::string::String>,
        ///Asana task URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub asana_task_url: ::std::option::Option<::std::string::String>,
        ///Why was the incident cancelled?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancellation_message: ::std::option::Option<::std::string::String>,
        ///Date of cancellation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancelled_at: ::std::option::Option<::std::string::String>,
        ///The user who cancelled the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancelled_by: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///ClickUp task ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub clickup_task_id: ::std::option::Option<::std::string::String>,
        ///ClickUp task URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub clickup_task_url: ::std::option::Option<::std::string::String>,
        ///Date of closure
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub closed_at: ::std::option::Option<::std::string::String>,
        ///The user who closed the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub closed_by: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Confluence page ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub confluence_page_id: ::std::option::Option<::std::string::String>,
        ///Confluence page URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub confluence_page_url: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Datadog notebook ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub datadog_notebook_id: ::std::option::Option<::std::string::String>,
        ///Datadog notebook URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub datadog_notebook_url: ::std::option::Option<::std::string::String>,
        ///Date of detection
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub detected_at: ::std::option::Option<::std::string::String>,
        ///ID of duplicated incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duplicate_incident_id: ::std::option::Option<::std::string::String>,
        ///The Environments of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environments: ::std::option::Option<::std::vec::Vec<EnvironmentResponse>>,
        ///Freshservice task ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub freshservice_task_id: ::std::option::Option<::std::string::String>,
        ///Freshservice task URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub freshservice_task_url: ::std::option::Option<::std::string::String>,
        ///Freshservice ticket ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub freshservice_ticket_id: ::std::option::Option<::std::string::String>,
        ///Freshservice ticket URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub freshservice_ticket_url: ::std::option::Option<::std::string::String>,
        ///The Functionalities of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionalities: ::std::option::Option<
            ::std::vec::Vec<FunctionalityResponse>,
        >,
        ///GitHub issue ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_issue_id: ::std::option::Option<::std::string::String>,
        ///GitHub issue URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_issue_url: ::std::option::Option<::std::string::String>,
        ///GitLab issue ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_issue_id: ::std::option::Option<::std::string::String>,
        ///GitLab issue URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_issue_url: ::std::option::Option<::std::string::String>,
        ///Google Drive document ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_id: ::std::option::Option<::std::string::String>,
        ///Google Drive parent folder ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_parent_id: ::std::option::Option<::std::string::String>,
        ///Google Drive URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_url: ::std::option::Option<::std::string::String>,
        ///Google meeting ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_meeting_id: ::std::option::Option<::std::string::String>,
        ///Google meeting URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_meeting_url: ::std::option::Option<::std::string::String>,
        ///The Teams of to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub groups: ::std::option::Option<::std::vec::Vec<TeamResponse>>,
        ///Unique ID of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Date of triage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub in_triage_at: ::std::option::Option<::std::string::String>,
        ///The user who triaged the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub in_triage_by: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///The Incident Types of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_types: ::std::option::Option<::std::vec::Vec<IncidentTypeResponse>>,
        ///Jira issue ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_id: ::std::option::Option<::std::string::String>,
        ///Jira issue key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_key: ::std::option::Option<::std::string::String>,
        ///Jira issue URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_url: ::std::option::Option<::std::string::String>,
        ///The kind of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<::std::string::String>,
        ///Labels to attach to the incidents. eg: {"platform":"osx", "version": "1.29"}
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Linear issue ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub linear_issue_id: ::std::option::Option<::std::string::String>,
        ///Linear issue URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub linear_issue_url: ::std::option::Option<::std::string::String>,
        ///Mattermost channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mattermost_channel_id: ::std::option::Option<::std::string::String>,
        ///Mattermost channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mattermost_channel_name: ::std::option::Option<::std::string::String>,
        ///Mattermost channel URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mattermost_channel_url: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_channel_id: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_channel_name: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams channel short URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_channel_short_url: ::std::option::Option<
            ::std::string::String,
        >,
        ///Microsoft Teams channel URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_channel_url: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams chat ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_chat_id: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams chat URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_chat_url: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams meeting ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_meeting_id: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams meeting URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_meeting_url: ::std::option::Option<::std::string::String>,
        ///Microsoft Teams team ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub microsoft_teams_team_id: ::std::option::Option<::std::string::String>,
        ///Date of mitigation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_at: ::std::option::Option<::std::string::String>,
        ///The user who mitigated the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_by: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///How was the incident mitigated?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigation_message: ::std::option::Option<::std::string::String>,
        ///Motion task ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub motion_task_id: ::std::option::Option<::std::string::String>,
        ///Motion task URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub motion_task_url: ::std::option::Option<::std::string::String>,
        ///The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub muted_service_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Opsgenie alert ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_alert_id: ::std::option::Option<::std::string::String>,
        ///Opsgenie alert URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_alert_url: ::std::option::Option<::std::string::String>,
        ///Opsgenie incident ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_incident_id: ::std::option::Option<::std::string::String>,
        ///Opsgenie incident URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_incident_url: ::std::option::Option<::std::string::String>,
        ///PagerDuty incident ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_incident_id: ::std::option::Option<::std::string::String>,
        ///PagerDuty incident number
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_incident_number: ::std::option::Option<::std::string::String>,
        ///PagerDuty incident URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_incident_url: ::std::option::Option<::std::string::String>,
        ///ID of parent incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_incident_id: ::std::option::Option<::std::string::String>,
        ///The visibility of the incident
        #[serde(default)]
        pub private: bool,
        ///The public title of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_title: ::std::option::Option<::std::string::String>,
        ///Quip page ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub quip_page_id: ::std::option::Option<::std::string::String>,
        ///Quip page URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub quip_page_url: ::std::option::Option<::std::string::String>,
        ///How was the incident resolved?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_message: ::std::option::Option<::std::string::String>,
        ///Date of resolution
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_at: ::std::option::Option<::std::string::String>,
        ///The user who resolved the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_by: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///The status of the retrospective progress
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub retrospective_progress_status: ::std::option::Option<
            IncidentRetrospectiveProgressStatus,
        >,
        ///Date of when the maintenance begins
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scheduled_for: ::std::option::Option<::std::string::String>,
        ///Date of when the maintenance ends
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scheduled_until: ::std::option::Option<::std::string::String>,
        ///Sequential ID of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sequential_id: ::std::option::Option<i64>,
        ///ServiceNow incident ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_incident_id: ::std::option::Option<::std::string::String>,
        ///ServiceNow incident key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_incident_key: ::std::option::Option<::std::string::String>,
        ///ServiceNow incident URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_incident_url: ::std::option::Option<::std::string::String>,
        ///The Services of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub services: ::std::option::Option<::std::vec::Vec<ServiceResponse>>,
        ///The Severity of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity: ::std::option::Option<SeverityResponse>,
        ///SharePoint page ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sharepoint_page_id: ::std::option::Option<::std::string::String>,
        ///SharePoint page URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sharepoint_page_url: ::std::option::Option<::std::string::String>,
        ///The short url to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub short_url: ::std::option::Option<::std::string::String>,
        ///Shortcut story ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shortcut_story_id: ::std::option::Option<::std::string::String>,
        ///Shortcut story URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shortcut_story_url: ::std::option::Option<::std::string::String>,
        ///Shortcut task ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shortcut_task_id: ::std::option::Option<::std::string::String>,
        ///Shortcut task URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shortcut_task_url: ::std::option::Option<::std::string::String>,
        ///Whether the Slack channel is archived
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_archived: ::std::option::Option<bool>,
        ///Slack channel deep link
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_deep_link: ::std::option::Option<::std::string::String>,
        ///Slack channel id
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_name: ::std::option::Option<::std::string::String>,
        ///Slack channel short url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_short_url: ::std::option::Option<::std::string::String>,
        ///Slack channel url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_url: ::std::option::Option<::std::string::String>,
        ///Timestamp of last Slack message
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_last_message_ts: ::std::option::Option<::std::string::String>,
        ///The slug of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///The source of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<::std::string::String>,
        ///Date of start
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        ///The user who started the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_by: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///The status of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<::std::string::String>,
        ///The summary of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///The title of the incident
        pub title: ::std::string::String,
        ///Trello card ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub trello_card_id: ::std::option::Option<::std::string::String>,
        ///Trello card URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub trello_card_url: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The url to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub url: ::std::option::Option<::std::string::String>,
        ///The user who created the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///VictorOps incident ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub victor_ops_incident_id: ::std::option::Option<::std::string::String>,
        ///VictorOps incident URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub victor_ops_incident_url: ::std::option::Option<::std::string::String>,
        ///Webex meeting ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub webex_meeting_id: ::std::option::Option<::std::string::String>,
        ///Webex meeting URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub webex_meeting_url: ::std::option::Option<::std::string::String>,
        ///Zendesk ticket ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zendesk_ticket_id: ::std::option::Option<::std::string::String>,
        ///Zendesk ticket URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zendesk_ticket_url: ::std::option::Option<::std::string::String>,
        ///Zoom meeting global dial-in numbers
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_global_dial_in_numbers: ::std::option::Option<
            ::std::vec::Vec<IncidentZoomMeetingGlobalDialInNumbersItem>,
        >,
        ///Zoom meeting H323 password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_h323_password: ::std::option::Option<::std::string::String>,
        ///Zoom meeting ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_id: ::std::option::Option<::std::string::String>,
        ///Zoom meeting join URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_join_url: ::std::option::Option<::std::string::String>,
        ///Zoom meeting password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_password: ::std::option::Option<::std::string::String>,
        ///Zoom meeting PSTN password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_pstn_password: ::std::option::Option<::std::string::String>,
        ///Zoom meeting start URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub zoom_meeting_start_url: ::std::option::Option<::std::string::String>,
    }
    impl Incident {
        pub fn builder() -> builder::Incident {
            Default::default()
        }
    }
    ///`IncidentActionItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "summary",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "assigned_to": {
    ///      "description": "User assigned to this action item",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_flat_response"
    ///        }
    ///      ]
    ///    },
    ///    "assigned_to_group_ids": {
    ///      "description": "IDs of groups you wish to assign this action item",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of incident action item",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_date": {
    ///      "description": "The due date of the action item",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_id": {
    ///      "description": "The Jira issue ID.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "The Jira issue key.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_url": {
    ///      "description": "The Jira issue URL.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "task",
    ///        "follow_up"
    ///      ]
    ///    },
    ///    "priority": {
    ///      "description": "The priority of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "in_progress",
    ///        "cancelled",
    ///        "done"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the action item",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentActionItem {
        ///User assigned to this action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to: ::std::option::Option<UserFlatResponse>,
        ///IDs of groups you wish to assign this action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of incident action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///The Jira issue ID.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_id: ::std::option::Option<::std::string::String>,
        ///The Jira issue key.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_key: ::std::option::Option<::std::string::String>,
        ///The Jira issue URL.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_url: ::std::option::Option<::std::string::String>,
        ///The kind of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<IncidentActionItemKind>,
        ///The priority of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<IncidentActionItemPriority>,
        ///The status of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<IncidentActionItemStatus>,
        ///The summary of the action item
        pub summary: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentActionItem {
        pub fn builder() -> builder::IncidentActionItem {
            Default::default()
        }
    }
    ///The kind of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "task",
    ///    "follow_up"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentActionItemKind {
        #[serde(rename = "task")]
        Task,
        #[serde(rename = "follow_up")]
        FollowUp,
    }
    impl ::std::fmt::Display for IncidentActionItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Task => f.write_str("task"),
                Self::FollowUp => f.write_str("follow_up"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentActionItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "task" => Ok(Self::Task),
                "follow_up" => Ok(Self::FollowUp),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentActionItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentActionItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentActionItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentActionItemList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_action_item"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the action item",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_action_items"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentActionItemList {
        pub data: ::std::vec::Vec<IncidentActionItemListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentActionItemList {
        pub fn builder() -> builder::IncidentActionItemList {
            Default::default()
        }
    }
    ///`IncidentActionItemListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_action_item"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the action item",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_action_items"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentActionItemListDataItem {
        pub attributes: IncidentActionItem,
        ///Unique ID of the action item
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentActionItemListDataItemType,
    }
    impl IncidentActionItemListDataItem {
        pub fn builder() -> builder::IncidentActionItemListDataItem {
            Default::default()
        }
    }
    ///`IncidentActionItemListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_action_items"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentActionItemListDataItemType {
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
    }
    impl ::std::fmt::Display for IncidentActionItemListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentActionItems => f.write_str("incident_action_items"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentActionItemListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_action_items" => Ok(Self::IncidentActionItems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentActionItemListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentActionItemListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentActionItemListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The priority of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentActionItemPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for IncidentActionItemPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentActionItemPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentActionItemPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentActionItemPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentActionItemPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentActionItemResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_action_item"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the action item",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_action_items"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentActionItemResponse {
        pub data: IncidentActionItemResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentActionItemResponse {
        pub fn builder() -> builder::IncidentActionItemResponse {
            Default::default()
        }
    }
    ///`IncidentActionItemResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_action_item"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the action item",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_action_items"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentActionItemResponseData {
        pub attributes: IncidentActionItem,
        ///Unique ID of the action item
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentActionItemResponseDataType,
    }
    impl IncidentActionItemResponseData {
        pub fn builder() -> builder::IncidentActionItemResponseData {
            Default::default()
        }
    }
    ///`IncidentActionItemResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_action_items"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentActionItemResponseDataType {
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
    }
    impl ::std::fmt::Display for IncidentActionItemResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentActionItems => f.write_str("incident_action_items"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentActionItemResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_action_items" => Ok(Self::IncidentActionItems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentActionItemResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentActionItemResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentActionItemResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "in_progress",
    ///    "cancelled",
    ///    "done"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentActionItemStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "done")]
        Done,
    }
    impl ::std::fmt::Display for IncidentActionItemStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Done => f.write_str("done"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentActionItemStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "in_progress" => Ok(Self::InProgress),
                "cancelled" => Ok(Self::Cancelled),
                "done" => Ok(Self::Done),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentActionItemStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentActionItemStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentActionItemStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentCustomFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "selected_option_ids",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "custom_field_id": {
    ///      "type": "integer"
    ///    },
    ///    "incident_id": {
    ///      "type": "string"
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "The value of the incident_custom_field_selection",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentCustomFieldSelection {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_field_id: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_id: ::std::option::Option<::std::string::String>,
        pub selected_option_ids: ::std::vec::Vec<i64>,
        ///The value of the incident_custom_field_selection
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl IncidentCustomFieldSelection {
        pub fn builder() -> builder::IncidentCustomFieldSelection {
            Default::default()
        }
    }
    ///`IncidentCustomFieldSelectionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_custom_field_selection"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident_custom_field_selection",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_custom_field_selections"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentCustomFieldSelectionList {
        pub data: ::std::vec::Vec<IncidentCustomFieldSelectionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentCustomFieldSelectionList {
        pub fn builder() -> builder::IncidentCustomFieldSelectionList {
            Default::default()
        }
    }
    ///`IncidentCustomFieldSelectionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_custom_field_selection"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident_custom_field_selection",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentCustomFieldSelectionListDataItem {
        pub attributes: IncidentCustomFieldSelection,
        ///Unique ID of the incident_custom_field_selection
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentCustomFieldSelectionListDataItemType,
    }
    impl IncidentCustomFieldSelectionListDataItem {
        pub fn builder() -> builder::IncidentCustomFieldSelectionListDataItem {
            Default::default()
        }
    }
    ///`IncidentCustomFieldSelectionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentCustomFieldSelectionListDataItemType {
        #[serde(rename = "incident_custom_field_selections")]
        IncidentCustomFieldSelections,
    }
    impl ::std::fmt::Display for IncidentCustomFieldSelectionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCustomFieldSelections => {
                    f.write_str("incident_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentCustomFieldSelectionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_custom_field_selections" => {
                    Ok(Self::IncidentCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentCustomFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentCustomFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentCustomFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentCustomFieldSelectionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_custom_field_selection"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident_custom_field_selection",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_custom_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentCustomFieldSelectionResponse {
        pub data: IncidentCustomFieldSelectionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentCustomFieldSelectionResponse {
        pub fn builder() -> builder::IncidentCustomFieldSelectionResponse {
            Default::default()
        }
    }
    ///`IncidentCustomFieldSelectionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_custom_field_selection"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident_custom_field_selection",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentCustomFieldSelectionResponseData {
        pub attributes: IncidentCustomFieldSelection,
        ///Unique ID of the incident_custom_field_selection
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentCustomFieldSelectionResponseDataType,
    }
    impl IncidentCustomFieldSelectionResponseData {
        pub fn builder() -> builder::IncidentCustomFieldSelectionResponseData {
            Default::default()
        }
    }
    ///`IncidentCustomFieldSelectionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentCustomFieldSelectionResponseDataType {
        #[serde(rename = "incident_custom_field_selections")]
        IncidentCustomFieldSelections,
    }
    impl ::std::fmt::Display for IncidentCustomFieldSelectionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCustomFieldSelections => {
                    f.write_str("incident_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentCustomFieldSelectionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_custom_field_selections" => {
                    Ok(Self::IncidentCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentCustomFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentCustomFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentCustomFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "event",
    ///    "occurred_at",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "event": {
    ///      "description": "The summary of the incident event",
    ///      "type": "string"
    ///    },
    ///    "occurred_at": {
    ///      "description": "Date of occurence",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "visibility": {
    ///      "description": "The visibility of the incident action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "internal",
    ///        "external"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEvent {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The summary of the incident event
        pub event: ::std::string::String,
        ///Date of occurence
        pub occurred_at: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The visibility of the incident action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub visibility: ::std::option::Option<IncidentEventVisibility>,
    }
    impl IncidentEvent {
        pub fn builder() -> builder::IncidentEvent {
            Default::default()
        }
    }
    ///`IncidentEventFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "functionality_id",
    ///    "incident_event_id",
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "functionality_id": {
    ///      "description": "The ID of the functionality.",
    ///      "type": "string"
    ///    },
    ///    "incident_event_id": {
    ///      "description": "The ID of the incident event.",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status of the affected functionality",
    ///      "type": "string",
    ///      "enum": [
    ///        "operational",
    ///        "partial_outage",
    ///        "major_outage"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct IncidentEventFunctionality {
        ///The ID of the functionality.
        pub functionality_id: ::std::string::String,
        ///The ID of the incident event.
        pub incident_event_id: ::std::string::String,
        ///The status of the affected functionality
        pub status: IncidentEventFunctionalityStatus,
    }
    impl IncidentEventFunctionality {
        pub fn builder() -> builder::IncidentEventFunctionality {
            Default::default()
        }
    }
    ///`IncidentEventFunctionalityList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_event_functionality"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident event functionality",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_event_functionalities"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventFunctionalityList {
        pub data: ::std::vec::Vec<IncidentEventFunctionalityListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentEventFunctionalityList {
        pub fn builder() -> builder::IncidentEventFunctionalityList {
            Default::default()
        }
    }
    ///`IncidentEventFunctionalityListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_event_functionality"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event functionality",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventFunctionalityListDataItem {
        pub attributes: IncidentEventFunctionality,
        ///Unique ID of the incident event functionality
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentEventFunctionalityListDataItemType,
    }
    impl IncidentEventFunctionalityListDataItem {
        pub fn builder() -> builder::IncidentEventFunctionalityListDataItem {
            Default::default()
        }
    }
    ///`IncidentEventFunctionalityListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventFunctionalityListDataItemType {
        #[serde(rename = "incident_event_functionalities")]
        IncidentEventFunctionalities,
    }
    impl ::std::fmt::Display for IncidentEventFunctionalityListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventFunctionalities => {
                    f.write_str("incident_event_functionalities")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventFunctionalityListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_functionalities" => {
                    Ok(Self::IncidentEventFunctionalities)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventFunctionalityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventFunctionalityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventFunctionalityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentEventFunctionalityResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_event_functionality"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident event functionality",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_event_functionalities"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventFunctionalityResponse {
        pub data: IncidentEventFunctionalityResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentEventFunctionalityResponse {
        pub fn builder() -> builder::IncidentEventFunctionalityResponse {
            Default::default()
        }
    }
    ///`IncidentEventFunctionalityResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_event_functionality"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event functionality",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventFunctionalityResponseData {
        pub attributes: IncidentEventFunctionality,
        ///Unique ID of the incident event functionality
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentEventFunctionalityResponseDataType,
    }
    impl IncidentEventFunctionalityResponseData {
        pub fn builder() -> builder::IncidentEventFunctionalityResponseData {
            Default::default()
        }
    }
    ///`IncidentEventFunctionalityResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventFunctionalityResponseDataType {
        #[serde(rename = "incident_event_functionalities")]
        IncidentEventFunctionalities,
    }
    impl ::std::fmt::Display for IncidentEventFunctionalityResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventFunctionalities => {
                    f.write_str("incident_event_functionalities")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventFunctionalityResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_functionalities" => {
                    Ok(Self::IncidentEventFunctionalities)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventFunctionalityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventFunctionalityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventFunctionalityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the affected functionality
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the affected functionality",
    ///  "type": "string",
    ///  "enum": [
    ///    "operational",
    ///    "partial_outage",
    ///    "major_outage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventFunctionalityStatus {
        #[serde(rename = "operational")]
        Operational,
        #[serde(rename = "partial_outage")]
        PartialOutage,
        #[serde(rename = "major_outage")]
        MajorOutage,
    }
    impl ::std::fmt::Display for IncidentEventFunctionalityStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Operational => f.write_str("operational"),
                Self::PartialOutage => f.write_str("partial_outage"),
                Self::MajorOutage => f.write_str("major_outage"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventFunctionalityStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "operational" => Ok(Self::Operational),
                "partial_outage" => Ok(Self::PartialOutage),
                "major_outage" => Ok(Self::MajorOutage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventFunctionalityStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventFunctionalityStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventFunctionalityStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentEventList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_event"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident event",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_events"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventList {
        pub data: ::std::vec::Vec<IncidentEventListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentEventList {
        pub fn builder() -> builder::IncidentEventList {
            Default::default()
        }
    }
    ///`IncidentEventListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventListDataItem {
        pub attributes: IncidentEvent,
        ///Unique ID of the incident event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentEventListDataItemType,
    }
    impl IncidentEventListDataItem {
        pub fn builder() -> builder::IncidentEventListDataItem {
            Default::default()
        }
    }
    ///`IncidentEventListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventListDataItemType {
        #[serde(rename = "incident_events")]
        IncidentEvents,
    }
    impl ::std::fmt::Display for IncidentEventListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEvents => f.write_str("incident_events"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_events" => Ok(Self::IncidentEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentEventResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_event"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident event",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_events"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventResponse {
        pub data: IncidentEventResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentEventResponse {
        pub fn builder() -> builder::IncidentEventResponse {
            Default::default()
        }
    }
    ///`IncidentEventResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventResponseData {
        pub attributes: IncidentEvent,
        ///Unique ID of the incident event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentEventResponseDataType,
    }
    impl IncidentEventResponseData {
        pub fn builder() -> builder::IncidentEventResponseData {
            Default::default()
        }
    }
    ///`IncidentEventResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventResponseDataType {
        #[serde(rename = "incident_events")]
        IncidentEvents,
    }
    impl ::std::fmt::Display for IncidentEventResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEvents => f.write_str("incident_events"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_events" => Ok(Self::IncidentEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentEventService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_event_id",
    ///    "service_id",
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "incident_event_id": {
    ///      "description": "The ID of the incident event.",
    ///      "type": "string"
    ///    },
    ///    "service_id": {
    ///      "description": "The ID of the service.",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status of the affected service",
    ///      "type": "string",
    ///      "enum": [
    ///        "operational",
    ///        "partial_outage",
    ///        "major_outage"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct IncidentEventService {
        ///The ID of the incident event.
        pub incident_event_id: ::std::string::String,
        ///The ID of the service.
        pub service_id: ::std::string::String,
        ///The status of the affected service
        pub status: IncidentEventServiceStatus,
    }
    impl IncidentEventService {
        pub fn builder() -> builder::IncidentEventService {
            Default::default()
        }
    }
    ///`IncidentEventServiceList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_event_service"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident event service",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_event_services"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventServiceList {
        pub data: ::std::vec::Vec<IncidentEventServiceListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentEventServiceList {
        pub fn builder() -> builder::IncidentEventServiceList {
            Default::default()
        }
    }
    ///`IncidentEventServiceListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_event_service"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event service",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventServiceListDataItem {
        pub attributes: IncidentEventService,
        ///Unique ID of the incident event service
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentEventServiceListDataItemType,
    }
    impl IncidentEventServiceListDataItem {
        pub fn builder() -> builder::IncidentEventServiceListDataItem {
            Default::default()
        }
    }
    ///`IncidentEventServiceListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventServiceListDataItemType {
        #[serde(rename = "incident_event_services")]
        IncidentEventServices,
    }
    impl ::std::fmt::Display for IncidentEventServiceListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventServices => f.write_str("incident_event_services"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventServiceListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_services" => Ok(Self::IncidentEventServices),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventServiceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventServiceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventServiceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentEventServiceResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_event_service"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident event service",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_event_services"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventServiceResponse {
        pub data: IncidentEventServiceResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentEventServiceResponse {
        pub fn builder() -> builder::IncidentEventServiceResponse {
            Default::default()
        }
    }
    ///`IncidentEventServiceResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_event_service"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event service",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentEventServiceResponseData {
        pub attributes: IncidentEventService,
        ///Unique ID of the incident event service
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentEventServiceResponseDataType,
    }
    impl IncidentEventServiceResponseData {
        pub fn builder() -> builder::IncidentEventServiceResponseData {
            Default::default()
        }
    }
    ///`IncidentEventServiceResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventServiceResponseDataType {
        #[serde(rename = "incident_event_services")]
        IncidentEventServices,
    }
    impl ::std::fmt::Display for IncidentEventServiceResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventServices => f.write_str("incident_event_services"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventServiceResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_services" => Ok(Self::IncidentEventServices),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventServiceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentEventServiceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentEventServiceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the affected service
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the affected service",
    ///  "type": "string",
    ///  "enum": [
    ///    "operational",
    ///    "partial_outage",
    ///    "major_outage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventServiceStatus {
        #[serde(rename = "operational")]
        Operational,
        #[serde(rename = "partial_outage")]
        PartialOutage,
        #[serde(rename = "major_outage")]
        MajorOutage,
    }
    impl ::std::fmt::Display for IncidentEventServiceStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Operational => f.write_str("operational"),
                Self::PartialOutage => f.write_str("partial_outage"),
                Self::MajorOutage => f.write_str("major_outage"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventServiceStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "operational" => Ok(Self::Operational),
                "partial_outage" => Ok(Self::PartialOutage),
                "major_outage" => Ok(Self::MajorOutage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventServiceStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentEventServiceStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentEventServiceStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The visibility of the incident action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The visibility of the incident action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "internal",
    ///    "external"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentEventVisibility {
        #[serde(rename = "internal")]
        Internal,
        #[serde(rename = "external")]
        External,
    }
    impl ::std::fmt::Display for IncidentEventVisibility {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Internal => f.write_str("internal"),
                Self::External => f.write_str("external"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentEventVisibility {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "internal" => Ok(Self::Internal),
                "external" => Ok(Self::External),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentEventVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentEventVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentEventVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentFeedback`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "anonymous",
    ///    "created_at",
    ///    "feedback",
    ///    "rating",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "anonymous": {
    ///      "description": "Is the feedback anonymous?",
    ///      "type": "boolean"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "feedback": {
    ///      "description": "The feedback of the incident feedback",
    ///      "type": "string"
    ///    },
    ///    "rating": {
    ///      "description": "The rating of the incident feedback",
    ///      "type": "integer",
    ///      "enum": [
    ///        4,
    ///        3,
    ///        2,
    ///        1,
    ///        0
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFeedback {
        ///Is the feedback anonymous?
        pub anonymous: bool,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The feedback of the incident feedback
        pub feedback: ::std::string::String,
        ///The rating of the incident feedback
        pub rating: IncidentFeedbackRating,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentFeedback {
        pub fn builder() -> builder::IncidentFeedback {
            Default::default()
        }
    }
    ///`IncidentFeedbackList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_feedback"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident feedback",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_feedbacks"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFeedbackList {
        pub data: ::std::vec::Vec<IncidentFeedbackListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentFeedbackList {
        pub fn builder() -> builder::IncidentFeedbackList {
            Default::default()
        }
    }
    ///`IncidentFeedbackListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_feedback"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident feedback",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_feedbacks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFeedbackListDataItem {
        pub attributes: IncidentFeedback,
        ///Unique ID of the incident feedback
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentFeedbackListDataItemType,
    }
    impl IncidentFeedbackListDataItem {
        pub fn builder() -> builder::IncidentFeedbackListDataItem {
            Default::default()
        }
    }
    ///`IncidentFeedbackListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_feedbacks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentFeedbackListDataItemType {
        #[serde(rename = "incident_feedbacks")]
        IncidentFeedbacks,
    }
    impl ::std::fmt::Display for IncidentFeedbackListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFeedbacks => f.write_str("incident_feedbacks"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentFeedbackListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_feedbacks" => Ok(Self::IncidentFeedbacks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentFeedbackListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentFeedbackListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentFeedbackListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The rating of the incident feedback
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The rating of the incident feedback",
    ///  "type": "integer",
    ///  "enum": [
    ///    4,
    ///    3,
    ///    2,
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct IncidentFeedbackRating(i64);
    impl ::std::ops::Deref for IncidentFeedbackRating {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<IncidentFeedbackRating> for i64 {
        fn from(value: IncidentFeedbackRating) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for IncidentFeedbackRating {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![4_i64, 3_i64, 2_i64, 1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for IncidentFeedbackRating {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`IncidentFeedbackResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_feedback"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident feedback",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_feedbacks"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFeedbackResponse {
        pub data: IncidentFeedbackResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentFeedbackResponse {
        pub fn builder() -> builder::IncidentFeedbackResponse {
            Default::default()
        }
    }
    ///`IncidentFeedbackResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_feedback"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident feedback",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_feedbacks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFeedbackResponseData {
        pub attributes: IncidentFeedback,
        ///Unique ID of the incident feedback
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentFeedbackResponseDataType,
    }
    impl IncidentFeedbackResponseData {
        pub fn builder() -> builder::IncidentFeedbackResponseData {
            Default::default()
        }
    }
    ///`IncidentFeedbackResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_feedbacks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentFeedbackResponseDataType {
        #[serde(rename = "incident_feedbacks")]
        IncidentFeedbacks,
    }
    impl ::std::fmt::Display for IncidentFeedbackResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFeedbacks => f.write_str("incident_feedbacks"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentFeedbackResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_feedbacks" => Ok(Self::IncidentFeedbacks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentFeedbackResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentFeedbackResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentFeedbackResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentFormFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id",
    ///    "incident_id"
    ///  ],
    ///  "properties": {
    ///    "form_field_id": {
    ///      "description": "The custom field for this selection",
    ///      "type": "string"
    ///    },
    ///    "incident_id": {
    ///      "type": "string"
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected catalog entities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected causes for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected environments for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected functionalities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected groups (teams) for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected incident types for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected options for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected services for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected users for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "The selected value for text kind custom fields",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFormFieldSelection {
        ///The custom field for this selection
        pub form_field_id: ::std::string::String,
        pub incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        ///The selected value for text kind custom fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl IncidentFormFieldSelection {
        pub fn builder() -> builder::IncidentFormFieldSelection {
            Default::default()
        }
    }
    ///`IncidentFormFieldSelectionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_form_field_selection"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident_form_field_selection",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_form_field_selections"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFormFieldSelectionList {
        pub data: ::std::vec::Vec<IncidentFormFieldSelectionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentFormFieldSelectionList {
        pub fn builder() -> builder::IncidentFormFieldSelectionList {
            Default::default()
        }
    }
    ///`IncidentFormFieldSelectionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_form_field_selection"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident_form_field_selection",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_form_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFormFieldSelectionListDataItem {
        pub attributes: IncidentFormFieldSelection,
        ///Unique ID of the incident_form_field_selection
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentFormFieldSelectionListDataItemType,
    }
    impl IncidentFormFieldSelectionListDataItem {
        pub fn builder() -> builder::IncidentFormFieldSelectionListDataItem {
            Default::default()
        }
    }
    ///`IncidentFormFieldSelectionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentFormFieldSelectionListDataItemType {
        #[serde(rename = "incident_form_field_selections")]
        IncidentFormFieldSelections,
    }
    impl ::std::fmt::Display for IncidentFormFieldSelectionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFormFieldSelections => {
                    f.write_str("incident_form_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentFormFieldSelectionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form_field_selections" => Ok(Self::IncidentFormFieldSelections),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentFormFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentFormFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentFormFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentFormFieldSelectionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_form_field_selection"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident_form_field_selection",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_form_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFormFieldSelectionResponse {
        pub data: IncidentFormFieldSelectionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentFormFieldSelectionResponse {
        pub fn builder() -> builder::IncidentFormFieldSelectionResponse {
            Default::default()
        }
    }
    ///`IncidentFormFieldSelectionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_form_field_selection"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident_form_field_selection",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_form_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentFormFieldSelectionResponseData {
        pub attributes: IncidentFormFieldSelection,
        ///Unique ID of the incident_form_field_selection
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentFormFieldSelectionResponseDataType,
    }
    impl IncidentFormFieldSelectionResponseData {
        pub fn builder() -> builder::IncidentFormFieldSelectionResponseData {
            Default::default()
        }
    }
    ///`IncidentFormFieldSelectionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentFormFieldSelectionResponseDataType {
        #[serde(rename = "incident_form_field_selections")]
        IncidentFormFieldSelections,
    }
    impl ::std::fmt::Display for IncidentFormFieldSelectionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFormFieldSelections => {
                    f.write_str("incident_form_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentFormFieldSelectionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form_field_selections" => Ok(Self::IncidentFormFieldSelections),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentFormFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentFormFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentFormFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incidents"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentList {
        pub data: ::std::vec::Vec<IncidentListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentList {
        pub fn builder() -> builder::IncidentList {
            Default::default()
        }
    }
    ///`IncidentListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentListDataItem {
        pub attributes: Incident,
        ///Unique ID of the incident
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentListDataItemType,
    }
    impl IncidentListDataItem {
        pub fn builder() -> builder::IncidentListDataItem {
            Default::default()
        }
    }
    ///`IncidentListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentListDataItemType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for IncidentListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSet`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The incident permission set description.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The incident permission set name.",
    ///      "type": "string"
    ///    },
    ///    "private_incident_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "public_incident_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The incident permission set slug.",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSet {
        pub created_at: ::std::string::String,
        ///The incident permission set description.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The incident permission set name.
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub private_incident_permissions: ::std::vec::Vec<
            IncidentPermissionSetPrivateIncidentPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub public_incident_permissions: ::std::vec::Vec<
            IncidentPermissionSetPublicIncidentPermissionsItem,
        >,
        ///The incident permission set slug.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        pub updated_at: ::std::string::String,
    }
    impl IncidentPermissionSet {
        pub fn builder() -> builder::IncidentPermissionSet {
            Default::default()
        }
    }
    ///`IncidentPermissionSetBoolean`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "kind",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "incident_permission_set_id": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "publish_to_status_page",
    ///        "assign_incident_roles",
    ///        "invite_subscribers",
    ///        "update_summary",
    ///        "update_timeline",
    ///        "trigger_workflows",
    ///        "create_communications",
    ///        "read_communications",
    ///        "update_communications",
    ///        "delete_communications",
    ///        "send_communications",
    ///        "modify_custom_fields"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetBoolean {
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_permission_set_id: ::std::option::Option<::std::string::String>,
        pub kind: IncidentPermissionSetBooleanKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        pub updated_at: ::std::string::String,
    }
    impl IncidentPermissionSetBoolean {
        pub fn builder() -> builder::IncidentPermissionSetBoolean {
            Default::default()
        }
    }
    ///`IncidentPermissionSetBooleanKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "publish_to_status_page",
    ///    "assign_incident_roles",
    ///    "invite_subscribers",
    ///    "update_summary",
    ///    "update_timeline",
    ///    "trigger_workflows",
    ///    "create_communications",
    ///    "read_communications",
    ///    "update_communications",
    ///    "delete_communications",
    ///    "send_communications",
    ///    "modify_custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetBooleanKind {
        #[serde(rename = "publish_to_status_page")]
        PublishToStatusPage,
        #[serde(rename = "assign_incident_roles")]
        AssignIncidentRoles,
        #[serde(rename = "invite_subscribers")]
        InviteSubscribers,
        #[serde(rename = "update_summary")]
        UpdateSummary,
        #[serde(rename = "update_timeline")]
        UpdateTimeline,
        #[serde(rename = "trigger_workflows")]
        TriggerWorkflows,
        #[serde(rename = "create_communications")]
        CreateCommunications,
        #[serde(rename = "read_communications")]
        ReadCommunications,
        #[serde(rename = "update_communications")]
        UpdateCommunications,
        #[serde(rename = "delete_communications")]
        DeleteCommunications,
        #[serde(rename = "send_communications")]
        SendCommunications,
        #[serde(rename = "modify_custom_fields")]
        ModifyCustomFields,
    }
    impl ::std::fmt::Display for IncidentPermissionSetBooleanKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PublishToStatusPage => f.write_str("publish_to_status_page"),
                Self::AssignIncidentRoles => f.write_str("assign_incident_roles"),
                Self::InviteSubscribers => f.write_str("invite_subscribers"),
                Self::UpdateSummary => f.write_str("update_summary"),
                Self::UpdateTimeline => f.write_str("update_timeline"),
                Self::TriggerWorkflows => f.write_str("trigger_workflows"),
                Self::CreateCommunications => f.write_str("create_communications"),
                Self::ReadCommunications => f.write_str("read_communications"),
                Self::UpdateCommunications => f.write_str("update_communications"),
                Self::DeleteCommunications => f.write_str("delete_communications"),
                Self::SendCommunications => f.write_str("send_communications"),
                Self::ModifyCustomFields => f.write_str("modify_custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetBooleanKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "publish_to_status_page" => Ok(Self::PublishToStatusPage),
                "assign_incident_roles" => Ok(Self::AssignIncidentRoles),
                "invite_subscribers" => Ok(Self::InviteSubscribers),
                "update_summary" => Ok(Self::UpdateSummary),
                "update_timeline" => Ok(Self::UpdateTimeline),
                "trigger_workflows" => Ok(Self::TriggerWorkflows),
                "create_communications" => Ok(Self::CreateCommunications),
                "read_communications" => Ok(Self::ReadCommunications),
                "update_communications" => Ok(Self::UpdateCommunications),
                "delete_communications" => Ok(Self::DeleteCommunications),
                "send_communications" => Ok(Self::SendCommunications),
                "modify_custom_fields" => Ok(Self::ModifyCustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPermissionSetBooleanKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetBooleanKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetBooleanKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetBooleanList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_permission_set_boolean"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident permission set boolean",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_permission_set_booleans"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetBooleanList {
        pub data: ::std::vec::Vec<IncidentPermissionSetBooleanListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentPermissionSetBooleanList {
        pub fn builder() -> builder::IncidentPermissionSetBooleanList {
            Default::default()
        }
    }
    ///`IncidentPermissionSetBooleanListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_permission_set_boolean"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident permission set boolean",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_booleans"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetBooleanListDataItem {
        pub attributes: IncidentPermissionSetBoolean,
        ///Unique ID of the incident permission set boolean
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPermissionSetBooleanListDataItemType,
    }
    impl IncidentPermissionSetBooleanListDataItem {
        pub fn builder() -> builder::IncidentPermissionSetBooleanListDataItem {
            Default::default()
        }
    }
    ///`IncidentPermissionSetBooleanListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_booleans"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetBooleanListDataItemType {
        #[serde(rename = "incident_permission_set_booleans")]
        IncidentPermissionSetBooleans,
    }
    impl ::std::fmt::Display for IncidentPermissionSetBooleanListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetBooleans => {
                    f.write_str("incident_permission_set_booleans")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetBooleanListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_booleans" => {
                    Ok(Self::IncidentPermissionSetBooleans)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPermissionSetBooleanListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetBooleanListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetBooleanListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetBooleanResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_permission_set_boolean"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident permission set boolean",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_set_booleans"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetBooleanResponse {
        pub data: IncidentPermissionSetBooleanResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentPermissionSetBooleanResponse {
        pub fn builder() -> builder::IncidentPermissionSetBooleanResponse {
            Default::default()
        }
    }
    ///`IncidentPermissionSetBooleanResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_permission_set_boolean"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident permission set boolean",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_booleans"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetBooleanResponseData {
        pub attributes: IncidentPermissionSetBoolean,
        ///Unique ID of the incident permission set boolean
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPermissionSetBooleanResponseDataType,
    }
    impl IncidentPermissionSetBooleanResponseData {
        pub fn builder() -> builder::IncidentPermissionSetBooleanResponseData {
            Default::default()
        }
    }
    ///`IncidentPermissionSetBooleanResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_booleans"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetBooleanResponseDataType {
        #[serde(rename = "incident_permission_set_booleans")]
        IncidentPermissionSetBooleans,
    }
    impl ::std::fmt::Display for IncidentPermissionSetBooleanResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetBooleans => {
                    f.write_str("incident_permission_set_booleans")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetBooleanResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_booleans" => {
                    Ok(Self::IncidentPermissionSetBooleans)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPermissionSetBooleanResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetBooleanResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetBooleanResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_permission_set"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident permission set",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_permission_sets"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetList {
        pub data: ::std::vec::Vec<IncidentPermissionSetListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentPermissionSetList {
        pub fn builder() -> builder::IncidentPermissionSetList {
            Default::default()
        }
    }
    ///`IncidentPermissionSetListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_permission_set"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident permission set",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetListDataItem {
        pub attributes: IncidentPermissionSet,
        ///Unique ID of the incident permission set
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPermissionSetListDataItemType,
    }
    impl IncidentPermissionSetListDataItem {
        pub fn builder() -> builder::IncidentPermissionSetListDataItem {
            Default::default()
        }
    }
    ///`IncidentPermissionSetListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetListDataItemType {
        #[serde(rename = "incident_permission_sets")]
        IncidentPermissionSets,
    }
    impl ::std::fmt::Display for IncidentPermissionSetListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSets => f.write_str("incident_permission_sets"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_sets" => Ok(Self::IncidentPermissionSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPermissionSetListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetPrivateIncidentPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetPrivateIncidentPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for IncidentPermissionSetPrivateIncidentPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetPrivateIncidentPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentPermissionSetPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetPublicIncidentPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetPublicIncidentPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for IncidentPermissionSetPublicIncidentPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetPublicIncidentPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentPermissionSetPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetResource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "incident_permission_set_id",
    ///    "kind",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "incident_permission_set_id": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities",
    ///        "incident_types",
    ///        "statuses",
    ///        "sub_statuses"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "resource_id": {
    ///      "type": "string"
    ///    },
    ///    "resource_type": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResource {
        pub created_at: ::std::string::String,
        pub incident_permission_set_id: ::std::string::String,
        pub kind: IncidentPermissionSetResourceKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resource_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resource_type: ::std::option::Option<::std::string::String>,
        pub updated_at: ::std::string::String,
    }
    impl IncidentPermissionSetResource {
        pub fn builder() -> builder::IncidentPermissionSetResource {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResourceKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "incident_types",
    ///    "statuses",
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetResourceKind {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "statuses")]
        Statuses,
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for IncidentPermissionSetResourceKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Statuses => f.write_str("statuses"),
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetResourceKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "incident_types" => Ok(Self::IncidentTypes),
                "statuses" => Ok(Self::Statuses),
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPermissionSetResourceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetResourceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetResourceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetResourceList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_permission_set_resource"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident permission set resource",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_permission_set_resources"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResourceList {
        pub data: ::std::vec::Vec<IncidentPermissionSetResourceListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentPermissionSetResourceList {
        pub fn builder() -> builder::IncidentPermissionSetResourceList {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResourceListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_permission_set_resource"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident permission set resource",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_resources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResourceListDataItem {
        pub attributes: IncidentPermissionSetResource,
        ///Unique ID of the incident permission set resource
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPermissionSetResourceListDataItemType,
    }
    impl IncidentPermissionSetResourceListDataItem {
        pub fn builder() -> builder::IncidentPermissionSetResourceListDataItem {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResourceListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_resources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetResourceListDataItemType {
        #[serde(rename = "incident_permission_set_resources")]
        IncidentPermissionSetResources,
    }
    impl ::std::fmt::Display for IncidentPermissionSetResourceListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetResources => {
                    f.write_str("incident_permission_set_resources")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetResourceListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_resources" => {
                    Ok(Self::IncidentPermissionSetResources)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentPermissionSetResourceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetResourceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetResourceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetResourceResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_permission_set_resource"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident permission set resource",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_set_resources"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResourceResponse {
        pub data: IncidentPermissionSetResourceResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentPermissionSetResourceResponse {
        pub fn builder() -> builder::IncidentPermissionSetResourceResponse {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResourceResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_permission_set_resource"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident permission set resource",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_resources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResourceResponseData {
        pub attributes: IncidentPermissionSetResource,
        ///Unique ID of the incident permission set resource
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPermissionSetResourceResponseDataType,
    }
    impl IncidentPermissionSetResourceResponseData {
        pub fn builder() -> builder::IncidentPermissionSetResourceResponseData {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResourceResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_resources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetResourceResponseDataType {
        #[serde(rename = "incident_permission_set_resources")]
        IncidentPermissionSetResources,
    }
    impl ::std::fmt::Display for IncidentPermissionSetResourceResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetResources => {
                    f.write_str("incident_permission_set_resources")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetResourceResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_resources" => {
                    Ok(Self::IncidentPermissionSetResources)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentPermissionSetResourceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetResourceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetResourceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPermissionSetResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_permission_set"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident permission set",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_sets"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResponse {
        pub data: IncidentPermissionSetResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentPermissionSetResponse {
        pub fn builder() -> builder::IncidentPermissionSetResponse {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_permission_set"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident permission set",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPermissionSetResponseData {
        pub attributes: IncidentPermissionSet,
        ///Unique ID of the incident permission set
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPermissionSetResponseDataType,
    }
    impl IncidentPermissionSetResponseData {
        pub fn builder() -> builder::IncidentPermissionSetResponseData {
            Default::default()
        }
    }
    ///`IncidentPermissionSetResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPermissionSetResponseDataType {
        #[serde(rename = "incident_permission_sets")]
        IncidentPermissionSets,
    }
    impl ::std::fmt::Display for IncidentPermissionSetResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSets => f.write_str("incident_permission_sets"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPermissionSetResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_sets" => Ok(Self::IncidentPermissionSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPermissionSetResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPermissionSetResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPermissionSetResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPostMortem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The content of the incident retrospective (Only if internal)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "mitigated_at": {
    ///      "description": "Date of mitigation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolved_at": {
    ///      "description": "Date of resolution",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_alerts_attached": {
    ///      "description": "Show alerts attached to the incident",
    ///      "type": "boolean"
    ///    },
    ///    "show_functionalities_impacted": {
    ///      "description": "Show services impacted of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_groups_impacted": {
    ///      "description": "Show groups impacted of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_services_impacted": {
    ///      "description": "Show functionalities impacted of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline": {
    ///      "description": "Show events timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_action_items": {
    ///      "description": "Show action items in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_genius": {
    ///      "description": "Show workflow events in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_order": {
    ///      "description": "The order of the incident retrospective timeline",
    ///      "default": "desc",
    ///      "type": "string",
    ///      "enum": [
    ///        "asc",
    ///        "desc"
    ///      ]
    ///    },
    ///    "show_timeline_tasks": {
    ///      "description": "Show tasks in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_trail": {
    ///      "description": "Show trail events in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "started_at": {
    ///      "description": "Date of started at",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident retrospective",
    ///      "type": "string",
    ///      "enum": [
    ///        "draft",
    ///        "published"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the incident retrospective",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "url": {
    ///      "description": "The url to the incident retrospective",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPostMortem {
        ///The content of the incident retrospective (Only if internal)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Date of mitigation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_at: ::std::option::Option<::std::string::String>,
        ///Date of resolution
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_at: ::std::option::Option<::std::string::String>,
        ///Show alerts attached to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_alerts_attached: ::std::option::Option<bool>,
        ///Show services impacted of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_functionalities_impacted: ::std::option::Option<bool>,
        ///Show groups impacted of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_groups_impacted: ::std::option::Option<bool>,
        ///Show functionalities impacted of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_services_impacted: ::std::option::Option<bool>,
        ///Show events timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline: ::std::option::Option<bool>,
        ///Show action items in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_action_items: ::std::option::Option<bool>,
        ///Show workflow events in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_genius: ::std::option::Option<bool>,
        ///The order of the incident retrospective timeline
        #[serde(default = "defaults::incident_post_mortem_show_timeline_order")]
        pub show_timeline_order: IncidentPostMortemShowTimelineOrder,
        ///Show tasks in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_tasks: ::std::option::Option<bool>,
        ///Show trail events in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_trail: ::std::option::Option<bool>,
        ///Date of started at
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        ///The status of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<IncidentPostMortemStatus>,
        ///The title of the incident retrospective
        pub title: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The url to the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub url: ::std::option::Option<::std::string::String>,
    }
    impl IncidentPostMortem {
        pub fn builder() -> builder::IncidentPostMortem {
            Default::default()
        }
    }
    ///`IncidentPostMortemList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_post_mortem"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident retrospective",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_post_mortems"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPostMortemList {
        pub data: ::std::vec::Vec<IncidentPostMortemListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentPostMortemList {
        pub fn builder() -> builder::IncidentPostMortemList {
            Default::default()
        }
    }
    ///`IncidentPostMortemListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_post_mortem"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident retrospective",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_post_mortems"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPostMortemListDataItem {
        pub attributes: IncidentPostMortem,
        ///Unique ID of the incident retrospective
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPostMortemListDataItemType,
    }
    impl IncidentPostMortemListDataItem {
        pub fn builder() -> builder::IncidentPostMortemListDataItem {
            Default::default()
        }
    }
    ///`IncidentPostMortemListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_post_mortems"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPostMortemListDataItemType {
        #[serde(rename = "incident_post_mortems")]
        IncidentPostMortems,
    }
    impl ::std::fmt::Display for IncidentPostMortemListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPostMortems => f.write_str("incident_post_mortems"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPostMortemListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_post_mortems" => Ok(Self::IncidentPostMortems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPostMortemListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPostMortemListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPostMortemListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentPostMortemResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_post_mortem"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident retrospective",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_post_mortems"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPostMortemResponse {
        pub data: IncidentPostMortemResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentPostMortemResponse {
        pub fn builder() -> builder::IncidentPostMortemResponse {
            Default::default()
        }
    }
    ///`IncidentPostMortemResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_post_mortem"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident retrospective",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_post_mortems"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentPostMortemResponseData {
        pub attributes: IncidentPostMortem,
        ///Unique ID of the incident retrospective
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentPostMortemResponseDataType,
    }
    impl IncidentPostMortemResponseData {
        pub fn builder() -> builder::IncidentPostMortemResponseData {
            Default::default()
        }
    }
    ///`IncidentPostMortemResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_post_mortems"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPostMortemResponseDataType {
        #[serde(rename = "incident_post_mortems")]
        IncidentPostMortems,
    }
    impl ::std::fmt::Display for IncidentPostMortemResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPostMortems => f.write_str("incident_post_mortems"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPostMortemResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_post_mortems" => Ok(Self::IncidentPostMortems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPostMortemResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPostMortemResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPostMortemResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The order of the incident retrospective timeline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The order of the incident retrospective timeline",
    ///  "default": "desc",
    ///  "type": "string",
    ///  "enum": [
    ///    "asc",
    ///    "desc"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPostMortemShowTimelineOrder {
        #[serde(rename = "asc")]
        Asc,
        #[serde(rename = "desc")]
        Desc,
    }
    impl ::std::fmt::Display for IncidentPostMortemShowTimelineOrder {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Asc => f.write_str("asc"),
                Self::Desc => f.write_str("desc"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPostMortemShowTimelineOrder {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "asc" => Ok(Self::Asc),
                "desc" => Ok(Self::Desc),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPostMortemShowTimelineOrder {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentPostMortemShowTimelineOrder {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentPostMortemShowTimelineOrder {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentPostMortemShowTimelineOrder {
        fn default() -> Self {
            IncidentPostMortemShowTimelineOrder::Desc
        }
    }
    ///The status of the incident retrospective
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident retrospective",
    ///  "type": "string",
    ///  "enum": [
    ///    "draft",
    ///    "published"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentPostMortemStatus {
        #[serde(rename = "draft")]
        Draft,
        #[serde(rename = "published")]
        Published,
    }
    impl ::std::fmt::Display for IncidentPostMortemStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Draft => f.write_str("draft"),
                Self::Published => f.write_str("published"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentPostMortemStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "draft" => Ok(Self::Draft),
                "published" => Ok(Self::Published),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentPostMortemStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentPostMortemStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentPostMortemStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentResponse {
        pub data: IncidentResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentResponse {
        pub fn builder() -> builder::IncidentResponse {
            Default::default()
        }
    }
    ///`IncidentResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentResponseData {
        pub attributes: Incident,
        ///Unique ID of the incident
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentResponseDataType,
    }
    impl IncidentResponseData {
        pub fn builder() -> builder::IncidentResponseData {
            Default::default()
        }
    }
    ///`IncidentResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentResponseDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for IncidentResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the retrospective progress
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the retrospective progress",
    ///  "type": "string",
    ///  "enum": [
    ///    "not_started",
    ///    "active",
    ///    "completed",
    ///    "skipped"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRetrospectiveProgressStatus {
        #[serde(rename = "not_started")]
        NotStarted,
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "completed")]
        Completed,
        #[serde(rename = "skipped")]
        Skipped,
    }
    impl ::std::fmt::Display for IncidentRetrospectiveProgressStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::NotStarted => f.write_str("not_started"),
                Self::Active => f.write_str("active"),
                Self::Completed => f.write_str("completed"),
                Self::Skipped => f.write_str("skipped"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRetrospectiveProgressStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "not_started" => Ok(Self::NotStarted),
                "active" => Ok(Self::Active),
                "completed" => Ok(Self::Completed),
                "skipped" => Ok(Self::Skipped),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRetrospectiveProgressStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRetrospectiveProgressStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRetrospectiveProgressStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentRetrospectiveStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "incident_id",
    ///    "retrospective_step_id",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_date": {
    ///      "description": "Due date",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_id": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "Due date",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the step",
    ///      "type": "integer"
    ///    },
    ///    "retrospective_step_id": {
    ///      "type": "string"
    ///    },
    ///    "skippable": {
    ///      "description": "Is the step skippable?",
    ///      "type": "boolean"
    ///    },
    ///    "status": {
    ///      "description": "Status of the incident retrospective step",
    ///      "type": "string",
    ///      "enum": [
    ///        "todo",
    ///        "in_progress",
    ///        "completed",
    ///        "skipped"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The name of the step",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRetrospectiveStep {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        pub incident_id: ::std::string::String,
        ///Due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<::std::string::String>,
        ///Position of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        pub retrospective_step_id: ::std::string::String,
        ///Is the step skippable?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skippable: ::std::option::Option<bool>,
        ///Status of the incident retrospective step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<IncidentRetrospectiveStepStatus>,
        ///The name of the step
        pub title: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentRetrospectiveStep {
        pub fn builder() -> builder::IncidentRetrospectiveStep {
            Default::default()
        }
    }
    ///`IncidentRetrospectiveStepResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_retrospective_step"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the step",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_retrospective_steps"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRetrospectiveStepResponse {
        pub data: IncidentRetrospectiveStepResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentRetrospectiveStepResponse {
        pub fn builder() -> builder::IncidentRetrospectiveStepResponse {
            Default::default()
        }
    }
    ///`IncidentRetrospectiveStepResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_retrospective_step"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the step",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_retrospective_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRetrospectiveStepResponseData {
        pub attributes: IncidentRetrospectiveStep,
        ///Unique ID of the step
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentRetrospectiveStepResponseDataType,
    }
    impl IncidentRetrospectiveStepResponseData {
        pub fn builder() -> builder::IncidentRetrospectiveStepResponseData {
            Default::default()
        }
    }
    ///`IncidentRetrospectiveStepResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_retrospective_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRetrospectiveStepResponseDataType {
        #[serde(rename = "incident_retrospective_steps")]
        IncidentRetrospectiveSteps,
    }
    impl ::std::fmt::Display for IncidentRetrospectiveStepResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRetrospectiveSteps => {
                    f.write_str("incident_retrospective_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentRetrospectiveStepResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_retrospective_steps" => Ok(Self::IncidentRetrospectiveSteps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRetrospectiveStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRetrospectiveStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRetrospectiveStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Status of the incident retrospective step
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Status of the incident retrospective step",
    ///  "type": "string",
    ///  "enum": [
    ///    "todo",
    ///    "in_progress",
    ///    "completed",
    ///    "skipped"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRetrospectiveStepStatus {
        #[serde(rename = "todo")]
        Todo,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
        #[serde(rename = "skipped")]
        Skipped,
    }
    impl ::std::fmt::Display for IncidentRetrospectiveStepStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Todo => f.write_str("todo"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
                Self::Skipped => f.write_str("skipped"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRetrospectiveStepStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "todo" => Ok(Self::Todo),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                "skipped" => Ok(Self::Skipped),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRetrospectiveStepStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRetrospectiveStepStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRetrospectiveStepStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "allow_multi_user_assignment": {
    ///      "type": "boolean"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the incident role",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the incident role",
    ///      "type": "string"
    ///    },
    ///    "optional": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "Position of the incident role",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the incident role",
    ///      "type": "string"
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the incident role",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRole {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub allow_multi_user_assignment: ::std::option::Option<bool>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the incident role
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub optional: ::std::option::Option<bool>,
        ///Position of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The slug of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///The summary of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentRole {
        pub fn builder() -> builder::IncidentRole {
            Default::default()
        }
    }
    ///`IncidentRoleList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_role"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident role",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_roles"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleList {
        pub data: ::std::vec::Vec<IncidentRoleListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentRoleList {
        pub fn builder() -> builder::IncidentRoleList {
            Default::default()
        }
    }
    ///`IncidentRoleListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_role"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident role",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleListDataItem {
        pub attributes: IncidentRole,
        ///Unique ID of the incident role
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentRoleListDataItemType,
    }
    impl IncidentRoleListDataItem {
        pub fn builder() -> builder::IncidentRoleListDataItem {
            Default::default()
        }
    }
    ///`IncidentRoleListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRoleListDataItemType {
        #[serde(rename = "incident_roles")]
        IncidentRoles,
    }
    impl ::std::fmt::Display for IncidentRoleListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoles => f.write_str("incident_roles"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRoleListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_roles" => Ok(Self::IncidentRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentRoleResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_role"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident role",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_roles"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleResponse {
        pub data: IncidentRoleResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentRoleResponse {
        pub fn builder() -> builder::IncidentRoleResponse {
            Default::default()
        }
    }
    ///`IncidentRoleResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_role"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident role",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleResponseData {
        pub attributes: IncidentRole,
        ///Unique ID of the incident role
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentRoleResponseDataType,
    }
    impl IncidentRoleResponseData {
        pub fn builder() -> builder::IncidentRoleResponseData {
            Default::default()
        }
    }
    ///`IncidentRoleResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRoleResponseDataType {
        #[serde(rename = "incident_roles")]
        IncidentRoles,
    }
    impl ::std::fmt::Display for IncidentRoleResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoles => f.write_str("incident_roles"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRoleResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_roles" => Ok(Self::IncidentRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentRoleTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "task",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of incident task",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_role_id": {
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority of the incident task",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "task": {
    ///      "description": "The task of the incident task",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleTask {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///The priority of the incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<IncidentRoleTaskPriority>,
        ///The task of the incident task
        pub task: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentRoleTask {
        pub fn builder() -> builder::IncidentRoleTask {
            Default::default()
        }
    }
    ///`IncidentRoleTaskList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_role_task"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident task",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_role_tasks"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleTaskList {
        pub data: ::std::vec::Vec<IncidentRoleTaskListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentRoleTaskList {
        pub fn builder() -> builder::IncidentRoleTaskList {
            Default::default()
        }
    }
    ///`IncidentRoleTaskListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_role_task"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident task",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_role_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleTaskListDataItem {
        pub attributes: IncidentRoleTask,
        ///Unique ID of the incident task
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentRoleTaskListDataItemType,
    }
    impl IncidentRoleTaskListDataItem {
        pub fn builder() -> builder::IncidentRoleTaskListDataItem {
            Default::default()
        }
    }
    ///`IncidentRoleTaskListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_role_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRoleTaskListDataItemType {
        #[serde(rename = "incident_role_tasks")]
        IncidentRoleTasks,
    }
    impl ::std::fmt::Display for IncidentRoleTaskListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoleTasks => f.write_str("incident_role_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRoleTaskListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_role_tasks" => Ok(Self::IncidentRoleTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRoleTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRoleTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRoleTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The priority of the incident task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority of the incident task",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRoleTaskPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for IncidentRoleTaskPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRoleTaskPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRoleTaskPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IncidentRoleTaskPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IncidentRoleTaskPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentRoleTaskResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_role_task"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident task",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_role_tasks"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleTaskResponse {
        pub data: IncidentRoleTaskResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentRoleTaskResponse {
        pub fn builder() -> builder::IncidentRoleTaskResponse {
            Default::default()
        }
    }
    ///`IncidentRoleTaskResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_role_task"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident task",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_role_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentRoleTaskResponseData {
        pub attributes: IncidentRoleTask,
        ///Unique ID of the incident task
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentRoleTaskResponseDataType,
    }
    impl IncidentRoleTaskResponseData {
        pub fn builder() -> builder::IncidentRoleTaskResponseData {
            Default::default()
        }
    }
    ///`IncidentRoleTaskResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_role_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentRoleTaskResponseDataType {
        #[serde(rename = "incident_role_tasks")]
        IncidentRoleTasks,
    }
    impl ::std::fmt::Display for IncidentRoleTaskResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoleTasks => f.write_str("incident_role_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentRoleTaskResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_role_tasks" => Ok(Self::IncidentRoleTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentRoleTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentRoleTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentRoleTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentStatusPageEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "event",
    ///    "started_at",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "event": {
    ///      "description": "The summary of the incident event",
    ///      "type": "string"
    ///    },
    ///    "notify_subscribers": {
    ///      "description": "Notify all status pages subscribers",
    ///      "type": "boolean"
    ///    },
    ///    "should_tweet": {
    ///      "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///      "type": "boolean"
    ///    },
    ///    "started_at": {
    ///      "description": "Date of start",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident event",
    ///      "type": "string",
    ///      "enum": [
    ///        "investigating",
    ///        "identified",
    ///        "monitoring",
    ///        "resolved",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "status_page_id": {
    ///      "description": "Unique ID of the status page you wish to post the event to",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentStatusPageEvent {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The summary of the incident event
        pub event: ::std::string::String,
        ///Notify all status pages subscribers
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_subscribers: ::std::option::Option<bool>,
        ///For Statuspage.io integrated pages auto publishes a tweet for your update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_tweet: ::std::option::Option<bool>,
        ///Date of start
        pub started_at: ::std::string::String,
        ///The status of the incident event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<IncidentStatusPageEventStatus>,
        ///Unique ID of the status page you wish to post the event to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status_page_id: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentStatusPageEvent {
        pub fn builder() -> builder::IncidentStatusPageEvent {
            Default::default()
        }
    }
    ///`IncidentStatusPageEventList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_status_page_event"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident event",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_status_page_events"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentStatusPageEventList {
        pub data: ::std::vec::Vec<IncidentStatusPageEventListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentStatusPageEventList {
        pub fn builder() -> builder::IncidentStatusPageEventList {
            Default::default()
        }
    }
    ///`IncidentStatusPageEventListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_status_page_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_status_page_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentStatusPageEventListDataItem {
        pub attributes: IncidentStatusPageEvent,
        ///Unique ID of the incident event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentStatusPageEventListDataItemType,
    }
    impl IncidentStatusPageEventListDataItem {
        pub fn builder() -> builder::IncidentStatusPageEventListDataItem {
            Default::default()
        }
    }
    ///`IncidentStatusPageEventListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_status_page_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentStatusPageEventListDataItemType {
        #[serde(rename = "incident_status_page_events")]
        IncidentStatusPageEvents,
    }
    impl ::std::fmt::Display for IncidentStatusPageEventListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentStatusPageEvents => {
                    f.write_str("incident_status_page_events")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentStatusPageEventListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_status_page_events" => Ok(Self::IncidentStatusPageEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentStatusPageEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentStatusPageEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentStatusPageEventListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentStatusPageEventResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_status_page_event"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident event",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_status_page_events"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentStatusPageEventResponse {
        pub data: IncidentStatusPageEventResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentStatusPageEventResponse {
        pub fn builder() -> builder::IncidentStatusPageEventResponse {
            Default::default()
        }
    }
    ///`IncidentStatusPageEventResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_status_page_event"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident event",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_status_page_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentStatusPageEventResponseData {
        pub attributes: IncidentStatusPageEvent,
        ///Unique ID of the incident event
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentStatusPageEventResponseDataType,
    }
    impl IncidentStatusPageEventResponseData {
        pub fn builder() -> builder::IncidentStatusPageEventResponseData {
            Default::default()
        }
    }
    ///`IncidentStatusPageEventResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_status_page_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentStatusPageEventResponseDataType {
        #[serde(rename = "incident_status_page_events")]
        IncidentStatusPageEvents,
    }
    impl ::std::fmt::Display for IncidentStatusPageEventResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentStatusPageEvents => {
                    f.write_str("incident_status_page_events")
                }
            }
        }
    }
    impl ::std::str::FromStr for IncidentStatusPageEventResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_status_page_events" => Ok(Self::IncidentStatusPageEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentStatusPageEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentStatusPageEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentStatusPageEventResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the incident event
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident event",
    ///  "type": "string",
    ///  "enum": [
    ///    "investigating",
    ///    "identified",
    ///    "monitoring",
    ///    "resolved",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentStatusPageEventStatus {
        #[serde(rename = "investigating")]
        Investigating,
        #[serde(rename = "identified")]
        Identified,
        #[serde(rename = "monitoring")]
        Monitoring,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for IncidentStatusPageEventStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Investigating => f.write_str("investigating"),
                Self::Identified => f.write_str("identified"),
                Self::Monitoring => f.write_str("monitoring"),
                Self::Resolved => f.write_str("resolved"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentStatusPageEventStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "investigating" => Ok(Self::Investigating),
                "identified" => Ok(Self::Identified),
                "monitoring" => Ok(Self::Monitoring),
                "resolved" => Ok(Self::Resolved),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentStatusPageEventStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentStatusPageEventStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentStatusPageEventStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "assigned_at",
    ///    "incident_id",
    ///    "sub_status_id"
    ///  ],
    ///  "properties": {
    ///    "assigned_at": {
    ///      "type": "string"
    ///    },
    ///    "assigned_by_user_id": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_id": {
    ///      "type": "string"
    ///    },
    ///    "sub_status_id": {
    ///      "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentSubStatus {
        pub assigned_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_by_user_id: ::std::option::Option<i64>,
        pub incident_id: ::std::string::String,
        ///Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.
        pub sub_status_id: ::std::string::String,
    }
    impl IncidentSubStatus {
        pub fn builder() -> builder::IncidentSubStatus {
            Default::default()
        }
    }
    ///`IncidentSubStatusList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_sub_status"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident_sub_status",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_sub_statuses"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentSubStatusList {
        pub data: ::std::vec::Vec<IncidentSubStatusListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentSubStatusList {
        pub fn builder() -> builder::IncidentSubStatusList {
            Default::default()
        }
    }
    ///`IncidentSubStatusListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_sub_status"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident_sub_status",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentSubStatusListDataItem {
        pub attributes: IncidentSubStatus,
        ///Unique ID of the incident_sub_status
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentSubStatusListDataItemType,
    }
    impl IncidentSubStatusListDataItem {
        pub fn builder() -> builder::IncidentSubStatusListDataItem {
            Default::default()
        }
    }
    ///`IncidentSubStatusListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentSubStatusListDataItemType {
        #[serde(rename = "incident_sub_statuses")]
        IncidentSubStatuses,
    }
    impl ::std::fmt::Display for IncidentSubStatusListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentSubStatuses => f.write_str("incident_sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentSubStatusListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_sub_statuses" => Ok(Self::IncidentSubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentSubStatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentSubStatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentSubStatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentSubStatusResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_sub_status"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident_sub_status",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_sub_statuses"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentSubStatusResponse {
        pub data: IncidentSubStatusResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentSubStatusResponse {
        pub fn builder() -> builder::IncidentSubStatusResponse {
            Default::default()
        }
    }
    ///`IncidentSubStatusResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_sub_status"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident_sub_status",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentSubStatusResponseData {
        pub attributes: IncidentSubStatus,
        ///Unique ID of the incident_sub_status
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentSubStatusResponseDataType,
    }
    impl IncidentSubStatusResponseData {
        pub fn builder() -> builder::IncidentSubStatusResponseData {
            Default::default()
        }
    }
    ///`IncidentSubStatusResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentSubStatusResponseDataType {
        #[serde(rename = "incident_sub_statuses")]
        IncidentSubStatuses,
    }
    impl ::std::fmt::Display for IncidentSubStatusResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentSubStatuses => f.write_str("incident_sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentSubStatusResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_sub_statuses" => Ok(Self::IncidentSubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentSubStatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentSubStatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentSubStatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "trigger_type"
    ///  ],
    ///  "properties": {
    ///    "incident_condition": {
    ///      "default": "ALL",
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "incident_condition_acknowledged_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_cause": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_detected_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_environment": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_functionality": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_group": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_incident_roles": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_incident_type": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_kind": {
    ///      "default": "IS",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_mitigated_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_resolved_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_service": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_severity": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_started_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_sub_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_summary": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_visibility": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_conditional_inactivity": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "IS"
    ///      ]
    ///    },
    ///    "incident_inactivity_duration": {
    ///      "description": "ex. 10 min, 1h, 3 days, 2 weeks",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_kinds": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "test",
    ///          "test_sub",
    ///          "example",
    ///          "example_sub",
    ///          "normal",
    ///          "normal_sub",
    ///          "backfilled",
    ///          "scheduled",
    ///          "scheduled_sub"
    ///        ]
    ///      }
    ///    },
    ///    "incident_post_mortem_condition_cause": {
    ///      "description": "[DEPRECATED] Use incident_condition_cause instead",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_statuses": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "in_triage",
    ///          "started",
    ///          "detected",
    ///          "acknowledged",
    ///          "mitigated",
    ///          "resolved",
    ///          "closed",
    ///          "cancelled",
    ///          "scheduled",
    ///          "in_progress",
    ///          "completed"
    ///        ]
    ///      }
    ///    },
    ///    "incident_visibilities": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "boolean"
    ///      }
    ///    },
    ///    "trigger_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident"
    ///      ]
    ///    },
    ///    "triggers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Actions that trigger the workflow. One of custom_fields.<slug>.updated, incident_in_triage, incident_created, incident_started, incident_updated, title_updated, summary_updated, status_updated, severity_updated, environments_added, environments_removed, environments_updated, incident_types_added, incident_types_removed, incident_types_updated, services_added, services_removed, services_updated, visibility_updated, functionalities_added, functionalities_removed, functionalities_updated, teams_added, teams_removed, teams_updated, causes_added, causes_removed, causes_updated, timeline_updated, status_page_timeline_updated, role_assignments_updated, role_assignments_added, role_assignments_removed, slack_command, slack_channel_created, slack_channel_converted, microsoft_teams_channel_created, microsoft_teams_chat_created, google_chat_space_created, subscribers_updated, subscribers_added, subscribers_removed, user_joined_slack_channel, user_left_slack_channel, meeting_summary_created",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTriggerParams {
        #[serde(default = "defaults::incident_trigger_params_incident_condition")]
        pub incident_condition: IncidentTriggerParamsIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_acknowledged_at: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionAcknowledgedAt,
        >,
        #[serde(default = "defaults::incident_trigger_params_incident_condition_cause")]
        pub incident_condition_cause: IncidentTriggerParamsIncidentConditionCause,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_detected_at: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionDetectedAt,
        >,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_environment"
        )]
        pub incident_condition_environment: IncidentTriggerParamsIncidentConditionEnvironment,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_functionality"
        )]
        pub incident_condition_functionality: IncidentTriggerParamsIncidentConditionFunctionality,
        #[serde(default = "defaults::incident_trigger_params_incident_condition_group")]
        pub incident_condition_group: IncidentTriggerParamsIncidentConditionGroup,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_incident_roles"
        )]
        pub incident_condition_incident_roles: IncidentTriggerParamsIncidentConditionIncidentRoles,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_incident_type"
        )]
        pub incident_condition_incident_type: IncidentTriggerParamsIncidentConditionIncidentType,
        #[serde(default = "defaults::incident_trigger_params_incident_condition_kind")]
        pub incident_condition_kind: IncidentTriggerParamsIncidentConditionKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_mitigated_at: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionMitigatedAt,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_resolved_at: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionResolvedAt,
        >,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_service"
        )]
        pub incident_condition_service: IncidentTriggerParamsIncidentConditionService,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_severity"
        )]
        pub incident_condition_severity: IncidentTriggerParamsIncidentConditionSeverity,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_started_at: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionStartedAt,
        >,
        #[serde(default = "defaults::incident_trigger_params_incident_condition_status")]
        pub incident_condition_status: IncidentTriggerParamsIncidentConditionStatus,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_sub_status"
        )]
        pub incident_condition_sub_status: IncidentTriggerParamsIncidentConditionSubStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_summary: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionSummary,
        >,
        #[serde(
            default = "defaults::incident_trigger_params_incident_condition_visibility"
        )]
        pub incident_condition_visibility: IncidentTriggerParamsIncidentConditionVisibility,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_conditional_inactivity: ::std::option::Option<
            IncidentTriggerParamsIncidentConditionalInactivity,
        >,
        ///ex. 10 min, 1h, 3 days, 2 weeks
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_inactivity_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_kinds: ::std::vec::Vec<IncidentTriggerParamsIncidentKindsItem>,
        ///[DEPRECATED] Use incident_condition_cause instead
        #[serde(
            default = "defaults::incident_trigger_params_incident_post_mortem_condition_cause"
        )]
        pub incident_post_mortem_condition_cause: IncidentTriggerParamsIncidentPostMortemConditionCause,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_statuses: ::std::vec::Vec<
            IncidentTriggerParamsIncidentStatusesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_visibilities: ::std::vec::Vec<bool>,
        pub trigger_type: IncidentTriggerParamsTriggerType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub triggers: ::std::vec::Vec<::std::string::String>,
    }
    impl IncidentTriggerParams {
        pub fn builder() -> builder::IncidentTriggerParams {
            Default::default()
        }
    }
    ///`IncidentTriggerParamsIncidentCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ALL",
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentCondition {
        fn default() -> Self {
            IncidentTriggerParamsIncidentCondition::All
        }
    }
    ///`IncidentTriggerParamsIncidentConditionAcknowledgedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionAcknowledgedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionAcknowledgedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionAcknowledgedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentConditionCause`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionCause {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionCause {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionCause {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionCause {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionCause::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionDetectedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionDetectedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionDetectedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionDetectedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentConditionEnvironment`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionEnvironment {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionEnvironment {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionEnvironment {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionEnvironment {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionEnvironment::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionFunctionality {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionFunctionality {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionFunctionality {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for IncidentTriggerParamsIncidentConditionFunctionality {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionFunctionality::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionGroup {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionGroup {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionGroup {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionGroup {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionGroup::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionIncidentRoles`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionIncidentRoles {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionIncidentRoles {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionIncidentRoles {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for IncidentTriggerParamsIncidentConditionIncidentRoles {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionIncidentRoles::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionIncidentType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionIncidentType {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionIncidentType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionIncidentType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionIncidentType {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionIncidentType::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "IS",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionKind {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionKind {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionKind::Is
        }
    }
    ///`IncidentTriggerParamsIncidentConditionMitigatedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionMitigatedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionMitigatedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionMitigatedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentConditionResolvedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionResolvedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionResolvedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionResolvedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentConditionService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionService {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionService {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionService {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionService {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionService::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionSeverity {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionSeverity {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionSeverity::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionStartedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionStartedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionStartedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionStartedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentConditionStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionStatus {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionStatus::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionSubStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionSubStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionSubStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionSubStatus {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionSubStatus::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionSummary`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionSummary {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionSummary {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionSummary {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentConditionVisibility`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionVisibility {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionVisibility {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionVisibility {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for IncidentTriggerParamsIncidentConditionVisibility {
        fn default() -> Self {
            IncidentTriggerParamsIncidentConditionVisibility::Any
        }
    }
    ///`IncidentTriggerParamsIncidentConditionalInactivity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "IS"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentConditionalInactivity {
        #[serde(rename = "IS")]
        Is,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentConditionalInactivity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentConditionalInactivity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsIncidentKindsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "test",
    ///    "test_sub",
    ///    "example",
    ///    "example_sub",
    ///    "normal",
    ///    "normal_sub",
    ///    "backfilled",
    ///    "scheduled",
    ///    "scheduled_sub"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentKindsItem {
        #[serde(rename = "test")]
        Test,
        #[serde(rename = "test_sub")]
        TestSub,
        #[serde(rename = "example")]
        Example,
        #[serde(rename = "example_sub")]
        ExampleSub,
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "normal_sub")]
        NormalSub,
        #[serde(rename = "backfilled")]
        Backfilled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "scheduled_sub")]
        ScheduledSub,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentKindsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Test => f.write_str("test"),
                Self::TestSub => f.write_str("test_sub"),
                Self::Example => f.write_str("example"),
                Self::ExampleSub => f.write_str("example_sub"),
                Self::Normal => f.write_str("normal"),
                Self::NormalSub => f.write_str("normal_sub"),
                Self::Backfilled => f.write_str("backfilled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::ScheduledSub => f.write_str("scheduled_sub"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentKindsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "test" => Ok(Self::Test),
                "test_sub" => Ok(Self::TestSub),
                "example" => Ok(Self::Example),
                "example_sub" => Ok(Self::ExampleSub),
                "normal" => Ok(Self::Normal),
                "normal_sub" => Ok(Self::NormalSub),
                "backfilled" => Ok(Self::Backfilled),
                "scheduled" => Ok(Self::Scheduled),
                "scheduled_sub" => Ok(Self::ScheduledSub),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///[DEPRECATED] Use incident_condition_cause instead
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Use incident_condition_cause instead",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentPostMortemConditionCause {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentPostMortemConditionCause {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentPostMortemConditionCause {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for IncidentTriggerParamsIncidentPostMortemConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentPostMortemConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentPostMortemConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for IncidentTriggerParamsIncidentPostMortemConditionCause {
        fn default() -> Self {
            IncidentTriggerParamsIncidentPostMortemConditionCause::Any
        }
    }
    ///`IncidentTriggerParamsIncidentStatusesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "detected",
    ///    "acknowledged",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsIncidentStatusesItem {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "detected")]
        Detected,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsIncidentStatusesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Detected => f.write_str("detected"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsIncidentStatusesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "detected" => Ok(Self::Detected),
                "acknowledged" => Ok(Self::Acknowledged),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTriggerParamsTriggerType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTriggerParamsTriggerType {
        #[serde(rename = "incident")]
        Incident,
    }
    impl ::std::fmt::Display for IncidentTriggerParamsTriggerType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incident => f.write_str("incident"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTriggerParamsTriggerType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident" => Ok(Self::Incident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the incident type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the incident type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the incident type",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the incident type",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this incident type.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the incident type",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentType {
        ///The hex color of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the incident type
        pub name: ::std::string::String,
        ///Emails to attach to the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this incident type.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<IncidentTypePropertiesItem>,
        ///Slack Aliases associated with this incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<IncidentTypeSlackAliasesItem>,
        >,
        ///Slack Channels associated with this incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<IncidentTypeSlackChannelsItem>,
        >,
        ///The slug of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl IncidentType {
        pub fn builder() -> builder::IncidentType {
            Default::default()
        }
    }
    ///`IncidentTypeList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/incident_type"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the incident type",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_types"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypeList {
        pub data: ::std::vec::Vec<IncidentTypeListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl IncidentTypeList {
        pub fn builder() -> builder::IncidentTypeList {
            Default::default()
        }
    }
    ///`IncidentTypeListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_type"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident type",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypeListDataItem {
        pub attributes: IncidentType,
        ///Unique ID of the incident type
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentTypeListDataItemType,
    }
    impl IncidentTypeListDataItem {
        pub fn builder() -> builder::IncidentTypeListDataItem {
            Default::default()
        }
    }
    ///`IncidentTypeListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTypeListDataItemType {
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for IncidentTypeListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTypeListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTypeListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTypeListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTypeListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypePropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl IncidentTypePropertiesItem {
        pub fn builder() -> builder::IncidentTypePropertiesItem {
            Default::default()
        }
    }
    ///`IncidentTypeResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_type"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the incident type",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_types"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypeResponse {
        pub data: IncidentTypeResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl IncidentTypeResponse {
        pub fn builder() -> builder::IncidentTypeResponse {
            Default::default()
        }
    }
    ///`IncidentTypeResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_type"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the incident type",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypeResponseData {
        pub attributes: IncidentType,
        ///Unique ID of the incident type
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IncidentTypeResponseDataType,
    }
    impl IncidentTypeResponseData {
        pub fn builder() -> builder::IncidentTypeResponseData {
            Default::default()
        }
    }
    ///`IncidentTypeResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IncidentTypeResponseDataType {
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for IncidentTypeResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for IncidentTypeResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IncidentTypeResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for IncidentTypeResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for IncidentTypeResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`IncidentTypeSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypeSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl IncidentTypeSlackAliasesItem {
        pub fn builder() -> builder::IncidentTypeSlackAliasesItem {
            Default::default()
        }
    }
    ///`IncidentTypeSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentTypeSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl IncidentTypeSlackChannelsItem {
        pub fn builder() -> builder::IncidentTypeSlackChannelsItem {
            Default::default()
        }
    }
    ///`IncidentZoomMeetingGlobalDialInNumbersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "city": {
    ///      "type": "string"
    ///    },
    ///    "country": {
    ///      "type": "string"
    ///    },
    ///    "country_name": {
    ///      "type": "string"
    ///    },
    ///    "number": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentZoomMeetingGlobalDialInNumbersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub city: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub country: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub country_name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub number: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for IncidentZoomMeetingGlobalDialInNumbersItem {
        fn default() -> Self {
            Self {
                city: Default::default(),
                country: Default::default(),
                country_name: Default::default(),
                number: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl IncidentZoomMeetingGlobalDialInNumbersItem {
        pub fn builder() -> builder::IncidentZoomMeetingGlobalDialInNumbersItem {
            Default::default()
        }
    }
    ///`IncidentsChartResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IncidentsChartResponse {
        pub data: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
    }
    impl IncidentsChartResponse {
        pub fn builder() -> builder::IncidentsChartResponse {
            Default::default()
        }
    }
    ///`InviteToGoogleChatSpaceTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "emails",
    ///    "space"
    ///  ],
    ///  "properties": {
    ///    "emails": {
    ///      "description": "Comma separated list of emails to invite",
    ///      "type": "string"
    ///    },
    ///    "space": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_google_chat_space"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToGoogleChatSpaceTaskParams {
        ///Comma separated list of emails to invite
        pub emails: ::std::string::String,
        pub space: InviteToGoogleChatSpaceTaskParamsSpace,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<InviteToGoogleChatSpaceTaskParamsTaskType>,
    }
    impl InviteToGoogleChatSpaceTaskParams {
        pub fn builder() -> builder::InviteToGoogleChatSpaceTaskParams {
            Default::default()
        }
    }
    ///`InviteToGoogleChatSpaceTaskParamsSpace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToGoogleChatSpaceTaskParamsSpace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToGoogleChatSpaceTaskParamsSpace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToGoogleChatSpaceTaskParamsSpace {
        pub fn builder() -> builder::InviteToGoogleChatSpaceTaskParamsSpace {
            Default::default()
        }
    }
    ///`InviteToGoogleChatSpaceTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_google_chat_space"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToGoogleChatSpaceTaskParamsTaskType {
        #[serde(rename = "invite_to_google_chat_space")]
        InviteToGoogleChatSpace,
    }
    impl ::std::fmt::Display for InviteToGoogleChatSpaceTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToGoogleChatSpace => {
                    f.write_str("invite_to_google_chat_space")
                }
            }
        }
    }
    impl ::std::str::FromStr for InviteToGoogleChatSpaceTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_google_chat_space" => Ok(Self::InviteToGoogleChatSpace),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for InviteToGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToMicrosoftTeamsChannelTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channel",
    ///    "emails"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "emails": {
    ///      "description": "Comma separated list of emails to invite",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_microsoft_teams_channel"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToMicrosoftTeamsChannelTaskParams {
        pub channel: InviteToMicrosoftTeamsChannelTaskParamsChannel,
        ///Comma separated list of emails to invite
        pub emails: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            InviteToMicrosoftTeamsChannelTaskParamsTaskType,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub team: ::std::option::Option<InviteToMicrosoftTeamsChannelTaskParamsTeam>,
    }
    impl InviteToMicrosoftTeamsChannelTaskParams {
        pub fn builder() -> builder::InviteToMicrosoftTeamsChannelTaskParams {
            Default::default()
        }
    }
    ///`InviteToMicrosoftTeamsChannelTaskParamsChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToMicrosoftTeamsChannelTaskParamsChannel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToMicrosoftTeamsChannelTaskParamsChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToMicrosoftTeamsChannelTaskParamsChannel {
        pub fn builder() -> builder::InviteToMicrosoftTeamsChannelTaskParamsChannel {
            Default::default()
        }
    }
    ///`InviteToMicrosoftTeamsChannelTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_microsoft_teams_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToMicrosoftTeamsChannelTaskParamsTaskType {
        #[serde(rename = "invite_to_microsoft_teams_channel")]
        InviteToMicrosoftTeamsChannel,
    }
    impl ::std::fmt::Display for InviteToMicrosoftTeamsChannelTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToMicrosoftTeamsChannel => {
                    f.write_str("invite_to_microsoft_teams_channel")
                }
            }
        }
    }
    impl ::std::str::FromStr for InviteToMicrosoftTeamsChannelTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_microsoft_teams_channel" => {
                    Ok(Self::InviteToMicrosoftTeamsChannel)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToMicrosoftTeamsChannelTaskParamsTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToMicrosoftTeamsChannelTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToMicrosoftTeamsChannelTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToMicrosoftTeamsChannelTaskParamsTeam {
        pub fn builder() -> builder::InviteToMicrosoftTeamsChannelTaskParamsTeam {
            Default::default()
        }
    }
    ///`InviteToSlackChannelOpsgenieTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channels",
    ///    "schedule"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "schedule": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_slack_channel_opsgenie"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelOpsgenieTaskParams {
        pub channels: ::std::vec::Vec<
            InviteToSlackChannelOpsgenieTaskParamsChannelsItem,
        >,
        pub schedule: InviteToSlackChannelOpsgenieTaskParamsSchedule,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            InviteToSlackChannelOpsgenieTaskParamsTaskType,
        >,
    }
    impl InviteToSlackChannelOpsgenieTaskParams {
        pub fn builder() -> builder::InviteToSlackChannelOpsgenieTaskParams {
            Default::default()
        }
    }
    ///`InviteToSlackChannelOpsgenieTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
        pub fn builder() -> builder::InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelOpsgenieTaskParamsSchedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelOpsgenieTaskParamsSchedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelOpsgenieTaskParamsSchedule {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelOpsgenieTaskParamsSchedule {
        pub fn builder() -> builder::InviteToSlackChannelOpsgenieTaskParamsSchedule {
            Default::default()
        }
    }
    ///`InviteToSlackChannelOpsgenieTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel_opsgenie"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelOpsgenieTaskParamsTaskType {
        #[serde(rename = "invite_to_slack_channel_opsgenie")]
        InviteToSlackChannelOpsgenie,
    }
    impl ::std::fmt::Display for InviteToSlackChannelOpsgenieTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannelOpsgenie => {
                    f.write_str("invite_to_slack_channel_opsgenie")
                }
            }
        }
    }
    impl ::std::str::FromStr for InviteToSlackChannelOpsgenieTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel_opsgenie" => {
                    Ok(Self::InviteToSlackChannelOpsgenie)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelOpsgenieTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelOpsgenieTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelOpsgenieTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "escalation_policy"
    ///      ],
    ///      "properties": {
    ///        "escalation_policy": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "schedule"
    ///      ],
    ///      "properties": {
    ///        "schedule": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "channels"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "escalation_policy": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "schedule": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "service": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_slack_channel_pagerduty"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum InviteToSlackChannelPagerdutyTaskParams {
        Variant0 {
            channels: ::std::vec::Vec<
                InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem,
            >,
            escalation_policy: InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            schedule: ::std::option::Option<
                InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            service: ::std::option::Option<
                InviteToSlackChannelPagerdutyTaskParamsVariant0Service,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType,
            >,
        },
        Variant1 {
            channels: ::std::vec::Vec<
                InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            escalation_policy: ::std::option::Option<
                InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy,
            >,
            schedule: InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            service: ::std::option::Option<
                InviteToSlackChannelPagerdutyTaskParamsVariant1Service,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType,
            >,
        },
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant0Service`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel_pagerduty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType {
        #[serde(rename = "invite_to_slack_channel_pagerduty")]
        InviteToSlackChannelPagerduty,
    }
    impl ::std::fmt::Display
    for InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannelPagerduty => {
                    f.write_str("invite_to_slack_channel_pagerduty")
                }
            }
        }
    }
    impl ::std::str::FromStr
    for InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel_pagerduty" => {
                    Ok(Self::InviteToSlackChannelPagerduty)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelPagerdutyTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant1Service`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
        pub fn builder() -> builder::InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
            Default::default()
        }
    }
    ///`InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel_pagerduty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType {
        #[serde(rename = "invite_to_slack_channel_pagerduty")]
        InviteToSlackChannelPagerduty,
    }
    impl ::std::fmt::Display
    for InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannelPagerduty => {
                    f.write_str("invite_to_slack_channel_pagerduty")
                }
            }
        }
    }
    impl ::std::str::FromStr
    for InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel_pagerduty" => {
                    Ok(Self::InviteToSlackChannelPagerduty)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelPagerdutyTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channels"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "escalation_policy_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "group_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "schedule_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "service_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_slack_channel_rootly"
    ///      ]
    ///    },
    ///    "user_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParams {
        pub channels: ::std::vec::Vec<InviteToSlackChannelRootlyTaskParamsChannelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_target: ::std::option::Option<
            InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_target: ::std::option::Option<
            InviteToSlackChannelRootlyTaskParamsGroupTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_target: ::std::option::Option<
            InviteToSlackChannelRootlyTaskParamsScheduleTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_target: ::std::option::Option<
            InviteToSlackChannelRootlyTaskParamsServiceTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            InviteToSlackChannelRootlyTaskParamsTaskType,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_target: ::std::option::Option<
            InviteToSlackChannelRootlyTaskParamsUserTarget,
        >,
    }
    impl InviteToSlackChannelRootlyTaskParams {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParams {
            Default::default()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelRootlyTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelRootlyTaskParamsChannelsItem {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
            Default::default()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsGroupTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParamsGroupTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelRootlyTaskParamsGroupTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelRootlyTaskParamsGroupTarget {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParamsGroupTarget {
            Default::default()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsScheduleTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParamsScheduleTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelRootlyTaskParamsScheduleTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelRootlyTaskParamsScheduleTarget {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParamsScheduleTarget {
            Default::default()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsServiceTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParamsServiceTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelRootlyTaskParamsServiceTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelRootlyTaskParamsServiceTarget {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParamsServiceTarget {
            Default::default()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel_rootly"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelRootlyTaskParamsTaskType {
        #[serde(rename = "invite_to_slack_channel_rootly")]
        InviteToSlackChannelRootly,
    }
    impl ::std::fmt::Display for InviteToSlackChannelRootlyTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannelRootly => {
                    f.write_str("invite_to_slack_channel_rootly")
                }
            }
        }
    }
    impl ::std::str::FromStr for InviteToSlackChannelRootlyTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel_rootly" => Ok(Self::InviteToSlackChannelRootly),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for InviteToSlackChannelRootlyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelRootlyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelRootlyTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelRootlyTaskParamsUserTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelRootlyTaskParamsUserTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelRootlyTaskParamsUserTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelRootlyTaskParamsUserTarget {
        pub fn builder() -> builder::InviteToSlackChannelRootlyTaskParamsUserTarget {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "slack_users"
    ///      ],
    ///      "properties": {
    ///        "slack_users": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "slack_user_groups"
    ///      ],
    ///      "properties": {
    ///        "slack_user_groups": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "slack_emails"
    ///      ],
    ///      "properties": {
    ///        "slack_emails": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "channel"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "slack_emails": {
    ///      "description": "Comma separated list of emails to invite to the channel",
    ///      "type": "string"
    ///    },
    ///    "slack_user_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_slack_channel"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum InviteToSlackChannelTaskParams {
        Variant0 {
            channel: InviteToSlackChannelTaskParamsVariant0Channel,
            ///Comma separated list of emails to invite to the channel
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            slack_emails: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_user_groups: ::std::vec::Vec<
                InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem,
            >,
            slack_users: ::std::vec::Vec<
                InviteToSlackChannelTaskParamsVariant0SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                InviteToSlackChannelTaskParamsVariant0TaskType,
            >,
        },
        Variant1 {
            channel: InviteToSlackChannelTaskParamsVariant1Channel,
            ///Comma separated list of emails to invite to the channel
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            slack_emails: ::std::option::Option<::std::string::String>,
            slack_user_groups: ::std::vec::Vec<
                InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_users: ::std::vec::Vec<
                InviteToSlackChannelTaskParamsVariant1SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                InviteToSlackChannelTaskParamsVariant1TaskType,
            >,
        },
        Variant2 {
            channel: InviteToSlackChannelTaskParamsVariant2Channel,
            slack_emails: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_user_groups: ::std::vec::Vec<
                InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_users: ::std::vec::Vec<
                InviteToSlackChannelTaskParamsVariant2SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                InviteToSlackChannelTaskParamsVariant2TaskType,
            >,
        },
    }
    ///`InviteToSlackChannelTaskParamsVariant0Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant0Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelTaskParamsVariant0Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant0Channel {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant0Channel {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant0SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelTaskParamsVariant0TaskType {
        #[serde(rename = "invite_to_slack_channel")]
        InviteToSlackChannel,
    }
    impl ::std::fmt::Display for InviteToSlackChannelTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannel => f.write_str("invite_to_slack_channel"),
            }
        }
    }
    impl ::std::str::FromStr for InviteToSlackChannelTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel" => Ok(Self::InviteToSlackChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant1Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant1Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelTaskParamsVariant1Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant1Channel {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant1Channel {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant1SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelTaskParamsVariant1TaskType {
        #[serde(rename = "invite_to_slack_channel")]
        InviteToSlackChannel,
    }
    impl ::std::fmt::Display for InviteToSlackChannelTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannel => f.write_str("invite_to_slack_channel"),
            }
        }
    }
    impl ::std::str::FromStr for InviteToSlackChannelTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel" => Ok(Self::InviteToSlackChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant2Channel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant2Channel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelTaskParamsVariant2Channel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant2Channel {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant2Channel {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant2SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
        pub fn builder() -> builder::InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelTaskParamsVariant2TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelTaskParamsVariant2TaskType {
        #[serde(rename = "invite_to_slack_channel")]
        InviteToSlackChannel,
    }
    impl ::std::fmt::Display for InviteToSlackChannelTaskParamsVariant2TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannel => f.write_str("invite_to_slack_channel"),
            }
        }
    }
    impl ::std::str::FromStr for InviteToSlackChannelTaskParamsVariant2TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel" => Ok(Self::InviteToSlackChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelVictorOpsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channels",
    ///    "team"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "invite_to_slack_channel_victor_ops"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelVictorOpsTaskParams {
        pub channels: ::std::vec::Vec<
            InviteToSlackChannelVictorOpsTaskParamsChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            InviteToSlackChannelVictorOpsTaskParamsTaskType,
        >,
        pub team: InviteToSlackChannelVictorOpsTaskParamsTeam,
    }
    impl InviteToSlackChannelVictorOpsTaskParams {
        pub fn builder() -> builder::InviteToSlackChannelVictorOpsTaskParams {
            Default::default()
        }
    }
    ///`InviteToSlackChannelVictorOpsTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
        pub fn builder() -> builder::InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`InviteToSlackChannelVictorOpsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "invite_to_slack_channel_victor_ops"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum InviteToSlackChannelVictorOpsTaskParamsTaskType {
        #[serde(rename = "invite_to_slack_channel_victor_ops")]
        InviteToSlackChannelVictorOps,
    }
    impl ::std::fmt::Display for InviteToSlackChannelVictorOpsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InviteToSlackChannelVictorOps => {
                    f.write_str("invite_to_slack_channel_victor_ops")
                }
            }
        }
    }
    impl ::std::str::FromStr for InviteToSlackChannelVictorOpsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "invite_to_slack_channel_victor_ops" => {
                    Ok(Self::InviteToSlackChannelVictorOps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for InviteToSlackChannelVictorOpsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for InviteToSlackChannelVictorOpsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for InviteToSlackChannelVictorOpsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`InviteToSlackChannelVictorOpsTaskParamsTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct InviteToSlackChannelVictorOpsTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for InviteToSlackChannelVictorOpsTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl InviteToSlackChannelVictorOpsTaskParamsTeam {
        pub fn builder() -> builder::InviteToSlackChannelVictorOpsTaskParamsTeam {
            Default::default()
        }
    }
    ///`IpRanges`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "integrations_ipv4",
    ///    "integrations_ipv6",
    ///    "webhooks_ipv4",
    ///    "webhooks_ipv6"
    ///  ],
    ///  "properties": {
    ///    "integrations_ipv4": {
    ///      "description": "IPv4 addresses associated with Rootly integrations.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "integrations_ipv6": {
    ///      "description": "IPv6 addresses associated with Rootly integrations.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "webhooks_ipv4": {
    ///      "description": "IPv4 addresses associated with Rootly webhooks.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "webhooks_ipv6": {
    ///      "description": "IPv6 addresses associated with Rootly webhooks.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IpRanges {
        ///IPv4 addresses associated with Rootly integrations.
        pub integrations_ipv4: ::std::vec::Vec<::std::string::String>,
        ///IPv6 addresses associated with Rootly integrations.
        pub integrations_ipv6: ::std::vec::Vec<::std::string::String>,
        ///IPv4 addresses associated with Rootly webhooks.
        pub webhooks_ipv4: ::std::vec::Vec<::std::string::String>,
        ///IPv6 addresses associated with Rootly webhooks.
        pub webhooks_ipv6: ::std::vec::Vec<::std::string::String>,
    }
    impl IpRanges {
        pub fn builder() -> builder::IpRanges {
            Default::default()
        }
    }
    ///`IpRangesResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/ip_ranges"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the ip_ranges",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "ip_ranges"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IpRangesResponse {
        pub data: IpRangesResponseData,
    }
    impl IpRangesResponse {
        pub fn builder() -> builder::IpRangesResponse {
            Default::default()
        }
    }
    ///`IpRangesResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/ip_ranges"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the ip_ranges",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "ip_ranges"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct IpRangesResponseData {
        pub attributes: IpRanges,
        ///Unique ID of the ip_ranges
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: IpRangesResponseDataType,
    }
    impl IpRangesResponseData {
        pub fn builder() -> builder::IpRangesResponseData {
            Default::default()
        }
    }
    ///`IpRangesResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "ip_ranges"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum IpRangesResponseDataType {
        #[serde(rename = "ip_ranges")]
        IpRanges,
    }
    impl ::std::fmt::Display for IpRangesResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IpRanges => f.write_str("ip_ranges"),
            }
        }
    }
    impl ::std::str::FromStr for IpRangesResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ip_ranges" => Ok(Self::IpRanges),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for IpRangesResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for IpRangesResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for IpRangesResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`JsonapiIncludedResource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "relationships": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "type": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct JsonapiIncludedResource {
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub attributes: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        pub id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub relationships: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        #[serde(rename = "type")]
        pub type_: ::std::string::String,
    }
    impl JsonapiIncludedResource {
        pub fn builder() -> builder::JsonapiIncludedResource {
            Default::default()
        }
    }
    ///`Links`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "first",
    ///    "last",
    ///    "next",
    ///    "prev",
    ///    "self"
    ///  ],
    ///  "properties": {
    ///    "first": {
    ///      "type": "string"
    ///    },
    ///    "last": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "next": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "prev": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "self": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Links {
        pub first: ::std::string::String,
        pub last: ::std::option::Option<::std::string::String>,
        pub next: ::std::option::Option<::std::string::String>,
        pub prev: ::std::option::Option<::std::string::String>,
        #[serde(rename = "self")]
        pub self_: ::std::string::String,
    }
    impl Links {
        pub fn builder() -> builder::Links {
            Default::default()
        }
    }
    ///`ListAlertEventsFeedFilterAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created",
    ///    "escalation_policy_paged",
    ///    "ignored_alert_request",
    ///    "emailed",
    ///    "slacked",
    ///    "ms_teams_messaged",
    ///    "google_chat_messaged",
    ///    "called",
    ///    "texted",
    ///    "notified",
    ///    "skipped",
    ///    "opened",
    ///    "retriggered",
    ///    "answered",
    ///    "acknowledged",
    ///    "escalated",
    ///    "paged",
    ///    "resolved",
    ///    "attached",
    ///    "snoozed",
    ///    "triggered",
    ///    "open",
    ///    "updated",
    ///    "added",
    ///    "removed",
    ///    "marked",
    ///    "not_marked",
    ///    "muted",
    ///    "deferred"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListAlertEventsFeedFilterAction {
        #[serde(rename = "created")]
        Created,
        #[serde(rename = "escalation_policy_paged")]
        EscalationPolicyPaged,
        #[serde(rename = "ignored_alert_request")]
        IgnoredAlertRequest,
        #[serde(rename = "emailed")]
        Emailed,
        #[serde(rename = "slacked")]
        Slacked,
        #[serde(rename = "ms_teams_messaged")]
        MsTeamsMessaged,
        #[serde(rename = "google_chat_messaged")]
        GoogleChatMessaged,
        #[serde(rename = "called")]
        Called,
        #[serde(rename = "texted")]
        Texted,
        #[serde(rename = "notified")]
        Notified,
        #[serde(rename = "skipped")]
        Skipped,
        #[serde(rename = "opened")]
        Opened,
        #[serde(rename = "retriggered")]
        Retriggered,
        #[serde(rename = "answered")]
        Answered,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "escalated")]
        Escalated,
        #[serde(rename = "paged")]
        Paged,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "attached")]
        Attached,
        #[serde(rename = "snoozed")]
        Snoozed,
        #[serde(rename = "triggered")]
        Triggered,
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "updated")]
        Updated,
        #[serde(rename = "added")]
        Added,
        #[serde(rename = "removed")]
        Removed,
        #[serde(rename = "marked")]
        Marked,
        #[serde(rename = "not_marked")]
        NotMarked,
        #[serde(rename = "muted")]
        Muted,
        #[serde(rename = "deferred")]
        Deferred,
    }
    impl ::std::fmt::Display for ListAlertEventsFeedFilterAction {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Created => f.write_str("created"),
                Self::EscalationPolicyPaged => f.write_str("escalation_policy_paged"),
                Self::IgnoredAlertRequest => f.write_str("ignored_alert_request"),
                Self::Emailed => f.write_str("emailed"),
                Self::Slacked => f.write_str("slacked"),
                Self::MsTeamsMessaged => f.write_str("ms_teams_messaged"),
                Self::GoogleChatMessaged => f.write_str("google_chat_messaged"),
                Self::Called => f.write_str("called"),
                Self::Texted => f.write_str("texted"),
                Self::Notified => f.write_str("notified"),
                Self::Skipped => f.write_str("skipped"),
                Self::Opened => f.write_str("opened"),
                Self::Retriggered => f.write_str("retriggered"),
                Self::Answered => f.write_str("answered"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Escalated => f.write_str("escalated"),
                Self::Paged => f.write_str("paged"),
                Self::Resolved => f.write_str("resolved"),
                Self::Attached => f.write_str("attached"),
                Self::Snoozed => f.write_str("snoozed"),
                Self::Triggered => f.write_str("triggered"),
                Self::Open => f.write_str("open"),
                Self::Updated => f.write_str("updated"),
                Self::Added => f.write_str("added"),
                Self::Removed => f.write_str("removed"),
                Self::Marked => f.write_str("marked"),
                Self::NotMarked => f.write_str("not_marked"),
                Self::Muted => f.write_str("muted"),
                Self::Deferred => f.write_str("deferred"),
            }
        }
    }
    impl ::std::str::FromStr for ListAlertEventsFeedFilterAction {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created" => Ok(Self::Created),
                "escalation_policy_paged" => Ok(Self::EscalationPolicyPaged),
                "ignored_alert_request" => Ok(Self::IgnoredAlertRequest),
                "emailed" => Ok(Self::Emailed),
                "slacked" => Ok(Self::Slacked),
                "ms_teams_messaged" => Ok(Self::MsTeamsMessaged),
                "google_chat_messaged" => Ok(Self::GoogleChatMessaged),
                "called" => Ok(Self::Called),
                "texted" => Ok(Self::Texted),
                "notified" => Ok(Self::Notified),
                "skipped" => Ok(Self::Skipped),
                "opened" => Ok(Self::Opened),
                "retriggered" => Ok(Self::Retriggered),
                "answered" => Ok(Self::Answered),
                "acknowledged" => Ok(Self::Acknowledged),
                "escalated" => Ok(Self::Escalated),
                "paged" => Ok(Self::Paged),
                "resolved" => Ok(Self::Resolved),
                "attached" => Ok(Self::Attached),
                "snoozed" => Ok(Self::Snoozed),
                "triggered" => Ok(Self::Triggered),
                "open" => Ok(Self::Open),
                "updated" => Ok(Self::Updated),
                "added" => Ok(Self::Added),
                "removed" => Ok(Self::Removed),
                "marked" => Ok(Self::Marked),
                "not_marked" => Ok(Self::NotMarked),
                "muted" => Ok(Self::Muted),
                "deferred" => Ok(Self::Deferred),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListAlertEventsFeedFilterAction {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListAlertEventsFeedFilterAction {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListAlertEventsFeedFilterAction {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListAlertEventsFeedFilterKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "informational",
    ///    "notification",
    ///    "action",
    ///    "status_update",
    ///    "recording",
    ///    "alert_grouping",
    ///    "alert_urgency",
    ///    "alert_routing",
    ///    "note",
    ///    "noise",
    ///    "maintenance",
    ///    "deferral"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListAlertEventsFeedFilterKind {
        #[serde(rename = "informational")]
        Informational,
        #[serde(rename = "notification")]
        Notification,
        #[serde(rename = "action")]
        Action,
        #[serde(rename = "status_update")]
        StatusUpdate,
        #[serde(rename = "recording")]
        Recording,
        #[serde(rename = "alert_grouping")]
        AlertGrouping,
        #[serde(rename = "alert_urgency")]
        AlertUrgency,
        #[serde(rename = "alert_routing")]
        AlertRouting,
        #[serde(rename = "note")]
        Note,
        #[serde(rename = "noise")]
        Noise,
        #[serde(rename = "maintenance")]
        Maintenance,
        #[serde(rename = "deferral")]
        Deferral,
    }
    impl ::std::fmt::Display for ListAlertEventsFeedFilterKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Informational => f.write_str("informational"),
                Self::Notification => f.write_str("notification"),
                Self::Action => f.write_str("action"),
                Self::StatusUpdate => f.write_str("status_update"),
                Self::Recording => f.write_str("recording"),
                Self::AlertGrouping => f.write_str("alert_grouping"),
                Self::AlertUrgency => f.write_str("alert_urgency"),
                Self::AlertRouting => f.write_str("alert_routing"),
                Self::Note => f.write_str("note"),
                Self::Noise => f.write_str("noise"),
                Self::Maintenance => f.write_str("maintenance"),
                Self::Deferral => f.write_str("deferral"),
            }
        }
    }
    impl ::std::str::FromStr for ListAlertEventsFeedFilterKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "informational" => Ok(Self::Informational),
                "notification" => Ok(Self::Notification),
                "action" => Ok(Self::Action),
                "status_update" => Ok(Self::StatusUpdate),
                "recording" => Ok(Self::Recording),
                "alert_grouping" => Ok(Self::AlertGrouping),
                "alert_urgency" => Ok(Self::AlertUrgency),
                "alert_routing" => Ok(Self::AlertRouting),
                "note" => Ok(Self::Note),
                "noise" => Ok(Self::Noise),
                "maintenance" => Ok(Self::Maintenance),
                "deferral" => Ok(Self::Deferral),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListAlertEventsFeedFilterKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListAlertEventsFeedFilterKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListAlertEventsFeedFilterKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListAlertEventsFeedSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListAlertEventsFeedSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
    }
    impl ::std::fmt::Display for ListAlertEventsFeedSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
            }
        }
    }
    impl ::std::str::FromStr for ListAlertEventsFeedSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListAlertEventsFeedSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListAlertEventsFeedSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListAlertEventsFeedSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListAlertsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments",
    ///    "services",
    ///    "groups",
    ///    "functionalities",
    ///    "responders",
    ///    "incidents",
    ///    "notified_users",
    ///    "events",
    ///    "alert_urgency",
    ///    "heartbeat",
    ///    "live_call_router",
    ///    "alert_group",
    ///    "group_leader_alert",
    ///    "group_member_alerts",
    ///    "alert_field_values",
    ///    "alerting_targets",
    ///    "escalation_policies",
    ///    "alert_call_recording"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListAlertsInclude {
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "responders")]
        Responders,
        #[serde(rename = "incidents")]
        Incidents,
        #[serde(rename = "notified_users")]
        NotifiedUsers,
        #[serde(rename = "events")]
        Events,
        #[serde(rename = "alert_urgency")]
        AlertUrgency,
        #[serde(rename = "heartbeat")]
        Heartbeat,
        #[serde(rename = "live_call_router")]
        LiveCallRouter,
        #[serde(rename = "alert_group")]
        AlertGroup,
        #[serde(rename = "group_leader_alert")]
        GroupLeaderAlert,
        #[serde(rename = "group_member_alerts")]
        GroupMemberAlerts,
        #[serde(rename = "alert_field_values")]
        AlertFieldValues,
        #[serde(rename = "alerting_targets")]
        AlertingTargets,
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
        #[serde(rename = "alert_call_recording")]
        AlertCallRecording,
    }
    impl ::std::fmt::Display for ListAlertsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
                Self::Services => f.write_str("services"),
                Self::Groups => f.write_str("groups"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Responders => f.write_str("responders"),
                Self::Incidents => f.write_str("incidents"),
                Self::NotifiedUsers => f.write_str("notified_users"),
                Self::Events => f.write_str("events"),
                Self::AlertUrgency => f.write_str("alert_urgency"),
                Self::Heartbeat => f.write_str("heartbeat"),
                Self::LiveCallRouter => f.write_str("live_call_router"),
                Self::AlertGroup => f.write_str("alert_group"),
                Self::GroupLeaderAlert => f.write_str("group_leader_alert"),
                Self::GroupMemberAlerts => f.write_str("group_member_alerts"),
                Self::AlertFieldValues => f.write_str("alert_field_values"),
                Self::AlertingTargets => f.write_str("alerting_targets"),
                Self::EscalationPolicies => f.write_str("escalation_policies"),
                Self::AlertCallRecording => f.write_str("alert_call_recording"),
            }
        }
    }
    impl ::std::str::FromStr for ListAlertsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                "services" => Ok(Self::Services),
                "groups" => Ok(Self::Groups),
                "functionalities" => Ok(Self::Functionalities),
                "responders" => Ok(Self::Responders),
                "incidents" => Ok(Self::Incidents),
                "notified_users" => Ok(Self::NotifiedUsers),
                "events" => Ok(Self::Events),
                "alert_urgency" => Ok(Self::AlertUrgency),
                "heartbeat" => Ok(Self::Heartbeat),
                "live_call_router" => Ok(Self::LiveCallRouter),
                "alert_group" => Ok(Self::AlertGroup),
                "group_leader_alert" => Ok(Self::GroupLeaderAlert),
                "group_member_alerts" => Ok(Self::GroupMemberAlerts),
                "alert_field_values" => Ok(Self::AlertFieldValues),
                "alerting_targets" => Ok(Self::AlertingTargets),
                "escalation_policies" => Ok(Self::EscalationPolicies),
                "alert_call_recording" => Ok(Self::AlertCallRecording),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListAlertsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListAlertsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListAlertsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogChecklistTemplatesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "template_fields",
    ///    "template_owners"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogChecklistTemplatesInclude {
        #[serde(rename = "template_fields")]
        TemplateFields,
        #[serde(rename = "template_owners")]
        TemplateOwners,
    }
    impl ::std::fmt::Display for ListCatalogChecklistTemplatesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::TemplateFields => f.write_str("template_fields"),
                Self::TemplateOwners => f.write_str("template_owners"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogChecklistTemplatesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "template_fields" => Ok(Self::TemplateFields),
                "template_owners" => Ok(Self::TemplateOwners),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogChecklistTemplatesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListCatalogChecklistTemplatesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListCatalogChecklistTemplatesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogChecklistTemplatesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "name",
    ///    "-name"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogChecklistTemplatesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "name")]
        Name,
        #[serde(rename = "-name")]
        Xname,
    }
    impl ::std::fmt::Display for ListCatalogChecklistTemplatesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Name => f.write_str("name"),
                Self::Xname => f.write_str("-name"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogChecklistTemplatesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "name" => Ok(Self::Name),
                "-name" => Ok(Self::Xname),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogChecklistTemplatesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListCatalogChecklistTemplatesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListCatalogChecklistTemplatesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogEntitiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogEntitiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "properties")]
        Properties,
    }
    impl ::std::fmt::Display for ListCatalogEntitiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Properties => f.write_str("properties"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogEntitiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "properties" => Ok(Self::Properties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogEntitiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListCatalogEntitiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListCatalogEntitiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogEntitiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogEntitiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListCatalogEntitiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogEntitiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogEntitiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListCatalogEntitiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListCatalogEntitiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogEntityPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity",
    ///    "catalog_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogEntityPropertiesInclude {
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "catalog_field")]
        CatalogField,
    }
    impl ::std::fmt::Display for ListCatalogEntityPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::CatalogField => f.write_str("catalog_field"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogEntityPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity" => Ok(Self::CatalogEntity),
                "catalog_field" => Ok(Self::CatalogField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogEntityPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListCatalogEntityPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListCatalogEntityPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogEntityPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogEntityPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
    }
    impl ::std::fmt::Display for ListCatalogEntityPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogEntityPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogEntityPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListCatalogEntityPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListCatalogEntityPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "fields",
    ///    "entities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogsInclude {
        #[serde(rename = "fields")]
        Fields,
        #[serde(rename = "entities")]
        Entities,
    }
    impl ::std::fmt::Display for ListCatalogsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Fields => f.write_str("fields"),
                Self::Entities => f.write_str("entities"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "fields" => Ok(Self::Fields),
                "entities" => Ok(Self::Entities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListCatalogsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListCatalogsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCatalogsSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCatalogsSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListCatalogsSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListCatalogsSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCatalogsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListCatalogsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListCatalogsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCauseCatalogPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCauseCatalogPropertiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
    }
    impl ::std::fmt::Display for ListCauseCatalogPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
            }
        }
    }
    impl ::std::str::FromStr for ListCauseCatalogPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCauseCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListCauseCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListCauseCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCauseCatalogPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCauseCatalogPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListCauseCatalogPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListCauseCatalogPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCauseCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListCauseCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListCauseCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCustomFieldsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCustomFieldsInclude {
        #[serde(rename = "options")]
        Options,
    }
    impl ::std::fmt::Display for ListCustomFieldsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Options => f.write_str("options"),
            }
        }
    }
    impl ::std::str::FromStr for ListCustomFieldsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "options" => Ok(Self::Options),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCustomFieldsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListCustomFieldsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListCustomFieldsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListCustomFieldsSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListCustomFieldsSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListCustomFieldsSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListCustomFieldsSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListCustomFieldsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListCustomFieldsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListCustomFieldsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListDashboardsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "panels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListDashboardsInclude {
        #[serde(rename = "panels")]
        Panels,
    }
    impl ::std::fmt::Display for ListDashboardsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Panels => f.write_str("panels"),
            }
        }
    }
    impl ::std::str::FromStr for ListDashboardsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "panels" => Ok(Self::Panels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListDashboardsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListDashboardsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListDashboardsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListEnvironmentCatalogPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListEnvironmentCatalogPropertiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
    }
    impl ::std::fmt::Display for ListEnvironmentCatalogPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
            }
        }
    }
    impl ::std::str::FromStr for ListEnvironmentCatalogPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListEnvironmentCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListEnvironmentCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListEnvironmentCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListEnvironmentCatalogPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListEnvironmentCatalogPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListEnvironmentCatalogPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListEnvironmentCatalogPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListEnvironmentCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListEnvironmentCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListEnvironmentCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListEscalationPathsFilterPathType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation",
    ///    "deferral"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListEscalationPathsFilterPathType {
        #[serde(rename = "escalation")]
        Escalation,
        #[serde(rename = "deferral")]
        Deferral,
    }
    impl ::std::fmt::Display for ListEscalationPathsFilterPathType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Escalation => f.write_str("escalation"),
                Self::Deferral => f.write_str("deferral"),
            }
        }
    }
    impl ::std::str::FromStr for ListEscalationPathsFilterPathType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation" => Ok(Self::Escalation),
                "deferral" => Ok(Self::Deferral),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListEscalationPathsFilterPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListEscalationPathsFilterPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListEscalationPathsFilterPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListEscalationPathsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policy_levels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListEscalationPathsInclude {
        #[serde(rename = "escalation_policy_levels")]
        EscalationPolicyLevels,
    }
    impl ::std::fmt::Display for ListEscalationPathsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicyLevels => f.write_str("escalation_policy_levels"),
            }
        }
    }
    impl ::std::str::FromStr for ListEscalationPathsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policy_levels" => Ok(Self::EscalationPolicyLevels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListEscalationPathsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListEscalationPathsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListEscalationPathsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListEscalationPoliciesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policy_levels",
    ///    "escalation_policy_paths",
    ///    "groups",
    ///    "services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListEscalationPoliciesInclude {
        #[serde(rename = "escalation_policy_levels")]
        EscalationPolicyLevels,
        #[serde(rename = "escalation_policy_paths")]
        EscalationPolicyPaths,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "services")]
        Services,
    }
    impl ::std::fmt::Display for ListEscalationPoliciesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicyLevels => f.write_str("escalation_policy_levels"),
                Self::EscalationPolicyPaths => f.write_str("escalation_policy_paths"),
                Self::Groups => f.write_str("groups"),
                Self::Services => f.write_str("services"),
            }
        }
    }
    impl ::std::str::FromStr for ListEscalationPoliciesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policy_levels" => Ok(Self::EscalationPolicyLevels),
                "escalation_policy_paths" => Ok(Self::EscalationPolicyPaths),
                "groups" => Ok(Self::Groups),
                "services" => Ok(Self::Services),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListEscalationPoliciesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListEscalationPoliciesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListEscalationPoliciesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListFormFieldsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "options",
    ///    "positions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListFormFieldsInclude {
        #[serde(rename = "options")]
        Options,
        #[serde(rename = "positions")]
        Positions,
    }
    impl ::std::fmt::Display for ListFormFieldsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Options => f.write_str("options"),
                Self::Positions => f.write_str("positions"),
            }
        }
    }
    impl ::std::str::FromStr for ListFormFieldsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "options" => Ok(Self::Options),
                "positions" => Ok(Self::Positions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListFormFieldsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListFormFieldsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListFormFieldsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListFunctionalityCatalogPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListFunctionalityCatalogPropertiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
    }
    impl ::std::fmt::Display for ListFunctionalityCatalogPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
            }
        }
    }
    impl ::std::str::FromStr for ListFunctionalityCatalogPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListFunctionalityCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListFunctionalityCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListFunctionalityCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListFunctionalityCatalogPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListFunctionalityCatalogPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListFunctionalityCatalogPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListFunctionalityCatalogPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListFunctionalityCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListFunctionalityCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListFunctionalityCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListGroupCatalogPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListGroupCatalogPropertiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
    }
    impl ::std::fmt::Display for ListGroupCatalogPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
            }
        }
    }
    impl ::std::str::FromStr for ListGroupCatalogPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListGroupCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListGroupCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListGroupCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListGroupCatalogPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListGroupCatalogPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListGroupCatalogPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListGroupCatalogPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListGroupCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListGroupCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListGroupCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentAlertsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments",
    ///    "services",
    ///    "groups",
    ///    "functionalities",
    ///    "responders",
    ///    "incidents",
    ///    "notified_users",
    ///    "events",
    ///    "alert_urgency",
    ///    "heartbeat",
    ///    "live_call_router",
    ///    "alert_group",
    ///    "group_leader_alert",
    ///    "group_member_alerts",
    ///    "alert_field_values",
    ///    "alerting_targets",
    ///    "escalation_policies",
    ///    "alert_call_recording"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentAlertsInclude {
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "responders")]
        Responders,
        #[serde(rename = "incidents")]
        Incidents,
        #[serde(rename = "notified_users")]
        NotifiedUsers,
        #[serde(rename = "events")]
        Events,
        #[serde(rename = "alert_urgency")]
        AlertUrgency,
        #[serde(rename = "heartbeat")]
        Heartbeat,
        #[serde(rename = "live_call_router")]
        LiveCallRouter,
        #[serde(rename = "alert_group")]
        AlertGroup,
        #[serde(rename = "group_leader_alert")]
        GroupLeaderAlert,
        #[serde(rename = "group_member_alerts")]
        GroupMemberAlerts,
        #[serde(rename = "alert_field_values")]
        AlertFieldValues,
        #[serde(rename = "alerting_targets")]
        AlertingTargets,
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
        #[serde(rename = "alert_call_recording")]
        AlertCallRecording,
    }
    impl ::std::fmt::Display for ListIncidentAlertsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
                Self::Services => f.write_str("services"),
                Self::Groups => f.write_str("groups"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Responders => f.write_str("responders"),
                Self::Incidents => f.write_str("incidents"),
                Self::NotifiedUsers => f.write_str("notified_users"),
                Self::Events => f.write_str("events"),
                Self::AlertUrgency => f.write_str("alert_urgency"),
                Self::Heartbeat => f.write_str("heartbeat"),
                Self::LiveCallRouter => f.write_str("live_call_router"),
                Self::AlertGroup => f.write_str("alert_group"),
                Self::GroupLeaderAlert => f.write_str("group_leader_alert"),
                Self::GroupMemberAlerts => f.write_str("group_member_alerts"),
                Self::AlertFieldValues => f.write_str("alert_field_values"),
                Self::AlertingTargets => f.write_str("alerting_targets"),
                Self::EscalationPolicies => f.write_str("escalation_policies"),
                Self::AlertCallRecording => f.write_str("alert_call_recording"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentAlertsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                "services" => Ok(Self::Services),
                "groups" => Ok(Self::Groups),
                "functionalities" => Ok(Self::Functionalities),
                "responders" => Ok(Self::Responders),
                "incidents" => Ok(Self::Incidents),
                "notified_users" => Ok(Self::NotifiedUsers),
                "events" => Ok(Self::Events),
                "alert_urgency" => Ok(Self::AlertUrgency),
                "heartbeat" => Ok(Self::Heartbeat),
                "live_call_router" => Ok(Self::LiveCallRouter),
                "alert_group" => Ok(Self::AlertGroup),
                "group_leader_alert" => Ok(Self::GroupLeaderAlert),
                "group_member_alerts" => Ok(Self::GroupMemberAlerts),
                "alert_field_values" => Ok(Self::AlertFieldValues),
                "alerting_targets" => Ok(Self::AlertingTargets),
                "escalation_policies" => Ok(Self::EscalationPolicies),
                "alert_call_recording" => Ok(Self::AlertCallRecording),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentAlertsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListIncidentAlertsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListIncidentAlertsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentSubStatusesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_status",
    ///    "assigned_by_user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentSubStatusesInclude {
        #[serde(rename = "sub_status")]
        SubStatus,
        #[serde(rename = "assigned_by_user")]
        AssignedByUser,
    }
    impl ::std::fmt::Display for ListIncidentSubStatusesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatus => f.write_str("sub_status"),
                Self::AssignedByUser => f.write_str("assigned_by_user"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentSubStatusesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_status" => Ok(Self::SubStatus),
                "assigned_by_user" => Ok(Self::AssignedByUser),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentSubStatusesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListIncidentSubStatusesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListIncidentSubStatusesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentSubStatusesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "assigned_at",
    ///    "-assigned_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentSubStatusesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "assigned_at")]
        AssignedXat,
        #[serde(rename = "-assigned_at")]
        XassignedXat,
    }
    impl ::std::fmt::Display for ListIncidentSubStatusesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::AssignedXat => f.write_str("assigned_at"),
                Self::XassignedXat => f.write_str("-assigned_at"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentSubStatusesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "assigned_at" => Ok(Self::AssignedXat),
                "-assigned_at" => Ok(Self::XassignedXat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentSubStatusesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListIncidentSubStatusesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListIncidentSubStatusesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentTypeCatalogPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentTypeCatalogPropertiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
    }
    impl ::std::fmt::Display for ListIncidentTypeCatalogPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentTypeCatalogPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentTypeCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListIncidentTypeCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListIncidentTypeCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentTypeCatalogPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentTypeCatalogPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListIncidentTypeCatalogPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentTypeCatalogPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentTypeCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListIncidentTypeCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListIncidentTypeCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_statuses",
    ///    "causes",
    ///    "subscribers",
    ///    "roles",
    ///    "slack_messages",
    ///    "environments",
    ///    "incident_types",
    ///    "services",
    ///    "functionalities",
    ///    "groups",
    ///    "events",
    ///    "action_items",
    ///    "custom_field_selections",
    ///    "feedbacks",
    ///    "incident_post_mortem",
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentsInclude {
        #[serde(rename = "sub_statuses")]
        SubStatuses,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "subscribers")]
        Subscribers,
        #[serde(rename = "roles")]
        Roles,
        #[serde(rename = "slack_messages")]
        SlackMessages,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "events")]
        Events,
        #[serde(rename = "action_items")]
        ActionItems,
        #[serde(rename = "custom_field_selections")]
        CustomFieldSelections,
        #[serde(rename = "feedbacks")]
        Feedbacks,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for ListIncidentsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatuses => f.write_str("sub_statuses"),
                Self::Causes => f.write_str("causes"),
                Self::Subscribers => f.write_str("subscribers"),
                Self::Roles => f.write_str("roles"),
                Self::SlackMessages => f.write_str("slack_messages"),
                Self::Environments => f.write_str("environments"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Services => f.write_str("services"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Groups => f.write_str("groups"),
                Self::Events => f.write_str("events"),
                Self::ActionItems => f.write_str("action_items"),
                Self::CustomFieldSelections => f.write_str("custom_field_selections"),
                Self::Feedbacks => f.write_str("feedbacks"),
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_statuses" => Ok(Self::SubStatuses),
                "causes" => Ok(Self::Causes),
                "subscribers" => Ok(Self::Subscribers),
                "roles" => Ok(Self::Roles),
                "slack_messages" => Ok(Self::SlackMessages),
                "environments" => Ok(Self::Environments),
                "incident_types" => Ok(Self::IncidentTypes),
                "services" => Ok(Self::Services),
                "functionalities" => Ok(Self::Functionalities),
                "groups" => Ok(Self::Groups),
                "events" => Ok(Self::Events),
                "action_items" => Ok(Self::ActionItems),
                "custom_field_selections" => Ok(Self::CustomFieldSelections),
                "feedbacks" => Ok(Self::Feedbacks),
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListIncidentsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListIncidentsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListIncidentsSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "started_at",
    ///    "-started_at",
    ///    "in_triage_at",
    ///    "-in_triage_at",
    ///    "mitigated_at",
    ///    "-mitigated_at",
    ///    "resolved_at",
    ///    "-resolved_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListIncidentsSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "started_at")]
        StartedXat,
        #[serde(rename = "-started_at")]
        XstartedXat,
        #[serde(rename = "in_triage_at")]
        InXtriageXat,
        #[serde(rename = "-in_triage_at")]
        XinXtriageXat,
        #[serde(rename = "mitigated_at")]
        MitigatedXat,
        #[serde(rename = "-mitigated_at")]
        XmitigatedXat,
        #[serde(rename = "resolved_at")]
        ResolvedXat,
        #[serde(rename = "-resolved_at")]
        XresolvedXat,
    }
    impl ::std::fmt::Display for ListIncidentsSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::StartedXat => f.write_str("started_at"),
                Self::XstartedXat => f.write_str("-started_at"),
                Self::InXtriageXat => f.write_str("in_triage_at"),
                Self::XinXtriageXat => f.write_str("-in_triage_at"),
                Self::MitigatedXat => f.write_str("mitigated_at"),
                Self::XmitigatedXat => f.write_str("-mitigated_at"),
                Self::ResolvedXat => f.write_str("resolved_at"),
                Self::XresolvedXat => f.write_str("-resolved_at"),
            }
        }
    }
    impl ::std::str::FromStr for ListIncidentsSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "started_at" => Ok(Self::StartedXat),
                "-started_at" => Ok(Self::XstartedXat),
                "in_triage_at" => Ok(Self::InXtriageXat),
                "-in_triage_at" => Ok(Self::XinXtriageXat),
                "mitigated_at" => Ok(Self::MitigatedXat),
                "-mitigated_at" => Ok(Self::XmitigatedXat),
                "resolved_at" => Ok(Self::ResolvedXat),
                "-resolved_at" => Ok(Self::XresolvedXat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListIncidentsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListIncidentsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListIncidentsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListOncallsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user",
    ///    "schedule",
    ///    "escalation_policy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListOncallsInclude {
        #[serde(rename = "user")]
        User,
        #[serde(rename = "schedule")]
        Schedule,
        #[serde(rename = "escalation_policy")]
        EscalationPolicy,
    }
    impl ::std::fmt::Display for ListOncallsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("user"),
                Self::Schedule => f.write_str("schedule"),
                Self::EscalationPolicy => f.write_str("escalation_policy"),
            }
        }
    }
    impl ::std::str::FromStr for ListOncallsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user" => Ok(Self::User),
                "schedule" => Ok(Self::Schedule),
                "escalation_policy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListOncallsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListOncallsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListOncallsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListPlaybooksInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "environments",
    ///    "services",
    ///    "functionalities",
    ///    "groups",
    ///    "causes",
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListPlaybooksInclude {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for ListPlaybooksInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::Environments => f.write_str("environments"),
                Self::Services => f.write_str("services"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Groups => f.write_str("groups"),
                Self::Causes => f.write_str("causes"),
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for ListPlaybooksInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "environments" => Ok(Self::Environments),
                "services" => Ok(Self::Services),
                "functionalities" => Ok(Self::Functionalities),
                "groups" => Ok(Self::Groups),
                "causes" => Ok(Self::Causes),
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListPlaybooksInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListPlaybooksInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListPlaybooksInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListRetrospectiveConfigurationsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "groups",
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListRetrospectiveConfigurationsInclude {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "groups")]
        Groups,
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for ListRetrospectiveConfigurationsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::Groups => f.write_str("groups"),
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for ListRetrospectiveConfigurationsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "groups" => Ok(Self::Groups),
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListRetrospectiveConfigurationsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListRetrospectiveConfigurationsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListRetrospectiveConfigurationsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListRetrospectiveProcessGroupsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_group_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListRetrospectiveProcessGroupsInclude {
        #[serde(rename = "retrospective_process_group_steps")]
        RetrospectiveProcessGroupSteps,
    }
    impl ::std::fmt::Display for ListRetrospectiveProcessGroupsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroupSteps => {
                    f.write_str("retrospective_process_group_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for ListRetrospectiveProcessGroupsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_group_steps" => {
                    Ok(Self::RetrospectiveProcessGroupSteps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListRetrospectiveProcessGroupsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListRetrospectiveProcessGroupsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListRetrospectiveProcessGroupsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListRetrospectiveProcessGroupsSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListRetrospectiveProcessGroupsSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListRetrospectiveProcessGroupsSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListRetrospectiveProcessGroupsSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListRetrospectiveProcessGroupsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListRetrospectiveProcessGroupsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListRetrospectiveProcessGroupsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListRetrospectiveProcessesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_steps",
    ///    "severities",
    ///    "incident_types",
    ///    "groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListRetrospectiveProcessesInclude {
        #[serde(rename = "retrospective_steps")]
        RetrospectiveSteps,
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "groups")]
        Groups,
    }
    impl ::std::fmt::Display for ListRetrospectiveProcessesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveSteps => f.write_str("retrospective_steps"),
                Self::Severities => f.write_str("severities"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Groups => f.write_str("groups"),
            }
        }
    }
    impl ::std::str::FromStr for ListRetrospectiveProcessesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_steps" => Ok(Self::RetrospectiveSteps),
                "severities" => Ok(Self::Severities),
                "incident_types" => Ok(Self::IncidentTypes),
                "groups" => Ok(Self::Groups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListRetrospectiveProcessesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListRetrospectiveProcessesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListRetrospectiveProcessesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListServiceCatalogPropertiesInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListServiceCatalogPropertiesInclude {
        #[serde(rename = "catalog")]
        Catalog,
    }
    impl ::std::fmt::Display for ListServiceCatalogPropertiesInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
            }
        }
    }
    impl ::std::str::FromStr for ListServiceCatalogPropertiesInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListServiceCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListServiceCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListServiceCatalogPropertiesInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListServiceCatalogPropertiesSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListServiceCatalogPropertiesSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListServiceCatalogPropertiesSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListServiceCatalogPropertiesSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListServiceCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ListServiceCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ListServiceCatalogPropertiesSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListShiftsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shift_override",
    ///    "user",
    ///    "assignee",
    ///    "shift_shadow"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListShiftsInclude {
        #[serde(rename = "shift_override")]
        ShiftOverride,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "assignee")]
        Assignee,
        #[serde(rename = "shift_shadow")]
        ShiftShadow,
    }
    impl ::std::fmt::Display for ListShiftsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ShiftOverride => f.write_str("shift_override"),
                Self::User => f.write_str("user"),
                Self::Assignee => f.write_str("assignee"),
                Self::ShiftShadow => f.write_str("shift_shadow"),
            }
        }
    }
    impl ::std::str::FromStr for ListShiftsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shift_override" => Ok(Self::ShiftOverride),
                "user" => Ok(Self::User),
                "assignee" => Ok(Self::Assignee),
                "shift_shadow" => Ok(Self::ShiftShadow),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListShiftsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListShiftsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListShiftsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListTeamsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users",
    ///    "schedules",
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListTeamsInclude {
        #[serde(rename = "users")]
        Users,
        #[serde(rename = "schedules")]
        Schedules,
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for ListTeamsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
                Self::Schedules => f.write_str("schedules"),
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for ListTeamsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                "schedules" => Ok(Self::Schedules),
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListTeamsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListTeamsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListTeamsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListUsersInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "email_addresses",
    ///    "phone_numbers",
    ///    "devices",
    ///    "role",
    ///    "on_call_role",
    ///    "teams",
    ///    "schedules",
    ///    "notification_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListUsersInclude {
        #[serde(rename = "email_addresses")]
        EmailAddresses,
        #[serde(rename = "phone_numbers")]
        PhoneNumbers,
        #[serde(rename = "devices")]
        Devices,
        #[serde(rename = "role")]
        Role,
        #[serde(rename = "on_call_role")]
        OnCallRole,
        #[serde(rename = "teams")]
        Teams,
        #[serde(rename = "schedules")]
        Schedules,
        #[serde(rename = "notification_rules")]
        NotificationRules,
    }
    impl ::std::fmt::Display for ListUsersInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EmailAddresses => f.write_str("email_addresses"),
                Self::PhoneNumbers => f.write_str("phone_numbers"),
                Self::Devices => f.write_str("devices"),
                Self::Role => f.write_str("role"),
                Self::OnCallRole => f.write_str("on_call_role"),
                Self::Teams => f.write_str("teams"),
                Self::Schedules => f.write_str("schedules"),
                Self::NotificationRules => f.write_str("notification_rules"),
            }
        }
    }
    impl ::std::str::FromStr for ListUsersInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email_addresses" => Ok(Self::EmailAddresses),
                "phone_numbers" => Ok(Self::PhoneNumbers),
                "devices" => Ok(Self::Devices),
                "role" => Ok(Self::Role),
                "on_call_role" => Ok(Self::OnCallRole),
                "teams" => Ok(Self::Teams),
                "schedules" => Ok(Self::Schedules),
                "notification_rules" => Ok(Self::NotificationRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListUsersInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListUsersInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListUsersInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListUsersSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListUsersSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
    }
    impl ::std::fmt::Display for ListUsersSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
            }
        }
    }
    impl ::std::str::FromStr for ListUsersSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListUsersSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListUsersSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListUsersSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListWorkflowRunsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "genius_task_runs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListWorkflowRunsInclude {
        #[serde(rename = "genius_task_runs")]
        GeniusTaskRuns,
    }
    impl ::std::fmt::Display for ListWorkflowRunsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GeniusTaskRuns => f.write_str("genius_task_runs"),
            }
        }
    }
    impl ::std::str::FromStr for ListWorkflowRunsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "genius_task_runs" => Ok(Self::GeniusTaskRuns),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListWorkflowRunsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListWorkflowRunsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListWorkflowRunsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListWorkflowsInclude`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_conditions",
    ///    "alert_field_conditions",
    ///    "genius_tasks",
    ///    "genius_workflow_runs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListWorkflowsInclude {
        #[serde(rename = "form_field_conditions")]
        FormFieldConditions,
        #[serde(rename = "alert_field_conditions")]
        AlertFieldConditions,
        #[serde(rename = "genius_tasks")]
        GeniusTasks,
        #[serde(rename = "genius_workflow_runs")]
        GeniusWorkflowRuns,
    }
    impl ::std::fmt::Display for ListWorkflowsInclude {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldConditions => f.write_str("form_field_conditions"),
                Self::AlertFieldConditions => f.write_str("alert_field_conditions"),
                Self::GeniusTasks => f.write_str("genius_tasks"),
                Self::GeniusWorkflowRuns => f.write_str("genius_workflow_runs"),
            }
        }
    }
    impl ::std::str::FromStr for ListWorkflowsInclude {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_conditions" => Ok(Self::FormFieldConditions),
                "alert_field_conditions" => Ok(Self::AlertFieldConditions),
                "genius_tasks" => Ok(Self::GeniusTasks),
                "genius_workflow_runs" => Ok(Self::GeniusWorkflowRuns),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListWorkflowsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListWorkflowsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListWorkflowsInclude {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ListWorkflowsSort`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "created_at",
    ///    "-created_at",
    ///    "updated_at",
    ///    "-updated_at",
    ///    "position",
    ///    "-position"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ListWorkflowsSort {
        #[serde(rename = "created_at")]
        CreatedXat,
        #[serde(rename = "-created_at")]
        XcreatedXat,
        #[serde(rename = "updated_at")]
        UpdatedXat,
        #[serde(rename = "-updated_at")]
        XupdatedXat,
        #[serde(rename = "position")]
        Position,
        #[serde(rename = "-position")]
        Xposition,
    }
    impl ::std::fmt::Display for ListWorkflowsSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreatedXat => f.write_str("created_at"),
                Self::XcreatedXat => f.write_str("-created_at"),
                Self::UpdatedXat => f.write_str("updated_at"),
                Self::XupdatedXat => f.write_str("-updated_at"),
                Self::Position => f.write_str("position"),
                Self::Xposition => f.write_str("-position"),
            }
        }
    }
    impl ::std::str::FromStr for ListWorkflowsSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "created_at" => Ok(Self::CreatedXat),
                "-created_at" => Ok(Self::XcreatedXat),
                "updated_at" => Ok(Self::UpdatedXat),
                "-updated_at" => Ok(Self::XupdatedXat),
                "position" => Ok(Self::Position),
                "-position" => Ok(Self::Xposition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ListWorkflowsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ListWorkflowsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ListWorkflowsSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`LiveCallRouter`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "This is used in escalation paths to determine who to page",
    ///      "type": "string"
    ///    },
    ///    "caller_greeting": {
    ///      "description": "The caller greeting message of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "calling_tree_prompt": {
    ///      "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///      "type": "string"
    ///    },
    ///    "country_code": {
    ///      "description": "The country code of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "AU",
    ///        "CA",
    ///        "DE",
    ///        "NL",
    ///        "NZ",
    ///        "SE",
    ///        "CH",
    ///        "GB",
    ///        "US"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the live_call_router is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "escalation_level_delay_in_seconds": {
    ///      "description": "This overrides the delay (seconds) in escalation levels",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_trigger_params": {
    ///      "type": "object",
    ///      "required": [
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "The ID of notification target",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "Service",
    ///            "Group",
    ///            "EscalationPolicy",
    ///            "Functionality"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "voicemail",
    ///        "live"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "paging_targets": {
    ///      "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "alert_urgency_id",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_id": {
    ///            "description": "This is used in escalation paths to determine who to page",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "The ID of paging target",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "service",
    ///              "team",
    ///              "escalation_policy",
    ///              "functionality"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "phone_number": {
    ///      "description": "You can select a phone number using [generate_phone_number](#//api/v1/live_call_routers/generate_phone_number) API and pass that phone number here to register",
    ///      "type": "string"
    ///    },
    ///    "phone_type": {
    ///      "description": "The phone type of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "local",
    ///        "toll_free",
    ///        "mobile"
    ///      ]
    ///    },
    ///    "sent_to_voicemail_delay": {
    ///      "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///      "type": "integer"
    ///    },
    ///    "should_auto_resolve_alert_on_call_end": {
    ///      "description": "This overrides the delay (seconds) in escalation levels",
    ///      "type": "boolean"
    ///    },
    ///    "should_redirect_to_voicemail_on_no_answer": {
    ///      "description": "This prompts the caller to choose voicemail or connect live",
    ///      "type": "boolean"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "voicemail_greeting": {
    ///      "description": "The voicemail greeting of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "waiting_music_url": {
    ///      "description": "The waiting music URL of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouter {
        ///This is used in escalation paths to determine who to page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The caller greeting message of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub caller_greeting: ::std::option::Option<::std::string::String>,
        ///The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calling_tree_prompt: ::std::option::Option<::std::string::String>,
        ///The country code of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub country_code: ::std::option::Option<LiveCallRouterCountryCode>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Whether the live_call_router is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///This overrides the delay (seconds) in escalation levels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_level_delay_in_seconds: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_trigger_params: ::std::option::Option<
            LiveCallRouterEscalationPolicyTriggerParams,
        >,
        ///The kind of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<LiveCallRouterKind>,
        ///The name of the live_call_router
        pub name: ::std::string::String,
        ///Paging targets that callers can select from when this live call router is configured as a phone tree.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub paging_targets: ::std::vec::Vec<LiveCallRouterPagingTargetsItem>,
        ///You can select a phone number using [generate_phone_number](#//api/v1/live_call_routers/generate_phone_number) API and pass that phone number here to register
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone_number: ::std::option::Option<::std::string::String>,
        ///The phone type of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone_type: ::std::option::Option<LiveCallRouterPhoneType>,
        ///The delay (seconds) after which the caller in redirected to voicemail
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sent_to_voicemail_delay: ::std::option::Option<i64>,
        ///This overrides the delay (seconds) in escalation levels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_auto_resolve_alert_on_call_end: ::std::option::Option<bool>,
        ///This prompts the caller to choose voicemail or connect live
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_redirect_to_voicemail_on_no_answer: ::std::option::Option<bool>,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The voicemail greeting of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub voicemail_greeting: ::std::option::Option<::std::string::String>,
        ///The waiting music URL of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub waiting_music_url: ::std::option::Option<LiveCallRouterWaitingMusicUrl>,
    }
    impl LiveCallRouter {
        pub fn builder() -> builder::LiveCallRouter {
            Default::default()
        }
    }
    ///The country code of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The country code of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "AU",
    ///    "CA",
    ///    "DE",
    ///    "NL",
    ///    "NZ",
    ///    "SE",
    ///    "CH",
    ///    "GB",
    ///    "US"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterCountryCode {
        #[serde(rename = "AU")]
        Au,
        #[serde(rename = "CA")]
        Ca,
        #[serde(rename = "DE")]
        De,
        #[serde(rename = "NL")]
        Nl,
        #[serde(rename = "NZ")]
        Nz,
        #[serde(rename = "SE")]
        Se,
        #[serde(rename = "CH")]
        Ch,
        #[serde(rename = "GB")]
        Gb,
        #[serde(rename = "US")]
        Us,
    }
    impl ::std::fmt::Display for LiveCallRouterCountryCode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Au => f.write_str("AU"),
                Self::Ca => f.write_str("CA"),
                Self::De => f.write_str("DE"),
                Self::Nl => f.write_str("NL"),
                Self::Nz => f.write_str("NZ"),
                Self::Se => f.write_str("SE"),
                Self::Ch => f.write_str("CH"),
                Self::Gb => f.write_str("GB"),
                Self::Us => f.write_str("US"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterCountryCode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AU" => Ok(Self::Au),
                "CA" => Ok(Self::Ca),
                "DE" => Ok(Self::De),
                "NL" => Ok(Self::Nl),
                "NZ" => Ok(Self::Nz),
                "SE" => Ok(Self::Se),
                "CH" => Ok(Self::Ch),
                "GB" => Ok(Self::Gb),
                "US" => Ok(Self::Us),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for LiveCallRouterCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for LiveCallRouterCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`LiveCallRouterEscalationPolicyTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of notification target",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouterEscalationPolicyTriggerParams {
        ///The ID of notification target
        pub id: ::std::string::String,
        ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
        #[serde(rename = "type")]
        pub type_: LiveCallRouterEscalationPolicyTriggerParamsType,
    }
    impl LiveCallRouterEscalationPolicyTriggerParams {
        pub fn builder() -> builder::LiveCallRouterEscalationPolicyTriggerParams {
            Default::default()
        }
    }
    ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterEscalationPolicyTriggerParamsType {
        Service,
        Group,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for LiveCallRouterEscalationPolicyTriggerParamsType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterEscalationPolicyTriggerParamsType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for LiveCallRouterEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for LiveCallRouterEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for LiveCallRouterEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "voicemail",
    ///    "live"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterKind {
        #[serde(rename = "voicemail")]
        Voicemail,
        #[serde(rename = "live")]
        Live,
    }
    impl ::std::fmt::Display for LiveCallRouterKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Voicemail => f.write_str("voicemail"),
                Self::Live => f.write_str("live"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "voicemail" => Ok(Self::Voicemail),
                "live" => Ok(Self::Live),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for LiveCallRouterKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for LiveCallRouterKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`LiveCallRouterList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/live_call_router"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the live_call_router",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "live_call_routers"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouterList {
        pub data: ::std::vec::Vec<LiveCallRouterListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl LiveCallRouterList {
        pub fn builder() -> builder::LiveCallRouterList {
            Default::default()
        }
    }
    ///`LiveCallRouterListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/live_call_router"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "live_call_routers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouterListDataItem {
        pub attributes: LiveCallRouter,
        ///Unique ID of the live_call_router
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: LiveCallRouterListDataItemType,
    }
    impl LiveCallRouterListDataItem {
        pub fn builder() -> builder::LiveCallRouterListDataItem {
            Default::default()
        }
    }
    ///`LiveCallRouterListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "live_call_routers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterListDataItemType {
        #[serde(rename = "live_call_routers")]
        LiveCallRouters,
    }
    impl ::std::fmt::Display for LiveCallRouterListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LiveCallRouters => f.write_str("live_call_routers"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "live_call_routers" => Ok(Self::LiveCallRouters),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for LiveCallRouterListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for LiveCallRouterListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`LiveCallRouterPagingTargetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_urgency_id",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "This is used in escalation paths to determine who to page",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "The ID of paging target",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "team",
    ///        "escalation_policy",
    ///        "functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouterPagingTargetsItem {
        ///This is used in escalation paths to determine who to page
        pub alert_urgency_id: ::std::string::String,
        ///The ID of paging target
        pub id: ::std::string::String,
        ///The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.
        #[serde(rename = "type")]
        pub type_: LiveCallRouterPagingTargetsItemType,
    }
    impl LiveCallRouterPagingTargetsItem {
        pub fn builder() -> builder::LiveCallRouterPagingTargetsItem {
            Default::default()
        }
    }
    ///The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "team",
    ///    "escalation_policy",
    ///    "functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterPagingTargetsItemType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "escalation_policy")]
        EscalationPolicy,
        #[serde(rename = "functionality")]
        Functionality,
    }
    impl ::std::fmt::Display for LiveCallRouterPagingTargetsItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
                Self::EscalationPolicy => f.write_str("escalation_policy"),
                Self::Functionality => f.write_str("functionality"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterPagingTargetsItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                "escalation_policy" => Ok(Self::EscalationPolicy),
                "functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for LiveCallRouterPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for LiveCallRouterPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The phone type of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The phone type of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "local",
    ///    "toll_free",
    ///    "mobile"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterPhoneType {
        #[serde(rename = "local")]
        Local,
        #[serde(rename = "toll_free")]
        TollFree,
        #[serde(rename = "mobile")]
        Mobile,
    }
    impl ::std::fmt::Display for LiveCallRouterPhoneType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Local => f.write_str("local"),
                Self::TollFree => f.write_str("toll_free"),
                Self::Mobile => f.write_str("mobile"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterPhoneType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "local" => Ok(Self::Local),
                "toll_free" => Ok(Self::TollFree),
                "mobile" => Ok(Self::Mobile),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for LiveCallRouterPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for LiveCallRouterPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`LiveCallRouterResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/live_call_router"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "live_call_routers"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouterResponse {
        pub data: LiveCallRouterResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl LiveCallRouterResponse {
        pub fn builder() -> builder::LiveCallRouterResponse {
            Default::default()
        }
    }
    ///`LiveCallRouterResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/live_call_router"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "live_call_routers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct LiveCallRouterResponseData {
        pub attributes: LiveCallRouter,
        ///Unique ID of the live_call_router
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: LiveCallRouterResponseDataType,
    }
    impl LiveCallRouterResponseData {
        pub fn builder() -> builder::LiveCallRouterResponseData {
            Default::default()
        }
    }
    ///`LiveCallRouterResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "live_call_routers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterResponseDataType {
        #[serde(rename = "live_call_routers")]
        LiveCallRouters,
    }
    impl ::std::fmt::Display for LiveCallRouterResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LiveCallRouters => f.write_str("live_call_routers"),
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "live_call_routers" => Ok(Self::LiveCallRouters),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for LiveCallRouterResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for LiveCallRouterResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The waiting music URL of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The waiting music URL of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum LiveCallRouterWaitingMusicUrl {
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3,
        #[serde(rename = "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3")]
        HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3,
    }
    impl ::std::fmt::Display for LiveCallRouterWaitingMusicUrl {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3",
                    )
                }
            }
        }
    }
    impl ::std::str::FromStr for LiveCallRouterWaitingMusicUrl {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3)
                }
                "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3)
                }
                "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3)
                }
                "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for LiveCallRouterWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for LiveCallRouterWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for LiveCallRouterWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`MeetingRecording`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "platform",
    ///    "session_number",
    ///    "status",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "When the recording session was created",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "duration_minutes": {
    ///      "description": "Recording duration in minutes (null if not started)",
    ///      "type": [
    ///        "number",
    ///        "null"
    ///      ]
    ///    },
    ///    "ended_at": {
    ///      "description": "When the recording ended",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "has_video": {
    ///      "description": "Whether a video recording file is attached",
    ///      "type": "boolean"
    ///    },
    ///    "platform": {
    ///      "description": "Meeting platform",
    ///      "type": "string",
    ///      "enum": [
    ///        "zoom",
    ///        "google_meet",
    ///        "microsoft_teams",
    ///        "webex"
    ///      ]
    ///    },
    ///    "session_number": {
    ///      "description": "Session number within the incident for this platform (starts at 1, increments on re-invite)",
    ///      "type": "integer"
    ///    },
    ///    "speaker_count": {
    ///      "description": "Number of unique speakers detected in the transcript",
    ///      "type": "integer"
    ///    },
    ///    "started_at": {
    ///      "description": "When the bot started recording (null if bot never joined)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "status": {
    ///      "description": "Current recording lifecycle status",
    ///      "type": "string",
    ///      "enum": [
    ///        "pending",
    ///        "recording",
    ///        "paused",
    ///        "call_ended",
    ///        "analyzing",
    ///        "completed",
    ///        "failed"
    ///      ]
    ///    },
    ///    "transcript_summary": {
    ///      "description": "AI-generated summary of the meeting transcript (null if no transcript or not yet analyzed)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "When the recording session was last updated",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "word_count": {
    ///      "description": "Total word count across all transcript segments",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct MeetingRecording {
        ///When the recording session was created
        pub created_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Recording duration in minutes (null if not started)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duration_minutes: ::std::option::Option<f64>,
        ///When the recording ended
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///Whether a video recording file is attached
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub has_video: ::std::option::Option<bool>,
        ///Meeting platform
        pub platform: MeetingRecordingPlatform,
        ///Session number within the incident for this platform (starts at 1, increments on re-invite)
        pub session_number: i64,
        ///Number of unique speakers detected in the transcript
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub speaker_count: ::std::option::Option<i64>,
        ///When the bot started recording (null if bot never joined)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///Current recording lifecycle status
        pub status: MeetingRecordingStatus,
        ///AI-generated summary of the meeting transcript (null if no transcript or not yet analyzed)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub transcript_summary: ::std::option::Option<::std::string::String>,
        ///When the recording session was last updated
        pub updated_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Total word count across all transcript segments
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub word_count: ::std::option::Option<i64>,
    }
    impl MeetingRecording {
        pub fn builder() -> builder::MeetingRecording {
            Default::default()
        }
    }
    ///`MeetingRecordingList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/meeting_recording"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique UUID of the meeting recording",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "meeting_recordings"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct MeetingRecordingList {
        pub data: ::std::vec::Vec<MeetingRecordingListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl MeetingRecordingList {
        pub fn builder() -> builder::MeetingRecordingList {
            Default::default()
        }
    }
    ///`MeetingRecordingListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meeting_recording"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique UUID of the meeting recording",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "meeting_recordings"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct MeetingRecordingListDataItem {
        pub attributes: MeetingRecording,
        ///Unique UUID of the meeting recording
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: MeetingRecordingListDataItemType,
    }
    impl MeetingRecordingListDataItem {
        pub fn builder() -> builder::MeetingRecordingListDataItem {
            Default::default()
        }
    }
    ///`MeetingRecordingListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "meeting_recordings"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum MeetingRecordingListDataItemType {
        #[serde(rename = "meeting_recordings")]
        MeetingRecordings,
    }
    impl ::std::fmt::Display for MeetingRecordingListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::MeetingRecordings => f.write_str("meeting_recordings"),
            }
        }
    }
    impl ::std::str::FromStr for MeetingRecordingListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "meeting_recordings" => Ok(Self::MeetingRecordings),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for MeetingRecordingListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for MeetingRecordingListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for MeetingRecordingListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Meeting platform
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Meeting platform",
    ///  "type": "string",
    ///  "enum": [
    ///    "zoom",
    ///    "google_meet",
    ///    "microsoft_teams",
    ///    "webex"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum MeetingRecordingPlatform {
        #[serde(rename = "zoom")]
        Zoom,
        #[serde(rename = "google_meet")]
        GoogleMeet,
        #[serde(rename = "microsoft_teams")]
        MicrosoftTeams,
        #[serde(rename = "webex")]
        Webex,
    }
    impl ::std::fmt::Display for MeetingRecordingPlatform {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Zoom => f.write_str("zoom"),
                Self::GoogleMeet => f.write_str("google_meet"),
                Self::MicrosoftTeams => f.write_str("microsoft_teams"),
                Self::Webex => f.write_str("webex"),
            }
        }
    }
    impl ::std::str::FromStr for MeetingRecordingPlatform {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "zoom" => Ok(Self::Zoom),
                "google_meet" => Ok(Self::GoogleMeet),
                "microsoft_teams" => Ok(Self::MicrosoftTeams),
                "webex" => Ok(Self::Webex),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for MeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for MeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for MeetingRecordingPlatform {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Current recording lifecycle status
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Current recording lifecycle status",
    ///  "type": "string",
    ///  "enum": [
    ///    "pending",
    ///    "recording",
    ///    "paused",
    ///    "call_ended",
    ///    "analyzing",
    ///    "completed",
    ///    "failed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum MeetingRecordingStatus {
        #[serde(rename = "pending")]
        Pending,
        #[serde(rename = "recording")]
        Recording,
        #[serde(rename = "paused")]
        Paused,
        #[serde(rename = "call_ended")]
        CallEnded,
        #[serde(rename = "analyzing")]
        Analyzing,
        #[serde(rename = "completed")]
        Completed,
        #[serde(rename = "failed")]
        Failed,
    }
    impl ::std::fmt::Display for MeetingRecordingStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Pending => f.write_str("pending"),
                Self::Recording => f.write_str("recording"),
                Self::Paused => f.write_str("paused"),
                Self::CallEnded => f.write_str("call_ended"),
                Self::Analyzing => f.write_str("analyzing"),
                Self::Completed => f.write_str("completed"),
                Self::Failed => f.write_str("failed"),
            }
        }
    }
    impl ::std::str::FromStr for MeetingRecordingStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pending" => Ok(Self::Pending),
                "recording" => Ok(Self::Recording),
                "paused" => Ok(Self::Paused),
                "call_ended" => Ok(Self::CallEnded),
                "analyzing" => Ok(Self::Analyzing),
                "completed" => Ok(Self::Completed),
                "failed" => Ok(Self::Failed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for MeetingRecordingStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for MeetingRecordingStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for MeetingRecordingStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Meta`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "current_page",
    ///    "next_page",
    ///    "prev_page",
    ///    "total_count",
    ///    "total_pages"
    ///  ],
    ///  "properties": {
    ///    "current_page": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "next_cursor": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "next_page": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "prev_page": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "total_count": {
    ///      "type": "integer"
    ///    },
    ///    "total_pages": {
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Meta {
        pub current_page: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub next_cursor: ::std::option::Option<::std::string::String>,
        pub next_page: ::std::option::Option<i64>,
        pub prev_page: ::std::option::Option<i64>,
        pub total_count: i64,
        pub total_pages: i64,
    }
    impl Meta {
        pub fn builder() -> builder::Meta {
            Default::default()
        }
    }
    ///`MitigateIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "mitigation_message": {
    ///              "description": "How was the incident mitigated?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct MitigateIncident {
        pub data: MitigateIncidentData,
    }
    impl MitigateIncident {
        pub fn builder() -> builder::MitigateIncident {
            Default::default()
        }
    }
    ///`MitigateIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "mitigation_message": {
    ///          "description": "How was the incident mitigated?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct MitigateIncidentData {
        pub attributes: MitigateIncidentDataAttributes,
        #[serde(rename = "type")]
        pub type_: MitigateIncidentDataType,
    }
    impl MitigateIncidentData {
        pub fn builder() -> builder::MitigateIncidentData {
            Default::default()
        }
    }
    ///`MitigateIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "mitigation_message": {
    ///      "description": "How was the incident mitigated?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct MitigateIncidentDataAttributes {
        ///How was the incident mitigated?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigation_message: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for MitigateIncidentDataAttributes {
        fn default() -> Self {
            Self {
                mitigation_message: Default::default(),
            }
        }
    }
    impl MitigateIncidentDataAttributes {
        pub fn builder() -> builder::MitigateIncidentDataAttributes {
            Default::default()
        }
    }
    ///`MitigateIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum MitigateIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for MitigateIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for MitigateIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for MitigateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for MitigateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for MitigateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "summary"
    ///          ],
    ///          "properties": {
    ///            "alert_field_values_attributes": {
    ///              "description": "Custom alert field values to create with the alert",
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "alert_field_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "alert_field_id": {
    ///                    "description": "ID of the custom alert field",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value for the alert field",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "The ID of the alert urgency",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "data": {
    ///              "description": "Additional data",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            },
    ///            "deduplication_key": {
    ///              "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the alert",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "ended_at": {
    ///              "description": "Alert end datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the alert",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "external_id": {
    ///              "description": "External ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_url": {
    ///              "description": "External Url",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "functionality_ids": {
    ///              "description": "The Functionality IDs to attach to the alert",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "description": "The Group IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Group. This field will be automatically set for you.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "labels": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "description": "Key of the tag",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value of the tag",
    ///                    "oneOf": [
    ///                      {
    ///                        "type": "string"
    ///                      },
    ///                      {
    ///                        "type": "number"
    ///                      },
    ///                      {
    ///                        "type": "boolean"
    ///                      }
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "noise": {
    ///              "description": "Whether the alert is marked as noise",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "noise",
    ///                "not_noise"
    ///              ]
    ///            },
    ///            "notification_target_id": {
    ///              "description": "Only available for organizations with Rootly On-Call enabled. The _identifier_ of the notification target object.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "notification_target_type": {
    ///              "description": "Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User. Please contact support if you encounter issues using `Functionality` as a notification target type.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "User",
    ///                "Group",
    ///                "EscalationPolicy",
    ///                "Service",
    ///                "Functionality"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Service. This field will be automatically set for you.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "source": {
    ///              "description": "Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.",
    ///              "deprecated": true,
    ///              "type": "string"
    ///            },
    ///            "started_at": {
    ///              "description": "Alert start datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "status": {
    ///              "description": "Only available for organizations with Rootly On-Call enabled. Can be one of open, triggered.",
    ///              "type": "string",
    ///              "enum": [
    ///                "open",
    ///                "triggered"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the alert",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlert {
        pub data: NewAlertData,
    }
    impl NewAlert {
        pub fn builder() -> builder::NewAlert {
            Default::default()
        }
    }
    ///`NewAlertData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "summary"
    ///      ],
    ///      "properties": {
    ///        "alert_field_values_attributes": {
    ///          "description": "Custom alert field values to create with the alert",
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "alert_field_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "alert_field_id": {
    ///                "description": "ID of the custom alert field",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value for the alert field",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "The ID of the alert urgency",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "data": {
    ///          "description": "Additional data",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        },
    ///        "deduplication_key": {
    ///          "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the alert",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "ended_at": {
    ///          "description": "Alert end datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the alert",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "external_id": {
    ///          "description": "External ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_url": {
    ///          "description": "External Url",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "functionality_ids": {
    ///          "description": "The Functionality IDs to attach to the alert",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "description": "The Group IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Group. This field will be automatically set for you.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "labels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "key",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "key": {
    ///                "description": "Key of the tag",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value of the tag",
    ///                "oneOf": [
    ///                  {
    ///                    "type": "string"
    ///                  },
    ///                  {
    ///                    "type": "number"
    ///                  },
    ///                  {
    ///                    "type": "boolean"
    ///                  }
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "noise": {
    ///          "description": "Whether the alert is marked as noise",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "noise",
    ///            "not_noise"
    ///          ]
    ///        },
    ///        "notification_target_id": {
    ///          "description": "Only available for organizations with Rootly On-Call enabled. The _identifier_ of the notification target object.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "notification_target_type": {
    ///          "description": "Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User. Please contact support if you encounter issues using `Functionality` as a notification target type.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "User",
    ///            "Group",
    ///            "EscalationPolicy",
    ///            "Service",
    ///            "Functionality"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Service. This field will be automatically set for you.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "source": {
    ///          "description": "Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.",
    ///          "deprecated": true,
    ///          "type": "string"
    ///        },
    ///        "started_at": {
    ///          "description": "Alert start datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "status": {
    ///          "description": "Only available for organizations with Rootly On-Call enabled. Can be one of open, triggered.",
    ///          "type": "string",
    ///          "enum": [
    ///            "open",
    ///            "triggered"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the alert",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertData {
        pub attributes: NewAlertDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertDataType,
    }
    impl NewAlertData {
        pub fn builder() -> builder::NewAlertData {
            Default::default()
        }
    }
    ///`NewAlertDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "summary"
    ///  ],
    ///  "properties": {
    ///    "alert_field_values_attributes": {
    ///      "description": "Custom alert field values to create with the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "alert_field_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "description": "ID of the custom alert field",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value for the alert field",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The ID of the alert urgency",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "data": {
    ///      "description": "Additional data",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "deduplication_key": {
    ///      "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "ended_at": {
    ///      "description": "Alert end datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_id": {
    ///      "description": "External ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_url": {
    ///      "description": "External Url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "The Group IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Group. This field will be automatically set for you.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the tag",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the tag",
    ///            "oneOf": [
    ///              {
    ///                "type": "string"
    ///              },
    ///              {
    ///                "type": "number"
    ///              },
    ///              {
    ///                "type": "boolean"
    ///              }
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "noise": {
    ///      "description": "Whether the alert is marked as noise",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "noise",
    ///        "not_noise"
    ///      ]
    ///    },
    ///    "notification_target_id": {
    ///      "description": "Only available for organizations with Rootly On-Call enabled. The _identifier_ of the notification target object.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "notification_target_type": {
    ///      "description": "Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User. Please contact support if you encounter issues using `Functionality` as a notification target type.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "User",
    ///        "Group",
    ///        "EscalationPolicy",
    ///        "Service",
    ///        "Functionality"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Service. This field will be automatically set for you.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "source": {
    ///      "description": "Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.",
    ///      "deprecated": true,
    ///      "type": "string"
    ///    },
    ///    "started_at": {
    ///      "description": "Alert start datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "status": {
    ///      "description": "Only available for organizations with Rootly On-Call enabled. Can be one of open, triggered.",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "triggered"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the alert",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertDataAttributes {
        ///Custom alert field values to create with the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_field_values_attributes: ::std::vec::Vec<
            ::std::option::Option<NewAlertDataAttributesAlertFieldValuesAttributesItem>,
        >,
        ///The ID of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Additional data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Alerts sharing the same deduplication key are treated as a single alert.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key: ::std::option::Option<::std::string::String>,
        ///The description of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Alert end datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The Environment IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///External ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///External Url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The Functionality IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Group IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Group. This field will be automatically set for you.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<
            ::std::option::Option<NewAlertDataAttributesLabelsItem>,
        >,
        ///Whether the alert is marked as noise
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub noise: ::std::option::Option<NewAlertDataAttributesNoise>,
        ///Only available for organizations with Rootly On-Call enabled. The _identifier_ of the notification target object.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_target_id: ::std::option::Option<::std::string::String>,
        ///Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User. Please contact support if you encounter issues using `Functionality` as a notification target type.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_target_type: ::std::option::Option<
            NewAlertDataAttributesNotificationTargetType,
        >,
        ///The Service IDs to attach to the alert. If your organization has On-Call enabled and your notification target is a Service. This field will be automatically set for you.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<::std::string::String>,
        ///Alert start datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///Only available for organizations with Rootly On-Call enabled. Can be one of open, triggered.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<NewAlertDataAttributesStatus>,
        ///The summary of the alert
        pub summary: ::std::string::String,
    }
    impl NewAlertDataAttributes {
        pub fn builder() -> builder::NewAlertDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertDataAttributesAlertFieldValuesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_field_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "description": "ID of the custom alert field",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value for the alert field",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertDataAttributesAlertFieldValuesAttributesItem {
        ///ID of the custom alert field
        pub alert_field_id: ::std::string::String,
        ///Value for the alert field
        pub value: ::std::string::String,
    }
    impl NewAlertDataAttributesAlertFieldValuesAttributesItem {
        pub fn builder() -> builder::NewAlertDataAttributesAlertFieldValuesAttributesItem {
            Default::default()
        }
    }
    ///`NewAlertDataAttributesLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the tag",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the tag",
    ///      "oneOf": [
    ///        {
    ///          "type": "string"
    ///        },
    ///        {
    ///          "type": "number"
    ///        },
    ///        {
    ///          "type": "boolean"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertDataAttributesLabelsItem {
        ///Key of the tag
        pub key: ::std::string::String,
        ///Value of the tag
        pub value: NewAlertDataAttributesLabelsItemValue,
    }
    impl NewAlertDataAttributesLabelsItem {
        pub fn builder() -> builder::NewAlertDataAttributesLabelsItem {
            Default::default()
        }
    }
    ///Value of the tag
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Value of the tag",
    ///  "oneOf": [
    ///    {
    ///      "type": "string"
    ///    },
    ///    {
    ///      "type": "number"
    ///    },
    ///    {
    ///      "type": "boolean"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum NewAlertDataAttributesLabelsItemValue {
        String(::std::string::String),
        Number(f64),
        Boolean(bool),
    }
    impl ::std::fmt::Display for NewAlertDataAttributesLabelsItemValue {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match self {
                Self::String(x) => x.fmt(f),
                Self::Number(x) => x.fmt(f),
                Self::Boolean(x) => x.fmt(f),
            }
        }
    }
    impl ::std::convert::From<f64> for NewAlertDataAttributesLabelsItemValue {
        fn from(value: f64) -> Self {
            Self::Number(value)
        }
    }
    impl ::std::convert::From<bool> for NewAlertDataAttributesLabelsItemValue {
        fn from(value: bool) -> Self {
            Self::Boolean(value)
        }
    }
    ///Whether the alert is marked as noise
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Whether the alert is marked as noise",
    ///  "type": "string",
    ///  "enum": [
    ///    "noise",
    ///    "not_noise"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertDataAttributesNoise {
        #[serde(rename = "noise")]
        Noise,
        #[serde(rename = "not_noise")]
        NotNoise,
    }
    impl ::std::fmt::Display for NewAlertDataAttributesNoise {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Noise => f.write_str("noise"),
                Self::NotNoise => f.write_str("not_noise"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertDataAttributesNoise {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "noise" => Ok(Self::Noise),
                "not_noise" => Ok(Self::NotNoise),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertDataAttributesNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertDataAttributesNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertDataAttributesNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User. Please contact support if you encounter issues using `Functionality` as a notification target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Only available for organizations with Rootly On-Call enabled. Can be one of Group, Service, EscalationPolicy, Functionality, User. Please contact support if you encounter issues using `Functionality` as a notification target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Group",
    ///    "EscalationPolicy",
    ///    "Service",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertDataAttributesNotificationTargetType {
        User,
        Group,
        EscalationPolicy,
        Service,
        Functionality,
    }
    impl ::std::fmt::Display for NewAlertDataAttributesNotificationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Group => f.write_str("Group"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Service => f.write_str("Service"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertDataAttributesNotificationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Group" => Ok(Self::Group),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Service" => Ok(Self::Service),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Only available for organizations with Rootly On-Call enabled. Can be one of open, triggered.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Only available for organizations with Rootly On-Call enabled. Can be one of open, triggered.",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "triggered"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertDataAttributesStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "triggered")]
        Triggered,
    }
    impl ::std::fmt::Display for NewAlertDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::Triggered => f.write_str("triggered"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "triggered" => Ok(Self::Triggered),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for NewAlertDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "details",
    ///            "kind"
    ///          ],
    ///          "properties": {
    ///            "details": {
    ///              "description": "Note message.",
    ///              "type": "string"
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "note"
    ///              ]
    ///            },
    ///            "user_id": {
    ///              "description": "Author of the note.",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_events"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertEvent {
        pub data: NewAlertEventData,
    }
    impl NewAlertEvent {
        pub fn builder() -> builder::NewAlertEvent {
            Default::default()
        }
    }
    ///`NewAlertEventData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "details",
    ///        "kind"
    ///      ],
    ///      "properties": {
    ///        "details": {
    ///          "description": "Note message.",
    ///          "type": "string"
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "note"
    ///          ]
    ///        },
    ///        "user_id": {
    ///          "description": "Author of the note.",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertEventData {
        pub attributes: NewAlertEventDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertEventDataType,
    }
    impl NewAlertEventData {
        pub fn builder() -> builder::NewAlertEventData {
            Default::default()
        }
    }
    ///`NewAlertEventDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "details",
    ///    "kind"
    ///  ],
    ///  "properties": {
    ///    "details": {
    ///      "description": "Note message.",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "note"
    ///      ]
    ///    },
    ///    "user_id": {
    ///      "description": "Author of the note.",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertEventDataAttributes {
        ///Note message.
        pub details: ::std::string::String,
        pub kind: NewAlertEventDataAttributesKind,
        ///Author of the note.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl NewAlertEventDataAttributes {
        pub fn builder() -> builder::NewAlertEventDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertEventDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "note"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertEventDataAttributesKind {
        #[serde(rename = "note")]
        Note,
    }
    impl ::std::fmt::Display for NewAlertEventDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Note => f.write_str("note"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertEventDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "note" => Ok(Self::Note),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertEventDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertEventDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertEventDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertEventDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertEventDataType {
        #[serde(rename = "alert_events")]
        AlertEvents,
    }
    impl ::std::fmt::Display for NewAlertEventDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertEvents => f.write_str("alert_events"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertEventDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_events" => Ok(Self::AlertEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "name": {
    ///              "description": "The name of the alert field",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertField {
        pub data: NewAlertFieldData,
    }
    impl NewAlertField {
        pub fn builder() -> builder::NewAlertField {
            Default::default()
        }
    }
    ///`NewAlertFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "name": {
    ///          "description": "The name of the alert field",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertFieldData {
        pub attributes: NewAlertFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertFieldDataType,
    }
    impl NewAlertFieldData {
        pub fn builder() -> builder::NewAlertFieldData {
            Default::default()
        }
    }
    ///`NewAlertFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "name": {
    ///      "description": "The name of the alert field",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertFieldDataAttributes {
        ///The name of the alert field
        pub name: ::std::string::String,
    }
    impl NewAlertFieldDataAttributes {
        pub fn builder() -> builder::NewAlertFieldDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertFieldDataType {
        #[serde(rename = "alert_fields")]
        AlertFields,
    }
    impl ::std::fmt::Display for NewAlertFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertFields => f.write_str("alert_fields"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_fields" => Ok(Self::AlertFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "attributes": {
    ///              "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///              "deprecated": true,
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "json_path": {
    ///                    "description": "The JSON path to the value to group by.",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "condition_type": {
    ///              "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "any"
    ///              ]
    ///            },
    ///            "conditions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "property_field_condition_type",
    ///                  "property_field_type"
    ///                ],
    ///                "properties": {
    ///                  "alert_urgency_ids": {
    ///                    "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "conditionable_id": {
    ///                    "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                    "type": "string"
    ///                  },
    ///                  "conditionable_type": {
    ///                    "description": "The type of the conditionable",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "AlertField"
    ///                    ]
    ///                  },
    ///                  "property_field_condition_type": {
    ///                    "description": "The condition type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "starts_with",
    ///                      "ends_with",
    ///                      "matches_regex",
    ///                      "is_empty",
    ///                      "matches_existing_alert"
    ///                    ]
    ///                  },
    ///                  "property_field_name": {
    ///                    "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_type": {
    ///                    "description": "The type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "attribute",
    ///                      "payload",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "property_field_value": {
    ///                    "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_values": {
    ///                    "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "The description of the alert urgency",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "group_by_alert_title": {
    ///              "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///              "deprecated": true,
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                0
    ///              ]
    ///            },
    ///            "group_by_alert_urgency": {
    ///              "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///              "deprecated": true,
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                0
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert group",
    ///              "type": "string"
    ///            },
    ///            "targets": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "target_id",
    ///                  "target_type"
    ///                ],
    ///                "properties": {
    ///                  "target_id": {
    ///                    "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///                    "type": "string",
    ///                    "format": "uuid"
    ///                  },
    ///                  "target_type": {
    ///                    "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "Group",
    ///                      "Service",
    ///                      "EscalationPolicy",
    ///                      "Functionality"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "time_window": {
    ///              "description": "The length of time an Alert Group should stay open and accept new alerts",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertGroup {
        pub data: NewAlertGroupData,
    }
    impl NewAlertGroup {
        pub fn builder() -> builder::NewAlertGroup {
            Default::default()
        }
    }
    ///`NewAlertGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///          "deprecated": true,
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "json_path": {
    ///                "description": "The JSON path to the value to group by.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "condition_type": {
    ///          "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "property_field_condition_type",
    ///              "property_field_type"
    ///            ],
    ///            "properties": {
    ///              "alert_urgency_ids": {
    ///                "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": "string"
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "property_field_condition_type": {
    ///                "description": "The condition type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with",
    ///                  "matches_regex",
    ///                  "is_empty",
    ///                  "matches_existing_alert"
    ///                ]
    ///              },
    ///              "property_field_name": {
    ///                "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                "type": "string"
    ///              },
    ///              "property_field_type": {
    ///                "description": "The type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "attribute",
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "property_field_value": {
    ///                "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                "type": "string"
    ///              },
    ///              "property_field_values": {
    ///                "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "The description of the alert urgency",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "group_by_alert_title": {
    ///          "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///          "deprecated": true,
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            0
    ///          ]
    ///        },
    ///        "group_by_alert_urgency": {
    ///          "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///          "deprecated": true,
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            0
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert group",
    ///          "type": "string"
    ///        },
    ///        "targets": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "target_id",
    ///              "target_type"
    ///            ],
    ///            "properties": {
    ///              "target_id": {
    ///                "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              },
    ///              "target_type": {
    ///                "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                "type": "string",
    ///                "enum": [
    ///                  "Group",
    ///                  "Service",
    ///                  "EscalationPolicy",
    ///                  "Functionality"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "time_window": {
    ///          "description": "The length of time an Alert Group should stay open and accept new alerts",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertGroupData {
        pub attributes: NewAlertGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertGroupDataType,
    }
    impl NewAlertGroupData {
        pub fn builder() -> builder::NewAlertGroupData {
            Default::default()
        }
    }
    ///`NewAlertGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///      "deprecated": true,
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "json_path": {
    ///            "description": "The JSON path to the value to group by.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "condition_type": {
    ///      "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": "string"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty",
    ///              "matches_existing_alert"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": "string"
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert urgency",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_by_alert_title": {
    ///      "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///      "deprecated": true,
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        0
    ///      ]
    ///    },
    ///    "group_by_alert_urgency": {
    ///      "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///      "deprecated": true,
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        0
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert group",
    ///      "type": "string"
    ///    },
    ///    "targets": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "target_id",
    ///          "target_type"
    ///        ],
    ///        "properties": {
    ///          "target_id": {
    ///            "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Group",
    ///              "Service",
    ///              "EscalationPolicy",
    ///              "Functionality"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "time_window": {
    ///      "description": "The length of time an Alert Group should stay open and accept new alerts",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertGroupDataAttributes {
        ///This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub attributes: ::std::vec::Vec<NewAlertGroupDataAttributesAttributesItem>,
        ///Group alerts when ANY or ALL of the fields are matching.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            NewAlertGroupDataAttributesConditionType,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<NewAlertGroupDataAttributesConditionsItem>,
        ///The description of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by_alert_title: ::std::option::Option<
            NewAlertGroupDataAttributesGroupByAlertTitle,
        >,
        ///[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by_alert_urgency: ::std::option::Option<
            NewAlertGroupDataAttributesGroupByAlertUrgency,
        >,
        ///The name of the alert group
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub targets: ::std::vec::Vec<NewAlertGroupDataAttributesTargetsItem>,
        ///The length of time an Alert Group should stay open and accept new alerts
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_window: ::std::option::Option<i64>,
    }
    impl NewAlertGroupDataAttributes {
        pub fn builder() -> builder::NewAlertGroupDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertGroupDataAttributesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "json_path": {
    ///      "description": "The JSON path to the value to group by.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertGroupDataAttributesAttributesItem {
        ///The JSON path to the value to group by.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for NewAlertGroupDataAttributesAttributesItem {
        fn default() -> Self {
            Self {
                json_path: Default::default(),
            }
        }
    }
    impl NewAlertGroupDataAttributesAttributesItem {
        pub fn builder() -> builder::NewAlertGroupDataAttributesAttributesItem {
            Default::default()
        }
    }
    ///Group alerts when ANY or ALL of the fields are matching.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertGroupDataAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display for NewAlertGroupDataAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertGroupDataAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertGroupDataAttributesConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": "string"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty",
    ///        "matches_existing_alert"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": "string"
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertGroupDataAttributesConditionsItem {
        ///The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            NewAlertGroupDataAttributesConditionsItemConditionableType,
        >,
        ///The condition type of the property field
        pub property_field_condition_type: NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType,
        ///The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        ///The type of the property field
        pub property_field_type: NewAlertGroupDataAttributesConditionsItemPropertyFieldType,
        ///The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub property_field_values: ::std::vec::Vec<::std::string::String>,
    }
    impl NewAlertGroupDataAttributesConditionsItem {
        pub fn builder() -> builder::NewAlertGroupDataAttributesConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertGroupDataAttributesConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertGroupDataAttributesConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertGroupDataAttributesConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertGroupDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertGroupDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertGroupDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty",
    ///    "matches_existing_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
        #[serde(rename = "matches_existing_alert")]
        MatchesExistingAlert,
    }
    impl ::std::fmt::Display
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
                Self::MatchesExistingAlert => f.write_str("matches_existing_alert"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                "matches_existing_alert" => Ok(Self::MatchesExistingAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertGroupDataAttributesConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///  "deprecated": true,
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewAlertGroupDataAttributesGroupByAlertTitle(i64);
    impl ::std::ops::Deref for NewAlertGroupDataAttributesGroupByAlertTitle {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewAlertGroupDataAttributesGroupByAlertTitle> for i64 {
        fn from(value: NewAlertGroupDataAttributesGroupByAlertTitle) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for NewAlertGroupDataAttributesGroupByAlertTitle {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for NewAlertGroupDataAttributesGroupByAlertTitle {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///  "deprecated": true,
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewAlertGroupDataAttributesGroupByAlertUrgency(i64);
    impl ::std::ops::Deref for NewAlertGroupDataAttributesGroupByAlertUrgency {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewAlertGroupDataAttributesGroupByAlertUrgency> for i64 {
        fn from(value: NewAlertGroupDataAttributesGroupByAlertUrgency) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64>
    for NewAlertGroupDataAttributesGroupByAlertUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for NewAlertGroupDataAttributesGroupByAlertUrgency {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`NewAlertGroupDataAttributesTargetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Group",
    ///        "Service",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertGroupDataAttributesTargetsItem {
        ///id for the Group, Service, EscalationPolicy or Functionality
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: NewAlertGroupDataAttributesTargetsItemTargetType,
    }
    impl NewAlertGroupDataAttributesTargetsItem {
        pub fn builder() -> builder::NewAlertGroupDataAttributesTargetsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Group",
    ///    "Service",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertGroupDataAttributesTargetsItemTargetType {
        Group,
        Service,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for NewAlertGroupDataAttributesTargetsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Group => f.write_str("Group"),
                Self::Service => f.write_str("Service"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertGroupDataAttributesTargetsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Group" => Ok(Self::Group),
                "Service" => Ok(Self::Service),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertGroupDataAttributesTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertGroupDataAttributesTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertGroupDataAttributesTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertGroupDataType {
        #[serde(rename = "alert_groups")]
        AlertGroups,
    }
    impl ::std::fmt::Display for NewAlertGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertGroups => f.write_str("alert_groups"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_groups" => Ok(Self::AlertGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRoute`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "alerts_source_ids",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "alerts_source_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The ID of the alerts source",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert route is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert route",
    ///              "type": "string"
    ///            },
    ///            "owning_team_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The ID of the owning team",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "rules": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "condition_groups",
    ///                  "destinations",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "condition_groups": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "required": [
    ///                        "conditions"
    ///                      ],
    ///                      "properties": {
    ///                        "conditions": {
    ///                          "type": "array",
    ///                          "items": {
    ///                            "type": "object",
    ///                            "required": [
    ///                              "property_field_condition_type",
    ///                              "property_field_type"
    ///                            ],
    ///                            "properties": {
    ///                              "alert_urgency_ids": {
    ///                                "description": "The Alert Urgency IDs to check in the condition",
    ///                                "type": [
    ///                                  "array",
    ///                                  "null"
    ///                                ],
    ///                                "items": {
    ///                                  "type": "string"
    ///                                }
    ///                              },
    ///                              "conditionable_id": {
    ///                                "description": "The ID of the conditionable",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ],
    ///                                "format": "uuid"
    ///                              },
    ///                              "conditionable_type": {
    ///                                "description": "The type of the conditionable",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ],
    ///                                "enum": [
    ///                                  "AlertField"
    ///                                ]
    ///                              },
    ///                              "property_field_condition_type": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "is_one_of",
    ///                                  "is_not_one_of",
    ///                                  "contains",
    ///                                  "does_not_contain",
    ///                                  "starts_with",
    ///                                  "ends_with",
    ///                                  "matches_regex",
    ///                                  "is_empty"
    ///                                ]
    ///                              },
    ///                              "property_field_name": {
    ///                                "description": "The name of the property field",
    ///                                "type": "string"
    ///                              },
    ///                              "property_field_type": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "attribute",
    ///                                  "payload",
    ///                                  "alert_field"
    ///                                ]
    ///                              },
    ///                              "property_field_value": {
    ///                                "description": "The value of the property field",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ]
    ///                              },
    ///                              "property_field_values": {
    ///                                "type": [
    ///                                  "array",
    ///                                  "null"
    ///                                ],
    ///                                "items": {
    ///                                  "type": "string"
    ///                                }
    ///                              }
    ///                            }
    ///                          }
    ///                        },
    ///                        "position": {
    ///                          "description": "The position of the condition group",
    ///                          "type": "integer"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "destinations": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "required": [
    ///                        "target_id",
    ///                        "target_type"
    ///                      ],
    ///                      "properties": {
    ///                        "target_id": {
    ///                          "description": "The ID of the target",
    ///                          "type": "string",
    ///                          "format": "uuid"
    ///                        },
    ///                        "target_type": {
    ///                          "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                          "type": "string",
    ///                          "enum": [
    ///                            "Service",
    ///                            "Group",
    ///                            "Functionality",
    ///                            "EscalationPolicy"
    ///                          ]
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "fallback_rule": {
    ///                    "description": "Whether this is a fallback rule",
    ///                    "default": false,
    ///                    "type": "boolean"
    ///                  },
    ///                  "name": {
    ///                    "description": "The name of the alert routing rule",
    ///                    "type": "string"
    ///                  },
    ///                  "position": {
    ///                    "description": "The position of the alert routing rule for ordering evaluation",
    ///                    "type": "integer"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRoute {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<NewAlertRouteData>,
    }
    impl ::std::default::Default for NewAlertRoute {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl NewAlertRoute {
        pub fn builder() -> builder::NewAlertRoute {
            Default::default()
        }
    }
    ///`NewAlertRouteData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "alerts_source_ids",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "alerts_source_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The ID of the alerts source",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert route is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert route",
    ///          "type": "string"
    ///        },
    ///        "owning_team_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The ID of the owning team",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "rules": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "condition_groups",
    ///              "destinations",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "condition_groups": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "conditions"
    ///                  ],
    ///                  "properties": {
    ///                    "conditions": {
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "object",
    ///                        "required": [
    ///                          "property_field_condition_type",
    ///                          "property_field_type"
    ///                        ],
    ///                        "properties": {
    ///                          "alert_urgency_ids": {
    ///                            "description": "The Alert Urgency IDs to check in the condition",
    ///                            "type": [
    ///                              "array",
    ///                              "null"
    ///                            ],
    ///                            "items": {
    ///                              "type": "string"
    ///                            }
    ///                          },
    ///                          "conditionable_id": {
    ///                            "description": "The ID of the conditionable",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ],
    ///                            "format": "uuid"
    ///                          },
    ///                          "conditionable_type": {
    ///                            "description": "The type of the conditionable",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ],
    ///                            "enum": [
    ///                              "AlertField"
    ///                            ]
    ///                          },
    ///                          "property_field_condition_type": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "is_one_of",
    ///                              "is_not_one_of",
    ///                              "contains",
    ///                              "does_not_contain",
    ///                              "starts_with",
    ///                              "ends_with",
    ///                              "matches_regex",
    ///                              "is_empty"
    ///                            ]
    ///                          },
    ///                          "property_field_name": {
    ///                            "description": "The name of the property field",
    ///                            "type": "string"
    ///                          },
    ///                          "property_field_type": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "attribute",
    ///                              "payload",
    ///                              "alert_field"
    ///                            ]
    ///                          },
    ///                          "property_field_value": {
    ///                            "description": "The value of the property field",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "property_field_values": {
    ///                            "type": [
    ///                              "array",
    ///                              "null"
    ///                            ],
    ///                            "items": {
    ///                              "type": "string"
    ///                            }
    ///                          }
    ///                        }
    ///                      }
    ///                    },
    ///                    "position": {
    ///                      "description": "The position of the condition group",
    ///                      "type": "integer"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "destinations": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "target_id",
    ///                    "target_type"
    ///                  ],
    ///                  "properties": {
    ///                    "target_id": {
    ///                      "description": "The ID of the target",
    ///                      "type": "string",
    ///                      "format": "uuid"
    ///                    },
    ///                    "target_type": {
    ///                      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "Service",
    ///                        "Group",
    ///                        "Functionality",
    ///                        "EscalationPolicy"
    ///                      ]
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "fallback_rule": {
    ///                "description": "Whether this is a fallback rule",
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "name": {
    ///                "description": "The name of the alert routing rule",
    ///                "type": "string"
    ///              },
    ///              "position": {
    ///                "description": "The position of the alert routing rule for ordering evaluation",
    ///                "type": "integer"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRouteData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<NewAlertRouteDataAttributes>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<NewAlertRouteDataType>,
    }
    impl ::std::default::Default for NewAlertRouteData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl NewAlertRouteData {
        pub fn builder() -> builder::NewAlertRouteData {
            Default::default()
        }
    }
    ///`NewAlertRouteDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alerts_source_ids",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alerts_source_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the alerts source",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert route is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert route",
    ///      "type": "string"
    ///    },
    ///    "owning_team_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the owning team",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "condition_groups",
    ///          "destinations",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "condition_groups": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "conditions"
    ///              ],
    ///              "properties": {
    ///                "conditions": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "required": [
    ///                      "property_field_condition_type",
    ///                      "property_field_type"
    ///                    ],
    ///                    "properties": {
    ///                      "alert_urgency_ids": {
    ///                        "description": "The Alert Urgency IDs to check in the condition",
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      },
    ///                      "conditionable_id": {
    ///                        "description": "The ID of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "format": "uuid"
    ///                      },
    ///                      "conditionable_type": {
    ///                        "description": "The type of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "enum": [
    ///                          "AlertField"
    ///                        ]
    ///                      },
    ///                      "property_field_condition_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "starts_with",
    ///                          "ends_with",
    ///                          "matches_regex",
    ///                          "is_empty"
    ///                        ]
    ///                      },
    ///                      "property_field_name": {
    ///                        "description": "The name of the property field",
    ///                        "type": "string"
    ///                      },
    ///                      "property_field_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "attribute",
    ///                          "payload",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "property_field_value": {
    ///                        "description": "The value of the property field",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "property_field_values": {
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "position": {
    ///                  "description": "The position of the condition group",
    ///                  "type": "integer"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "destinations": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "target_id",
    ///                "target_type"
    ///              ],
    ///              "properties": {
    ///                "target_id": {
    ///                  "description": "The ID of the target",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_type": {
    ///                  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "Functionality",
    ///                    "EscalationPolicy"
    ///                  ]
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "fallback_rule": {
    ///            "description": "Whether this is a fallback rule",
    ///            "default": false,
    ///            "type": "boolean"
    ///          },
    ///          "name": {
    ///            "description": "The name of the alert routing rule",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the alert routing rule for ordering evaluation",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRouteDataAttributes {
        pub alerts_source_ids: ::std::vec::Vec<::uuid::Uuid>,
        ///Whether the alert route is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert route
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owning_team_ids: ::std::vec::Vec<::uuid::Uuid>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<NewAlertRouteDataAttributesRulesItem>,
    }
    impl NewAlertRouteDataAttributes {
        pub fn builder() -> builder::NewAlertRouteDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertRouteDataAttributesRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "condition_groups",
    ///    "destinations",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "condition_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "conditions"
    ///        ],
    ///        "properties": {
    ///          "conditions": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "property_field_condition_type",
    ///                "property_field_type"
    ///              ],
    ///              "properties": {
    ///                "alert_urgency_ids": {
    ///                  "description": "The Alert Urgency IDs to check in the condition",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "conditionable_id": {
    ///                  "description": "The ID of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "format": "uuid"
    ///                },
    ///                "conditionable_type": {
    ///                  "description": "The type of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "AlertField"
    ///                  ]
    ///                },
    ///                "property_field_condition_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "is_one_of",
    ///                    "is_not_one_of",
    ///                    "contains",
    ///                    "does_not_contain",
    ///                    "starts_with",
    ///                    "ends_with",
    ///                    "matches_regex",
    ///                    "is_empty"
    ///                  ]
    ///                },
    ///                "property_field_name": {
    ///                  "description": "The name of the property field",
    ///                  "type": "string"
    ///                },
    ///                "property_field_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "attribute",
    ///                    "payload",
    ///                    "alert_field"
    ///                  ]
    ///                },
    ///                "property_field_value": {
    ///                  "description": "The value of the property field",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "property_field_values": {
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition group",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "destinations": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "target_id",
    ///          "target_type"
    ///        ],
    ///        "properties": {
    ///          "target_id": {
    ///            "description": "The ID of the target",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Service",
    ///              "Group",
    ///              "Functionality",
    ///              "EscalationPolicy"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "fallback_rule": {
    ///      "description": "Whether this is a fallback rule",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRouteDataAttributesRulesItem {
        pub condition_groups: ::std::vec::Vec<
            NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
        >,
        pub destinations: ::std::vec::Vec<
            NewAlertRouteDataAttributesRulesItemDestinationsItem,
        >,
        ///Whether this is a fallback rule
        #[serde(default)]
        pub fallback_rule: bool,
        ///The name of the alert routing rule
        pub name: ::std::string::String,
        ///The position of the alert routing rule for ordering evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewAlertRouteDataAttributesRulesItem {
        pub fn builder() -> builder::NewAlertRouteDataAttributesRulesItem {
            Default::default()
        }
    }
    ///`NewAlertRouteDataAttributesRulesItemConditionGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "conditions"
    ///  ],
    ///  "properties": {
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "property_field_condition_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition group",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
        pub conditions: ::std::vec::Vec<
            NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        >,
        ///The position of the condition group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
        pub fn builder() -> builder::NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
            Default::default()
        }
    }
    ///`NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "property_field_condition_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        ///The Alert Urgency IDs to check in the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
        >,
        pub property_field_condition_type: NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
        ///The name of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        pub property_field_type: NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
        ///The value of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_values: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
    }
    impl NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        pub fn builder() -> builder::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRouteDataAttributesRulesItemDestinationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRouteDataAttributesRulesItemDestinationsItem {
        ///The ID of the target
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
    }
    impl NewAlertRouteDataAttributesRulesItemDestinationsItem {
        pub fn builder() -> builder::NewAlertRouteDataAttributesRulesItemDestinationsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display
    for NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRouteDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRouteDataType {
        #[serde(rename = "alert_routes")]
        AlertRoutes,
    }
    impl ::std::fmt::Display for NewAlertRouteDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutes => f.write_str("alert_routes"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertRouteDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routes" => Ok(Self::AlertRoutes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRoutingRule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "alerts_source_id",
    ///            "destination",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "alerts_source_id": {
    ///              "description": "The ID of the alerts source",
    ///              "type": "string",
    ///              "format": "uuid"
    ///            },
    ///            "condition_type": {
    ///              "description": "The type of condition for the alert routing rule",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "any"
    ///              ]
    ///            },
    ///            "conditions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "property_field_condition_type",
    ///                  "property_field_name",
    ///                  "property_field_type"
    ///                ],
    ///                "properties": {
    ///                  "property_field_condition_type": {
    ///                    "description": "The condition type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "starts_with",
    ///                      "ends_with",
    ///                      "matches_regex",
    ///                      "is_empty"
    ///                    ]
    ///                  },
    ///                  "property_field_name": {
    ///                    "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_type": {
    ///                    "description": "The type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "attribute",
    ///                      "payload"
    ///                    ]
    ///                  },
    ///                  "property_field_value": {
    ///                    "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_values": {
    ///                    "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "destination": {
    ///              "type": "object",
    ///              "required": [
    ///                "target_id",
    ///                "target_type"
    ///              ],
    ///              "properties": {
    ///                "target_id": {
    ///                  "description": "The ID of the target",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_type": {
    ///                  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "Functionality",
    ///                    "EscalationPolicy"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert routing rule is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert routing rule",
    ///              "type": "string"
    ///            },
    ///            "owning_team_ids": {
    ///              "description": "The IDs of the teams which own the alert routing rule. If the user doesn't have Alert Routing Create Permission in On-Call Roles, then this field is required and can contain Team IDs the user is an admin of.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "The position of the alert routing rule for ordering evaluation",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routing_rules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRoutingRule {
        pub data: NewAlertRoutingRuleData,
    }
    impl NewAlertRoutingRule {
        pub fn builder() -> builder::NewAlertRoutingRule {
            Default::default()
        }
    }
    ///`NewAlertRoutingRuleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "alerts_source_id",
    ///        "destination",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "alerts_source_id": {
    ///          "description": "The ID of the alerts source",
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "condition_type": {
    ///          "description": "The type of condition for the alert routing rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "property_field_condition_type",
    ///              "property_field_name",
    ///              "property_field_type"
    ///            ],
    ///            "properties": {
    ///              "property_field_condition_type": {
    ///                "description": "The condition type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with",
    ///                  "matches_regex",
    ///                  "is_empty"
    ///                ]
    ///              },
    ///              "property_field_name": {
    ///                "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                "type": "string"
    ///              },
    ///              "property_field_type": {
    ///                "description": "The type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "attribute",
    ///                  "payload"
    ///                ]
    ///              },
    ///              "property_field_value": {
    ///                "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                "type": "string"
    ///              },
    ///              "property_field_values": {
    ///                "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "destination": {
    ///          "type": "object",
    ///          "required": [
    ///            "target_id",
    ///            "target_type"
    ///          ],
    ///          "properties": {
    ///            "target_id": {
    ///              "description": "The ID of the target",
    ///              "type": "string",
    ///              "format": "uuid"
    ///            },
    ///            "target_type": {
    ///              "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///              "type": "string",
    ///              "enum": [
    ///                "Service",
    ///                "Group",
    ///                "Functionality",
    ///                "EscalationPolicy"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert routing rule is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert routing rule",
    ///          "type": "string"
    ///        },
    ///        "owning_team_ids": {
    ///          "description": "The IDs of the teams which own the alert routing rule. If the user doesn't have Alert Routing Create Permission in On-Call Roles, then this field is required and can contain Team IDs the user is an admin of.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "The position of the alert routing rule for ordering evaluation",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routing_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRoutingRuleData {
        pub attributes: NewAlertRoutingRuleDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertRoutingRuleDataType,
    }
    impl NewAlertRoutingRuleData {
        pub fn builder() -> builder::NewAlertRoutingRuleData {
            Default::default()
        }
    }
    ///`NewAlertRoutingRuleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alerts_source_id",
    ///    "destination",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alerts_source_id": {
    ///      "description": "The ID of the alerts source",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "condition_type": {
    ///      "description": "The type of condition for the alert routing rule",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_name",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": "string"
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "destination": {
    ///      "type": "object",
    ///      "required": [
    ///        "target_id",
    ///        "target_type"
    ///      ],
    ///      "properties": {
    ///        "target_id": {
    ///          "description": "The ID of the target",
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "target_type": {
    ///          "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "Service",
    ///            "Group",
    ///            "Functionality",
    ///            "EscalationPolicy"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert routing rule is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "owning_team_ids": {
    ///      "description": "The IDs of the teams which own the alert routing rule. If the user doesn't have Alert Routing Create Permission in On-Call Roles, then this field is required and can contain Team IDs the user is an admin of.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertRoutingRuleDataAttributes {
        ///The ID of the alerts source
        pub alerts_source_id: ::uuid::Uuid,
        ///The type of condition for the alert routing rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            NewAlertRoutingRuleDataAttributesConditionType,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<NewAlertRoutingRuleDataAttributesConditionsItem>,
        pub destination: NewAlertRoutingRuleDataAttributesDestination,
        ///Whether the alert routing rule is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert routing rule
        pub name: ::std::string::String,
        ///The IDs of the teams which own the alert routing rule. If the user doesn't have Alert Routing Create Permission in On-Call Roles, then this field is required and can contain Team IDs the user is an admin of.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owning_team_ids: ::std::vec::Vec<::uuid::Uuid>,
        ///The position of the alert routing rule for ordering evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewAlertRoutingRuleDataAttributes {
        pub fn builder() -> builder::NewAlertRoutingRuleDataAttributes {
            Default::default()
        }
    }
    ///The type of condition for the alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition for the alert routing rule",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRoutingRuleDataAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display for NewAlertRoutingRuleDataAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertRoutingRuleDataAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRoutingRuleDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRoutingRuleDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRoutingRuleDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRoutingRuleDataAttributesConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_name",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": "string"
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRoutingRuleDataAttributesConditionsItem {
        ///The condition type of the property field
        pub property_field_condition_type: NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType,
        ///The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.
        pub property_field_name: ::std::string::String,
        ///The type of the property field
        pub property_field_type: NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType,
        ///The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub property_field_values: ::std::vec::Vec<::std::string::String>,
    }
    impl NewAlertRoutingRuleDataAttributesConditionsItem {
        pub fn builder() -> builder::NewAlertRoutingRuleDataAttributesConditionsItem {
            Default::default()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRoutingRuleDataAttributesDestination`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertRoutingRuleDataAttributesDestination {
        ///The ID of the target
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: NewAlertRoutingRuleDataAttributesDestinationTargetType,
    }
    impl NewAlertRoutingRuleDataAttributesDestination {
        pub fn builder() -> builder::NewAlertRoutingRuleDataAttributesDestination {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRoutingRuleDataAttributesDestinationTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display for NewAlertRoutingRuleDataAttributesDestinationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertRoutingRuleDataAttributesDestinationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertRoutingRuleDataAttributesDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRoutingRuleDataAttributesDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertRoutingRuleDataAttributesDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertRoutingRuleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routing_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertRoutingRuleDataType {
        #[serde(rename = "alert_routing_rules")]
        AlertRoutingRules,
    }
    impl ::std::fmt::Display for NewAlertRoutingRuleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutingRules => f.write_str("alert_routing_rules"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertRoutingRuleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routing_rules" => Ok(Self::AlertRoutingRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertRoutingRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertRoutingRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertRoutingRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "description",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the alert urgency",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert urgency",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the alert urgency",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_urgencies"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertUrgency {
        pub data: NewAlertUrgencyData,
    }
    impl NewAlertUrgency {
        pub fn builder() -> builder::NewAlertUrgency {
            Default::default()
        }
    }
    ///`NewAlertUrgencyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "description",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the alert urgency",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert urgency",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the alert urgency",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_urgencies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertUrgencyData {
        pub attributes: NewAlertUrgencyDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertUrgencyDataType,
    }
    impl NewAlertUrgencyData {
        pub fn builder() -> builder::NewAlertUrgencyData {
            Default::default()
        }
    }
    ///`NewAlertUrgencyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "description",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the alert urgency",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertUrgencyDataAttributes {
        ///The description of the alert urgency
        pub description: ::std::string::String,
        ///The name of the alert urgency
        pub name: ::std::string::String,
        ///Position of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewAlertUrgencyDataAttributes {
        pub fn builder() -> builder::NewAlertUrgencyDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertUrgencyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_urgencies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertUrgencyDataType {
        #[serde(rename = "alert_urgencies")]
        AlertUrgencies,
    }
    impl ::std::fmt::Display for NewAlertUrgencyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertUrgencies => f.write_str("alert_urgencies"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertUrgencyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_urgencies" => Ok(Self::AlertUrgencies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertUrgencyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertUrgencyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertUrgencyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertsSource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "alert_source_fields_attributes": {
    ///              "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "alert_field_id": {
    ///                    "description": "The ID of the alert field",
    ///                    "type": "string"
    ///                  },
    ///                  "template_body": {
    ///                    "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "alert_source_urgency_rules_attributes": {
    ///              "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "alert_urgency_id": {
    ///                    "description": "The ID of the alert urgency",
    ///                    "type": "string"
    ///                  },
    ///                  "conditionable_id": {
    ///                    "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "conditionable_type": {
    ///                    "description": "The type of the conditionable",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "AlertField"
    ///                    ]
    ///                  },
    ///                  "json_path": {
    ///                    "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "kind": {
    ///                    "description": "The kind of the conditionable",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "payload",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "operator": {
    ///                    "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "contains",
    ///                      "does_not_contain"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "alert_template_attributes": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "description": {
    ///                  "description": "The alert description.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "external_url": {
    ///                  "description": "The alert URL.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "title": {
    ///                  "description": "The alert title.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "ID for the default alert urgency assigned to this alert source",
    ///              "type": "string"
    ///            },
    ///            "deduplicate_alerts_by_key": {
    ///              "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///              "type": "boolean"
    ///            },
    ///            "deduplication_key_kind": {
    ///              "description": "Kind of deduplication key.",
    ///              "type": "string",
    ///              "enum": [
    ///                "payload"
    ///              ]
    ///            },
    ///            "deduplication_key_path": {
    ///              "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "deduplication_key_regexp": {
    ///              "description": "Regular expression to extract key from value found at key path.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert source",
    ///              "type": "string"
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "List of team IDs that will own the alert source",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "resolution_rule_attributes": {
    ///              "description": "Provide additional attributes for email alerts source",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "condition_type": {
    ///                  "description": "The type of condition to evaluate to apply auto resolution rule",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "all",
    ///                    "any"
    ///                  ]
    ///                },
    ///                "conditions_attributes": {
    ///                  "description": "List of conditions to evaluate for auto resolution",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "conditionable_id": {
    ///                        "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "conditionable_type": {
    ///                        "description": "The type of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "enum": [
    ///                          "AlertField"
    ///                        ]
    ///                      },
    ///                      "field": {
    ///                        "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "kind": {
    ///                        "description": "The kind of the conditionable",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "payload",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "operator": {
    ///                        "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "starts_with",
    ///                          "ends_with"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "enabled": {
    ///                  "description": "Set this to true to enable the auto resolution rule",
    ///                  "type": "boolean"
    ///                },
    ///                "identifier_json_path": {
    ///                  "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "identifier_matchable_id": {
    ///                  "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "identifier_matchable_type": {
    ///                  "description": "The type of the identifier matchable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "AlertField"
    ///                  ]
    ///                },
    ///                "identifier_reference_kind": {
    ///                  "description": "The kind of the identifier reference",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "payload",
    ///                    "alert_field"
    ///                  ]
    ///                },
    ///                "identifier_value_regex": {
    ///                  "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "source_type": {
    ///              "description": "The alert source type",
    ///              "type": "string",
    ///              "enum": [
    ///                "email",
    ///                "app_dynamics",
    ///                "catchpoint",
    ///                "cloudflare",
    ///                "datadog",
    ///                "dynatrace",
    ///                "alertmanager",
    ///                "google_cloud",
    ///                "grafana",
    ///                "sentry",
    ///                "generic_webhook",
    ///                "cloud_watch",
    ///                "aws_sns",
    ///                "checkly",
    ///                "azure",
    ///                "new_relic",
    ///                "splunk",
    ///                "chronosphere",
    ///                "app_optics",
    ///                "bug_snag",
    ///                "honeycomb",
    ///                "monte_carlo",
    ///                "nagios",
    ///                "prtg"
    ///              ]
    ///            },
    ///            "sourceable_attributes": {
    ///              "description": "Provide additional attributes for generic_webhook alerts source",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "accept_threaded_emails": {
    ///                  "description": "Set this to false to reject threaded emails",
    ///                  "type": "boolean"
    ///                },
    ///                "auto_resolve": {
    ///                  "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///                  "type": "boolean"
    ///                },
    ///                "field_mappings_attributes": {
    ///                  "description": "Specify rules to auto resolve alerts",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "field": {
    ///                        "description": "Select the field on which the condition to be evaluated",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "external_id",
    ///                          "state",
    ///                          "alert_title",
    ///                          "alert_description",
    ///                          "alert_external_url",
    ///                          "notification_target_type",
    ///                          "notification_target_id"
    ///                        ]
    ///                      },
    ///                      "json_path": {
    ///                        "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "resolve_state": {
    ///                  "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_sources"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSource {
        pub data: NewAlertsSourceData,
    }
    impl NewAlertsSource {
        pub fn builder() -> builder::NewAlertsSource {
            Default::default()
        }
    }
    ///`NewAlertsSourceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "alert_source_fields_attributes": {
    ///          "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "alert_field_id": {
    ///                "description": "The ID of the alert field",
    ///                "type": "string"
    ///              },
    ///              "template_body": {
    ///                "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "alert_source_urgency_rules_attributes": {
    ///          "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "alert_urgency_id": {
    ///                "description": "The ID of the alert urgency",
    ///                "type": "string"
    ///              },
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "json_path": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "kind": {
    ///                "description": "The kind of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "operator": {
    ///                "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "alert_template_attributes": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The alert description.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_url": {
    ///              "description": "The alert URL.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The alert title.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "ID for the default alert urgency assigned to this alert source",
    ///          "type": "string"
    ///        },
    ///        "deduplicate_alerts_by_key": {
    ///          "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///          "type": "boolean"
    ///        },
    ///        "deduplication_key_kind": {
    ///          "description": "Kind of deduplication key.",
    ///          "type": "string",
    ///          "enum": [
    ///            "payload"
    ///          ]
    ///        },
    ///        "deduplication_key_path": {
    ///          "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "deduplication_key_regexp": {
    ///          "description": "Regular expression to extract key from value found at key path.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert source",
    ///          "type": "string"
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "List of team IDs that will own the alert source",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "resolution_rule_attributes": {
    ///          "description": "Provide additional attributes for email alerts source",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "condition_type": {
    ///              "description": "The type of condition to evaluate to apply auto resolution rule",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "any"
    ///              ]
    ///            },
    ///            "conditions_attributes": {
    ///              "description": "List of conditions to evaluate for auto resolution",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "conditionable_id": {
    ///                    "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "conditionable_type": {
    ///                    "description": "The type of the conditionable",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "AlertField"
    ///                    ]
    ///                  },
    ///                  "field": {
    ///                    "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "kind": {
    ///                    "description": "The kind of the conditionable",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "payload",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "operator": {
    ///                    "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "starts_with",
    ///                      "ends_with"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Set this to true to enable the auto resolution rule",
    ///              "type": "boolean"
    ///            },
    ///            "identifier_json_path": {
    ///              "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "identifier_matchable_id": {
    ///              "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "identifier_matchable_type": {
    ///              "description": "The type of the identifier matchable",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "AlertField"
    ///              ]
    ///            },
    ///            "identifier_reference_kind": {
    ///              "description": "The kind of the identifier reference",
    ///              "type": "string",
    ///              "enum": [
    ///                "payload",
    ///                "alert_field"
    ///              ]
    ///            },
    ///            "identifier_value_regex": {
    ///              "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "source_type": {
    ///          "description": "The alert source type",
    ///          "type": "string",
    ///          "enum": [
    ///            "email",
    ///            "app_dynamics",
    ///            "catchpoint",
    ///            "cloudflare",
    ///            "datadog",
    ///            "dynatrace",
    ///            "alertmanager",
    ///            "google_cloud",
    ///            "grafana",
    ///            "sentry",
    ///            "generic_webhook",
    ///            "cloud_watch",
    ///            "aws_sns",
    ///            "checkly",
    ///            "azure",
    ///            "new_relic",
    ///            "splunk",
    ///            "chronosphere",
    ///            "app_optics",
    ///            "bug_snag",
    ///            "honeycomb",
    ///            "monte_carlo",
    ///            "nagios",
    ///            "prtg"
    ///          ]
    ///        },
    ///        "sourceable_attributes": {
    ///          "description": "Provide additional attributes for generic_webhook alerts source",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "accept_threaded_emails": {
    ///              "description": "Set this to false to reject threaded emails",
    ///              "type": "boolean"
    ///            },
    ///            "auto_resolve": {
    ///              "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///              "type": "boolean"
    ///            },
    ///            "field_mappings_attributes": {
    ///              "description": "Specify rules to auto resolve alerts",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "field": {
    ///                    "description": "Select the field on which the condition to be evaluated",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "external_id",
    ///                      "state",
    ///                      "alert_title",
    ///                      "alert_description",
    ///                      "alert_external_url",
    ///                      "notification_target_type",
    ///                      "notification_target_id"
    ///                    ]
    ///                  },
    ///                  "json_path": {
    ///                    "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "resolve_state": {
    ///              "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_sources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceData {
        pub attributes: NewAlertsSourceDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAlertsSourceDataType,
    }
    impl NewAlertsSourceData {
        pub fn builder() -> builder::NewAlertsSourceData {
            Default::default()
        }
    }
    ///`NewAlertsSourceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alert_source_fields_attributes": {
    ///      "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "description": "The ID of the alert field",
    ///            "type": "string"
    ///          },
    ///          "template_body": {
    ///            "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_source_urgency_rules_attributes": {
    ///      "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "alert_urgency_id": {
    ///            "description": "The ID of the alert urgency",
    ///            "type": "string"
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "json_path": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "kind": {
    ///            "description": "The kind of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "operator": {
    ///            "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "is",
    ///              "is_not",
    ///              "contains",
    ///              "does_not_contain"
    ///            ]
    ///          },
    ///          "value": {
    ///            "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_template_attributes": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The alert description.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_url": {
    ///          "description": "The alert URL.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The alert title.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "ID for the default alert urgency assigned to this alert source",
    ///      "type": "string"
    ///    },
    ///    "deduplicate_alerts_by_key": {
    ///      "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///      "type": "boolean"
    ///    },
    ///    "deduplication_key_kind": {
    ///      "description": "Kind of deduplication key.",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload"
    ///      ]
    ///    },
    ///    "deduplication_key_path": {
    ///      "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "deduplication_key_regexp": {
    ///      "description": "Regular expression to extract key from value found at key path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert source",
    ///      "type": "string"
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "List of team IDs that will own the alert source",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "resolution_rule_attributes": {
    ///      "description": "Provide additional attributes for email alerts source",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "condition_type": {
    ///          "description": "The type of condition to evaluate to apply auto resolution rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions_attributes": {
    ///          "description": "List of conditions to evaluate for auto resolution",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "field": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "kind": {
    ///                "description": "The kind of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "operator": {
    ///                "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Set this to true to enable the auto resolution rule",
    ///          "type": "boolean"
    ///        },
    ///        "identifier_json_path": {
    ///          "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "identifier_matchable_id": {
    ///          "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "identifier_matchable_type": {
    ///          "description": "The type of the identifier matchable",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "AlertField"
    ///          ]
    ///        },
    ///        "identifier_reference_kind": {
    ///          "description": "The kind of the identifier reference",
    ///          "type": "string",
    ///          "enum": [
    ///            "payload",
    ///            "alert_field"
    ///          ]
    ///        },
    ///        "identifier_value_regex": {
    ///          "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "source_type": {
    ///      "description": "The alert source type",
    ///      "type": "string",
    ///      "enum": [
    ///        "email",
    ///        "app_dynamics",
    ///        "catchpoint",
    ///        "cloudflare",
    ///        "datadog",
    ///        "dynatrace",
    ///        "alertmanager",
    ///        "google_cloud",
    ///        "grafana",
    ///        "sentry",
    ///        "generic_webhook",
    ///        "cloud_watch",
    ///        "aws_sns",
    ///        "checkly",
    ///        "azure",
    ///        "new_relic",
    ///        "splunk",
    ///        "chronosphere",
    ///        "app_optics",
    ///        "bug_snag",
    ///        "honeycomb",
    ///        "monte_carlo",
    ///        "nagios",
    ///        "prtg"
    ///      ]
    ///    },
    ///    "sourceable_attributes": {
    ///      "description": "Provide additional attributes for generic_webhook alerts source",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "accept_threaded_emails": {
    ///          "description": "Set this to false to reject threaded emails",
    ///          "type": "boolean"
    ///        },
    ///        "auto_resolve": {
    ///          "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///          "type": "boolean"
    ///        },
    ///        "field_mappings_attributes": {
    ///          "description": "Specify rules to auto resolve alerts",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "field": {
    ///                "description": "Select the field on which the condition to be evaluated",
    ///                "type": "string",
    ///                "enum": [
    ///                  "external_id",
    ///                  "state",
    ///                  "alert_title",
    ///                  "alert_description",
    ///                  "alert_external_url",
    ///                  "notification_target_type",
    ///                  "notification_target_id"
    ///                ]
    ///              },
    ///              "json_path": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "resolve_state": {
    ///          "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAlertsSourceDataAttributes {
        ///List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_source_fields_attributes: ::std::vec::Vec<
            NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
        >,
        ///List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_source_urgency_rules_attributes: ::std::vec::Vec<
            NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_template_attributes: ::std::option::Option<
            NewAlertsSourceDataAttributesAlertTemplateAttributes,
        >,
        ///ID for the default alert urgency assigned to this alert source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplicate_alerts_by_key: ::std::option::Option<bool>,
        ///Kind of deduplication key.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_kind: ::std::option::Option<
            NewAlertsSourceDataAttributesDeduplicationKeyKind,
        >,
        ///Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_path: ::std::option::Option<::std::string::String>,
        ///Regular expression to extract key from value found at key path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_regexp: ::std::option::Option<::std::string::String>,
        ///Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert source
        pub name: ::std::string::String,
        ///List of team IDs that will own the alert source
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owner_group_ids: ::std::vec::Vec<::std::string::String>,
        ///Provide additional attributes for email alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_rule_attributes: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributes,
        >,
        ///The alert source type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source_type: ::std::option::Option<NewAlertsSourceDataAttributesSourceType>,
        ///Provide additional attributes for generic_webhook alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sourceable_attributes: ::std::option::Option<
            NewAlertsSourceDataAttributesSourceableAttributes,
        >,
    }
    impl NewAlertsSourceDataAttributes {
        pub fn builder() -> builder::NewAlertsSourceDataAttributes {
            Default::default()
        }
    }
    ///`NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "description": "The ID of the alert field",
    ///      "type": "string"
    ///    },
    ///    "template_body": {
    ///      "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
        ///The ID of the alert field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_field_id: ::std::option::Option<::std::string::String>,
        ///Liquid expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_body: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
        fn default() -> Self {
            Self {
                alert_field_id: Default::default(),
                template_body: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            Default::default()
        }
    }
    ///`NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "The ID of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "json_path": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "operator": {
    ///      "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "is",
    ///        "is_not",
    ///        "contains",
    ///        "does_not_contain"
    ///      ]
    ///    },
    ///    "value": {
    ///      "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
        ///The ID of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
        ///The kind of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind,
        >,
        ///Comparison operator used to evaluate the extracted value against the specified condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<
            NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator,
        >,
        ///Value that the extracted payload data is compared to using the specified operator to determine a match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
        fn default() -> Self {
            Self {
                alert_urgency_id: Default::default(),
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                json_path: Default::default(),
                kind: Default::default(),
                operator: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Comparison operator used to evaluate the extracted value against the specified condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertsSourceDataAttributesAlertTemplateAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The alert description.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_url": {
    ///      "description": "The alert URL.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The alert title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesAlertTemplateAttributes {
        ///The alert description.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The alert URL.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The alert title.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewAlertsSourceDataAttributesAlertTemplateAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                external_url: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesAlertTemplateAttributes {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesAlertTemplateAttributes {
            Default::default()
        }
    }
    ///Kind of deduplication key.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Kind of deduplication key.",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesDeduplicationKeyKind {
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display for NewAlertsSourceDataAttributesDeduplicationKeyKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertsSourceDataAttributesDeduplicationKeyKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Provide additional attributes for email alerts source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Provide additional attributes for email alerts source",
    ///  "type": "object",
    ///  "properties": {
    ///    "condition_type": {
    ///      "description": "The type of condition to evaluate to apply auto resolution rule",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions_attributes": {
    ///      "description": "List of conditions to evaluate for auto resolution",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "field": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "kind": {
    ///            "description": "The kind of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "operator": {
    ///            "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "is",
    ///              "is_not",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with"
    ///            ]
    ///          },
    ///          "value": {
    ///            "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Set this to true to enable the auto resolution rule",
    ///      "type": "boolean"
    ///    },
    ///    "identifier_json_path": {
    ///      "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "identifier_matchable_id": {
    ///      "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "identifier_matchable_type": {
    ///      "description": "The type of the identifier matchable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "identifier_reference_kind": {
    ///      "description": "The kind of the identifier reference",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "identifier_value_regex": {
    ///      "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesResolutionRuleAttributes {
        ///The type of condition to evaluate to apply auto resolution rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType,
        >,
        ///List of conditions to evaluate for auto resolution
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions_attributes: ::std::vec::Vec<
            NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
        >,
        ///Set this to true to enable the auto resolution rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_json_path: ::std::option::Option<::std::string::String>,
        ///The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_matchable_id: ::std::option::Option<::std::string::String>,
        ///The type of the identifier matchable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_matchable_type: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType,
        >,
        ///The kind of the identifier reference
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_reference_kind: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind,
        >,
        ///Regex group to further specify the part of the string used as a unique identifier
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_value_regex: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewAlertsSourceDataAttributesResolutionRuleAttributes {
        fn default() -> Self {
            Self {
                condition_type: Default::default(),
                conditions_attributes: Default::default(),
                enabled: Default::default(),
                identifier_json_path: Default::default(),
                identifier_matchable_id: Default::default(),
                identifier_matchable_type: Default::default(),
                identifier_reference_kind: Default::default(),
                identifier_value_regex: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesResolutionRuleAttributes {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesResolutionRuleAttributes {
            Default::default()
        }
    }
    ///The type of condition to evaluate to apply auto resolution rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition to evaluate to apply auto resolution rule",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "field": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "operator": {
    ///      "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "is",
    ///        "is_not",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with"
    ///      ]
    ///    },
    ///    "value": {
    ///      "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field: ::std::option::Option<::std::string::String>,
        ///The kind of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind,
        >,
        ///Comparison operator used to evaluate the extracted value against the specified condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<
            NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator,
        >,
        ///Value that the extracted payload data is compared to using the specified operator to determine a match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
        fn default() -> Self {
            Self {
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                field: Default::default(),
                kind: Default::default(),
                operator: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Comparison operator used to evaluate the extracted value against the specified condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the identifier matchable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the identifier matchable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the identifier reference
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the identifier reference",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The alert source type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The alert source type",
    ///  "type": "string",
    ///  "enum": [
    ///    "email",
    ///    "app_dynamics",
    ///    "catchpoint",
    ///    "cloudflare",
    ///    "datadog",
    ///    "dynatrace",
    ///    "alertmanager",
    ///    "google_cloud",
    ///    "grafana",
    ///    "sentry",
    ///    "generic_webhook",
    ///    "cloud_watch",
    ///    "aws_sns",
    ///    "checkly",
    ///    "azure",
    ///    "new_relic",
    ///    "splunk",
    ///    "chronosphere",
    ///    "app_optics",
    ///    "bug_snag",
    ///    "honeycomb",
    ///    "monte_carlo",
    ///    "nagios",
    ///    "prtg"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesSourceType {
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "app_dynamics")]
        AppDynamics,
        #[serde(rename = "catchpoint")]
        Catchpoint,
        #[serde(rename = "cloudflare")]
        Cloudflare,
        #[serde(rename = "datadog")]
        Datadog,
        #[serde(rename = "dynatrace")]
        Dynatrace,
        #[serde(rename = "alertmanager")]
        Alertmanager,
        #[serde(rename = "google_cloud")]
        GoogleCloud,
        #[serde(rename = "grafana")]
        Grafana,
        #[serde(rename = "sentry")]
        Sentry,
        #[serde(rename = "generic_webhook")]
        GenericWebhook,
        #[serde(rename = "cloud_watch")]
        CloudWatch,
        #[serde(rename = "aws_sns")]
        AwsSns,
        #[serde(rename = "checkly")]
        Checkly,
        #[serde(rename = "azure")]
        Azure,
        #[serde(rename = "new_relic")]
        NewRelic,
        #[serde(rename = "splunk")]
        Splunk,
        #[serde(rename = "chronosphere")]
        Chronosphere,
        #[serde(rename = "app_optics")]
        AppOptics,
        #[serde(rename = "bug_snag")]
        BugSnag,
        #[serde(rename = "honeycomb")]
        Honeycomb,
        #[serde(rename = "monte_carlo")]
        MonteCarlo,
        #[serde(rename = "nagios")]
        Nagios,
        #[serde(rename = "prtg")]
        Prtg,
    }
    impl ::std::fmt::Display for NewAlertsSourceDataAttributesSourceType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Email => f.write_str("email"),
                Self::AppDynamics => f.write_str("app_dynamics"),
                Self::Catchpoint => f.write_str("catchpoint"),
                Self::Cloudflare => f.write_str("cloudflare"),
                Self::Datadog => f.write_str("datadog"),
                Self::Dynatrace => f.write_str("dynatrace"),
                Self::Alertmanager => f.write_str("alertmanager"),
                Self::GoogleCloud => f.write_str("google_cloud"),
                Self::Grafana => f.write_str("grafana"),
                Self::Sentry => f.write_str("sentry"),
                Self::GenericWebhook => f.write_str("generic_webhook"),
                Self::CloudWatch => f.write_str("cloud_watch"),
                Self::AwsSns => f.write_str("aws_sns"),
                Self::Checkly => f.write_str("checkly"),
                Self::Azure => f.write_str("azure"),
                Self::NewRelic => f.write_str("new_relic"),
                Self::Splunk => f.write_str("splunk"),
                Self::Chronosphere => f.write_str("chronosphere"),
                Self::AppOptics => f.write_str("app_optics"),
                Self::BugSnag => f.write_str("bug_snag"),
                Self::Honeycomb => f.write_str("honeycomb"),
                Self::MonteCarlo => f.write_str("monte_carlo"),
                Self::Nagios => f.write_str("nagios"),
                Self::Prtg => f.write_str("prtg"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertsSourceDataAttributesSourceType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email" => Ok(Self::Email),
                "app_dynamics" => Ok(Self::AppDynamics),
                "catchpoint" => Ok(Self::Catchpoint),
                "cloudflare" => Ok(Self::Cloudflare),
                "datadog" => Ok(Self::Datadog),
                "dynatrace" => Ok(Self::Dynatrace),
                "alertmanager" => Ok(Self::Alertmanager),
                "google_cloud" => Ok(Self::GoogleCloud),
                "grafana" => Ok(Self::Grafana),
                "sentry" => Ok(Self::Sentry),
                "generic_webhook" => Ok(Self::GenericWebhook),
                "cloud_watch" => Ok(Self::CloudWatch),
                "aws_sns" => Ok(Self::AwsSns),
                "checkly" => Ok(Self::Checkly),
                "azure" => Ok(Self::Azure),
                "new_relic" => Ok(Self::NewRelic),
                "splunk" => Ok(Self::Splunk),
                "chronosphere" => Ok(Self::Chronosphere),
                "app_optics" => Ok(Self::AppOptics),
                "bug_snag" => Ok(Self::BugSnag),
                "honeycomb" => Ok(Self::Honeycomb),
                "monte_carlo" => Ok(Self::MonteCarlo),
                "nagios" => Ok(Self::Nagios),
                "prtg" => Ok(Self::Prtg),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertsSourceDataAttributesSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Provide additional attributes for generic_webhook alerts source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Provide additional attributes for generic_webhook alerts source",
    ///  "type": "object",
    ///  "properties": {
    ///    "accept_threaded_emails": {
    ///      "description": "Set this to false to reject threaded emails",
    ///      "type": "boolean"
    ///    },
    ///    "auto_resolve": {
    ///      "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///      "type": "boolean"
    ///    },
    ///    "field_mappings_attributes": {
    ///      "description": "Specify rules to auto resolve alerts",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "field": {
    ///            "description": "Select the field on which the condition to be evaluated",
    ///            "type": "string",
    ///            "enum": [
    ///              "external_id",
    ///              "state",
    ///              "alert_title",
    ///              "alert_description",
    ///              "alert_external_url",
    ///              "notification_target_type",
    ///              "notification_target_id"
    ///            ]
    ///          },
    ///          "json_path": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "resolve_state": {
    ///      "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesSourceableAttributes {
        ///Set this to false to reject threaded emails
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub accept_threaded_emails: ::std::option::Option<bool>,
        ///Set this to true to auto-resolve alerts based on field_mappings_attributes conditions
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_resolve: ::std::option::Option<bool>,
        ///Specify rules to auto resolve alerts
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub field_mappings_attributes: ::std::vec::Vec<
            NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
        >,
        ///This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolve_state: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for NewAlertsSourceDataAttributesSourceableAttributes {
        fn default() -> Self {
            Self {
                accept_threaded_emails: Default::default(),
                auto_resolve: Default::default(),
                field_mappings_attributes: Default::default(),
                resolve_state: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesSourceableAttributes {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesSourceableAttributes {
            Default::default()
        }
    }
    ///`NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "field": {
    ///      "description": "Select the field on which the condition to be evaluated",
    ///      "type": "string",
    ///      "enum": [
    ///        "external_id",
    ///        "state",
    ///        "alert_title",
    ///        "alert_description",
    ///        "alert_external_url",
    ///        "notification_target_type",
    ///        "notification_target_id"
    ///      ]
    ///    },
    ///    "json_path": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
        ///Select the field on which the condition to be evaluated
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field: ::std::option::Option<
            NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
        fn default() -> Self {
            Self {
                field: Default::default(),
                json_path: Default::default(),
            }
        }
    }
    impl NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
        pub fn builder() -> builder::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            Default::default()
        }
    }
    ///Select the field on which the condition to be evaluated
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Select the field on which the condition to be evaluated",
    ///  "type": "string",
    ///  "enum": [
    ///    "external_id",
    ///    "state",
    ///    "alert_title",
    ///    "alert_description",
    ///    "alert_external_url",
    ///    "notification_target_type",
    ///    "notification_target_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        #[serde(rename = "external_id")]
        ExternalId,
        #[serde(rename = "state")]
        State,
        #[serde(rename = "alert_title")]
        AlertTitle,
        #[serde(rename = "alert_description")]
        AlertDescription,
        #[serde(rename = "alert_external_url")]
        AlertExternalUrl,
        #[serde(rename = "notification_target_type")]
        NotificationTargetType,
        #[serde(rename = "notification_target_id")]
        NotificationTargetId,
    }
    impl ::std::fmt::Display
    for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ExternalId => f.write_str("external_id"),
                Self::State => f.write_str("state"),
                Self::AlertTitle => f.write_str("alert_title"),
                Self::AlertDescription => f.write_str("alert_description"),
                Self::AlertExternalUrl => f.write_str("alert_external_url"),
                Self::NotificationTargetType => f.write_str("notification_target_type"),
                Self::NotificationTargetId => f.write_str("notification_target_id"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "external_id" => Ok(Self::ExternalId),
                "state" => Ok(Self::State),
                "alert_title" => Ok(Self::AlertTitle),
                "alert_description" => Ok(Self::AlertDescription),
                "alert_external_url" => Ok(Self::AlertExternalUrl),
                "notification_target_type" => Ok(Self::NotificationTargetType),
                "notification_target_id" => Ok(Self::NotificationTargetId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAlertsSourceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_sources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAlertsSourceDataType {
        #[serde(rename = "alert_sources")]
        AlertSources,
    }
    impl ::std::fmt::Display for NewAlertsSourceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertSources => f.write_str("alert_sources"),
            }
        }
    }
    impl ::std::str::FromStr for NewAlertsSourceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_sources" => Ok(Self::AlertSources),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAlertsSourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAlertsSourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAlertsSourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewApiKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "expires_at",
    ///            "kind",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "A description of the API key",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "expires_at": {
    ///              "description": "The expiration date of the API key (ISO 8601)",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "group_id": {
    ///              "description": "The group (team) ID. Required when kind is 'team'.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the API key",
    ///              "type": "string",
    ///              "enum": [
    ///                "personal",
    ///                "team",
    ///                "organization"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the API key",
    ///              "type": "string"
    ///            },
    ///            "on_call_role_id": {
    ///              "description": "The on-call role ID for organization API keys",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "role_id": {
    ///              "description": "The role ID for organization API keys",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "api_keys"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewApiKey {
        pub data: NewApiKeyData,
    }
    impl NewApiKey {
        pub fn builder() -> builder::NewApiKey {
            Default::default()
        }
    }
    ///`NewApiKeyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "expires_at",
    ///        "kind",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "A description of the API key",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "expires_at": {
    ///          "description": "The expiration date of the API key (ISO 8601)",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "group_id": {
    ///          "description": "The group (team) ID. Required when kind is 'team'.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the API key",
    ///          "type": "string",
    ///          "enum": [
    ///            "personal",
    ///            "team",
    ///            "organization"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the API key",
    ///          "type": "string"
    ///        },
    ///        "on_call_role_id": {
    ///          "description": "The on-call role ID for organization API keys",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "role_id": {
    ///          "description": "The role ID for organization API keys",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "api_keys"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewApiKeyData {
        pub attributes: NewApiKeyDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewApiKeyDataType,
    }
    impl NewApiKeyData {
        pub fn builder() -> builder::NewApiKeyData {
            Default::default()
        }
    }
    ///`NewApiKeyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "expires_at",
    ///    "kind",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "A description of the API key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "expires_at": {
    ///      "description": "The expiration date of the API key (ISO 8601)",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "group_id": {
    ///      "description": "The group (team) ID. Required when kind is 'team'.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the API key",
    ///      "type": "string",
    ///      "enum": [
    ///        "personal",
    ///        "team",
    ///        "organization"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the API key",
    ///      "type": "string"
    ///    },
    ///    "on_call_role_id": {
    ///      "description": "The on-call role ID for organization API keys",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "role_id": {
    ///      "description": "The role ID for organization API keys",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewApiKeyDataAttributes {
        ///A description of the API key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The expiration date of the API key (ISO 8601)
        pub expires_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///The group (team) ID. Required when kind is 'team'.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_id: ::std::option::Option<::std::string::String>,
        ///The kind of the API key
        pub kind: NewApiKeyDataAttributesKind,
        ///The name of the API key
        pub name: ::std::string::String,
        ///The on-call role ID for organization API keys
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub on_call_role_id: ::std::option::Option<::std::string::String>,
        ///The role ID for organization API keys
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub role_id: ::std::option::Option<::std::string::String>,
    }
    impl NewApiKeyDataAttributes {
        pub fn builder() -> builder::NewApiKeyDataAttributes {
            Default::default()
        }
    }
    ///The kind of the API key
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the API key",
    ///  "type": "string",
    ///  "enum": [
    ///    "personal",
    ///    "team",
    ///    "organization"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewApiKeyDataAttributesKind {
        #[serde(rename = "personal")]
        Personal,
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "organization")]
        Organization,
    }
    impl ::std::fmt::Display for NewApiKeyDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Personal => f.write_str("personal"),
                Self::Team => f.write_str("team"),
                Self::Organization => f.write_str("organization"),
            }
        }
    }
    impl ::std::str::FromStr for NewApiKeyDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "personal" => Ok(Self::Personal),
                "team" => Ok(Self::Team),
                "organization" => Ok(Self::Organization),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewApiKeyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewApiKeyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewApiKeyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewApiKeyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "api_keys"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewApiKeyDataType {
        #[serde(rename = "api_keys")]
        ApiKeys,
    }
    impl ::std::fmt::Display for NewApiKeyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ApiKeys => f.write_str("api_keys"),
            }
        }
    }
    impl ::std::str::FromStr for NewApiKeyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "api_keys" => Ok(Self::ApiKeys),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAuthorization`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "authorizable_id",
    ///            "authorizable_type",
    ///            "grantee_id",
    ///            "grantee_type",
    ///            "permissions"
    ///          ],
    ///          "properties": {
    ///            "authorizable_id": {
    ///              "description": "The id of the resource being accessed.",
    ///              "type": "string"
    ///            },
    ///            "authorizable_type": {
    ///              "description": "The type of resource being accessed.",
    ///              "type": "string",
    ///              "enum": [
    ///                "Dashboard"
    ///              ]
    ///            },
    ///            "grantee_id": {
    ///              "description": "The resource id granted access.",
    ///              "type": "string"
    ///            },
    ///            "grantee_type": {
    ///              "description": "The type of resource granted access.",
    ///              "type": "string",
    ///              "enum": [
    ///                "User",
    ///                "Team"
    ///              ]
    ///            },
    ///            "permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "read",
    ///                  "update",
    ///                  "authorize",
    ///                  "destroy"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "authorizations"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAuthorization {
        pub data: NewAuthorizationData,
    }
    impl NewAuthorization {
        pub fn builder() -> builder::NewAuthorization {
            Default::default()
        }
    }
    ///`NewAuthorizationData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "authorizable_id",
    ///        "authorizable_type",
    ///        "grantee_id",
    ///        "grantee_type",
    ///        "permissions"
    ///      ],
    ///      "properties": {
    ///        "authorizable_id": {
    ///          "description": "The id of the resource being accessed.",
    ///          "type": "string"
    ///        },
    ///        "authorizable_type": {
    ///          "description": "The type of resource being accessed.",
    ///          "type": "string",
    ///          "enum": [
    ///            "Dashboard"
    ///          ]
    ///        },
    ///        "grantee_id": {
    ///          "description": "The resource id granted access.",
    ///          "type": "string"
    ///        },
    ///        "grantee_type": {
    ///          "description": "The type of resource granted access.",
    ///          "type": "string",
    ///          "enum": [
    ///            "User",
    ///            "Team"
    ///          ]
    ///        },
    ///        "permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "read",
    ///              "update",
    ///              "authorize",
    ///              "destroy"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "authorizations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewAuthorizationData {
        pub attributes: NewAuthorizationDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewAuthorizationDataType,
    }
    impl NewAuthorizationData {
        pub fn builder() -> builder::NewAuthorizationData {
            Default::default()
        }
    }
    ///`NewAuthorizationDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "authorizable_id",
    ///    "authorizable_type",
    ///    "grantee_id",
    ///    "grantee_type",
    ///    "permissions"
    ///  ],
    ///  "properties": {
    ///    "authorizable_id": {
    ///      "description": "The id of the resource being accessed.",
    ///      "type": "string"
    ///    },
    ///    "authorizable_type": {
    ///      "description": "The type of resource being accessed.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Dashboard"
    ///      ]
    ///    },
    ///    "grantee_id": {
    ///      "description": "The resource id granted access.",
    ///      "type": "string"
    ///    },
    ///    "grantee_type": {
    ///      "description": "The type of resource granted access.",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Team"
    ///      ]
    ///    },
    ///    "permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read",
    ///          "update",
    ///          "authorize",
    ///          "destroy"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewAuthorizationDataAttributes {
        ///The id of the resource being accessed.
        pub authorizable_id: ::std::string::String,
        ///The type of resource being accessed.
        pub authorizable_type: NewAuthorizationDataAttributesAuthorizableType,
        ///The resource id granted access.
        pub grantee_id: ::std::string::String,
        ///The type of resource granted access.
        pub grantee_type: NewAuthorizationDataAttributesGranteeType,
        pub permissions: ::std::vec::Vec<NewAuthorizationDataAttributesPermissionsItem>,
    }
    impl NewAuthorizationDataAttributes {
        pub fn builder() -> builder::NewAuthorizationDataAttributes {
            Default::default()
        }
    }
    ///The type of resource being accessed.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of resource being accessed.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Dashboard"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAuthorizationDataAttributesAuthorizableType {
        Dashboard,
    }
    impl ::std::fmt::Display for NewAuthorizationDataAttributesAuthorizableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Dashboard => f.write_str("Dashboard"),
            }
        }
    }
    impl ::std::str::FromStr for NewAuthorizationDataAttributesAuthorizableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Dashboard" => Ok(Self::Dashboard),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAuthorizationDataAttributesAuthorizableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAuthorizationDataAttributesAuthorizableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAuthorizationDataAttributesAuthorizableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of resource granted access.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of resource granted access.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAuthorizationDataAttributesGranteeType {
        User,
        Team,
    }
    impl ::std::fmt::Display for NewAuthorizationDataAttributesGranteeType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Team => f.write_str("Team"),
            }
        }
    }
    impl ::std::str::FromStr for NewAuthorizationDataAttributesGranteeType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAuthorizationDataAttributesGranteeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAuthorizationDataAttributesGranteeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAuthorizationDataAttributesGranteeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAuthorizationDataAttributesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read",
    ///    "update",
    ///    "authorize",
    ///    "destroy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAuthorizationDataAttributesPermissionsItem {
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "authorize")]
        Authorize,
        #[serde(rename = "destroy")]
        Destroy,
    }
    impl ::std::fmt::Display for NewAuthorizationDataAttributesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Authorize => f.write_str("authorize"),
                Self::Destroy => f.write_str("destroy"),
            }
        }
    }
    impl ::std::str::FromStr for NewAuthorizationDataAttributesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "authorize" => Ok(Self::Authorize),
                "destroy" => Ok(Self::Destroy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewAuthorizationDataAttributesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewAuthorizationDataAttributesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewAuthorizationDataAttributesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewAuthorizationDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "authorizations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewAuthorizationDataType {
        #[serde(rename = "authorizations")]
        Authorizations,
    }
    impl ::std::fmt::Display for NewAuthorizationDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Authorizations => f.write_str("authorizations"),
            }
        }
    }
    impl ::std::str::FromStr for NewAuthorizationDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "authorizations" => Ok(Self::Authorizations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewAuthorizationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewAuthorizationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewAuthorizationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalog`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "icon": {
    ///              "type": "string",
    ///              "enum": [
    ///                "globe-alt",
    ///                "server-stack",
    ///                "users",
    ///                "user-group",
    ///                "chart-bar",
    ///                "shapes",
    ///                "light-bulb",
    ///                "cursor-arrow-ripple"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the catalog when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalogs"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalog {
        pub data: NewCatalogData,
    }
    impl NewCatalog {
        pub fn builder() -> builder::NewCatalog {
            Default::default()
        }
    }
    ///`NewCatalogChecklistTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "catalog_type",
    ///            "name",
    ///            "scope_type"
    ///          ],
    ///          "properties": {
    ///            "catalog_type": {
    ///              "description": "The catalog type",
    ///              "type": "string",
    ///              "enum": [
    ///                "Service",
    ///                "Functionality",
    ///                "Environment",
    ///                "Group",
    ///                "Cause",
    ///                "IncidentType",
    ///                "Catalog"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the checklist template",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "fields": {
    ///              "description": "Template fields. Position is determined by array order.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "oneOf": [
    ///                  {
    ///                    "title": "Builtin field",
    ///                    "required": [
    ///                      "field_key",
    ///                      "field_source"
    ///                    ],
    ///                    "properties": {
    ///                      "field_key": {
    ///                        "description": "Key identifying the builtin field",
    ///                        "type": "string"
    ///                      },
    ///                      "field_source": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "builtin"
    ///                        ]
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "title": "Custom field",
    ///                    "required": [
    ///                      "catalog_property_id",
    ///                      "field_source"
    ///                    ],
    ///                    "properties": {
    ///                      "catalog_property_id": {
    ///                        "description": "ID of the catalog property",
    ///                        "type": "string"
    ///                      },
    ///                      "field_key": {
    ///                        "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///                        "type": "string"
    ///                      },
    ///                      "field_source": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "custom"
    ///                        ]
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the checklist template",
    ///              "type": "string"
    ///            },
    ///            "owners": {
    ///              "description": "Template owners",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "type"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "User ID for user owners, or field key for field owners",
    ///                    "type": "string"
    ///                  },
    ///                  "type": {
    ///                    "description": "Type of owner",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "field",
    ///                      "user"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "scope_id": {
    ///              "description": "The scope ID (team or catalog UUID)",
    ///              "type": "string"
    ///            },
    ///            "scope_type": {
    ///              "description": "The scope type",
    ///              "type": "string",
    ///              "enum": [
    ///                "Team",
    ///                "Catalog"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_checklist_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogChecklistTemplate {
        pub data: NewCatalogChecklistTemplateData,
    }
    impl NewCatalogChecklistTemplate {
        pub fn builder() -> builder::NewCatalogChecklistTemplate {
            Default::default()
        }
    }
    ///`NewCatalogChecklistTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "catalog_type",
    ///        "name",
    ///        "scope_type"
    ///      ],
    ///      "properties": {
    ///        "catalog_type": {
    ///          "description": "The catalog type",
    ///          "type": "string",
    ///          "enum": [
    ///            "Service",
    ///            "Functionality",
    ///            "Environment",
    ///            "Group",
    ///            "Cause",
    ///            "IncidentType",
    ///            "Catalog"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the checklist template",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "fields": {
    ///          "description": "Template fields. Position is determined by array order.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "oneOf": [
    ///              {
    ///                "title": "Builtin field",
    ///                "required": [
    ///                  "field_key",
    ///                  "field_source"
    ///                ],
    ///                "properties": {
    ///                  "field_key": {
    ///                    "description": "Key identifying the builtin field",
    ///                    "type": "string"
    ///                  },
    ///                  "field_source": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "builtin"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "title": "Custom field",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "field_source"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "ID of the catalog property",
    ///                    "type": "string"
    ///                  },
    ///                  "field_key": {
    ///                    "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///                    "type": "string"
    ///                  },
    ///                  "field_source": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "custom"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the checklist template",
    ///          "type": "string"
    ///        },
    ///        "owners": {
    ///          "description": "Template owners",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "type"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "User ID for user owners, or field key for field owners",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "description": "Type of owner",
    ///                "type": "string",
    ///                "enum": [
    ///                  "field",
    ///                  "user"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "scope_id": {
    ///          "description": "The scope ID (team or catalog UUID)",
    ///          "type": "string"
    ///        },
    ///        "scope_type": {
    ///          "description": "The scope type",
    ///          "type": "string",
    ///          "enum": [
    ///            "Team",
    ///            "Catalog"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_checklist_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogChecklistTemplateData {
        pub attributes: NewCatalogChecklistTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCatalogChecklistTemplateDataType,
    }
    impl NewCatalogChecklistTemplateData {
        pub fn builder() -> builder::NewCatalogChecklistTemplateData {
            Default::default()
        }
    }
    ///`NewCatalogChecklistTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_type",
    ///    "name",
    ///    "scope_type"
    ///  ],
    ///  "properties": {
    ///    "catalog_type": {
    ///      "description": "The catalog type",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Functionality",
    ///        "Environment",
    ///        "Group",
    ///        "Cause",
    ///        "IncidentType",
    ///        "Catalog"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the checklist template",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "fields": {
    ///      "description": "Template fields. Position is determined by array order.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "oneOf": [
    ///          {
    ///            "title": "Builtin field",
    ///            "required": [
    ///              "field_key",
    ///              "field_source"
    ///            ],
    ///            "properties": {
    ///              "field_key": {
    ///                "description": "Key identifying the builtin field",
    ///                "type": "string"
    ///              },
    ///              "field_source": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "builtin"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "title": "Custom field",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "field_source"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "ID of the catalog property",
    ///                "type": "string"
    ///              },
    ///              "field_key": {
    ///                "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///                "type": "string"
    ///              },
    ///              "field_source": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "custom"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "owners": {
    ///      "description": "Template owners",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "User ID for user owners, or field key for field owners",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "description": "Type of owner",
    ///            "type": "string",
    ///            "enum": [
    ///              "field",
    ///              "user"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "scope_id": {
    ///      "description": "The scope ID (team or catalog UUID)",
    ///      "type": "string"
    ///    },
    ///    "scope_type": {
    ///      "description": "The scope type",
    ///      "type": "string",
    ///      "enum": [
    ///        "Team",
    ///        "Catalog"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCatalogChecklistTemplateDataAttributes {
        ///The catalog type
        pub catalog_type: NewCatalogChecklistTemplateDataAttributesCatalogType,
        ///The description of the checklist template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Template fields. Position is determined by array order.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub fields: ::std::option::Option<
            ::std::vec::Vec<NewCatalogChecklistTemplateDataAttributesFieldsItem>,
        >,
        ///The name of the checklist template
        pub name: ::std::string::String,
        ///Template owners
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owners: ::std::option::Option<
            ::std::vec::Vec<NewCatalogChecklistTemplateDataAttributesOwnersItem>,
        >,
        ///The scope ID (team or catalog UUID)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scope_id: ::std::option::Option<::std::string::String>,
        ///The scope type
        pub scope_type: NewCatalogChecklistTemplateDataAttributesScopeType,
    }
    impl NewCatalogChecklistTemplateDataAttributes {
        pub fn builder() -> builder::NewCatalogChecklistTemplateDataAttributes {
            Default::default()
        }
    }
    ///The catalog type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The catalog type",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Functionality",
    ///    "Environment",
    ///    "Group",
    ///    "Cause",
    ///    "IncidentType",
    ///    "Catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogChecklistTemplateDataAttributesCatalogType {
        Service,
        Functionality,
        Environment,
        Group,
        Cause,
        IncidentType,
        Catalog,
    }
    impl ::std::fmt::Display for NewCatalogChecklistTemplateDataAttributesCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Functionality => f.write_str("Functionality"),
                Self::Environment => f.write_str("Environment"),
                Self::Group => f.write_str("Group"),
                Self::Cause => f.write_str("Cause"),
                Self::IncidentType => f.write_str("IncidentType"),
                Self::Catalog => f.write_str("Catalog"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogChecklistTemplateDataAttributesCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Functionality" => Ok(Self::Functionality),
                "Environment" => Ok(Self::Environment),
                "Group" => Ok(Self::Group),
                "Cause" => Ok(Self::Cause),
                "IncidentType" => Ok(Self::IncidentType),
                "Catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewCatalogChecklistTemplateDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogChecklistTemplateDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogChecklistTemplateDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogChecklistTemplateDataAttributesFieldsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "title": "Builtin field",
    ///      "required": [
    ///        "field_key",
    ///        "field_source"
    ///      ],
    ///      "properties": {
    ///        "field_key": {
    ///          "description": "Key identifying the builtin field",
    ///          "type": "string"
    ///        },
    ///        "field_source": {
    ///          "type": "string",
    ///          "enum": [
    ///            "builtin"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "title": "Custom field",
    ///      "required": [
    ///        "catalog_property_id",
    ///        "field_source"
    ///      ],
    ///      "properties": {
    ///        "catalog_property_id": {
    ///          "description": "ID of the catalog property",
    ///          "type": "string"
    ///        },
    ///        "field_key": {
    ///          "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///          "type": "string"
    ///        },
    ///        "field_source": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(tag = "field_source")]
    pub enum NewCatalogChecklistTemplateDataAttributesFieldsItem {
        ///Builtin field
        #[serde(rename = "builtin")]
        Builtin {
            ///Key identifying the builtin field
            field_key: ::std::string::String,
        },
        ///Custom field
        #[serde(rename = "custom")]
        Custom {
            ///ID of the catalog property
            catalog_property_id: ::std::string::String,
            ///Ignored for custom fields (auto-derived from catalog property)
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            field_key: ::std::option::Option<::std::string::String>,
        },
    }
    ///`NewCatalogChecklistTemplateDataAttributesOwnersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "User ID for user owners, or field key for field owners",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "Type of owner",
    ///      "type": "string",
    ///      "enum": [
    ///        "field",
    ///        "user"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogChecklistTemplateDataAttributesOwnersItem {
        ///User ID for user owners, or field key for field owners
        pub id: ::std::string::String,
        ///Type of owner
        #[serde(rename = "type")]
        pub type_: NewCatalogChecklistTemplateDataAttributesOwnersItemType,
    }
    impl NewCatalogChecklistTemplateDataAttributesOwnersItem {
        pub fn builder() -> builder::NewCatalogChecklistTemplateDataAttributesOwnersItem {
            Default::default()
        }
    }
    ///Type of owner
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of owner",
    ///  "type": "string",
    ///  "enum": [
    ///    "field",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogChecklistTemplateDataAttributesOwnersItemType {
        #[serde(rename = "field")]
        Field,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display
    for NewCatalogChecklistTemplateDataAttributesOwnersItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Field => f.write_str("field"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "field" => Ok(Self::Field),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The scope type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The scope type",
    ///  "type": "string",
    ///  "enum": [
    ///    "Team",
    ///    "Catalog"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogChecklistTemplateDataAttributesScopeType {
        Team,
        Catalog,
    }
    impl ::std::fmt::Display for NewCatalogChecklistTemplateDataAttributesScopeType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Team => f.write_str("Team"),
                Self::Catalog => f.write_str("Catalog"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogChecklistTemplateDataAttributesScopeType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Team" => Ok(Self::Team),
                "Catalog" => Ok(Self::Catalog),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewCatalogChecklistTemplateDataAttributesScopeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogChecklistTemplateDataAttributesScopeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogChecklistTemplateDataAttributesScopeType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogChecklistTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_checklist_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogChecklistTemplateDataType {
        #[serde(rename = "catalog_checklist_templates")]
        CatalogChecklistTemplates,
    }
    impl ::std::fmt::Display for NewCatalogChecklistTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogChecklistTemplates => {
                    f.write_str("catalog_checklist_templates")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogChecklistTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_checklist_templates" => Ok(Self::CatalogChecklistTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogChecklistTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogChecklistTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogChecklistTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "icon": {
    ///          "type": "string",
    ///          "enum": [
    ///            "globe-alt",
    ///            "server-stack",
    ///            "users",
    ///            "user-group",
    ///            "chart-bar",
    ///            "shapes",
    ///            "light-bulb",
    ///            "cursor-arrow-ripple"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the catalog when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalogs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogData {
        pub attributes: NewCatalogDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCatalogDataType,
    }
    impl NewCatalogData {
        pub fn builder() -> builder::NewCatalogData {
            Default::default()
        }
    }
    ///`NewCatalogDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "type": "string",
    ///      "enum": [
    ///        "globe-alt",
    ///        "server-stack",
    ///        "users",
    ///        "user-group",
    ///        "chart-bar",
    ///        "shapes",
    ///        "light-bulb",
    ///        "cursor-arrow-ripple"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the catalog when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCatalogDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<NewCatalogDataAttributesIcon>,
        pub name: ::std::string::String,
        ///Default position of the catalog when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewCatalogDataAttributes {
        pub fn builder() -> builder::NewCatalogDataAttributes {
            Default::default()
        }
    }
    ///`NewCatalogDataAttributesIcon`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "globe-alt",
    ///    "server-stack",
    ///    "users",
    ///    "user-group",
    ///    "chart-bar",
    ///    "shapes",
    ///    "light-bulb",
    ///    "cursor-arrow-ripple"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogDataAttributesIcon {
        #[serde(rename = "globe-alt")]
        GlobeAlt,
        #[serde(rename = "server-stack")]
        ServerStack,
        #[serde(rename = "users")]
        Users,
        #[serde(rename = "user-group")]
        UserGroup,
        #[serde(rename = "chart-bar")]
        ChartBar,
        #[serde(rename = "shapes")]
        Shapes,
        #[serde(rename = "light-bulb")]
        LightBulb,
        #[serde(rename = "cursor-arrow-ripple")]
        CursorArrowRipple,
    }
    impl ::std::fmt::Display for NewCatalogDataAttributesIcon {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GlobeAlt => f.write_str("globe-alt"),
                Self::ServerStack => f.write_str("server-stack"),
                Self::Users => f.write_str("users"),
                Self::UserGroup => f.write_str("user-group"),
                Self::ChartBar => f.write_str("chart-bar"),
                Self::Shapes => f.write_str("shapes"),
                Self::LightBulb => f.write_str("light-bulb"),
                Self::CursorArrowRipple => f.write_str("cursor-arrow-ripple"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogDataAttributesIcon {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "globe-alt" => Ok(Self::GlobeAlt),
                "server-stack" => Ok(Self::ServerStack),
                "users" => Ok(Self::Users),
                "user-group" => Ok(Self::UserGroup),
                "chart-bar" => Ok(Self::ChartBar),
                "shapes" => Ok(Self::Shapes),
                "light-bulb" => Ok(Self::LightBulb),
                "cursor-arrow-ripple" => Ok(Self::CursorArrowRipple),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalogs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogDataType {
        #[serde(rename = "catalogs")]
        Catalogs,
    }
    impl ::std::fmt::Display for NewCatalogDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalogs => f.write_str("catalogs"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalogs" => Ok(Self::Catalogs),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCatalogDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCatalogDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogEntity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "backstage_id": {
    ///              "description": "The Backstage entity ID this catalog entity is linked to.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the item when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this catalog entity",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Unique ID of the catalog property",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The value for this property",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogEntity {
        pub data: NewCatalogEntityData,
    }
    impl NewCatalogEntity {
        pub fn builder() -> builder::NewCatalogEntity {
            Default::default()
        }
    }
    ///`NewCatalogEntityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "backstage_id": {
    ///          "description": "The Backstage entity ID this catalog entity is linked to.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the item when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this catalog entity",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Unique ID of the catalog property",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The value for this property",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogEntityData {
        pub attributes: NewCatalogEntityDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCatalogEntityDataType,
    }
    impl NewCatalogEntityData {
        pub fn builder() -> builder::NewCatalogEntityData {
            Default::default()
        }
    }
    ///`NewCatalogEntityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "backstage_id": {
    ///      "description": "The Backstage entity ID this catalog entity is linked to.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this catalog entity",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Unique ID of the catalog property",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The value for this property",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCatalogEntityDataAttributes {
        ///The Backstage entity ID this catalog entity is linked to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub name: ::std::string::String,
        ///Default position of the item when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this catalog entity
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewCatalogEntityDataAttributesPropertiesItem>,
    }
    impl NewCatalogEntityDataAttributes {
        pub fn builder() -> builder::NewCatalogEntityDataAttributes {
            Default::default()
        }
    }
    ///`NewCatalogEntityDataAttributesPropertiesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Unique ID of the catalog property",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The value for this property",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogEntityDataAttributesPropertiesItem {
        ///Unique ID of the catalog property
        pub catalog_property_id: ::std::string::String,
        ///The value for this property
        pub value: ::std::string::String,
    }
    impl NewCatalogEntityDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewCatalogEntityDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`NewCatalogEntityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogEntityDataType {
        #[serde(rename = "catalog_entities")]
        CatalogEntities,
    }
    impl ::std::fmt::Display for NewCatalogEntityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntities => f.write_str("catalog_entities"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogEntityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entities" => Ok(Self::CatalogEntities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogEntityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCatalogEntityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCatalogEntityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.",
    ///  "deprecated": true,
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "description": "Maximum of 50 values allowed per catalog field.",
    ///          "type": "object",
    ///          "required": [
    ///            "catalog_field_id",
    ///            "key",
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "catalog_entity_id": {
    ///              "type": "string"
    ///            },
    ///            "catalog_field_id": {
    ///              "type": "string"
    ///            },
    ///            "key": {
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "catalog_entity",
    ///                "slack"
    ///              ]
    ///            },
    ///            "value": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entity_properties"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogEntityProperty {
        pub data: NewCatalogEntityPropertyData,
    }
    impl NewCatalogEntityProperty {
        pub fn builder() -> builder::NewCatalogEntityProperty {
            Default::default()
        }
    }
    ///`NewCatalogEntityPropertyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "description": "Maximum of 50 values allowed per catalog field.",
    ///      "type": "object",
    ///      "required": [
    ///        "catalog_field_id",
    ///        "key",
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "catalog_entity_id": {
    ///          "type": "string"
    ///        },
    ///        "catalog_field_id": {
    ///          "type": "string"
    ///        },
    ///        "key": {
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "catalog_entity",
    ///            "slack"
    ///          ]
    ///        },
    ///        "value": {
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogEntityPropertyData {
        pub attributes: NewCatalogEntityPropertyDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCatalogEntityPropertyDataType,
    }
    impl NewCatalogEntityPropertyData {
        pub fn builder() -> builder::NewCatalogEntityPropertyData {
            Default::default()
        }
    }
    ///Maximum of 50 values allowed per catalog field.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Maximum of 50 values allowed per catalog field.",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_field_id",
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_entity_id": {
    ///      "type": "string"
    ///    },
    ///    "catalog_field_id": {
    ///      "type": "string"
    ///    },
    ///    "key": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "catalog_entity",
    ///        "slack"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCatalogEntityPropertyDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_entity_id: ::std::option::Option<::std::string::String>,
        pub catalog_field_id: ::std::string::String,
        pub key: NewCatalogEntityPropertyDataAttributesKey,
        pub value: ::std::string::String,
    }
    impl NewCatalogEntityPropertyDataAttributes {
        pub fn builder() -> builder::NewCatalogEntityPropertyDataAttributes {
            Default::default()
        }
    }
    ///`NewCatalogEntityPropertyDataAttributesKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "catalog_entity",
    ///    "slack"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogEntityPropertyDataAttributesKey {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "slack")]
        Slack,
    }
    impl ::std::fmt::Display for NewCatalogEntityPropertyDataAttributesKey {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::Slack => f.write_str("slack"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogEntityPropertyDataAttributesKey {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "catalog_entity" => Ok(Self::CatalogEntity),
                "slack" => Ok(Self::Slack),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogEntityPropertyDataAttributesKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogEntityPropertyDataAttributesKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogEntityPropertyDataAttributesKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogEntityPropertyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogEntityPropertyDataType {
        #[serde(rename = "catalog_entity_properties")]
        CatalogEntityProperties,
    }
    impl ::std::fmt::Display for NewCatalogEntityPropertyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityProperties => f.write_str("catalog_entity_properties"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogEntityPropertyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_properties" => Ok(Self::CatalogEntityProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogEntityPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogEntityPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogEntityPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///A catalog can have a maximum of 50 fields.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A catalog can have a maximum of 50 fields.",
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "kind",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "catalog_type": {
    ///              "description": "The type of catalog the field belongs to.",
    ///              "type": "string",
    ///              "enum": [
    ///                "catalog",
    ///                "cause",
    ///                "environment",
    ///                "functionality",
    ///                "incident_type",
    ///                "service",
    ///                "team"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "reference",
    ///                "boolean",
    ///                "service",
    ///                "functionality",
    ///                "environment",
    ///                "group",
    ///                "cause",
    ///                "incident_type",
    ///                "user"
    ///              ]
    ///            },
    ///            "kind_catalog_id": {
    ///              "description": "Restricts values to items of specified catalog.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "multiple": {
    ///              "description": "Whether the attribute accepts multiple values.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the item when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "required": {
    ///              "description": "Whether the field is required.",
    ///              "type": "boolean"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_properties"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogField {
        pub data: NewCatalogFieldData,
    }
    impl NewCatalogField {
        pub fn builder() -> builder::NewCatalogField {
            Default::default()
        }
    }
    ///`NewCatalogFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "kind",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "catalog_type": {
    ///          "description": "The type of catalog the field belongs to.",
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog",
    ///            "cause",
    ///            "environment",
    ///            "functionality",
    ///            "incident_type",
    ///            "service",
    ///            "team"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "reference",
    ///            "boolean",
    ///            "service",
    ///            "functionality",
    ///            "environment",
    ///            "group",
    ///            "cause",
    ///            "incident_type",
    ///            "user"
    ///          ]
    ///        },
    ///        "kind_catalog_id": {
    ///          "description": "Restricts values to items of specified catalog.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "multiple": {
    ///          "description": "Whether the attribute accepts multiple values.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the item when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "required": {
    ///          "description": "Whether the field is required.",
    ///          "type": "boolean"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogFieldData {
        pub attributes: NewCatalogFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCatalogFieldDataType,
    }
    impl NewCatalogFieldData {
        pub fn builder() -> builder::NewCatalogFieldData {
            Default::default()
        }
    }
    ///`NewCatalogFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "kind",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "catalog_type": {
    ///      "description": "The type of catalog the field belongs to.",
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog",
    ///        "cause",
    ///        "environment",
    ///        "functionality",
    ///        "incident_type",
    ///        "service",
    ///        "team"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "reference",
    ///        "boolean",
    ///        "service",
    ///        "functionality",
    ///        "environment",
    ///        "group",
    ///        "cause",
    ///        "incident_type",
    ///        "user"
    ///      ]
    ///    },
    ///    "kind_catalog_id": {
    ///      "description": "Restricts values to items of specified catalog.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "multiple": {
    ///      "description": "Whether the attribute accepts multiple values.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "required": {
    ///      "description": "Whether the field is required.",
    ///      "type": "boolean"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCatalogFieldDataAttributes {
        ///The type of catalog the field belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_type: ::std::option::Option<
            NewCatalogFieldDataAttributesCatalogType,
        >,
        pub kind: NewCatalogFieldDataAttributesKind,
        ///Restricts values to items of specified catalog.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind_catalog_id: ::std::option::Option<::std::string::String>,
        ///Whether the attribute accepts multiple values.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub multiple: ::std::option::Option<bool>,
        pub name: ::std::string::String,
        ///Default position of the item when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether the field is required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
    }
    impl NewCatalogFieldDataAttributes {
        pub fn builder() -> builder::NewCatalogFieldDataAttributes {
            Default::default()
        }
    }
    ///The type of catalog the field belongs to.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of catalog the field belongs to.",
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "cause",
    ///    "environment",
    ///    "functionality",
    ///    "incident_type",
    ///    "service",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogFieldDataAttributesCatalogType {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for NewCatalogFieldDataAttributesCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Cause => f.write_str("cause"),
                Self::Environment => f.write_str("environment"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogFieldDataAttributesCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "cause" => Ok(Self::Cause),
                "environment" => Ok(Self::Environment),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogFieldDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogFieldDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogFieldDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogFieldDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "reference",
    ///    "boolean",
    ///    "service",
    ///    "functionality",
    ///    "environment",
    ///    "group",
    ///    "cause",
    ///    "incident_type",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogFieldDataAttributesKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "reference")]
        Reference,
        #[serde(rename = "boolean")]
        Boolean,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display for NewCatalogFieldDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Reference => f.write_str("reference"),
                Self::Boolean => f.write_str("boolean"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::Environment => f.write_str("environment"),
                Self::Group => f.write_str("group"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogFieldDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "reference" => Ok(Self::Reference),
                "boolean" => Ok(Self::Boolean),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "environment" => Ok(Self::Environment),
                "group" => Ok(Self::Group),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogFieldDataType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for NewCatalogFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCatalogFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCatalogFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///A catalog can have a maximum of 50 properties.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A catalog can have a maximum of 50 properties.",
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "kind",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "catalog_type": {
    ///              "description": "The type of catalog the property belongs to.",
    ///              "type": "string",
    ///              "enum": [
    ///                "catalog",
    ///                "cause",
    ///                "environment",
    ///                "functionality",
    ///                "incident_type",
    ///                "service",
    ///                "team"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "reference",
    ///                "boolean",
    ///                "service",
    ///                "functionality",
    ///                "environment",
    ///                "group",
    ///                "cause",
    ///                "incident_type",
    ///                "user"
    ///              ]
    ///            },
    ///            "kind_catalog_id": {
    ///              "description": "Restricts values to items of specified catalog.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "multiple": {
    ///              "description": "Whether the attribute accepts multiple values.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the item when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "required": {
    ///              "description": "Whether the property is required.",
    ///              "type": "boolean"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_properties"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogProperty {
        pub data: NewCatalogPropertyData,
    }
    impl NewCatalogProperty {
        pub fn builder() -> builder::NewCatalogProperty {
            Default::default()
        }
    }
    ///`NewCatalogPropertyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "kind",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "catalog_type": {
    ///          "description": "The type of catalog the property belongs to.",
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog",
    ///            "cause",
    ///            "environment",
    ///            "functionality",
    ///            "incident_type",
    ///            "service",
    ///            "team"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "reference",
    ///            "boolean",
    ///            "service",
    ///            "functionality",
    ///            "environment",
    ///            "group",
    ///            "cause",
    ///            "incident_type",
    ///            "user"
    ///          ]
    ///        },
    ///        "kind_catalog_id": {
    ///          "description": "Restricts values to items of specified catalog.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "multiple": {
    ///          "description": "Whether the attribute accepts multiple values.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the item when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "required": {
    ///          "description": "Whether the property is required.",
    ///          "type": "boolean"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCatalogPropertyData {
        pub attributes: NewCatalogPropertyDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCatalogPropertyDataType,
    }
    impl NewCatalogPropertyData {
        pub fn builder() -> builder::NewCatalogPropertyData {
            Default::default()
        }
    }
    ///`NewCatalogPropertyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "kind",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "catalog_type": {
    ///      "description": "The type of catalog the property belongs to.",
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog",
    ///        "cause",
    ///        "environment",
    ///        "functionality",
    ///        "incident_type",
    ///        "service",
    ///        "team"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "reference",
    ///        "boolean",
    ///        "service",
    ///        "functionality",
    ///        "environment",
    ///        "group",
    ///        "cause",
    ///        "incident_type",
    ///        "user"
    ///      ]
    ///    },
    ///    "kind_catalog_id": {
    ///      "description": "Restricts values to items of specified catalog.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "multiple": {
    ///      "description": "Whether the attribute accepts multiple values.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "required": {
    ///      "description": "Whether the property is required.",
    ///      "type": "boolean"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCatalogPropertyDataAttributes {
        ///The type of catalog the property belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_type: ::std::option::Option<
            NewCatalogPropertyDataAttributesCatalogType,
        >,
        pub kind: NewCatalogPropertyDataAttributesKind,
        ///Restricts values to items of specified catalog.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind_catalog_id: ::std::option::Option<::std::string::String>,
        ///Whether the attribute accepts multiple values.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub multiple: ::std::option::Option<bool>,
        pub name: ::std::string::String,
        ///Default position of the item when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether the property is required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
    }
    impl NewCatalogPropertyDataAttributes {
        pub fn builder() -> builder::NewCatalogPropertyDataAttributes {
            Default::default()
        }
    }
    ///The type of catalog the property belongs to.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of catalog the property belongs to.",
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "cause",
    ///    "environment",
    ///    "functionality",
    ///    "incident_type",
    ///    "service",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogPropertyDataAttributesCatalogType {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for NewCatalogPropertyDataAttributesCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Cause => f.write_str("cause"),
                Self::Environment => f.write_str("environment"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogPropertyDataAttributesCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "cause" => Ok(Self::Cause),
                "environment" => Ok(Self::Environment),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogPropertyDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogPropertyDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogPropertyDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogPropertyDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "reference",
    ///    "boolean",
    ///    "service",
    ///    "functionality",
    ///    "environment",
    ///    "group",
    ///    "cause",
    ///    "incident_type",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogPropertyDataAttributesKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "reference")]
        Reference,
        #[serde(rename = "boolean")]
        Boolean,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display for NewCatalogPropertyDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Reference => f.write_str("reference"),
                Self::Boolean => f.write_str("boolean"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::Environment => f.write_str("environment"),
                Self::Group => f.write_str("group"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogPropertyDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "reference" => Ok(Self::Reference),
                "boolean" => Ok(Self::Boolean),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "environment" => Ok(Self::Environment),
                "group" => Ok(Self::Group),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogPropertyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCatalogPropertyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCatalogPropertyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCatalogPropertyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCatalogPropertyDataType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for NewCatalogPropertyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for NewCatalogPropertyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCatalogPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCatalogPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCatalogPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCause`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the cause",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the cause",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the cause",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this cause.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "causes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCause {
        pub data: NewCauseData,
    }
    impl NewCause {
        pub fn builder() -> builder::NewCause {
            Default::default()
        }
    }
    ///`NewCauseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the cause",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the cause",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the cause",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this cause.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "causes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCauseData {
        pub attributes: NewCauseDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCauseDataType,
    }
    impl NewCauseData {
        pub fn builder() -> builder::NewCauseData {
            Default::default()
        }
    }
    ///`NewCauseDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the cause",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the cause",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the cause",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this cause.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCauseDataAttributes {
        ///The description of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the cause
        pub name: ::std::string::String,
        ///Position of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this cause.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewCauseDataAttributesPropertiesItem>,
    }
    impl NewCauseDataAttributes {
        pub fn builder() -> builder::NewCauseDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCauseDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl NewCauseDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewCauseDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`NewCauseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "causes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCauseDataType {
        #[serde(rename = "causes")]
        Causes,
    }
    impl ::std::fmt::Display for NewCauseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Causes => f.write_str("causes"),
            }
        }
    }
    impl ::std::str::FromStr for NewCauseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "causes" => Ok(Self::Causes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCauseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCauseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCauseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCommunicationsGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "communication_type_id",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "communication_external_group_members": {
    ///              "description": "External group members attributes",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "email": {
    ///                    "description": "Email of the external member",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Name of the external member",
    ///                    "type": "string"
    ///                  },
    ///                  "phone_number": {
    ///                    "description": "Phone number of the external member",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "communication_group_conditions": {
    ///              "description": "Group conditions attributes",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "functionality_ids": {
    ///                    "description": "Array of functionality IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "group_ids": {
    ///                    "description": "Array of group IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "incident_type_ids": {
    ///                    "description": "Array of incident type IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "property_type": {
    ///                    "description": "Property type",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "service",
    ///                      "severity",
    ///                      "functionality",
    ///                      "group",
    ///                      "incident_type"
    ///                    ]
    ///                  },
    ///                  "service_ids": {
    ///                    "description": "Array of service IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "severity_ids": {
    ///                    "description": "Array of severity IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "communication_type_id": {
    ///              "description": "The communication type ID",
    ///              "type": "string"
    ///            },
    ///            "condition_type": {
    ///              "description": "Condition type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "any",
    ///                "all"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the communications group",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "email_channel": {
    ///              "description": "Email channel enabled",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "is_private": {
    ///              "description": "Whether the group is private",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "member_ids": {
    ///              "description": "Array of member user IDs",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications group",
    ///              "type": "string"
    ///            },
    ///            "slack_channel_ids": {
    ///              "description": "Array of Slack channel IDs",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "sms_channel": {
    ///              "description": "SMS channel enabled",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsGroup {
        pub data: NewCommunicationsGroupData,
    }
    impl NewCommunicationsGroup {
        pub fn builder() -> builder::NewCommunicationsGroup {
            Default::default()
        }
    }
    ///`NewCommunicationsGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "communication_type_id",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "communication_external_group_members": {
    ///          "description": "External group members attributes",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "email": {
    ///                "description": "Email of the external member",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Name of the external member",
    ///                "type": "string"
    ///              },
    ///              "phone_number": {
    ///                "description": "Phone number of the external member",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "communication_group_conditions": {
    ///          "description": "Group conditions attributes",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "functionality_ids": {
    ///                "description": "Array of functionality IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "group_ids": {
    ///                "description": "Array of group IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "incident_type_ids": {
    ///                "description": "Array of incident type IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "property_type": {
    ///                "description": "Property type",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service",
    ///                  "severity",
    ///                  "functionality",
    ///                  "group",
    ///                  "incident_type"
    ///                ]
    ///              },
    ///              "service_ids": {
    ///                "description": "Array of service IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "severity_ids": {
    ///                "description": "Array of severity IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "communication_type_id": {
    ///          "description": "The communication type ID",
    ///          "type": "string"
    ///        },
    ///        "condition_type": {
    ///          "description": "Condition type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "any",
    ///            "all"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the communications group",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "email_channel": {
    ///          "description": "Email channel enabled",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "is_private": {
    ///          "description": "Whether the group is private",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "member_ids": {
    ///          "description": "Array of member user IDs",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications group",
    ///          "type": "string"
    ///        },
    ///        "slack_channel_ids": {
    ///          "description": "Array of Slack channel IDs",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "sms_channel": {
    ///          "description": "SMS channel enabled",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsGroupData {
        pub attributes: NewCommunicationsGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCommunicationsGroupDataType,
    }
    impl NewCommunicationsGroupData {
        pub fn builder() -> builder::NewCommunicationsGroupData {
            Default::default()
        }
    }
    ///`NewCommunicationsGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "communication_type_id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "communication_external_group_members": {
    ///      "description": "External group members attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "email": {
    ///            "description": "Email of the external member",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Name of the external member",
    ///            "type": "string"
    ///          },
    ///          "phone_number": {
    ///            "description": "Phone number of the external member",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_group_conditions": {
    ///      "description": "Group conditions attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "functionality_ids": {
    ///            "description": "Array of functionality IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "group_ids": {
    ///            "description": "Array of group IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "incident_type_ids": {
    ///            "description": "Array of incident type IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "property_type": {
    ///            "description": "Property type",
    ///            "type": "string",
    ///            "enum": [
    ///              "service",
    ///              "severity",
    ///              "functionality",
    ///              "group",
    ///              "incident_type"
    ///            ]
    ///          },
    ///          "service_ids": {
    ///            "description": "Array of service IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "severity_ids": {
    ///            "description": "Array of severity IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_type_id": {
    ///      "description": "The communication type ID",
    ///      "type": "string"
    ///    },
    ///    "condition_type": {
    ///      "description": "Condition type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "any",
    ///        "all"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_channel": {
    ///      "description": "Email channel enabled",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "is_private": {
    ///      "description": "Whether the group is private",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "member_ids": {
    ///      "description": "Array of member user IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications group",
    ///      "type": "string"
    ///    },
    ///    "slack_channel_ids": {
    ///      "description": "Array of Slack channel IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "sms_channel": {
    ///      "description": "SMS channel enabled",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCommunicationsGroupDataAttributes {
        ///External group members attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_external_group_members: ::std::option::Option<
            ::std::vec::Vec<
                NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
            >,
        >,
        ///Group conditions attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_group_conditions: ::std::option::Option<
            ::std::vec::Vec<
                NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
            >,
        >,
        ///The communication type ID
        pub communication_type_id: ::std::string::String,
        ///Condition type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            NewCommunicationsGroupDataAttributesConditionType,
        >,
        ///The description of the communications group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Email channel enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_channel: ::std::option::Option<bool>,
        ///Whether the group is private
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_private: ::std::option::Option<bool>,
        ///Array of member user IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub member_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The name of the communications group
        pub name: ::std::string::String,
        ///Array of Slack channel IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///SMS channel enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sms_channel: ::std::option::Option<bool>,
    }
    impl NewCommunicationsGroupDataAttributes {
        pub fn builder() -> builder::NewCommunicationsGroupDataAttributes {
            Default::default()
        }
    }
    ///`NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "email": {
    ///      "description": "Email of the external member",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Name of the external member",
    ///      "type": "string"
    ///    },
    ///    "phone_number": {
    ///      "description": "Phone number of the external member",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
        ///Email of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
        ///Name of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Phone number of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone_number: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
        fn default() -> Self {
            Self {
                email: Default::default(),
                name: Default::default(),
                phone_number: Default::default(),
            }
        }
    }
    impl NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
        pub fn builder() -> builder::NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            Default::default()
        }
    }
    ///`NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "functionality_ids": {
    ///      "description": "Array of functionality IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "Array of group IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "Array of incident type IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "property_type": {
    ///      "description": "Property type",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "severity",
    ///        "functionality",
    ///        "group",
    ///        "incident_type"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Array of service IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "Array of severity IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
        ///Array of functionality IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Array of group IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Array of incident type IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Property type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_type: ::std::option::Option<
            NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType,
        >,
        ///Array of service IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Array of severity IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
        fn default() -> Self {
            Self {
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                incident_type_ids: Default::default(),
                property_type: Default::default(),
                service_ids: Default::default(),
                severity_ids: Default::default(),
            }
        }
    }
    impl NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
        pub fn builder() -> builder::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            Default::default()
        }
    }
    ///Property type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Property type",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "severity",
    ///    "functionality",
    ///    "group",
    ///    "incident_type"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "incident_type")]
        IncidentType,
    }
    impl ::std::fmt::Display
    for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Severity => f.write_str("severity"),
                Self::Functionality => f.write_str("functionality"),
                Self::Group => f.write_str("group"),
                Self::IncidentType => f.write_str("incident_type"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "severity" => Ok(Self::Severity),
                "functionality" => Ok(Self::Functionality),
                "group" => Ok(Self::Group),
                "incident_type" => Ok(Self::IncidentType),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Condition type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Condition type",
    ///  "type": "string",
    ///  "enum": [
    ///    "any",
    ///    "all"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCommunicationsGroupDataAttributesConditionType {
        #[serde(rename = "any")]
        Any,
        #[serde(rename = "all")]
        All,
    }
    impl ::std::fmt::Display for NewCommunicationsGroupDataAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Any => f.write_str("any"),
                Self::All => f.write_str("all"),
            }
        }
    }
    impl ::std::str::FromStr for NewCommunicationsGroupDataAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "any" => Ok(Self::Any),
                "all" => Ok(Self::All),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewCommunicationsGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCommunicationsGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCommunicationsGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCommunicationsGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCommunicationsGroupDataType {
        #[serde(rename = "communications_groups")]
        CommunicationsGroups,
    }
    impl ::std::fmt::Display for NewCommunicationsGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsGroups => f.write_str("communications_groups"),
            }
        }
    }
    impl ::std::str::FromStr for NewCommunicationsGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_groups" => Ok(Self::CommunicationsGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCommunicationsGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCommunicationsGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCommunicationsGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCommunicationsStage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the communications stage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications stage",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the communications stage",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_stages"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsStage {
        pub data: NewCommunicationsStageData,
    }
    impl NewCommunicationsStage {
        pub fn builder() -> builder::NewCommunicationsStage {
            Default::default()
        }
    }
    ///`NewCommunicationsStageData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the communications stage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications stage",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the communications stage",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_stages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsStageData {
        pub attributes: NewCommunicationsStageDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCommunicationsStageDataType,
    }
    impl NewCommunicationsStageData {
        pub fn builder() -> builder::NewCommunicationsStageData {
            Default::default()
        }
    }
    ///`NewCommunicationsStageDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the communications stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications stage",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications stage",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCommunicationsStageDataAttributes {
        ///The description of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications stage
        pub name: ::std::string::String,
        ///Position of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewCommunicationsStageDataAttributes {
        pub fn builder() -> builder::NewCommunicationsStageDataAttributes {
            Default::default()
        }
    }
    ///`NewCommunicationsStageDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_stages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCommunicationsStageDataType {
        #[serde(rename = "communications_stages")]
        CommunicationsStages,
    }
    impl ::std::fmt::Display for NewCommunicationsStageDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsStages => f.write_str("communications_stages"),
            }
        }
    }
    impl ::std::str::FromStr for NewCommunicationsStageDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_stages" => Ok(Self::CommunicationsStages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCommunicationsStageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCommunicationsStageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCommunicationsStageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCommunicationsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "communication_type_id",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "communication_template_stages_attributes": {
    ///              "description": "Template stages attributes",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "communication_stage_id": {
    ///                    "description": "The communication stage ID",
    ///                    "type": "string"
    ///                  },
    ///                  "email_body": {
    ///                    "description": "Email body for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "email_subject": {
    ///                    "description": "Email subject for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "slack_content": {
    ///                    "description": "Slack content for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "sms_content": {
    ///                    "description": "SMS content for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "communication_type_id": {
    ///              "description": "The communication type ID",
    ///              "type": "string"
    ///            },
    ///            "description": {
    ///              "description": "The description of the communications template",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications template",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the communications template",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsTemplate {
        pub data: NewCommunicationsTemplateData,
    }
    impl NewCommunicationsTemplate {
        pub fn builder() -> builder::NewCommunicationsTemplate {
            Default::default()
        }
    }
    ///`NewCommunicationsTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "communication_type_id",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "communication_template_stages_attributes": {
    ///          "description": "Template stages attributes",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "communication_stage_id": {
    ///                "description": "The communication stage ID",
    ///                "type": "string"
    ///              },
    ///              "email_body": {
    ///                "description": "Email body for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "email_subject": {
    ///                "description": "Email subject for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "slack_content": {
    ///                "description": "Slack content for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "sms_content": {
    ///                "description": "SMS content for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "communication_type_id": {
    ///          "description": "The communication type ID",
    ///          "type": "string"
    ///        },
    ///        "description": {
    ///          "description": "The description of the communications template",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications template",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the communications template",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsTemplateData {
        pub attributes: NewCommunicationsTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCommunicationsTemplateDataType,
    }
    impl NewCommunicationsTemplateData {
        pub fn builder() -> builder::NewCommunicationsTemplateData {
            Default::default()
        }
    }
    ///`NewCommunicationsTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "communication_type_id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "communication_template_stages_attributes": {
    ///      "description": "Template stages attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "communication_stage_id": {
    ///            "description": "The communication stage ID",
    ///            "type": "string"
    ///          },
    ///          "email_body": {
    ///            "description": "Email body for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "email_subject": {
    ///            "description": "Email subject for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "slack_content": {
    ///            "description": "Slack content for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "sms_content": {
    ///            "description": "SMS content for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_type_id": {
    ///      "description": "The communication type ID",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications template",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications template",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications template",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCommunicationsTemplateDataAttributes {
        ///Template stages attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_template_stages_attributes: ::std::option::Option<
            ::std::vec::Vec<
                NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
            >,
        >,
        ///The communication type ID
        pub communication_type_id: ::std::string::String,
        ///The description of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications template
        pub name: ::std::string::String,
        ///Position of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewCommunicationsTemplateDataAttributes {
        pub fn builder() -> builder::NewCommunicationsTemplateDataAttributes {
            Default::default()
        }
    }
    ///`NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "communication_stage_id": {
    ///      "description": "The communication stage ID",
    ///      "type": "string"
    ///    },
    ///    "email_body": {
    ///      "description": "Email body for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_subject": {
    ///      "description": "Email subject for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_content": {
    ///      "description": "Slack content for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "sms_content": {
    ///      "description": "SMS content for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
        ///The communication stage ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_stage_id: ::std::option::Option<::std::string::String>,
        ///Email body for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_body: ::std::option::Option<::std::string::String>,
        ///Email subject for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_subject: ::std::option::Option<::std::string::String>,
        ///Slack content for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_content: ::std::option::Option<::std::string::String>,
        ///SMS content for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sms_content: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
        fn default() -> Self {
            Self {
                communication_stage_id: Default::default(),
                email_body: Default::default(),
                email_subject: Default::default(),
                slack_content: Default::default(),
                sms_content: Default::default(),
            }
        }
    }
    impl NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
        pub fn builder() -> builder::NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            Default::default()
        }
    }
    ///`NewCommunicationsTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCommunicationsTemplateDataType {
        #[serde(rename = "communications_templates")]
        CommunicationsTemplates,
    }
    impl ::std::fmt::Display for NewCommunicationsTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTemplates => f.write_str("communications_templates"),
            }
        }
    }
    impl ::std::str::FromStr for NewCommunicationsTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_templates" => Ok(Self::CommunicationsTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCommunicationsTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCommunicationsTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCommunicationsTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCommunicationsType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "color",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "color": {
    ///              "description": "The color of the communications type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the communications type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications type",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the communications type",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_types"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsType {
        pub data: NewCommunicationsTypeData,
    }
    impl NewCommunicationsType {
        pub fn builder() -> builder::NewCommunicationsType {
            Default::default()
        }
    }
    ///`NewCommunicationsTypeData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "color",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "color": {
    ///          "description": "The color of the communications type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the communications type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications type",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the communications type",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCommunicationsTypeData {
        pub attributes: NewCommunicationsTypeDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCommunicationsTypeDataType,
    }
    impl NewCommunicationsTypeData {
        pub fn builder() -> builder::NewCommunicationsTypeData {
            Default::default()
        }
    }
    ///`NewCommunicationsTypeDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "color",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The color of the communications type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications type",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications type",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCommunicationsTypeDataAttributes {
        ///The color of the communications type
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications type
        pub name: ::std::string::String,
        ///Position of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewCommunicationsTypeDataAttributes {
        pub fn builder() -> builder::NewCommunicationsTypeDataAttributes {
            Default::default()
        }
    }
    ///`NewCommunicationsTypeDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCommunicationsTypeDataType {
        #[serde(rename = "communications_types")]
        CommunicationsTypes,
    }
    impl ::std::fmt::Display for NewCommunicationsTypeDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTypes => f.write_str("communications_types"),
            }
        }
    }
    impl ::std::str::FromStr for NewCommunicationsTypeDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_types" => Ok(Self::CommunicationsTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCommunicationsTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCommunicationsTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCommunicationsTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCustomField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "label"
    ///          ],
    ///          "properties": {
    ///            "default": {
    ///              "description": "The default value for text field kinds",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the custom_field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "label": {
    ///              "description": "The name of the custom_field",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the custom_field",
    ///              "type": "integer"
    ///            },
    ///            "required": {
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "description": "Where the custom_field is required",
    ///                "type": "string",
    ///                "enum": [
    ///                  "incident_form",
    ///                  "incident_mitigation_form",
    ///                  "incident_resolution_form",
    ///                  "incident_post_mortem_form",
    ///                  "incident_slack_form",
    ///                  "incident_mitigation_slack_form",
    ///                  "incident_resolution_slack_form"
    ///                ]
    ///              }
    ///            },
    ///            "shown": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Where the custom_field is shown",
    ///                "type": "string",
    ///                "enum": [
    ///                  "incident_form",
    ///                  "incident_mitigation_form",
    ///                  "incident_resolution_form",
    ///                  "incident_post_mortem_form",
    ///                  "incident_slack_form",
    ///                  "incident_mitigation_slack_form",
    ///                  "incident_resolution_slack_form",
    ///                  "incident_post_mortem"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCustomField {
        pub data: NewCustomFieldData,
    }
    impl NewCustomField {
        pub fn builder() -> builder::NewCustomField {
            Default::default()
        }
    }
    ///`NewCustomFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "label"
    ///      ],
    ///      "properties": {
    ///        "default": {
    ///          "description": "The default value for text field kinds",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the custom_field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "label": {
    ///          "description": "The name of the custom_field",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the custom_field",
    ///          "type": "integer"
    ///        },
    ///        "required": {
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "description": "Where the custom_field is required",
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_form",
    ///              "incident_mitigation_form",
    ///              "incident_resolution_form",
    ///              "incident_post_mortem_form",
    ///              "incident_slack_form",
    ///              "incident_mitigation_slack_form",
    ///              "incident_resolution_slack_form"
    ///            ]
    ///          }
    ///        },
    ///        "shown": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Where the custom_field is shown",
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_form",
    ///              "incident_mitigation_form",
    ///              "incident_resolution_form",
    ///              "incident_post_mortem_form",
    ///              "incident_slack_form",
    ///              "incident_mitigation_slack_form",
    ///              "incident_resolution_slack_form",
    ///              "incident_post_mortem"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCustomFieldData {
        pub attributes: NewCustomFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCustomFieldDataType,
    }
    impl NewCustomFieldData {
        pub fn builder() -> builder::NewCustomFieldData {
            Default::default()
        }
    }
    ///`NewCustomFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "label"
    ///  ],
    ///  "properties": {
    ///    "default": {
    ///      "description": "The default value for text field kinds",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the custom_field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "label": {
    ///      "description": "The name of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the custom_field",
    ///      "type": "integer"
    ///    },
    ///    "required": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Where the custom_field is required",
    ///        "type": "string",
    ///        "enum": [
    ///          "incident_form",
    ///          "incident_mitigation_form",
    ///          "incident_resolution_form",
    ///          "incident_post_mortem_form",
    ///          "incident_slack_form",
    ///          "incident_mitigation_slack_form",
    ///          "incident_resolution_slack_form"
    ///        ]
    ///      }
    ///    },
    ///    "shown": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the custom_field is shown",
    ///        "type": "string",
    ///        "enum": [
    ///          "incident_form",
    ///          "incident_mitigation_form",
    ///          "incident_resolution_form",
    ///          "incident_post_mortem_form",
    ///          "incident_slack_form",
    ///          "incident_mitigation_slack_form",
    ///          "incident_resolution_slack_form",
    ///          "incident_post_mortem"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCustomFieldDataAttributes {
        ///The default value for text field kinds
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<::std::string::String>,
        ///The description of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the custom_field
        pub label: ::std::string::String,
        ///The position of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<
            ::std::vec::Vec<NewCustomFieldDataAttributesRequiredItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub shown: ::std::vec::Vec<NewCustomFieldDataAttributesShownItem>,
    }
    impl NewCustomFieldDataAttributes {
        pub fn builder() -> builder::NewCustomFieldDataAttributes {
            Default::default()
        }
    }
    ///Where the custom_field is required
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Where the custom_field is required",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form",
    ///    "incident_mitigation_form",
    ///    "incident_resolution_form",
    ///    "incident_post_mortem_form",
    ///    "incident_slack_form",
    ///    "incident_mitigation_slack_form",
    ///    "incident_resolution_slack_form"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCustomFieldDataAttributesRequiredItem {
        #[serde(rename = "incident_form")]
        IncidentForm,
        #[serde(rename = "incident_mitigation_form")]
        IncidentMitigationForm,
        #[serde(rename = "incident_resolution_form")]
        IncidentResolutionForm,
        #[serde(rename = "incident_post_mortem_form")]
        IncidentPostMortemForm,
        #[serde(rename = "incident_slack_form")]
        IncidentSlackForm,
        #[serde(rename = "incident_mitigation_slack_form")]
        IncidentMitigationSlackForm,
        #[serde(rename = "incident_resolution_slack_form")]
        IncidentResolutionSlackForm,
    }
    impl ::std::fmt::Display for NewCustomFieldDataAttributesRequiredItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentForm => f.write_str("incident_form"),
                Self::IncidentMitigationForm => f.write_str("incident_mitigation_form"),
                Self::IncidentResolutionForm => f.write_str("incident_resolution_form"),
                Self::IncidentPostMortemForm => f.write_str("incident_post_mortem_form"),
                Self::IncidentSlackForm => f.write_str("incident_slack_form"),
                Self::IncidentMitigationSlackForm => {
                    f.write_str("incident_mitigation_slack_form")
                }
                Self::IncidentResolutionSlackForm => {
                    f.write_str("incident_resolution_slack_form")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewCustomFieldDataAttributesRequiredItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form" => Ok(Self::IncidentForm),
                "incident_mitigation_form" => Ok(Self::IncidentMitigationForm),
                "incident_resolution_form" => Ok(Self::IncidentResolutionForm),
                "incident_post_mortem_form" => Ok(Self::IncidentPostMortemForm),
                "incident_slack_form" => Ok(Self::IncidentSlackForm),
                "incident_mitigation_slack_form" => Ok(Self::IncidentMitigationSlackForm),
                "incident_resolution_slack_form" => Ok(Self::IncidentResolutionSlackForm),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCustomFieldDataAttributesRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCustomFieldDataAttributesRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCustomFieldDataAttributesRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Where the custom_field is shown
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Where the custom_field is shown",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form",
    ///    "incident_mitigation_form",
    ///    "incident_resolution_form",
    ///    "incident_post_mortem_form",
    ///    "incident_slack_form",
    ///    "incident_mitigation_slack_form",
    ///    "incident_resolution_slack_form",
    ///    "incident_post_mortem"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCustomFieldDataAttributesShownItem {
        #[serde(rename = "incident_form")]
        IncidentForm,
        #[serde(rename = "incident_mitigation_form")]
        IncidentMitigationForm,
        #[serde(rename = "incident_resolution_form")]
        IncidentResolutionForm,
        #[serde(rename = "incident_post_mortem_form")]
        IncidentPostMortemForm,
        #[serde(rename = "incident_slack_form")]
        IncidentSlackForm,
        #[serde(rename = "incident_mitigation_slack_form")]
        IncidentMitigationSlackForm,
        #[serde(rename = "incident_resolution_slack_form")]
        IncidentResolutionSlackForm,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
    }
    impl ::std::fmt::Display for NewCustomFieldDataAttributesShownItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentForm => f.write_str("incident_form"),
                Self::IncidentMitigationForm => f.write_str("incident_mitigation_form"),
                Self::IncidentResolutionForm => f.write_str("incident_resolution_form"),
                Self::IncidentPostMortemForm => f.write_str("incident_post_mortem_form"),
                Self::IncidentSlackForm => f.write_str("incident_slack_form"),
                Self::IncidentMitigationSlackForm => {
                    f.write_str("incident_mitigation_slack_form")
                }
                Self::IncidentResolutionSlackForm => {
                    f.write_str("incident_resolution_slack_form")
                }
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
            }
        }
    }
    impl ::std::str::FromStr for NewCustomFieldDataAttributesShownItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form" => Ok(Self::IncidentForm),
                "incident_mitigation_form" => Ok(Self::IncidentMitigationForm),
                "incident_resolution_form" => Ok(Self::IncidentResolutionForm),
                "incident_post_mortem_form" => Ok(Self::IncidentPostMortemForm),
                "incident_slack_form" => Ok(Self::IncidentSlackForm),
                "incident_mitigation_slack_form" => Ok(Self::IncidentMitigationSlackForm),
                "incident_resolution_slack_form" => Ok(Self::IncidentResolutionSlackForm),
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCustomFieldDataAttributesShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCustomFieldDataAttributesShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCustomFieldDataAttributesShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCustomFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCustomFieldDataType {
        #[serde(rename = "custom_fields")]
        CustomFields,
    }
    impl ::std::fmt::Display for NewCustomFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFields => f.write_str("custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for NewCustomFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_fields" => Ok(Self::CustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCustomFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCustomFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCustomFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCustomFieldOption`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the custom_field_option",
    ///              "type": "string"
    ///            },
    ///            "default": {
    ///              "type": "boolean"
    ///            },
    ///            "position": {
    ///              "description": "The position of the custom_field_option",
    ///              "type": "integer"
    ///            },
    ///            "value": {
    ///              "description": "The value of the custom_field_option",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_field_options"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCustomFieldOption {
        pub data: NewCustomFieldOptionData,
    }
    impl NewCustomFieldOption {
        pub fn builder() -> builder::NewCustomFieldOption {
            Default::default()
        }
    }
    ///`NewCustomFieldOptionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the custom_field_option",
    ///          "type": "string"
    ///        },
    ///        "default": {
    ///          "type": "boolean"
    ///        },
    ///        "position": {
    ///          "description": "The position of the custom_field_option",
    ///          "type": "integer"
    ///        },
    ///        "value": {
    ///          "description": "The value of the custom_field_option",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCustomFieldOptionData {
        pub attributes: NewCustomFieldOptionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCustomFieldOptionDataType,
    }
    impl NewCustomFieldOptionData {
        pub fn builder() -> builder::NewCustomFieldOptionData {
            Default::default()
        }
    }
    ///`NewCustomFieldOptionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the custom_field_option",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "The position of the custom_field_option",
    ///      "type": "integer"
    ///    },
    ///    "value": {
    ///      "description": "The value of the custom_field_option",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCustomFieldOptionDataAttributes {
        ///The hex color of the custom_field_option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The position of the custom_field_option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The value of the custom_field_option
        pub value: ::std::string::String,
    }
    impl NewCustomFieldOptionDataAttributes {
        pub fn builder() -> builder::NewCustomFieldOptionDataAttributes {
            Default::default()
        }
    }
    ///`NewCustomFieldOptionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCustomFieldOptionDataType {
        #[serde(rename = "custom_field_options")]
        CustomFieldOptions,
    }
    impl ::std::fmt::Display for NewCustomFieldOptionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFieldOptions => f.write_str("custom_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for NewCustomFieldOptionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field_options" => Ok(Self::CustomFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCustomFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewCustomFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewCustomFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewCustomForm`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "command",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "command": {
    ///              "description": "The Slack command used to trigger this form.",
    ///              "type": "string"
    ///            },
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the custom form.",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_forms"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCustomForm {
        pub data: NewCustomFormData,
    }
    impl NewCustomForm {
        pub fn builder() -> builder::NewCustomForm {
            Default::default()
        }
    }
    ///`NewCustomFormData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "command",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "command": {
    ///          "description": "The Slack command used to trigger this form.",
    ///          "type": "string"
    ///        },
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the custom form.",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_forms"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewCustomFormData {
        pub attributes: NewCustomFormDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewCustomFormDataType,
    }
    impl NewCustomFormData {
        pub fn builder() -> builder::NewCustomFormData {
            Default::default()
        }
    }
    ///`NewCustomFormDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "command",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "command": {
    ///      "description": "The Slack command used to trigger this form.",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the custom form.",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewCustomFormDataAttributes {
        ///The Slack command used to trigger this form.
        pub command: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the custom form.
        pub name: ::std::string::String,
    }
    impl NewCustomFormDataAttributes {
        pub fn builder() -> builder::NewCustomFormDataAttributes {
            Default::default()
        }
    }
    ///`NewCustomFormDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_forms"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewCustomFormDataType {
        #[serde(rename = "custom_forms")]
        CustomForms,
    }
    impl ::std::fmt::Display for NewCustomFormDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomForms => f.write_str("custom_forms"),
            }
        }
    }
    impl ::std::str::FromStr for NewCustomFormDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_forms" => Ok(Self::CustomForms),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewCustomFormDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewCustomFormDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewCustomFormDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboard`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "owner"
    ///          ],
    ///          "properties": {
    ///            "auto_refresh": {
    ///              "description": "Whether the dashboard auto-updates the UI with new data.",
    ///              "type": "boolean"
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the dashboard",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "#FCF2CF",
    ///                "#D7F5E1",
    ///                "#E9E2FF",
    ///                "#FAE6E8",
    ///                "#FAEEE6"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the dashboard",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "icon": {
    ///              "description": "The emoji icon of the dashboard",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "The name of the dashboard",
    ///              "type": "string"
    ///            },
    ///            "owner": {
    ///              "description": "The owner type of the dashboard",
    ///              "type": "string",
    ///              "enum": [
    ///                "user",
    ///                "team"
    ///              ]
    ///            },
    ///            "period": {
    ///              "description": "The grouping period for dashboard panel data",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "day",
    ///                "week",
    ///                "month"
    ///              ]
    ///            },
    ///            "public": {
    ///              "description": "Whether the dashboard is public",
    ///              "type": "boolean"
    ///            },
    ///            "range": {
    ///              "description": "The date range for dashboard panel data",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "dashboards"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboard {
        pub data: NewDashboardData,
    }
    impl NewDashboard {
        pub fn builder() -> builder::NewDashboard {
            Default::default()
        }
    }
    ///`NewDashboardData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "owner"
    ///      ],
    ///      "properties": {
    ///        "auto_refresh": {
    ///          "description": "Whether the dashboard auto-updates the UI with new data.",
    ///          "type": "boolean"
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the dashboard",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "#FCF2CF",
    ///            "#D7F5E1",
    ///            "#E9E2FF",
    ///            "#FAE6E8",
    ///            "#FAEEE6"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the dashboard",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "icon": {
    ///          "description": "The emoji icon of the dashboard",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "The name of the dashboard",
    ///          "type": "string"
    ///        },
    ///        "owner": {
    ///          "description": "The owner type of the dashboard",
    ///          "type": "string",
    ///          "enum": [
    ///            "user",
    ///            "team"
    ///          ]
    ///        },
    ///        "period": {
    ///          "description": "The grouping period for dashboard panel data",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "day",
    ///            "week",
    ///            "month"
    ///          ]
    ///        },
    ///        "public": {
    ///          "description": "Whether the dashboard is public",
    ///          "type": "boolean"
    ///        },
    ///        "range": {
    ///          "description": "The date range for dashboard panel data",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboards"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardData {
        pub attributes: NewDashboardDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewDashboardDataType,
    }
    impl NewDashboardData {
        pub fn builder() -> builder::NewDashboardData {
            Default::default()
        }
    }
    ///`NewDashboardDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "owner"
    ///  ],
    ///  "properties": {
    ///    "auto_refresh": {
    ///      "description": "Whether the dashboard auto-updates the UI with new data.",
    ///      "type": "boolean"
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the dashboard",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "#FCF2CF",
    ///        "#D7F5E1",
    ///        "#E9E2FF",
    ///        "#FAE6E8",
    ///        "#FAEEE6"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the dashboard",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "description": "The emoji icon of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "owner": {
    ///      "description": "The owner type of the dashboard",
    ///      "type": "string",
    ///      "enum": [
    ///        "user",
    ///        "team"
    ///      ]
    ///    },
    ///    "period": {
    ///      "description": "The grouping period for dashboard panel data",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "day",
    ///        "week",
    ///        "month"
    ///      ]
    ///    },
    ///    "public": {
    ///      "description": "Whether the dashboard is public",
    ///      "type": "boolean"
    ///    },
    ///    "range": {
    ///      "description": "The date range for dashboard panel data",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewDashboardDataAttributes {
        ///Whether the dashboard auto-updates the UI with new data.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_refresh: ::std::option::Option<bool>,
        ///The hex color of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<NewDashboardDataAttributesColor>,
        ///The description of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The emoji icon of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<::std::string::String>,
        ///The name of the dashboard
        pub name: ::std::string::String,
        ///The owner type of the dashboard
        pub owner: NewDashboardDataAttributesOwner,
        ///The grouping period for dashboard panel data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub period: ::std::option::Option<NewDashboardDataAttributesPeriod>,
        ///Whether the dashboard is public
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public: ::std::option::Option<bool>,
        ///The date range for dashboard panel data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub range: ::std::option::Option<::std::string::String>,
    }
    impl NewDashboardDataAttributes {
        pub fn builder() -> builder::NewDashboardDataAttributes {
            Default::default()
        }
    }
    ///The hex color of the dashboard
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The hex color of the dashboard",
    ///  "type": "string",
    ///  "enum": [
    ///    "#FCF2CF",
    ///    "#D7F5E1",
    ///    "#E9E2FF",
    ///    "#FAE6E8",
    ///    "#FAEEE6"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardDataAttributesColor {
        #[serde(rename = "#FCF2CF")]
        Fcf2cf,
        #[serde(rename = "#D7F5E1")]
        D7f5e1,
        #[serde(rename = "#E9E2FF")]
        E9e2ff,
        #[serde(rename = "#FAE6E8")]
        Fae6e8,
        #[serde(rename = "#FAEEE6")]
        Faeee6,
    }
    impl ::std::fmt::Display for NewDashboardDataAttributesColor {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Fcf2cf => f.write_str("#FCF2CF"),
                Self::D7f5e1 => f.write_str("#D7F5E1"),
                Self::E9e2ff => f.write_str("#E9E2FF"),
                Self::Fae6e8 => f.write_str("#FAE6E8"),
                Self::Faeee6 => f.write_str("#FAEEE6"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardDataAttributesColor {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "#FCF2CF" => Ok(Self::Fcf2cf),
                "#D7F5E1" => Ok(Self::D7f5e1),
                "#E9E2FF" => Ok(Self::E9e2ff),
                "#FAE6E8" => Ok(Self::Fae6e8),
                "#FAEEE6" => Ok(Self::Faeee6),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewDashboardDataAttributesColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardDataAttributesColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardDataAttributesColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The owner type of the dashboard
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The owner type of the dashboard",
    ///  "type": "string",
    ///  "enum": [
    ///    "user",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardDataAttributesOwner {
        #[serde(rename = "user")]
        User,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for NewDashboardDataAttributesOwner {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("user"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardDataAttributesOwner {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user" => Ok(Self::User),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewDashboardDataAttributesOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardDataAttributesOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardDataAttributesOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The grouping period for dashboard panel data
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The grouping period for dashboard panel data",
    ///  "type": "string",
    ///  "enum": [
    ///    "day",
    ///    "week",
    ///    "month"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardDataAttributesPeriod {
        #[serde(rename = "day")]
        Day,
        #[serde(rename = "week")]
        Week,
        #[serde(rename = "month")]
        Month,
    }
    impl ::std::fmt::Display for NewDashboardDataAttributesPeriod {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Day => f.write_str("day"),
                Self::Week => f.write_str("week"),
                Self::Month => f.write_str("month"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardDataAttributesPeriod {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "day" => Ok(Self::Day),
                "week" => Ok(Self::Week),
                "month" => Ok(Self::Month),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewDashboardDataAttributesPeriod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardDataAttributesPeriod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardDataAttributesPeriod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboards"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardDataType {
        #[serde(rename = "dashboards")]
        Dashboards,
    }
    impl ::std::fmt::Display for NewDashboardDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Dashboards => f.write_str("dashboards"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboards" => Ok(Self::Dashboards),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewDashboardDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewDashboardDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewDashboardDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "params"
    ///          ],
    ///          "properties": {
    ///            "name": {
    ///              "description": "The name of the dashboard_panel",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "params": {
    ///              "type": "object",
    ///              "properties": {
    ///                "datalabels": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "enabled": {
    ///                      "type": "boolean"
    ///                    }
    ///                  }
    ///                },
    ///                "datasets": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "aggregate": {
    ///                        "type": [
    ///                          "object",
    ///                          "null"
    ///                        ],
    ///                        "properties": {
    ///                          "cumulative": {
    ///                            "type": [
    ///                              "boolean",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "key": {
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "operation": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "count",
    ///                              "sum",
    ///                              "average"
    ///                            ]
    ///                          }
    ///                        }
    ///                      },
    ///                      "collection": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "alerts",
    ///                          "incidents",
    ///                          "incident_post_mortems",
    ///                          "incident_action_items",
    ///                          "users"
    ///                        ]
    ///                      },
    ///                      "filter": {
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "object",
    ///                          "properties": {
    ///                            "operation": {
    ///                              "type": "string",
    ///                              "enum": [
    ///                                "and",
    ///                                "or"
    ///                              ]
    ///                            },
    ///                            "rules": {
    ///                              "type": "array",
    ///                              "items": {
    ///                                "type": "object",
    ///                                "properties": {
    ///                                  "condition": {
    ///                                    "type": "string"
    ///                                  },
    ///                                  "key": {
    ///                                    "type": "string"
    ///                                  },
    ///                                  "operation": {
    ///                                    "type": "string",
    ///                                    "enum": [
    ///                                      "and",
    ///                                      "or"
    ///                                    ]
    ///                                  },
    ///                                  "value": {
    ///                                    "type": "string"
    ///                                  }
    ///                                }
    ///                              }
    ///                            }
    ///                          }
    ///                        }
    ///                      },
    ///                      "group_by": {
    ///                        "oneOf": [
    ///                          {
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          {
    ///                            "type": [
    ///                              "object",
    ///                              "null"
    ///                            ],
    ///                            "required": [
    ///                              "key",
    ///                              "value"
    ///                            ],
    ///                            "properties": {
    ///                              "key": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "custom_field",
    ///                                  "incident_role",
    ///                                  "alert_field"
    ///                                ]
    ///                              },
    ///                              "value": {
    ///                                "type": "string"
    ///                              }
    ///                            }
    ///                          }
    ///                        ]
    ///                      },
    ///                      "name": {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "description": {
    ///                  "type": "string"
    ///                },
    ///                "display": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "line_chart",
    ///                    "line_stepped_chart",
    ///                    "column_chart",
    ///                    "stacked_column_chart",
    ///                    "monitoring_chart",
    ///                    "pie_chart",
    ///                    "table",
    ///                    "aggregate_value"
    ///                  ]
    ///                },
    ///                "legend": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "groups": {
    ///                      "default": "all",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "all",
    ///                        "charted"
    ///                      ]
    ///                    }
    ///                  }
    ///                },
    ///                "table_fields": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "position": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "h",
    ///                "w",
    ///                "x",
    ///                "y"
    ///              ],
    ///              "properties": {
    ///                "h": {
    ///                  "type": "number"
    ///                },
    ///                "w": {
    ///                  "type": "number"
    ///                },
    ///                "x": {
    ///                  "type": "number"
    ///                },
    ///                "y": {
    ///                  "type": "number"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "dashboard_panels"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanel {
        pub data: NewDashboardPanelData,
    }
    impl NewDashboardPanel {
        pub fn builder() -> builder::NewDashboardPanel {
            Default::default()
        }
    }
    ///`NewDashboardPanelData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "params"
    ///      ],
    ///      "properties": {
    ///        "name": {
    ///          "description": "The name of the dashboard_panel",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "params": {
    ///          "type": "object",
    ///          "properties": {
    ///            "datalabels": {
    ///              "type": "object",
    ///              "properties": {
    ///                "enabled": {
    ///                  "type": "boolean"
    ///                }
    ///              }
    ///            },
    ///            "datasets": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "aggregate": {
    ///                    "type": [
    ///                      "object",
    ///                      "null"
    ///                    ],
    ///                    "properties": {
    ///                      "cumulative": {
    ///                        "type": [
    ///                          "boolean",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "key": {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "operation": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "count",
    ///                          "sum",
    ///                          "average"
    ///                        ]
    ///                      }
    ///                    }
    ///                  },
    ///                  "collection": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "alerts",
    ///                      "incidents",
    ///                      "incident_post_mortems",
    ///                      "incident_action_items",
    ///                      "users"
    ///                    ]
    ///                  },
    ///                  "filter": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "properties": {
    ///                        "operation": {
    ///                          "type": "string",
    ///                          "enum": [
    ///                            "and",
    ///                            "or"
    ///                          ]
    ///                        },
    ///                        "rules": {
    ///                          "type": "array",
    ///                          "items": {
    ///                            "type": "object",
    ///                            "properties": {
    ///                              "condition": {
    ///                                "type": "string"
    ///                              },
    ///                              "key": {
    ///                                "type": "string"
    ///                              },
    ///                              "operation": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "and",
    ///                                  "or"
    ///                                ]
    ///                              },
    ///                              "value": {
    ///                                "type": "string"
    ///                              }
    ///                            }
    ///                          }
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "group_by": {
    ///                    "oneOf": [
    ///                      {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      {
    ///                        "type": [
    ///                          "object",
    ///                          "null"
    ///                        ],
    ///                        "required": [
    ///                          "key",
    ///                          "value"
    ///                        ],
    ///                        "properties": {
    ///                          "key": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "custom_field",
    ///                              "incident_role",
    ///                              "alert_field"
    ///                            ]
    ///                          },
    ///                          "value": {
    ///                            "type": "string"
    ///                          }
    ///                        }
    ///                      }
    ///                    ]
    ///                  },
    ///                  "name": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "type": "string"
    ///            },
    ///            "display": {
    ///              "type": "string",
    ///              "enum": [
    ///                "line_chart",
    ///                "line_stepped_chart",
    ///                "column_chart",
    ///                "stacked_column_chart",
    ///                "monitoring_chart",
    ///                "pie_chart",
    ///                "table",
    ///                "aggregate_value"
    ///              ]
    ///            },
    ///            "legend": {
    ///              "type": "object",
    ///              "properties": {
    ///                "groups": {
    ///                  "default": "all",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "all",
    ///                    "charted"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "table_fields": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "position": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "h",
    ///            "w",
    ///            "x",
    ///            "y"
    ///          ],
    ///          "properties": {
    ///            "h": {
    ///              "type": "number"
    ///            },
    ///            "w": {
    ///              "type": "number"
    ///            },
    ///            "x": {
    ///              "type": "number"
    ///            },
    ///            "y": {
    ///              "type": "number"
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboard_panels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelData {
        pub attributes: NewDashboardPanelDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewDashboardPanelDataType,
    }
    impl NewDashboardPanelData {
        pub fn builder() -> builder::NewDashboardPanelData {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "params"
    ///  ],
    ///  "properties": {
    ///    "name": {
    ///      "description": "The name of the dashboard_panel",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "datalabels": {
    ///          "type": "object",
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            }
    ///          }
    ///        },
    ///        "datasets": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "aggregate": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "properties": {
    ///                  "cumulative": {
    ///                    "type": [
    ///                      "boolean",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "key": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "operation": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "count",
    ///                      "sum",
    ///                      "average"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              "collection": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "alerts",
    ///                  "incidents",
    ///                  "incident_post_mortems",
    ///                  "incident_action_items",
    ///                  "users"
    ///                ]
    ///              },
    ///              "filter": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "operation": {
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "and",
    ///                        "or"
    ///                      ]
    ///                    },
    ///                    "rules": {
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "object",
    ///                        "properties": {
    ///                          "condition": {
    ///                            "type": "string"
    ///                          },
    ///                          "key": {
    ///                            "type": "string"
    ///                          },
    ///                          "operation": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "and",
    ///                              "or"
    ///                            ]
    ///                          },
    ///                          "value": {
    ///                            "type": "string"
    ///                          }
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "group_by": {
    ///                "oneOf": [
    ///                  {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  {
    ///                    "type": [
    ///                      "object",
    ///                      "null"
    ///                    ],
    ///                    "required": [
    ///                      "key",
    ///                      "value"
    ///                    ],
    ///                    "properties": {
    ///                      "key": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "custom_field",
    ///                          "incident_role",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              },
    ///              "name": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "type": "string"
    ///        },
    ///        "display": {
    ///          "type": "string",
    ///          "enum": [
    ///            "line_chart",
    ///            "line_stepped_chart",
    ///            "column_chart",
    ///            "stacked_column_chart",
    ///            "monitoring_chart",
    ///            "pie_chart",
    ///            "table",
    ///            "aggregate_value"
    ///          ]
    ///        },
    ///        "legend": {
    ///          "type": "object",
    ///          "properties": {
    ///            "groups": {
    ///              "default": "all",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "charted"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "table_fields": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "h",
    ///        "w",
    ///        "x",
    ///        "y"
    ///      ],
    ///      "properties": {
    ///        "h": {
    ///          "type": "number"
    ///        },
    ///        "w": {
    ///          "type": "number"
    ///        },
    ///        "x": {
    ///          "type": "number"
    ///        },
    ///        "y": {
    ///          "type": "number"
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewDashboardPanelDataAttributes {
        ///The name of the dashboard_panel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        pub params: NewDashboardPanelDataAttributesParams,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<NewDashboardPanelDataAttributesPosition>,
    }
    impl NewDashboardPanelDataAttributes {
        pub fn builder() -> builder::NewDashboardPanelDataAttributes {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "datalabels": {
    ///      "type": "object",
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    "datasets": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "aggregate": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "properties": {
    ///              "cumulative": {
    ///                "type": [
    ///                  "boolean",
    ///                  "null"
    ///                ]
    ///              },
    ///              "key": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "operation": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "count",
    ///                  "sum",
    ///                  "average"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "collection": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alerts",
    ///              "incidents",
    ///              "incident_post_mortems",
    ///              "incident_action_items",
    ///              "users"
    ///            ]
    ///          },
    ///          "filter": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "operation": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "and",
    ///                    "or"
    ///                  ]
    ///                },
    ///                "rules": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "condition": {
    ///                        "type": "string"
    ///                      },
    ///                      "key": {
    ///                        "type": "string"
    ///                      },
    ///                      "operation": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "and",
    ///                          "or"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "group_by": {
    ///            "oneOf": [
    ///              {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "custom_field",
    ///                      "incident_role",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          },
    ///          "name": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "display": {
    ///      "type": "string",
    ///      "enum": [
    ///        "line_chart",
    ///        "line_stepped_chart",
    ///        "column_chart",
    ///        "stacked_column_chart",
    ///        "monitoring_chart",
    ///        "pie_chart",
    ///        "table",
    ///        "aggregate_value"
    ///      ]
    ///    },
    ///    "legend": {
    ///      "type": "object",
    ///      "properties": {
    ///        "groups": {
    ///          "default": "all",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "charted"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "table_fields": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub datalabels: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatalabels,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub datasets: ::std::vec::Vec<NewDashboardPanelDataAttributesParamsDatasetsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub display: ::std::option::Option<NewDashboardPanelDataAttributesParamsDisplay>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub legend: ::std::option::Option<NewDashboardPanelDataAttributesParamsLegend>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub table_fields: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for NewDashboardPanelDataAttributesParams {
        fn default() -> Self {
            Self {
                datalabels: Default::default(),
                datasets: Default::default(),
                description: Default::default(),
                display: Default::default(),
                legend: Default::default(),
                table_fields: Default::default(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParams {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParams {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatalabels`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsDatalabels {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for NewDashboardPanelDataAttributesParamsDatalabels {
        fn default() -> Self {
            Self {
                enabled: Default::default(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParamsDatalabels {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsDatalabels {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "aggregate": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "cumulative": {
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "key": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "operation": {
    ///          "type": "string",
    ///          "enum": [
    ///            "count",
    ///            "sum",
    ///            "average"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "collection": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts",
    ///        "incidents",
    ///        "incident_post_mortems",
    ///        "incident_action_items",
    ///        "users"
    ///      ]
    ///    },
    ///    "filter": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "operation": {
    ///            "type": "string",
    ///            "enum": [
    ///              "and",
    ///              "or"
    ///            ]
    ///          },
    ///          "rules": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "condition": {
    ///                  "type": "string"
    ///                },
    ///                "key": {
    ///                  "type": "string"
    ///                },
    ///                "operation": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "and",
    ///                    "or"
    ///                  ]
    ///                },
    ///                "value": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "group_by": {
    ///      "oneOf": [
    ///        {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "key",
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "key": {
    ///              "type": "string",
    ///              "enum": [
    ///                "custom_field",
    ///                "incident_role",
    ///                "alert_field"
    ///              ]
    ///            },
    ///            "value": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsDatasetsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub aggregate: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub collection: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemCollection,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub filter: ::std::vec::Vec<
            NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for NewDashboardPanelDataAttributesParamsDatasetsItem {
        fn default() -> Self {
            Self {
                aggregate: Default::default(),
                collection: Default::default(),
                filter: Default::default(),
                group_by: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParamsDatasetsItem {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsDatasetsItem {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemAggregate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "cumulative": {
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "key": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "count",
    ///        "sum",
    ///        "average"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cumulative: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation,
        >,
    }
    impl ::std::default::Default
    for NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
        fn default() -> Self {
            Self {
                cumulative: Default::default(),
                key: Default::default(),
                operation: Default::default(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "count",
    ///    "sum",
    ///    "average"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        #[serde(rename = "count")]
        Count,
        #[serde(rename = "sum")]
        Sum,
        #[serde(rename = "average")]
        Average,
    }
    impl ::std::fmt::Display
    for NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Count => f.write_str("count"),
                Self::Sum => f.write_str("sum"),
                Self::Average => f.write_str("average"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "count" => Ok(Self::Count),
                "sum" => Ok(Self::Sum),
                "average" => Ok(Self::Average),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemCollection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts",
    ///    "incidents",
    ///    "incident_post_mortems",
    ///    "incident_action_items",
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsDatasetsItemCollection {
        #[serde(rename = "alerts")]
        Alerts,
        #[serde(rename = "incidents")]
        Incidents,
        #[serde(rename = "incident_post_mortems")]
        IncidentPostMortems,
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display
    for NewDashboardPanelDataAttributesParamsDatasetsItemCollection {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
                Self::Incidents => f.write_str("incidents"),
                Self::IncidentPostMortems => f.write_str("incident_post_mortems"),
                Self::IncidentActionItems => f.write_str("incident_action_items"),
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                "incidents" => Ok(Self::Incidents),
                "incident_post_mortems" => Ok(Self::IncidentPostMortems),
                "incident_action_items" => Ok(Self::IncidentActionItems),
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "condition": {
    ///            "type": "string"
    ///          },
    ///          "key": {
    ///            "type": "string"
    ///          },
    ///          "operation": {
    ///            "type": "string",
    ///            "enum": [
    ///              "and",
    ///              "or"
    ///            ]
    ///          },
    ///          "value": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<
            NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
        >,
    }
    impl ::std::default::Default
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
        fn default() -> Self {
            Self {
                operation: Default::default(),
                rules: Default::default(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "condition": {
    ///      "type": "string"
    ///    },
    ///    "key": {
    ///      "type": "string"
    ///    },
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
        fn default() -> Self {
            Self {
                condition: Default::default(),
                key: Default::default(),
                operation: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "key",
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "key": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_field",
    ///            "incident_role",
    ///            "alert_field"
    ///          ]
    ///        },
    ///        "value": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy {
        Variant0(::std::option::Option<::std::string::String>),
        Variant1(
            ::std::option::Option<
                NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            >,
        ),
    }
    impl ::std::convert::From<::std::option::Option<::std::string::String>>
    for NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy {
        fn from(value: ::std::option::Option<::std::string::String>) -> Self {
            Self::Variant0(value)
        }
    }
    impl ::std::convert::From<
        ::std::option::Option<
            NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
        >,
    > for NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy {
        fn from(
            value: ::std::option::Option<
                NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            >,
        ) -> Self {
            Self::Variant1(value)
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field",
    ///        "incident_role",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
        pub key: NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key,
        pub value: ::std::string::String,
    }
    impl NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field",
    ///    "incident_role",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        #[serde(rename = "custom_field")]
        CustomField,
        #[serde(rename = "incident_role")]
        IncidentRole,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomField => f.write_str("custom_field"),
                Self::IncidentRole => f.write_str("incident_role"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field" => Ok(Self::CustomField),
                "incident_role" => Ok(Self::IncidentRole),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsDisplay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "line_chart",
    ///    "line_stepped_chart",
    ///    "column_chart",
    ///    "stacked_column_chart",
    ///    "monitoring_chart",
    ///    "pie_chart",
    ///    "table",
    ///    "aggregate_value"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsDisplay {
        #[serde(rename = "line_chart")]
        LineChart,
        #[serde(rename = "line_stepped_chart")]
        LineSteppedChart,
        #[serde(rename = "column_chart")]
        ColumnChart,
        #[serde(rename = "stacked_column_chart")]
        StackedColumnChart,
        #[serde(rename = "monitoring_chart")]
        MonitoringChart,
        #[serde(rename = "pie_chart")]
        PieChart,
        #[serde(rename = "table")]
        Table,
        #[serde(rename = "aggregate_value")]
        AggregateValue,
    }
    impl ::std::fmt::Display for NewDashboardPanelDataAttributesParamsDisplay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LineChart => f.write_str("line_chart"),
                Self::LineSteppedChart => f.write_str("line_stepped_chart"),
                Self::ColumnChart => f.write_str("column_chart"),
                Self::StackedColumnChart => f.write_str("stacked_column_chart"),
                Self::MonitoringChart => f.write_str("monitoring_chart"),
                Self::PieChart => f.write_str("pie_chart"),
                Self::Table => f.write_str("table"),
                Self::AggregateValue => f.write_str("aggregate_value"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardPanelDataAttributesParamsDisplay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "line_chart" => Ok(Self::LineChart),
                "line_stepped_chart" => Ok(Self::LineSteppedChart),
                "column_chart" => Ok(Self::ColumnChart),
                "stacked_column_chart" => Ok(Self::StackedColumnChart),
                "monitoring_chart" => Ok(Self::MonitoringChart),
                "pie_chart" => Ok(Self::PieChart),
                "table" => Ok(Self::Table),
                "aggregate_value" => Ok(Self::AggregateValue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewDashboardPanelDataAttributesParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsLegend`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "groups": {
    ///      "default": "all",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "charted"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesParamsLegend {
        #[serde(
            default = "defaults::new_dashboard_panel_data_attributes_params_legend_groups"
        )]
        pub groups: NewDashboardPanelDataAttributesParamsLegendGroups,
    }
    impl ::std::default::Default for NewDashboardPanelDataAttributesParamsLegend {
        fn default() -> Self {
            Self {
                groups: defaults::new_dashboard_panel_data_attributes_params_legend_groups(),
            }
        }
    }
    impl NewDashboardPanelDataAttributesParamsLegend {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesParamsLegend {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataAttributesParamsLegendGroups`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "all",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "charted"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataAttributesParamsLegendGroups {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "charted")]
        Charted,
    }
    impl ::std::fmt::Display for NewDashboardPanelDataAttributesParamsLegendGroups {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Charted => f.write_str("charted"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardPanelDataAttributesParamsLegendGroups {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "charted" => Ok(Self::Charted),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewDashboardPanelDataAttributesParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewDashboardPanelDataAttributesParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewDashboardPanelDataAttributesParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for NewDashboardPanelDataAttributesParamsLegendGroups {
        fn default() -> Self {
            NewDashboardPanelDataAttributesParamsLegendGroups::All
        }
    }
    ///`NewDashboardPanelDataAttributesPosition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "h",
    ///    "w",
    ///    "x",
    ///    "y"
    ///  ],
    ///  "properties": {
    ///    "h": {
    ///      "type": "number"
    ///    },
    ///    "w": {
    ///      "type": "number"
    ///    },
    ///    "x": {
    ///      "type": "number"
    ///    },
    ///    "y": {
    ///      "type": "number"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewDashboardPanelDataAttributesPosition {
        pub h: f64,
        pub w: f64,
        pub x: f64,
        pub y: f64,
    }
    impl NewDashboardPanelDataAttributesPosition {
        pub fn builder() -> builder::NewDashboardPanelDataAttributesPosition {
            Default::default()
        }
    }
    ///`NewDashboardPanelDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboard_panels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewDashboardPanelDataType {
        #[serde(rename = "dashboard_panels")]
        DashboardPanels,
    }
    impl ::std::fmt::Display for NewDashboardPanelDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::DashboardPanels => f.write_str("dashboard_panels"),
            }
        }
    }
    impl ::std::str::FromStr for NewDashboardPanelDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboard_panels" => Ok(Self::DashboardPanels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewDashboardPanelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewDashboardPanelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewDashboardPanelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEdgeConnector`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "edge_connector"
    ///  ],
    ///  "properties": {
    ///    "edge_connector": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "Connector description",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "Connector name",
    ///          "type": "string"
    ///        },
    ///        "status": {
    ///          "description": "Connector status",
    ///          "type": "string",
    ///          "enum": [
    ///            "active",
    ///            "paused"
    ///          ]
    ///        },
    ///        "subscriptions": {
    ///          "description": "Array of event types to subscribe to",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEdgeConnector {
        pub edge_connector: NewEdgeConnectorEdgeConnector,
    }
    impl NewEdgeConnector {
        pub fn builder() -> builder::NewEdgeConnector {
            Default::default()
        }
    }
    ///`NewEdgeConnectorAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "action"
    ///  ],
    ///  "properties": {
    ///    "action": {
    ///      "type": "object",
    ///      "required": [
    ///        "action_type",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "action_type": {
    ///          "description": "Action type",
    ///          "type": "string",
    ///          "enum": [
    ///            "script",
    ///            "http"
    ///          ]
    ///        },
    ///        "metadata": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "icon": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "bolt",
    ///                "bolt-slash",
    ///                "cog",
    ///                "command-line",
    ///                "code-bracket",
    ///                "server",
    ///                "server-stack",
    ///                "play",
    ///                "arrow-path",
    ///                "wrench-screwdriver",
    ///                "cube",
    ///                "rocket-launch"
    ///              ]
    ///            },
    ///            "parameters": {
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "default": {
    ///                    "description": "Default value (any type)",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "description": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "name": {
    ///                    "type": "string"
    ///                  },
    ///                  "options": {
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "required": {
    ///                    "type": "boolean"
    ///                  },
    ///                  "type": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "string",
    ///                      "number",
    ///                      "boolean"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "timeout": {
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "Action name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEdgeConnectorAction {
        pub action: NewEdgeConnectorActionAction,
    }
    impl NewEdgeConnectorAction {
        pub fn builder() -> builder::NewEdgeConnectorAction {
            Default::default()
        }
    }
    ///`NewEdgeConnectorActionAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "action_type",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "action_type": {
    ///      "description": "Action type",
    ///      "type": "string",
    ///      "enum": [
    ///        "script",
    ///        "http"
    ///      ]
    ///    },
    ///    "metadata": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "icon": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "bolt",
    ///            "bolt-slash",
    ///            "cog",
    ///            "command-line",
    ///            "code-bracket",
    ///            "server",
    ///            "server-stack",
    ///            "play",
    ///            "arrow-path",
    ///            "wrench-screwdriver",
    ///            "cube",
    ///            "rocket-launch"
    ///          ]
    ///        },
    ///        "parameters": {
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "default": {
    ///                "description": "Default value (any type)",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "description": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              },
    ///              "options": {
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "required": {
    ///                "type": "boolean"
    ///              },
    ///              "type": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "string",
    ///                  "number",
    ///                  "boolean"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "timeout": {
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "Action name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEdgeConnectorActionAction {
        ///Action type
        pub action_type: NewEdgeConnectorActionActionActionType,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub metadata: ::std::option::Option<NewEdgeConnectorActionActionMetadata>,
        ///Action name
        pub name: ::std::string::String,
    }
    impl NewEdgeConnectorActionAction {
        pub fn builder() -> builder::NewEdgeConnectorActionAction {
            Default::default()
        }
    }
    ///Action type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Action type",
    ///  "type": "string",
    ///  "enum": [
    ///    "script",
    ///    "http"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEdgeConnectorActionActionActionType {
        #[serde(rename = "script")]
        Script,
        #[serde(rename = "http")]
        Http,
    }
    impl ::std::fmt::Display for NewEdgeConnectorActionActionActionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Script => f.write_str("script"),
                Self::Http => f.write_str("http"),
            }
        }
    }
    impl ::std::str::FromStr for NewEdgeConnectorActionActionActionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "script" => Ok(Self::Script),
                "http" => Ok(Self::Http),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEdgeConnectorActionActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEdgeConnectorActionActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEdgeConnectorActionActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEdgeConnectorActionActionMetadata`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "bolt",
    ///        "bolt-slash",
    ///        "cog",
    ///        "command-line",
    ///        "code-bracket",
    ///        "server",
    ///        "server-stack",
    ///        "play",
    ///        "arrow-path",
    ///        "wrench-screwdriver",
    ///        "cube",
    ///        "rocket-launch"
    ///      ]
    ///    },
    ///    "parameters": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "default": {
    ///            "description": "Default value (any type)",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "description": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          },
    ///          "options": {
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "required": {
    ///            "type": "boolean"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "string",
    ///              "number",
    ///              "boolean"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "timeout": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEdgeConnectorActionActionMetadata {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<NewEdgeConnectorActionActionMetadataIcon>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parameters: ::std::option::Option<
            ::std::vec::Vec<NewEdgeConnectorActionActionMetadataParametersItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub timeout: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for NewEdgeConnectorActionActionMetadata {
        fn default() -> Self {
            Self {
                description: Default::default(),
                icon: Default::default(),
                parameters: Default::default(),
                timeout: Default::default(),
            }
        }
    }
    impl NewEdgeConnectorActionActionMetadata {
        pub fn builder() -> builder::NewEdgeConnectorActionActionMetadata {
            Default::default()
        }
    }
    ///`NewEdgeConnectorActionActionMetadataIcon`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "bolt",
    ///    "bolt-slash",
    ///    "cog",
    ///    "command-line",
    ///    "code-bracket",
    ///    "server",
    ///    "server-stack",
    ///    "play",
    ///    "arrow-path",
    ///    "wrench-screwdriver",
    ///    "cube",
    ///    "rocket-launch"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEdgeConnectorActionActionMetadataIcon {
        #[serde(rename = "bolt")]
        Bolt,
        #[serde(rename = "bolt-slash")]
        BoltSlash,
        #[serde(rename = "cog")]
        Cog,
        #[serde(rename = "command-line")]
        CommandLine,
        #[serde(rename = "code-bracket")]
        CodeBracket,
        #[serde(rename = "server")]
        Server,
        #[serde(rename = "server-stack")]
        ServerStack,
        #[serde(rename = "play")]
        Play,
        #[serde(rename = "arrow-path")]
        ArrowPath,
        #[serde(rename = "wrench-screwdriver")]
        WrenchScrewdriver,
        #[serde(rename = "cube")]
        Cube,
        #[serde(rename = "rocket-launch")]
        RocketLaunch,
    }
    impl ::std::fmt::Display for NewEdgeConnectorActionActionMetadataIcon {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Bolt => f.write_str("bolt"),
                Self::BoltSlash => f.write_str("bolt-slash"),
                Self::Cog => f.write_str("cog"),
                Self::CommandLine => f.write_str("command-line"),
                Self::CodeBracket => f.write_str("code-bracket"),
                Self::Server => f.write_str("server"),
                Self::ServerStack => f.write_str("server-stack"),
                Self::Play => f.write_str("play"),
                Self::ArrowPath => f.write_str("arrow-path"),
                Self::WrenchScrewdriver => f.write_str("wrench-screwdriver"),
                Self::Cube => f.write_str("cube"),
                Self::RocketLaunch => f.write_str("rocket-launch"),
            }
        }
    }
    impl ::std::str::FromStr for NewEdgeConnectorActionActionMetadataIcon {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "bolt" => Ok(Self::Bolt),
                "bolt-slash" => Ok(Self::BoltSlash),
                "cog" => Ok(Self::Cog),
                "command-line" => Ok(Self::CommandLine),
                "code-bracket" => Ok(Self::CodeBracket),
                "server" => Ok(Self::Server),
                "server-stack" => Ok(Self::ServerStack),
                "play" => Ok(Self::Play),
                "arrow-path" => Ok(Self::ArrowPath),
                "wrench-screwdriver" => Ok(Self::WrenchScrewdriver),
                "cube" => Ok(Self::Cube),
                "rocket-launch" => Ok(Self::RocketLaunch),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEdgeConnectorActionActionMetadataIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEdgeConnectorActionActionMetadataIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEdgeConnectorActionActionMetadataIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEdgeConnectorActionActionMetadataParametersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "default": {
    ///      "description": "Default value (any type)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "options": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "required": {
    ///      "type": "boolean"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "string",
    ///        "number",
    ///        "boolean"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEdgeConnectorActionActionMetadataParametersItem {
        ///Default value (any type)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub options: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<
            NewEdgeConnectorActionActionMetadataParametersItemType,
        >,
    }
    impl ::std::default::Default for NewEdgeConnectorActionActionMetadataParametersItem {
        fn default() -> Self {
            Self {
                default: Default::default(),
                description: Default::default(),
                name: Default::default(),
                options: Default::default(),
                required: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl NewEdgeConnectorActionActionMetadataParametersItem {
        pub fn builder() -> builder::NewEdgeConnectorActionActionMetadataParametersItem {
            Default::default()
        }
    }
    ///`NewEdgeConnectorActionActionMetadataParametersItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "string",
    ///    "number",
    ///    "boolean"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEdgeConnectorActionActionMetadataParametersItemType {
        #[serde(rename = "string")]
        String,
        #[serde(rename = "number")]
        Number,
        #[serde(rename = "boolean")]
        Boolean,
    }
    impl ::std::fmt::Display for NewEdgeConnectorActionActionMetadataParametersItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::String => f.write_str("string"),
                Self::Number => f.write_str("number"),
                Self::Boolean => f.write_str("boolean"),
            }
        }
    }
    impl ::std::str::FromStr for NewEdgeConnectorActionActionMetadataParametersItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "string" => Ok(Self::String),
                "number" => Ok(Self::Number),
                "boolean" => Ok(Self::Boolean),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEdgeConnectorActionActionMetadataParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEdgeConnectorActionActionMetadataParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEdgeConnectorActionActionMetadataParametersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEdgeConnectorEdgeConnector`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "Connector description",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "Connector name",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "Connector status",
    ///      "type": "string",
    ///      "enum": [
    ///        "active",
    ///        "paused"
    ///      ]
    ///    },
    ///    "subscriptions": {
    ///      "description": "Array of event types to subscribe to",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEdgeConnectorEdgeConnector {
        ///Connector description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Connector name
        pub name: ::std::string::String,
        ///Connector status
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<NewEdgeConnectorEdgeConnectorStatus>,
        ///Array of event types to subscribe to
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub subscriptions: ::std::vec::Vec<::std::string::String>,
    }
    impl NewEdgeConnectorEdgeConnector {
        pub fn builder() -> builder::NewEdgeConnectorEdgeConnector {
            Default::default()
        }
    }
    ///Connector status
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Connector status",
    ///  "type": "string",
    ///  "enum": [
    ///    "active",
    ///    "paused"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEdgeConnectorEdgeConnectorStatus {
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "paused")]
        Paused,
    }
    impl ::std::fmt::Display for NewEdgeConnectorEdgeConnectorStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Active => f.write_str("active"),
                Self::Paused => f.write_str("paused"),
            }
        }
    }
    impl ::std::str::FromStr for NewEdgeConnectorEdgeConnectorStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "active" => Ok(Self::Active),
                "paused" => Ok(Self::Paused),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEdgeConnectorEdgeConnectorStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEdgeConnectorEdgeConnectorStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEdgeConnectorEdgeConnectorStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEnvironment`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the environment",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the environment",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the environment",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the environment",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the environment",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this environment.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this environment",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this environment",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "environments"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEnvironment {
        pub data: NewEnvironmentData,
    }
    impl NewEnvironment {
        pub fn builder() -> builder::NewEnvironment {
            Default::default()
        }
    }
    ///`NewEnvironmentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the environment",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the environment",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the environment",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the environment",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the environment",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this environment.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this environment",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this environment",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "environments"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEnvironmentData {
        pub attributes: NewEnvironmentDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewEnvironmentDataType,
    }
    impl NewEnvironmentData {
        pub fn builder() -> builder::NewEnvironmentData {
            Default::default()
        }
    }
    ///`NewEnvironmentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the environment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the environment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the environment",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the environment",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this environment.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewEnvironmentDataAttributes {
        ///The hex color of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the environment
        pub name: ::std::string::String,
        ///Emails to attach to the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this environment.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewEnvironmentDataAttributesPropertiesItem>,
        ///Slack Aliases associated with this environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<NewEnvironmentDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<NewEnvironmentDataAttributesSlackChannelsItem>,
        >,
    }
    impl NewEnvironmentDataAttributes {
        pub fn builder() -> builder::NewEnvironmentDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEnvironmentDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl NewEnvironmentDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewEnvironmentDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`NewEnvironmentDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEnvironmentDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl NewEnvironmentDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::NewEnvironmentDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`NewEnvironmentDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEnvironmentDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl NewEnvironmentDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::NewEnvironmentDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`NewEnvironmentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEnvironmentDataType {
        #[serde(rename = "environments")]
        Environments,
    }
    impl ::std::fmt::Display for NewEnvironmentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
            }
        }
    }
    impl ::std::str::FromStr for NewEnvironmentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEnvironmentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewEnvironmentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewEnvironmentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "business_hours": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "days": {
    ///                  "description": "Business days",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "M",
    ///                      "T",
    ///                      "W",
    ///                      "R",
    ///                      "F",
    ///                      "U",
    ///                      "S"
    ///                    ]
    ///                  }
    ///                },
    ///                "end_time": {
    ///                  "description": "End time for business hours (HH:MM)",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "start_time": {
    ///                  "description": "Start time for business hours (HH:MM)",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "time_zone": {
    ///                  "description": "Time zone for business hours",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "International Date Line West",
    ///                    "Etc/GMT+12",
    ///                    "American Samoa",
    ///                    "Pacific/Pago_Pago",
    ///                    "Midway Island",
    ///                    "Pacific/Midway",
    ///                    "Hawaii",
    ///                    "Pacific/Honolulu",
    ///                    "Alaska",
    ///                    "America/Juneau",
    ///                    "Pacific Time (US & Canada)",
    ///                    "America/Los_Angeles",
    ///                    "Tijuana",
    ///                    "America/Tijuana",
    ///                    "Arizona",
    ///                    "America/Phoenix",
    ///                    "Mazatlan",
    ///                    "America/Mazatlan",
    ///                    "Mountain Time (US & Canada)",
    ///                    "America/Denver",
    ///                    "Central America",
    ///                    "America/Guatemala",
    ///                    "Central Time (US & Canada)",
    ///                    "America/Chicago",
    ///                    "Chihuahua",
    ///                    "America/Chihuahua",
    ///                    "Guadalajara",
    ///                    "America/Mexico_City",
    ///                    "Mexico City",
    ///                    "Monterrey",
    ///                    "America/Monterrey",
    ///                    "Saskatchewan",
    ///                    "America/Regina",
    ///                    "Bogota",
    ///                    "America/Bogota",
    ///                    "Eastern Time (US & Canada)",
    ///                    "America/New_York",
    ///                    "Indiana (East)",
    ///                    "America/Indiana/Indianapolis",
    ///                    "Lima",
    ///                    "America/Lima",
    ///                    "Quito",
    ///                    "Atlantic Time (Canada)",
    ///                    "America/Halifax",
    ///                    "Caracas",
    ///                    "America/Caracas",
    ///                    "Georgetown",
    ///                    "America/Guyana",
    ///                    "La Paz",
    ///                    "America/La_Paz",
    ///                    "Puerto Rico",
    ///                    "America/Puerto_Rico",
    ///                    "Santiago",
    ///                    "America/Santiago",
    ///                    "Newfoundland",
    ///                    "America/St_Johns",
    ///                    "Asuncion",
    ///                    "America/Asuncion",
    ///                    "Brasilia",
    ///                    "America/Sao_Paulo",
    ///                    "Buenos Aires",
    ///                    "America/Argentina/Buenos_Aires",
    ///                    "Montevideo",
    ///                    "America/Montevideo",
    ///                    "Greenland",
    ///                    "America/Nuuk",
    ///                    "Mid-Atlantic",
    ///                    "Atlantic/South_Georgia",
    ///                    "Azores",
    ///                    "Atlantic/Azores",
    ///                    "Cape Verde Is.",
    ///                    "Atlantic/Cape_Verde",
    ///                    "Edinburgh",
    ///                    "Europe/London",
    ///                    "Lisbon",
    ///                    "Europe/Lisbon",
    ///                    "London",
    ///                    "Monrovia",
    ///                    "Africa/Monrovia",
    ///                    "UTC",
    ///                    "Etc/UTC",
    ///                    "Amsterdam",
    ///                    "Europe/Amsterdam",
    ///                    "Belgrade",
    ///                    "Europe/Belgrade",
    ///                    "Berlin",
    ///                    "Europe/Berlin",
    ///                    "Bern",
    ///                    "Europe/Zurich",
    ///                    "Bratislava",
    ///                    "Europe/Bratislava",
    ///                    "Brussels",
    ///                    "Europe/Brussels",
    ///                    "Budapest",
    ///                    "Europe/Budapest",
    ///                    "Casablanca",
    ///                    "Africa/Casablanca",
    ///                    "Copenhagen",
    ///                    "Europe/Copenhagen",
    ///                    "Dublin",
    ///                    "Europe/Dublin",
    ///                    "Ljubljana",
    ///                    "Europe/Ljubljana",
    ///                    "Madrid",
    ///                    "Europe/Madrid",
    ///                    "Paris",
    ///                    "Europe/Paris",
    ///                    "Prague",
    ///                    "Europe/Prague",
    ///                    "Rome",
    ///                    "Europe/Rome",
    ///                    "Sarajevo",
    ///                    "Europe/Sarajevo",
    ///                    "Skopje",
    ///                    "Europe/Skopje",
    ///                    "Stockholm",
    ///                    "Europe/Stockholm",
    ///                    "Vienna",
    ///                    "Europe/Vienna",
    ///                    "Warsaw",
    ///                    "Europe/Warsaw",
    ///                    "West Central Africa",
    ///                    "Africa/Algiers",
    ///                    "Zagreb",
    ///                    "Europe/Zagreb",
    ///                    "Zurich",
    ///                    "Athens",
    ///                    "Europe/Athens",
    ///                    "Bucharest",
    ///                    "Europe/Bucharest",
    ///                    "Cairo",
    ///                    "Africa/Cairo",
    ///                    "Harare",
    ///                    "Africa/Harare",
    ///                    "Helsinki",
    ///                    "Europe/Helsinki",
    ///                    "Jerusalem",
    ///                    "Asia/Jerusalem",
    ///                    "Kaliningrad",
    ///                    "Europe/Kaliningrad",
    ///                    "Kyiv",
    ///                    "Europe/Kiev",
    ///                    "Pretoria",
    ///                    "Africa/Johannesburg",
    ///                    "Riga",
    ///                    "Europe/Riga",
    ///                    "Sofia",
    ///                    "Europe/Sofia",
    ///                    "Tallinn",
    ///                    "Europe/Tallinn",
    ///                    "Vilnius",
    ///                    "Europe/Vilnius",
    ///                    "Baghdad",
    ///                    "Asia/Baghdad",
    ///                    "Istanbul",
    ///                    "Europe/Istanbul",
    ///                    "Kuwait",
    ///                    "Asia/Kuwait",
    ///                    "Minsk",
    ///                    "Europe/Minsk",
    ///                    "Moscow",
    ///                    "Europe/Moscow",
    ///                    "Nairobi",
    ///                    "Africa/Nairobi",
    ///                    "Riyadh",
    ///                    "Asia/Riyadh",
    ///                    "St. Petersburg",
    ///                    "Volgograd",
    ///                    "Europe/Volgograd",
    ///                    "Tehran",
    ///                    "Asia/Tehran",
    ///                    "Abu Dhabi",
    ///                    "Asia/Muscat",
    ///                    "Baku",
    ///                    "Asia/Baku",
    ///                    "Muscat",
    ///                    "Samara",
    ///                    "Europe/Samara",
    ///                    "Tbilisi",
    ///                    "Asia/Tbilisi",
    ///                    "Yerevan",
    ///                    "Asia/Yerevan",
    ///                    "Kabul",
    ///                    "Asia/Kabul",
    ///                    "Almaty",
    ///                    "Asia/Almaty",
    ///                    "Astana",
    ///                    "Ekaterinburg",
    ///                    "Asia/Yekaterinburg",
    ///                    "Islamabad",
    ///                    "Asia/Karachi",
    ///                    "Karachi",
    ///                    "Tashkent",
    ///                    "Asia/Tashkent",
    ///                    "Chennai",
    ///                    "Asia/Kolkata",
    ///                    "Kolkata",
    ///                    "Mumbai",
    ///                    "New Delhi",
    ///                    "Sri Jayawardenepura",
    ///                    "Asia/Colombo",
    ///                    "Kathmandu",
    ///                    "Asia/Kathmandu",
    ///                    "Dhaka",
    ///                    "Asia/Dhaka",
    ///                    "Urumqi",
    ///                    "Asia/Urumqi",
    ///                    "Rangoon",
    ///                    "Asia/Rangoon",
    ///                    "Bangkok",
    ///                    "Asia/Bangkok",
    ///                    "Hanoi",
    ///                    "Jakarta",
    ///                    "Asia/Jakarta",
    ///                    "Krasnoyarsk",
    ///                    "Asia/Krasnoyarsk",
    ///                    "Novosibirsk",
    ///                    "Asia/Novosibirsk",
    ///                    "Beijing",
    ///                    "Asia/Shanghai",
    ///                    "Chongqing",
    ///                    "Asia/Chongqing",
    ///                    "Hong Kong",
    ///                    "Asia/Hong_Kong",
    ///                    "Irkutsk",
    ///                    "Asia/Irkutsk",
    ///                    "Kuala Lumpur",
    ///                    "Asia/Kuala_Lumpur",
    ///                    "Perth",
    ///                    "Australia/Perth",
    ///                    "Singapore",
    ///                    "Asia/Singapore",
    ///                    "Taipei",
    ///                    "Asia/Taipei",
    ///                    "Ulaanbaatar",
    ///                    "Asia/Ulaanbaatar",
    ///                    "Osaka",
    ///                    "Asia/Tokyo",
    ///                    "Sapporo",
    ///                    "Seoul",
    ///                    "Asia/Seoul",
    ///                    "Tokyo",
    ///                    "Yakutsk",
    ///                    "Asia/Yakutsk",
    ///                    "Adelaide",
    ///                    "Australia/Adelaide",
    ///                    "Darwin",
    ///                    "Australia/Darwin",
    ///                    "Brisbane",
    ///                    "Australia/Brisbane",
    ///                    "Canberra",
    ///                    "Australia/Canberra",
    ///                    "Guam",
    ///                    "Pacific/Guam",
    ///                    "Hobart",
    ///                    "Australia/Hobart",
    ///                    "Melbourne",
    ///                    "Australia/Melbourne",
    ///                    "Port Moresby",
    ///                    "Pacific/Port_Moresby",
    ///                    "Sydney",
    ///                    "Australia/Sydney",
    ///                    "Vladivostok",
    ///                    "Asia/Vladivostok",
    ///                    "Magadan",
    ///                    "Asia/Magadan",
    ///                    "New Caledonia",
    ///                    "Pacific/Noumea",
    ///                    "Solomon Is.",
    ///                    "Pacific/Guadalcanal",
    ///                    "Srednekolymsk",
    ///                    "Asia/Srednekolymsk",
    ///                    "Auckland",
    ///                    "Pacific/Auckland",
    ///                    "Fiji",
    ///                    "Pacific/Fiji",
    ///                    "Kamchatka",
    ///                    "Asia/Kamchatka",
    ///                    "Marshall Is.",
    ///                    "Pacific/Majuro",
    ///                    "Wellington",
    ///                    "Chatham Is.",
    ///                    "Pacific/Chatham",
    ///                    "Nuku'alofa",
    ///                    "Pacific/Tongatapu",
    ///                    "Samoa",
    ///                    "Pacific/Apia",
    ///                    "Tokelau Is.",
    ///                    "Pacific/Fakaofo"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "The description of the escalation policy",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "group_ids": {
    ///              "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the escalation policy",
    ///              "type": "string"
    ///            },
    ///            "repeat_count": {
    ///              "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///              "type": "integer"
    ///            },
    ///            "service_ids": {
    ///              "description": "Associated services (alerting the service will trigger escalation policy)",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_policies"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicy {
        pub data: NewEscalationPolicyData,
    }
    impl NewEscalationPolicy {
        pub fn builder() -> builder::NewEscalationPolicy {
            Default::default()
        }
    }
    ///`NewEscalationPolicyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "business_hours": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "days": {
    ///              "description": "Business days",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "M",
    ///                  "T",
    ///                  "W",
    ///                  "R",
    ///                  "F",
    ///                  "U",
    ///                  "S"
    ///                ]
    ///              }
    ///            },
    ///            "end_time": {
    ///              "description": "End time for business hours (HH:MM)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "start_time": {
    ///              "description": "Start time for business hours (HH:MM)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "time_zone": {
    ///              "description": "Time zone for business hours",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "International Date Line West",
    ///                "Etc/GMT+12",
    ///                "American Samoa",
    ///                "Pacific/Pago_Pago",
    ///                "Midway Island",
    ///                "Pacific/Midway",
    ///                "Hawaii",
    ///                "Pacific/Honolulu",
    ///                "Alaska",
    ///                "America/Juneau",
    ///                "Pacific Time (US & Canada)",
    ///                "America/Los_Angeles",
    ///                "Tijuana",
    ///                "America/Tijuana",
    ///                "Arizona",
    ///                "America/Phoenix",
    ///                "Mazatlan",
    ///                "America/Mazatlan",
    ///                "Mountain Time (US & Canada)",
    ///                "America/Denver",
    ///                "Central America",
    ///                "America/Guatemala",
    ///                "Central Time (US & Canada)",
    ///                "America/Chicago",
    ///                "Chihuahua",
    ///                "America/Chihuahua",
    ///                "Guadalajara",
    ///                "America/Mexico_City",
    ///                "Mexico City",
    ///                "Monterrey",
    ///                "America/Monterrey",
    ///                "Saskatchewan",
    ///                "America/Regina",
    ///                "Bogota",
    ///                "America/Bogota",
    ///                "Eastern Time (US & Canada)",
    ///                "America/New_York",
    ///                "Indiana (East)",
    ///                "America/Indiana/Indianapolis",
    ///                "Lima",
    ///                "America/Lima",
    ///                "Quito",
    ///                "Atlantic Time (Canada)",
    ///                "America/Halifax",
    ///                "Caracas",
    ///                "America/Caracas",
    ///                "Georgetown",
    ///                "America/Guyana",
    ///                "La Paz",
    ///                "America/La_Paz",
    ///                "Puerto Rico",
    ///                "America/Puerto_Rico",
    ///                "Santiago",
    ///                "America/Santiago",
    ///                "Newfoundland",
    ///                "America/St_Johns",
    ///                "Asuncion",
    ///                "America/Asuncion",
    ///                "Brasilia",
    ///                "America/Sao_Paulo",
    ///                "Buenos Aires",
    ///                "America/Argentina/Buenos_Aires",
    ///                "Montevideo",
    ///                "America/Montevideo",
    ///                "Greenland",
    ///                "America/Nuuk",
    ///                "Mid-Atlantic",
    ///                "Atlantic/South_Georgia",
    ///                "Azores",
    ///                "Atlantic/Azores",
    ///                "Cape Verde Is.",
    ///                "Atlantic/Cape_Verde",
    ///                "Edinburgh",
    ///                "Europe/London",
    ///                "Lisbon",
    ///                "Europe/Lisbon",
    ///                "London",
    ///                "Monrovia",
    ///                "Africa/Monrovia",
    ///                "UTC",
    ///                "Etc/UTC",
    ///                "Amsterdam",
    ///                "Europe/Amsterdam",
    ///                "Belgrade",
    ///                "Europe/Belgrade",
    ///                "Berlin",
    ///                "Europe/Berlin",
    ///                "Bern",
    ///                "Europe/Zurich",
    ///                "Bratislava",
    ///                "Europe/Bratislava",
    ///                "Brussels",
    ///                "Europe/Brussels",
    ///                "Budapest",
    ///                "Europe/Budapest",
    ///                "Casablanca",
    ///                "Africa/Casablanca",
    ///                "Copenhagen",
    ///                "Europe/Copenhagen",
    ///                "Dublin",
    ///                "Europe/Dublin",
    ///                "Ljubljana",
    ///                "Europe/Ljubljana",
    ///                "Madrid",
    ///                "Europe/Madrid",
    ///                "Paris",
    ///                "Europe/Paris",
    ///                "Prague",
    ///                "Europe/Prague",
    ///                "Rome",
    ///                "Europe/Rome",
    ///                "Sarajevo",
    ///                "Europe/Sarajevo",
    ///                "Skopje",
    ///                "Europe/Skopje",
    ///                "Stockholm",
    ///                "Europe/Stockholm",
    ///                "Vienna",
    ///                "Europe/Vienna",
    ///                "Warsaw",
    ///                "Europe/Warsaw",
    ///                "West Central Africa",
    ///                "Africa/Algiers",
    ///                "Zagreb",
    ///                "Europe/Zagreb",
    ///                "Zurich",
    ///                "Athens",
    ///                "Europe/Athens",
    ///                "Bucharest",
    ///                "Europe/Bucharest",
    ///                "Cairo",
    ///                "Africa/Cairo",
    ///                "Harare",
    ///                "Africa/Harare",
    ///                "Helsinki",
    ///                "Europe/Helsinki",
    ///                "Jerusalem",
    ///                "Asia/Jerusalem",
    ///                "Kaliningrad",
    ///                "Europe/Kaliningrad",
    ///                "Kyiv",
    ///                "Europe/Kiev",
    ///                "Pretoria",
    ///                "Africa/Johannesburg",
    ///                "Riga",
    ///                "Europe/Riga",
    ///                "Sofia",
    ///                "Europe/Sofia",
    ///                "Tallinn",
    ///                "Europe/Tallinn",
    ///                "Vilnius",
    ///                "Europe/Vilnius",
    ///                "Baghdad",
    ///                "Asia/Baghdad",
    ///                "Istanbul",
    ///                "Europe/Istanbul",
    ///                "Kuwait",
    ///                "Asia/Kuwait",
    ///                "Minsk",
    ///                "Europe/Minsk",
    ///                "Moscow",
    ///                "Europe/Moscow",
    ///                "Nairobi",
    ///                "Africa/Nairobi",
    ///                "Riyadh",
    ///                "Asia/Riyadh",
    ///                "St. Petersburg",
    ///                "Volgograd",
    ///                "Europe/Volgograd",
    ///                "Tehran",
    ///                "Asia/Tehran",
    ///                "Abu Dhabi",
    ///                "Asia/Muscat",
    ///                "Baku",
    ///                "Asia/Baku",
    ///                "Muscat",
    ///                "Samara",
    ///                "Europe/Samara",
    ///                "Tbilisi",
    ///                "Asia/Tbilisi",
    ///                "Yerevan",
    ///                "Asia/Yerevan",
    ///                "Kabul",
    ///                "Asia/Kabul",
    ///                "Almaty",
    ///                "Asia/Almaty",
    ///                "Astana",
    ///                "Ekaterinburg",
    ///                "Asia/Yekaterinburg",
    ///                "Islamabad",
    ///                "Asia/Karachi",
    ///                "Karachi",
    ///                "Tashkent",
    ///                "Asia/Tashkent",
    ///                "Chennai",
    ///                "Asia/Kolkata",
    ///                "Kolkata",
    ///                "Mumbai",
    ///                "New Delhi",
    ///                "Sri Jayawardenepura",
    ///                "Asia/Colombo",
    ///                "Kathmandu",
    ///                "Asia/Kathmandu",
    ///                "Dhaka",
    ///                "Asia/Dhaka",
    ///                "Urumqi",
    ///                "Asia/Urumqi",
    ///                "Rangoon",
    ///                "Asia/Rangoon",
    ///                "Bangkok",
    ///                "Asia/Bangkok",
    ///                "Hanoi",
    ///                "Jakarta",
    ///                "Asia/Jakarta",
    ///                "Krasnoyarsk",
    ///                "Asia/Krasnoyarsk",
    ///                "Novosibirsk",
    ///                "Asia/Novosibirsk",
    ///                "Beijing",
    ///                "Asia/Shanghai",
    ///                "Chongqing",
    ///                "Asia/Chongqing",
    ///                "Hong Kong",
    ///                "Asia/Hong_Kong",
    ///                "Irkutsk",
    ///                "Asia/Irkutsk",
    ///                "Kuala Lumpur",
    ///                "Asia/Kuala_Lumpur",
    ///                "Perth",
    ///                "Australia/Perth",
    ///                "Singapore",
    ///                "Asia/Singapore",
    ///                "Taipei",
    ///                "Asia/Taipei",
    ///                "Ulaanbaatar",
    ///                "Asia/Ulaanbaatar",
    ///                "Osaka",
    ///                "Asia/Tokyo",
    ///                "Sapporo",
    ///                "Seoul",
    ///                "Asia/Seoul",
    ///                "Tokyo",
    ///                "Yakutsk",
    ///                "Asia/Yakutsk",
    ///                "Adelaide",
    ///                "Australia/Adelaide",
    ///                "Darwin",
    ///                "Australia/Darwin",
    ///                "Brisbane",
    ///                "Australia/Brisbane",
    ///                "Canberra",
    ///                "Australia/Canberra",
    ///                "Guam",
    ///                "Pacific/Guam",
    ///                "Hobart",
    ///                "Australia/Hobart",
    ///                "Melbourne",
    ///                "Australia/Melbourne",
    ///                "Port Moresby",
    ///                "Pacific/Port_Moresby",
    ///                "Sydney",
    ///                "Australia/Sydney",
    ///                "Vladivostok",
    ///                "Asia/Vladivostok",
    ///                "Magadan",
    ///                "Asia/Magadan",
    ///                "New Caledonia",
    ///                "Pacific/Noumea",
    ///                "Solomon Is.",
    ///                "Pacific/Guadalcanal",
    ///                "Srednekolymsk",
    ///                "Asia/Srednekolymsk",
    ///                "Auckland",
    ///                "Pacific/Auckland",
    ///                "Fiji",
    ///                "Pacific/Fiji",
    ///                "Kamchatka",
    ///                "Asia/Kamchatka",
    ///                "Marshall Is.",
    ///                "Pacific/Majuro",
    ///                "Wellington",
    ///                "Chatham Is.",
    ///                "Pacific/Chatham",
    ///                "Nuku'alofa",
    ///                "Pacific/Tongatapu",
    ///                "Samoa",
    ///                "Pacific/Apia",
    ///                "Tokelau Is.",
    ///                "Pacific/Fakaofo"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "The description of the escalation policy",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "group_ids": {
    ///          "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the escalation policy",
    ///          "type": "string"
    ///        },
    ///        "repeat_count": {
    ///          "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///          "type": "integer"
    ///        },
    ///        "service_ids": {
    ///          "description": "Associated services (alerting the service will trigger escalation policy)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_policies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyData {
        pub attributes: NewEscalationPolicyDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewEscalationPolicyDataType,
    }
    impl NewEscalationPolicyData {
        pub fn builder() -> builder::NewEscalationPolicyData {
            Default::default()
        }
    }
    ///`NewEscalationPolicyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "business_hours": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "days": {
    ///          "description": "Business days",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "M",
    ///              "T",
    ///              "W",
    ///              "R",
    ///              "F",
    ///              "U",
    ///              "S"
    ///            ]
    ///          }
    ///        },
    ///        "end_time": {
    ///          "description": "End time for business hours (HH:MM)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "start_time": {
    ///          "description": "Start time for business hours (HH:MM)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "time_zone": {
    ///          "description": "Time zone for business hours",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the escalation policy",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_ids": {
    ///      "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "repeat_count": {
    ///      "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///      "type": "integer"
    ///    },
    ///    "service_ids": {
    ///      "description": "Associated services (alerting the service will trigger escalation policy)",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewEscalationPolicyDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub business_hours: ::std::option::Option<
            NewEscalationPolicyDataAttributesBusinessHours,
        >,
        ///The description of the escalation policy
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Associated groups (alerting the group will trigger escalation policy)
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        ///The name of the escalation policy
        pub name: ::std::string::String,
        ///The number of times this policy will be executed until someone acknowledges the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_count: ::std::option::Option<i64>,
        ///Associated services (alerting the service will trigger escalation policy)
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
    }
    impl NewEscalationPolicyDataAttributes {
        pub fn builder() -> builder::NewEscalationPolicyDataAttributes {
            Default::default()
        }
    }
    ///`NewEscalationPolicyDataAttributesBusinessHours`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "days": {
    ///      "description": "Business days",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U",
    ///          "S"
    ///        ]
    ///      }
    ///    },
    ///    "end_time": {
    ///      "description": "End time for business hours (HH:MM)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for business hours (HH:MM)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "Time zone for business hours",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "International Date Line West",
    ///        "Etc/GMT+12",
    ///        "American Samoa",
    ///        "Pacific/Pago_Pago",
    ///        "Midway Island",
    ///        "Pacific/Midway",
    ///        "Hawaii",
    ///        "Pacific/Honolulu",
    ///        "Alaska",
    ///        "America/Juneau",
    ///        "Pacific Time (US & Canada)",
    ///        "America/Los_Angeles",
    ///        "Tijuana",
    ///        "America/Tijuana",
    ///        "Arizona",
    ///        "America/Phoenix",
    ///        "Mazatlan",
    ///        "America/Mazatlan",
    ///        "Mountain Time (US & Canada)",
    ///        "America/Denver",
    ///        "Central America",
    ///        "America/Guatemala",
    ///        "Central Time (US & Canada)",
    ///        "America/Chicago",
    ///        "Chihuahua",
    ///        "America/Chihuahua",
    ///        "Guadalajara",
    ///        "America/Mexico_City",
    ///        "Mexico City",
    ///        "Monterrey",
    ///        "America/Monterrey",
    ///        "Saskatchewan",
    ///        "America/Regina",
    ///        "Bogota",
    ///        "America/Bogota",
    ///        "Eastern Time (US & Canada)",
    ///        "America/New_York",
    ///        "Indiana (East)",
    ///        "America/Indiana/Indianapolis",
    ///        "Lima",
    ///        "America/Lima",
    ///        "Quito",
    ///        "Atlantic Time (Canada)",
    ///        "America/Halifax",
    ///        "Caracas",
    ///        "America/Caracas",
    ///        "Georgetown",
    ///        "America/Guyana",
    ///        "La Paz",
    ///        "America/La_Paz",
    ///        "Puerto Rico",
    ///        "America/Puerto_Rico",
    ///        "Santiago",
    ///        "America/Santiago",
    ///        "Newfoundland",
    ///        "America/St_Johns",
    ///        "Asuncion",
    ///        "America/Asuncion",
    ///        "Brasilia",
    ///        "America/Sao_Paulo",
    ///        "Buenos Aires",
    ///        "America/Argentina/Buenos_Aires",
    ///        "Montevideo",
    ///        "America/Montevideo",
    ///        "Greenland",
    ///        "America/Nuuk",
    ///        "Mid-Atlantic",
    ///        "Atlantic/South_Georgia",
    ///        "Azores",
    ///        "Atlantic/Azores",
    ///        "Cape Verde Is.",
    ///        "Atlantic/Cape_Verde",
    ///        "Edinburgh",
    ///        "Europe/London",
    ///        "Lisbon",
    ///        "Europe/Lisbon",
    ///        "London",
    ///        "Monrovia",
    ///        "Africa/Monrovia",
    ///        "UTC",
    ///        "Etc/UTC",
    ///        "Amsterdam",
    ///        "Europe/Amsterdam",
    ///        "Belgrade",
    ///        "Europe/Belgrade",
    ///        "Berlin",
    ///        "Europe/Berlin",
    ///        "Bern",
    ///        "Europe/Zurich",
    ///        "Bratislava",
    ///        "Europe/Bratislava",
    ///        "Brussels",
    ///        "Europe/Brussels",
    ///        "Budapest",
    ///        "Europe/Budapest",
    ///        "Casablanca",
    ///        "Africa/Casablanca",
    ///        "Copenhagen",
    ///        "Europe/Copenhagen",
    ///        "Dublin",
    ///        "Europe/Dublin",
    ///        "Ljubljana",
    ///        "Europe/Ljubljana",
    ///        "Madrid",
    ///        "Europe/Madrid",
    ///        "Paris",
    ///        "Europe/Paris",
    ///        "Prague",
    ///        "Europe/Prague",
    ///        "Rome",
    ///        "Europe/Rome",
    ///        "Sarajevo",
    ///        "Europe/Sarajevo",
    ///        "Skopje",
    ///        "Europe/Skopje",
    ///        "Stockholm",
    ///        "Europe/Stockholm",
    ///        "Vienna",
    ///        "Europe/Vienna",
    ///        "Warsaw",
    ///        "Europe/Warsaw",
    ///        "West Central Africa",
    ///        "Africa/Algiers",
    ///        "Zagreb",
    ///        "Europe/Zagreb",
    ///        "Zurich",
    ///        "Athens",
    ///        "Europe/Athens",
    ///        "Bucharest",
    ///        "Europe/Bucharest",
    ///        "Cairo",
    ///        "Africa/Cairo",
    ///        "Harare",
    ///        "Africa/Harare",
    ///        "Helsinki",
    ///        "Europe/Helsinki",
    ///        "Jerusalem",
    ///        "Asia/Jerusalem",
    ///        "Kaliningrad",
    ///        "Europe/Kaliningrad",
    ///        "Kyiv",
    ///        "Europe/Kiev",
    ///        "Pretoria",
    ///        "Africa/Johannesburg",
    ///        "Riga",
    ///        "Europe/Riga",
    ///        "Sofia",
    ///        "Europe/Sofia",
    ///        "Tallinn",
    ///        "Europe/Tallinn",
    ///        "Vilnius",
    ///        "Europe/Vilnius",
    ///        "Baghdad",
    ///        "Asia/Baghdad",
    ///        "Istanbul",
    ///        "Europe/Istanbul",
    ///        "Kuwait",
    ///        "Asia/Kuwait",
    ///        "Minsk",
    ///        "Europe/Minsk",
    ///        "Moscow",
    ///        "Europe/Moscow",
    ///        "Nairobi",
    ///        "Africa/Nairobi",
    ///        "Riyadh",
    ///        "Asia/Riyadh",
    ///        "St. Petersburg",
    ///        "Volgograd",
    ///        "Europe/Volgograd",
    ///        "Tehran",
    ///        "Asia/Tehran",
    ///        "Abu Dhabi",
    ///        "Asia/Muscat",
    ///        "Baku",
    ///        "Asia/Baku",
    ///        "Muscat",
    ///        "Samara",
    ///        "Europe/Samara",
    ///        "Tbilisi",
    ///        "Asia/Tbilisi",
    ///        "Yerevan",
    ///        "Asia/Yerevan",
    ///        "Kabul",
    ///        "Asia/Kabul",
    ///        "Almaty",
    ///        "Asia/Almaty",
    ///        "Astana",
    ///        "Ekaterinburg",
    ///        "Asia/Yekaterinburg",
    ///        "Islamabad",
    ///        "Asia/Karachi",
    ///        "Karachi",
    ///        "Tashkent",
    ///        "Asia/Tashkent",
    ///        "Chennai",
    ///        "Asia/Kolkata",
    ///        "Kolkata",
    ///        "Mumbai",
    ///        "New Delhi",
    ///        "Sri Jayawardenepura",
    ///        "Asia/Colombo",
    ///        "Kathmandu",
    ///        "Asia/Kathmandu",
    ///        "Dhaka",
    ///        "Asia/Dhaka",
    ///        "Urumqi",
    ///        "Asia/Urumqi",
    ///        "Rangoon",
    ///        "Asia/Rangoon",
    ///        "Bangkok",
    ///        "Asia/Bangkok",
    ///        "Hanoi",
    ///        "Jakarta",
    ///        "Asia/Jakarta",
    ///        "Krasnoyarsk",
    ///        "Asia/Krasnoyarsk",
    ///        "Novosibirsk",
    ///        "Asia/Novosibirsk",
    ///        "Beijing",
    ///        "Asia/Shanghai",
    ///        "Chongqing",
    ///        "Asia/Chongqing",
    ///        "Hong Kong",
    ///        "Asia/Hong_Kong",
    ///        "Irkutsk",
    ///        "Asia/Irkutsk",
    ///        "Kuala Lumpur",
    ///        "Asia/Kuala_Lumpur",
    ///        "Perth",
    ///        "Australia/Perth",
    ///        "Singapore",
    ///        "Asia/Singapore",
    ///        "Taipei",
    ///        "Asia/Taipei",
    ///        "Ulaanbaatar",
    ///        "Asia/Ulaanbaatar",
    ///        "Osaka",
    ///        "Asia/Tokyo",
    ///        "Sapporo",
    ///        "Seoul",
    ///        "Asia/Seoul",
    ///        "Tokyo",
    ///        "Yakutsk",
    ///        "Asia/Yakutsk",
    ///        "Adelaide",
    ///        "Australia/Adelaide",
    ///        "Darwin",
    ///        "Australia/Darwin",
    ///        "Brisbane",
    ///        "Australia/Brisbane",
    ///        "Canberra",
    ///        "Australia/Canberra",
    ///        "Guam",
    ///        "Pacific/Guam",
    ///        "Hobart",
    ///        "Australia/Hobart",
    ///        "Melbourne",
    ///        "Australia/Melbourne",
    ///        "Port Moresby",
    ///        "Pacific/Port_Moresby",
    ///        "Sydney",
    ///        "Australia/Sydney",
    ///        "Vladivostok",
    ///        "Asia/Vladivostok",
    ///        "Magadan",
    ///        "Asia/Magadan",
    ///        "New Caledonia",
    ///        "Pacific/Noumea",
    ///        "Solomon Is.",
    ///        "Pacific/Guadalcanal",
    ///        "Srednekolymsk",
    ///        "Asia/Srednekolymsk",
    ///        "Auckland",
    ///        "Pacific/Auckland",
    ///        "Fiji",
    ///        "Pacific/Fiji",
    ///        "Kamchatka",
    ///        "Asia/Kamchatka",
    ///        "Marshall Is.",
    ///        "Pacific/Majuro",
    ///        "Wellington",
    ///        "Chatham Is.",
    ///        "Pacific/Chatham",
    ///        "Nuku'alofa",
    ///        "Pacific/Tongatapu",
    ///        "Samoa",
    ///        "Pacific/Apia",
    ///        "Tokelau Is.",
    ///        "Pacific/Fakaofo"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyDataAttributesBusinessHours {
        ///Business days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub days: ::std::option::Option<
            ::std::vec::Vec<NewEscalationPolicyDataAttributesBusinessHoursDaysItem>,
        >,
        ///End time for business hours (HH:MM)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        ///Start time for business hours (HH:MM)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
        ///Time zone for business hours
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<
            NewEscalationPolicyDataAttributesBusinessHoursTimeZone,
        >,
    }
    impl ::std::default::Default for NewEscalationPolicyDataAttributesBusinessHours {
        fn default() -> Self {
            Self {
                days: Default::default(),
                end_time: Default::default(),
                start_time: Default::default(),
                time_zone: Default::default(),
            }
        }
    }
    impl NewEscalationPolicyDataAttributesBusinessHours {
        pub fn builder() -> builder::NewEscalationPolicyDataAttributesBusinessHours {
            Default::default()
        }
    }
    ///`NewEscalationPolicyDataAttributesBusinessHoursDaysItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U",
    ///    "S"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyDataAttributesBusinessHoursDaysItem {
        M,
        T,
        W,
        R,
        F,
        U,
        S,
    }
    impl ::std::fmt::Display for NewEscalationPolicyDataAttributesBusinessHoursDaysItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
                Self::S => f.write_str("S"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                "S" => Ok(Self::S),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Time zone for business hours
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone for business hours",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyDataAttributesBusinessHoursTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display for NewEscalationPolicyDataAttributesBusinessHoursTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyDataType {
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for NewEscalationPolicyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyLevel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "notification_target_params",
    ///            "position"
    ///          ],
    ///          "properties": {
    ///            "delay": {
    ///              "description": "Delay before notifying targets in the next Escalation Level.",
    ///              "type": "integer"
    ///            },
    ///            "escalation_policy_path_id": {
    ///              "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "notification_target_params": {
    ///              "description": "Escalation level's notification targets",
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "id",
    ///                  "type"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "The ID of notification target. If Slack channel, then id of the slack channel (eg. C06Q2JK7RQW)",
    ///                    "type": "string"
    ///                  },
    ///                  "team_members": {
    ///                    "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "all",
    ///                      "admins",
    ///                      "escalate"
    ///                    ]
    ///                  },
    ///                  "type": {
    ///                    "description": "The type of the notification target",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "team",
    ///                      "user",
    ///                      "schedule",
    ///                      "slack_channel",
    ///                      "service"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "paging_strategy_configuration_schedule_strategy": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "on_call_only",
    ///                "everyone"
    ///              ]
    ///            },
    ///            "paging_strategy_configuration_strategy": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "default",
    ///                "random",
    ///                "cycle",
    ///                "alert"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the escalation policy level",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_levels"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyLevel {
        pub data: NewEscalationPolicyLevelData,
    }
    impl NewEscalationPolicyLevel {
        pub fn builder() -> builder::NewEscalationPolicyLevel {
            Default::default()
        }
    }
    ///`NewEscalationPolicyLevelData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "notification_target_params",
    ///        "position"
    ///      ],
    ///      "properties": {
    ///        "delay": {
    ///          "description": "Delay before notifying targets in the next Escalation Level.",
    ///          "type": "integer"
    ///        },
    ///        "escalation_policy_path_id": {
    ///          "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "notification_target_params": {
    ///          "description": "Escalation level's notification targets",
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "id",
    ///              "type"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "The ID of notification target. If Slack channel, then id of the slack channel (eg. C06Q2JK7RQW)",
    ///                "type": "string"
    ///              },
    ///              "team_members": {
    ///                "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "all",
    ///                  "admins",
    ///                  "escalate"
    ///                ]
    ///              },
    ///              "type": {
    ///                "description": "The type of the notification target",
    ///                "type": "string",
    ///                "enum": [
    ///                  "team",
    ///                  "user",
    ///                  "schedule",
    ///                  "slack_channel",
    ///                  "service"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "paging_strategy_configuration_schedule_strategy": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "on_call_only",
    ///            "everyone"
    ///          ]
    ///        },
    ///        "paging_strategy_configuration_strategy": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "default",
    ///            "random",
    ///            "cycle",
    ///            "alert"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the escalation policy level",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_levels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyLevelData {
        pub attributes: NewEscalationPolicyLevelDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewEscalationPolicyLevelDataType,
    }
    impl NewEscalationPolicyLevelData {
        pub fn builder() -> builder::NewEscalationPolicyLevelData {
            Default::default()
        }
    }
    ///`NewEscalationPolicyLevelDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "notification_target_params",
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "delay": {
    ///      "description": "Delay before notifying targets in the next Escalation Level.",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_path_id": {
    ///      "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "notification_target_params": {
    ///      "description": "Escalation level's notification targets",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "The ID of notification target. If Slack channel, then id of the slack channel (eg. C06Q2JK7RQW)",
    ///            "type": "string"
    ///          },
    ///          "team_members": {
    ///            "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "all",
    ///              "admins",
    ///              "escalate"
    ///            ]
    ///          },
    ///          "type": {
    ///            "description": "The type of the notification target",
    ///            "type": "string",
    ///            "enum": [
    ///              "team",
    ///              "user",
    ///              "schedule",
    ///              "slack_channel",
    ///              "service"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "paging_strategy_configuration_schedule_strategy": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "on_call_only",
    ///        "everyone"
    ///      ]
    ///    },
    ///    "paging_strategy_configuration_strategy": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "default",
    ///        "random",
    ///        "cycle",
    ///        "alert"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the escalation policy level",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewEscalationPolicyLevelDataAttributes {
        ///Delay before notifying targets in the next Escalation Level.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub delay: ::std::option::Option<i64>,
        ///The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_path_id: ::std::option::Option<::std::string::String>,
        ///Escalation level's notification targets
        pub notification_target_params: ::std::vec::Vec<
            ::std::option::Option<
                NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
            >,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub paging_strategy_configuration_schedule_strategy: ::std::option::Option<
            NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub paging_strategy_configuration_strategy: ::std::option::Option<
            NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy,
        >,
        ///Position of the escalation policy level
        pub position: i64,
    }
    impl NewEscalationPolicyLevelDataAttributes {
        pub fn builder() -> builder::NewEscalationPolicyLevelDataAttributes {
            Default::default()
        }
    }
    ///`NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of notification target. If Slack channel, then id of the slack channel (eg. C06Q2JK7RQW)",
    ///      "type": "string"
    ///    },
    ///    "team_members": {
    ///      "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "all",
    ///        "admins",
    ///        "escalate"
    ///      ]
    ///    },
    ///    "type": {
    ///      "description": "The type of the notification target",
    ///      "type": "string",
    ///      "enum": [
    ///        "team",
    ///        "user",
    ///        "schedule",
    ///        "slack_channel",
    ///        "service"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
        ///The ID of notification target. If Slack channel, then id of the slack channel (eg. C06Q2JK7RQW)
        pub id: ::std::string::String,
        ///For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub team_members: ::std::option::Option<
            NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers,
        >,
        ///The type of the notification target
        #[serde(rename = "type")]
        pub type_: NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType,
    }
    impl NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
        pub fn builder() -> builder::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            Default::default()
        }
    }
    ///For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "admins",
    ///    "escalate"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "admins")]
        Admins,
        #[serde(rename = "escalate")]
        Escalate,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Admins => f.write_str("admins"),
                Self::Escalate => f.write_str("escalate"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "admins" => Ok(Self::Admins),
                "escalate" => Ok(Self::Escalate),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the notification target
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target",
    ///  "type": "string",
    ///  "enum": [
    ///    "team",
    ///    "user",
    ///    "schedule",
    ///    "slack_channel",
    ///    "service"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "schedule")]
        Schedule,
        #[serde(rename = "slack_channel")]
        SlackChannel,
        #[serde(rename = "service")]
        Service,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Team => f.write_str("team"),
                Self::User => f.write_str("user"),
                Self::Schedule => f.write_str("schedule"),
                Self::SlackChannel => f.write_str("slack_channel"),
                Self::Service => f.write_str("service"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "team" => Ok(Self::Team),
                "user" => Ok(Self::User),
                "schedule" => Ok(Self::Schedule),
                "slack_channel" => Ok(Self::SlackChannel),
                "service" => Ok(Self::Service),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_only",
    ///    "everyone"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        #[serde(rename = "on_call_only")]
        OnCallOnly,
        #[serde(rename = "everyone")]
        Everyone,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallOnly => f.write_str("on_call_only"),
                Self::Everyone => f.write_str("everyone"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_only" => Ok(Self::OnCallOnly),
                "everyone" => Ok(Self::Everyone),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "default",
    ///    "random",
    ///    "cycle",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        #[serde(rename = "default")]
        Default,
        #[serde(rename = "random")]
        Random,
        #[serde(rename = "cycle")]
        Cycle,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Default => f.write_str("default"),
                Self::Random => f.write_str("random"),
                Self::Cycle => f.write_str("cycle"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "default" => Ok(Self::Default),
                "random" => Ok(Self::Random),
                "cycle" => Ok(Self::Cycle),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyLevelDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_levels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyLevelDataType {
        #[serde(rename = "escalation_levels")]
        EscalationLevels,
    }
    impl ::std::fmt::Display for NewEscalationPolicyLevelDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationLevels => f.write_str("escalation_levels"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyLevelDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_levels" => Ok(Self::EscalationLevels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEscalationPolicyLevelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyLevelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyLevelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyPath`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "after_deferral_behavior": {
    ///              "description": "What happens after a deferral path finishes. Required for deferral paths.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "re_evaluate",
    ///                "execute_path"
    ///              ]
    ///            },
    ///            "after_deferral_path_id": {
    ///              "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "default": {
    ///              "description": "Whether this escalation path is the default path",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "initial_delay": {
    ///              "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///              "type": "integer"
    ///            },
    ///            "match_mode": {
    ///              "description": "How path rules are matched.",
    ///              "default": "match-all-rules",
    ///              "type": "string",
    ///              "enum": [
    ///                "match-all-rules",
    ///                "match-any-rule"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the escalation path",
    ///              "type": "string"
    ///            },
    ///            "notification_type": {
    ///              "description": "Notification rule type to be used",
    ///              "default": "audible",
    ///              "type": "string",
    ///              "enum": [
    ///                "audible",
    ///                "quiet"
    ///              ]
    ///            },
    ///            "path_type": {
    ///              "description": "The type of escalation path to create",
    ///              "default": "escalation",
    ///              "type": "string",
    ///              "enum": [
    ///                "escalation",
    ///                "deferral"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "The position of this path in the paths for this EP.",
    ///              "type": "integer"
    ///            },
    ///            "repeat": {
    ///              "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "repeat_count": {
    ///              "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "rules": {
    ///              "description": "Escalation path conditions",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "oneOf": [
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "urgency_ids"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "alert_urgency"
    ///                        ]
    ///                      },
    ///                      "urgency_ids": {
    ///                        "description": "Alert urgency ids for which this escalation path should be used",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "within_working_hour"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "working_hour"
    ///                        ]
    ///                      },
    ///                      "within_working_hour": {
    ///                        "description": "Whether the escalation path should be used within working hours",
    ///                        "type": "boolean"
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "json_path",
    ///                      "operator",
    ///                      "rule_type"
    ///                    ],
    ///                    "properties": {
    ///                      "json_path": {
    ///                        "description": "JSON path to extract value from payload",
    ///                        "type": "string"
    ///                      },
    ///                      "operator": {
    ///                        "description": "How JSON path value should be matched",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "is_set",
    ///                          "is_not_set"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "json_path"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "description": "Value with which JSON path value should be matched",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "values": {
    ///                        "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "fieldable_id",
    ///                      "fieldable_type",
    ///                      "operator",
    ///                      "rule_type"
    ///                    ],
    ///                    "properties": {
    ///                      "fieldable_id": {
    ///                        "description": "The ID of the alert field",
    ///                        "type": "string"
    ///                      },
    ///                      "fieldable_type": {
    ///                        "description": "The type of the fieldable (e.g., AlertField)",
    ///                        "type": "string"
    ///                      },
    ///                      "operator": {
    ///                        "description": "How the alert field value should be matched",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "is_empty",
    ///                          "is_not_empty",
    ///                          "contains_key",
    ///                          "does_not_contain_key",
    ///                          "starts_with",
    ///                          "does_not_start_with",
    ///                          "matches",
    ///                          "does_not_match"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "field"
    ///                        ]
    ///                      },
    ///                      "values": {
    ///                        "description": "Values to match against",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "service_ids"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "service"
    ///                        ]
    ///                      },
    ///                      "service_ids": {
    ///                        "description": "Service ids for which this escalation path should be used",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "time_blocks",
    ///                      "time_zone"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "deferral_window"
    ///                        ]
    ///                      },
    ///                      "time_blocks": {
    ///                        "description": "Time windows during which alerts are deferred",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "object",
    ///                          "properties": {
    ///                            "all_day": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "end_time": {
    ///                              "description": "Formatted as HH:MM",
    ///                              "type": "string"
    ///                            },
    ///                            "friday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "monday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "position": {
    ///                              "type": [
    ///                                "integer",
    ///                                "null"
    ///                              ]
    ///                            },
    ///                            "saturday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "start_time": {
    ///                              "description": "Formatted as HH:MM",
    ///                              "type": "string"
    ///                            },
    ///                            "sunday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "thursday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "tuesday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "wednesday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            }
    ///                          }
    ///                        }
    ///                      },
    ///                      "time_zone": {
    ///                        "description": "Time zone for the deferral window",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "International Date Line West",
    ///                          "Etc/GMT+12",
    ///                          "American Samoa",
    ///                          "Pacific/Pago_Pago",
    ///                          "Midway Island",
    ///                          "Pacific/Midway",
    ///                          "Hawaii",
    ///                          "Pacific/Honolulu",
    ///                          "Alaska",
    ///                          "America/Juneau",
    ///                          "Pacific Time (US & Canada)",
    ///                          "America/Los_Angeles",
    ///                          "Tijuana",
    ///                          "America/Tijuana",
    ///                          "Arizona",
    ///                          "America/Phoenix",
    ///                          "Mazatlan",
    ///                          "America/Mazatlan",
    ///                          "Mountain Time (US & Canada)",
    ///                          "America/Denver",
    ///                          "Central America",
    ///                          "America/Guatemala",
    ///                          "Central Time (US & Canada)",
    ///                          "America/Chicago",
    ///                          "Chihuahua",
    ///                          "America/Chihuahua",
    ///                          "Guadalajara",
    ///                          "America/Mexico_City",
    ///                          "Mexico City",
    ///                          "Monterrey",
    ///                          "America/Monterrey",
    ///                          "Saskatchewan",
    ///                          "America/Regina",
    ///                          "Bogota",
    ///                          "America/Bogota",
    ///                          "Eastern Time (US & Canada)",
    ///                          "America/New_York",
    ///                          "Indiana (East)",
    ///                          "America/Indiana/Indianapolis",
    ///                          "Lima",
    ///                          "America/Lima",
    ///                          "Quito",
    ///                          "Atlantic Time (Canada)",
    ///                          "America/Halifax",
    ///                          "Caracas",
    ///                          "America/Caracas",
    ///                          "Georgetown",
    ///                          "America/Guyana",
    ///                          "La Paz",
    ///                          "America/La_Paz",
    ///                          "Puerto Rico",
    ///                          "America/Puerto_Rico",
    ///                          "Santiago",
    ///                          "America/Santiago",
    ///                          "Newfoundland",
    ///                          "America/St_Johns",
    ///                          "Asuncion",
    ///                          "America/Asuncion",
    ///                          "Brasilia",
    ///                          "America/Sao_Paulo",
    ///                          "Buenos Aires",
    ///                          "America/Argentina/Buenos_Aires",
    ///                          "Montevideo",
    ///                          "America/Montevideo",
    ///                          "Greenland",
    ///                          "America/Nuuk",
    ///                          "Mid-Atlantic",
    ///                          "Atlantic/South_Georgia",
    ///                          "Azores",
    ///                          "Atlantic/Azores",
    ///                          "Cape Verde Is.",
    ///                          "Atlantic/Cape_Verde",
    ///                          "Edinburgh",
    ///                          "Europe/London",
    ///                          "Lisbon",
    ///                          "Europe/Lisbon",
    ///                          "London",
    ///                          "Monrovia",
    ///                          "Africa/Monrovia",
    ///                          "UTC",
    ///                          "Etc/UTC",
    ///                          "Amsterdam",
    ///                          "Europe/Amsterdam",
    ///                          "Belgrade",
    ///                          "Europe/Belgrade",
    ///                          "Berlin",
    ///                          "Europe/Berlin",
    ///                          "Bern",
    ///                          "Europe/Zurich",
    ///                          "Bratislava",
    ///                          "Europe/Bratislava",
    ///                          "Brussels",
    ///                          "Europe/Brussels",
    ///                          "Budapest",
    ///                          "Europe/Budapest",
    ///                          "Casablanca",
    ///                          "Africa/Casablanca",
    ///                          "Copenhagen",
    ///                          "Europe/Copenhagen",
    ///                          "Dublin",
    ///                          "Europe/Dublin",
    ///                          "Ljubljana",
    ///                          "Europe/Ljubljana",
    ///                          "Madrid",
    ///                          "Europe/Madrid",
    ///                          "Paris",
    ///                          "Europe/Paris",
    ///                          "Prague",
    ///                          "Europe/Prague",
    ///                          "Rome",
    ///                          "Europe/Rome",
    ///                          "Sarajevo",
    ///                          "Europe/Sarajevo",
    ///                          "Skopje",
    ///                          "Europe/Skopje",
    ///                          "Stockholm",
    ///                          "Europe/Stockholm",
    ///                          "Vienna",
    ///                          "Europe/Vienna",
    ///                          "Warsaw",
    ///                          "Europe/Warsaw",
    ///                          "West Central Africa",
    ///                          "Africa/Algiers",
    ///                          "Zagreb",
    ///                          "Europe/Zagreb",
    ///                          "Zurich",
    ///                          "Athens",
    ///                          "Europe/Athens",
    ///                          "Bucharest",
    ///                          "Europe/Bucharest",
    ///                          "Cairo",
    ///                          "Africa/Cairo",
    ///                          "Harare",
    ///                          "Africa/Harare",
    ///                          "Helsinki",
    ///                          "Europe/Helsinki",
    ///                          "Jerusalem",
    ///                          "Asia/Jerusalem",
    ///                          "Kaliningrad",
    ///                          "Europe/Kaliningrad",
    ///                          "Kyiv",
    ///                          "Europe/Kiev",
    ///                          "Pretoria",
    ///                          "Africa/Johannesburg",
    ///                          "Riga",
    ///                          "Europe/Riga",
    ///                          "Sofia",
    ///                          "Europe/Sofia",
    ///                          "Tallinn",
    ///                          "Europe/Tallinn",
    ///                          "Vilnius",
    ///                          "Europe/Vilnius",
    ///                          "Baghdad",
    ///                          "Asia/Baghdad",
    ///                          "Istanbul",
    ///                          "Europe/Istanbul",
    ///                          "Kuwait",
    ///                          "Asia/Kuwait",
    ///                          "Minsk",
    ///                          "Europe/Minsk",
    ///                          "Moscow",
    ///                          "Europe/Moscow",
    ///                          "Nairobi",
    ///                          "Africa/Nairobi",
    ///                          "Riyadh",
    ///                          "Asia/Riyadh",
    ///                          "St. Petersburg",
    ///                          "Volgograd",
    ///                          "Europe/Volgograd",
    ///                          "Tehran",
    ///                          "Asia/Tehran",
    ///                          "Abu Dhabi",
    ///                          "Asia/Muscat",
    ///                          "Baku",
    ///                          "Asia/Baku",
    ///                          "Muscat",
    ///                          "Samara",
    ///                          "Europe/Samara",
    ///                          "Tbilisi",
    ///                          "Asia/Tbilisi",
    ///                          "Yerevan",
    ///                          "Asia/Yerevan",
    ///                          "Kabul",
    ///                          "Asia/Kabul",
    ///                          "Almaty",
    ///                          "Asia/Almaty",
    ///                          "Astana",
    ///                          "Ekaterinburg",
    ///                          "Asia/Yekaterinburg",
    ///                          "Islamabad",
    ///                          "Asia/Karachi",
    ///                          "Karachi",
    ///                          "Tashkent",
    ///                          "Asia/Tashkent",
    ///                          "Chennai",
    ///                          "Asia/Kolkata",
    ///                          "Kolkata",
    ///                          "Mumbai",
    ///                          "New Delhi",
    ///                          "Sri Jayawardenepura",
    ///                          "Asia/Colombo",
    ///                          "Kathmandu",
    ///                          "Asia/Kathmandu",
    ///                          "Dhaka",
    ///                          "Asia/Dhaka",
    ///                          "Urumqi",
    ///                          "Asia/Urumqi",
    ///                          "Rangoon",
    ///                          "Asia/Rangoon",
    ///                          "Bangkok",
    ///                          "Asia/Bangkok",
    ///                          "Hanoi",
    ///                          "Jakarta",
    ///                          "Asia/Jakarta",
    ///                          "Krasnoyarsk",
    ///                          "Asia/Krasnoyarsk",
    ///                          "Novosibirsk",
    ///                          "Asia/Novosibirsk",
    ///                          "Beijing",
    ///                          "Asia/Shanghai",
    ///                          "Chongqing",
    ///                          "Asia/Chongqing",
    ///                          "Hong Kong",
    ///                          "Asia/Hong_Kong",
    ///                          "Irkutsk",
    ///                          "Asia/Irkutsk",
    ///                          "Kuala Lumpur",
    ///                          "Asia/Kuala_Lumpur",
    ///                          "Perth",
    ///                          "Australia/Perth",
    ///                          "Singapore",
    ///                          "Asia/Singapore",
    ///                          "Taipei",
    ///                          "Asia/Taipei",
    ///                          "Ulaanbaatar",
    ///                          "Asia/Ulaanbaatar",
    ///                          "Osaka",
    ///                          "Asia/Tokyo",
    ///                          "Sapporo",
    ///                          "Seoul",
    ///                          "Asia/Seoul",
    ///                          "Tokyo",
    ///                          "Yakutsk",
    ///                          "Asia/Yakutsk",
    ///                          "Adelaide",
    ///                          "Australia/Adelaide",
    ///                          "Darwin",
    ///                          "Australia/Darwin",
    ///                          "Brisbane",
    ///                          "Australia/Brisbane",
    ///                          "Canberra",
    ///                          "Australia/Canberra",
    ///                          "Guam",
    ///                          "Pacific/Guam",
    ///                          "Hobart",
    ///                          "Australia/Hobart",
    ///                          "Melbourne",
    ///                          "Australia/Melbourne",
    ///                          "Port Moresby",
    ///                          "Pacific/Port_Moresby",
    ///                          "Sydney",
    ///                          "Australia/Sydney",
    ///                          "Vladivostok",
    ///                          "Asia/Vladivostok",
    ///                          "Magadan",
    ///                          "Asia/Magadan",
    ///                          "New Caledonia",
    ///                          "Pacific/Noumea",
    ///                          "Solomon Is.",
    ///                          "Pacific/Guadalcanal",
    ///                          "Srednekolymsk",
    ///                          "Asia/Srednekolymsk",
    ///                          "Auckland",
    ///                          "Pacific/Auckland",
    ///                          "Fiji",
    ///                          "Pacific/Fiji",
    ///                          "Kamchatka",
    ///                          "Asia/Kamchatka",
    ///                          "Marshall Is.",
    ///                          "Pacific/Majuro",
    ///                          "Wellington",
    ///                          "Chatham Is.",
    ///                          "Pacific/Chatham",
    ///                          "Nuku'alofa",
    ///                          "Pacific/Tongatapu",
    ///                          "Samoa",
    ///                          "Pacific/Apia",
    ///                          "Tokelau Is.",
    ///                          "Pacific/Fakaofo"
    ///                        ]
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "operator",
    ///                      "rule_type",
    ///                      "values"
    ///                    ],
    ///                    "properties": {
    ///                      "operator": {
    ///                        "description": "How the alert source should be matched",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "is_one_of",
    ///                          "is_not_one_of"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "source"
    ///                        ]
    ///                      },
    ///                      "values": {
    ///                        "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "operator",
    ///                      "rule_type"
    ///                    ],
    ///                    "properties": {
    ///                      "operator": {
    ///                        "description": "Whether the alert must (or must not) have related incidents",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is_set",
    ///                          "is_not_set"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "related_incidents"
    ///                        ]
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              }
    ///            },
    ///            "time_restriction_time_zone": {
    ///              "description": "Time zone used for time restrictions.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "International Date Line West",
    ///                "Etc/GMT+12",
    ///                "American Samoa",
    ///                "Pacific/Pago_Pago",
    ///                "Midway Island",
    ///                "Pacific/Midway",
    ///                "Hawaii",
    ///                "Pacific/Honolulu",
    ///                "Alaska",
    ///                "America/Juneau",
    ///                "Pacific Time (US & Canada)",
    ///                "America/Los_Angeles",
    ///                "Tijuana",
    ///                "America/Tijuana",
    ///                "Arizona",
    ///                "America/Phoenix",
    ///                "Mazatlan",
    ///                "America/Mazatlan",
    ///                "Mountain Time (US & Canada)",
    ///                "America/Denver",
    ///                "Central America",
    ///                "America/Guatemala",
    ///                "Central Time (US & Canada)",
    ///                "America/Chicago",
    ///                "Chihuahua",
    ///                "America/Chihuahua",
    ///                "Guadalajara",
    ///                "America/Mexico_City",
    ///                "Mexico City",
    ///                "Monterrey",
    ///                "America/Monterrey",
    ///                "Saskatchewan",
    ///                "America/Regina",
    ///                "Bogota",
    ///                "America/Bogota",
    ///                "Eastern Time (US & Canada)",
    ///                "America/New_York",
    ///                "Indiana (East)",
    ///                "America/Indiana/Indianapolis",
    ///                "Lima",
    ///                "America/Lima",
    ///                "Quito",
    ///                "Atlantic Time (Canada)",
    ///                "America/Halifax",
    ///                "Caracas",
    ///                "America/Caracas",
    ///                "Georgetown",
    ///                "America/Guyana",
    ///                "La Paz",
    ///                "America/La_Paz",
    ///                "Puerto Rico",
    ///                "America/Puerto_Rico",
    ///                "Santiago",
    ///                "America/Santiago",
    ///                "Newfoundland",
    ///                "America/St_Johns",
    ///                "Asuncion",
    ///                "America/Asuncion",
    ///                "Brasilia",
    ///                "America/Sao_Paulo",
    ///                "Buenos Aires",
    ///                "America/Argentina/Buenos_Aires",
    ///                "Montevideo",
    ///                "America/Montevideo",
    ///                "Greenland",
    ///                "America/Nuuk",
    ///                "Mid-Atlantic",
    ///                "Atlantic/South_Georgia",
    ///                "Azores",
    ///                "Atlantic/Azores",
    ///                "Cape Verde Is.",
    ///                "Atlantic/Cape_Verde",
    ///                "Edinburgh",
    ///                "Europe/London",
    ///                "Lisbon",
    ///                "Europe/Lisbon",
    ///                "London",
    ///                "Monrovia",
    ///                "Africa/Monrovia",
    ///                "UTC",
    ///                "Etc/UTC",
    ///                "Amsterdam",
    ///                "Europe/Amsterdam",
    ///                "Belgrade",
    ///                "Europe/Belgrade",
    ///                "Berlin",
    ///                "Europe/Berlin",
    ///                "Bern",
    ///                "Europe/Zurich",
    ///                "Bratislava",
    ///                "Europe/Bratislava",
    ///                "Brussels",
    ///                "Europe/Brussels",
    ///                "Budapest",
    ///                "Europe/Budapest",
    ///                "Casablanca",
    ///                "Africa/Casablanca",
    ///                "Copenhagen",
    ///                "Europe/Copenhagen",
    ///                "Dublin",
    ///                "Europe/Dublin",
    ///                "Ljubljana",
    ///                "Europe/Ljubljana",
    ///                "Madrid",
    ///                "Europe/Madrid",
    ///                "Paris",
    ///                "Europe/Paris",
    ///                "Prague",
    ///                "Europe/Prague",
    ///                "Rome",
    ///                "Europe/Rome",
    ///                "Sarajevo",
    ///                "Europe/Sarajevo",
    ///                "Skopje",
    ///                "Europe/Skopje",
    ///                "Stockholm",
    ///                "Europe/Stockholm",
    ///                "Vienna",
    ///                "Europe/Vienna",
    ///                "Warsaw",
    ///                "Europe/Warsaw",
    ///                "West Central Africa",
    ///                "Africa/Algiers",
    ///                "Zagreb",
    ///                "Europe/Zagreb",
    ///                "Zurich",
    ///                "Athens",
    ///                "Europe/Athens",
    ///                "Bucharest",
    ///                "Europe/Bucharest",
    ///                "Cairo",
    ///                "Africa/Cairo",
    ///                "Harare",
    ///                "Africa/Harare",
    ///                "Helsinki",
    ///                "Europe/Helsinki",
    ///                "Jerusalem",
    ///                "Asia/Jerusalem",
    ///                "Kaliningrad",
    ///                "Europe/Kaliningrad",
    ///                "Kyiv",
    ///                "Europe/Kiev",
    ///                "Pretoria",
    ///                "Africa/Johannesburg",
    ///                "Riga",
    ///                "Europe/Riga",
    ///                "Sofia",
    ///                "Europe/Sofia",
    ///                "Tallinn",
    ///                "Europe/Tallinn",
    ///                "Vilnius",
    ///                "Europe/Vilnius",
    ///                "Baghdad",
    ///                "Asia/Baghdad",
    ///                "Istanbul",
    ///                "Europe/Istanbul",
    ///                "Kuwait",
    ///                "Asia/Kuwait",
    ///                "Minsk",
    ///                "Europe/Minsk",
    ///                "Moscow",
    ///                "Europe/Moscow",
    ///                "Nairobi",
    ///                "Africa/Nairobi",
    ///                "Riyadh",
    ///                "Asia/Riyadh",
    ///                "St. Petersburg",
    ///                "Volgograd",
    ///                "Europe/Volgograd",
    ///                "Tehran",
    ///                "Asia/Tehran",
    ///                "Abu Dhabi",
    ///                "Asia/Muscat",
    ///                "Baku",
    ///                "Asia/Baku",
    ///                "Muscat",
    ///                "Samara",
    ///                "Europe/Samara",
    ///                "Tbilisi",
    ///                "Asia/Tbilisi",
    ///                "Yerevan",
    ///                "Asia/Yerevan",
    ///                "Kabul",
    ///                "Asia/Kabul",
    ///                "Almaty",
    ///                "Asia/Almaty",
    ///                "Astana",
    ///                "Ekaterinburg",
    ///                "Asia/Yekaterinburg",
    ///                "Islamabad",
    ///                "Asia/Karachi",
    ///                "Karachi",
    ///                "Tashkent",
    ///                "Asia/Tashkent",
    ///                "Chennai",
    ///                "Asia/Kolkata",
    ///                "Kolkata",
    ///                "Mumbai",
    ///                "New Delhi",
    ///                "Sri Jayawardenepura",
    ///                "Asia/Colombo",
    ///                "Kathmandu",
    ///                "Asia/Kathmandu",
    ///                "Dhaka",
    ///                "Asia/Dhaka",
    ///                "Urumqi",
    ///                "Asia/Urumqi",
    ///                "Rangoon",
    ///                "Asia/Rangoon",
    ///                "Bangkok",
    ///                "Asia/Bangkok",
    ///                "Hanoi",
    ///                "Jakarta",
    ///                "Asia/Jakarta",
    ///                "Krasnoyarsk",
    ///                "Asia/Krasnoyarsk",
    ///                "Novosibirsk",
    ///                "Asia/Novosibirsk",
    ///                "Beijing",
    ///                "Asia/Shanghai",
    ///                "Chongqing",
    ///                "Asia/Chongqing",
    ///                "Hong Kong",
    ///                "Asia/Hong_Kong",
    ///                "Irkutsk",
    ///                "Asia/Irkutsk",
    ///                "Kuala Lumpur",
    ///                "Asia/Kuala_Lumpur",
    ///                "Perth",
    ///                "Australia/Perth",
    ///                "Singapore",
    ///                "Asia/Singapore",
    ///                "Taipei",
    ///                "Asia/Taipei",
    ///                "Ulaanbaatar",
    ///                "Asia/Ulaanbaatar",
    ///                "Osaka",
    ///                "Asia/Tokyo",
    ///                "Sapporo",
    ///                "Seoul",
    ///                "Asia/Seoul",
    ///                "Tokyo",
    ///                "Yakutsk",
    ///                "Asia/Yakutsk",
    ///                "Adelaide",
    ///                "Australia/Adelaide",
    ///                "Darwin",
    ///                "Australia/Darwin",
    ///                "Brisbane",
    ///                "Australia/Brisbane",
    ///                "Canberra",
    ///                "Australia/Canberra",
    ///                "Guam",
    ///                "Pacific/Guam",
    ///                "Hobart",
    ///                "Australia/Hobart",
    ///                "Melbourne",
    ///                "Australia/Melbourne",
    ///                "Port Moresby",
    ///                "Pacific/Port_Moresby",
    ///                "Sydney",
    ///                "Australia/Sydney",
    ///                "Vladivostok",
    ///                "Asia/Vladivostok",
    ///                "Magadan",
    ///                "Asia/Magadan",
    ///                "New Caledonia",
    ///                "Pacific/Noumea",
    ///                "Solomon Is.",
    ///                "Pacific/Guadalcanal",
    ///                "Srednekolymsk",
    ///                "Asia/Srednekolymsk",
    ///                "Auckland",
    ///                "Pacific/Auckland",
    ///                "Fiji",
    ///                "Pacific/Fiji",
    ///                "Kamchatka",
    ///                "Asia/Kamchatka",
    ///                "Marshall Is.",
    ///                "Pacific/Majuro",
    ///                "Wellington",
    ///                "Chatham Is.",
    ///                "Pacific/Chatham",
    ///                "Nuku'alofa",
    ///                "Pacific/Tongatapu",
    ///                "Samoa",
    ///                "Pacific/Apia",
    ///                "Tokelau Is.",
    ///                "Pacific/Fakaofo"
    ///              ]
    ///            },
    ///            "time_restrictions": {
    ///              "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "end_day",
    ///                  "end_time",
    ///                  "start_day",
    ///                  "start_time"
    ///                ],
    ///                "properties": {
    ///                  "end_day": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "monday",
    ///                      "tuesday",
    ///                      "wednesday",
    ///                      "thursday",
    ///                      "friday",
    ///                      "saturday",
    ///                      "sunday"
    ///                    ]
    ///                  },
    ///                  "end_time": {
    ///                    "description": "Formatted as HH:MM",
    ///                    "type": "string"
    ///                  },
    ///                  "start_day": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "monday",
    ///                      "tuesday",
    ///                      "wednesday",
    ///                      "thursday",
    ///                      "friday",
    ///                      "saturday",
    ///                      "sunday"
    ///                    ]
    ///                  },
    ///                  "start_time": {
    ///                    "description": "Formatted as HH:MM",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_paths"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyPath {
        pub data: NewEscalationPolicyPathData,
    }
    impl NewEscalationPolicyPath {
        pub fn builder() -> builder::NewEscalationPolicyPath {
            Default::default()
        }
    }
    ///`NewEscalationPolicyPathData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "after_deferral_behavior": {
    ///          "description": "What happens after a deferral path finishes. Required for deferral paths.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "re_evaluate",
    ///            "execute_path"
    ///          ]
    ///        },
    ///        "after_deferral_path_id": {
    ///          "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "default": {
    ///          "description": "Whether this escalation path is the default path",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "initial_delay": {
    ///          "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///          "type": "integer"
    ///        },
    ///        "match_mode": {
    ///          "description": "How path rules are matched.",
    ///          "default": "match-all-rules",
    ///          "type": "string",
    ///          "enum": [
    ///            "match-all-rules",
    ///            "match-any-rule"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the escalation path",
    ///          "type": "string"
    ///        },
    ///        "notification_type": {
    ///          "description": "Notification rule type to be used",
    ///          "default": "audible",
    ///          "type": "string",
    ///          "enum": [
    ///            "audible",
    ///            "quiet"
    ///          ]
    ///        },
    ///        "path_type": {
    ///          "description": "The type of escalation path to create",
    ///          "default": "escalation",
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation",
    ///            "deferral"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "The position of this path in the paths for this EP.",
    ///          "type": "integer"
    ///        },
    ///        "repeat": {
    ///          "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "repeat_count": {
    ///          "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "rules": {
    ///          "description": "Escalation path conditions",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "oneOf": [
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "urgency_ids"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "alert_urgency"
    ///                    ]
    ///                  },
    ///                  "urgency_ids": {
    ///                    "description": "Alert urgency ids for which this escalation path should be used",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "within_working_hour"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "working_hour"
    ///                    ]
    ///                  },
    ///                  "within_working_hour": {
    ///                    "description": "Whether the escalation path should be used within working hours",
    ///                    "type": "boolean"
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "json_path",
    ///                  "operator",
    ///                  "rule_type"
    ///                ],
    ///                "properties": {
    ///                  "json_path": {
    ///                    "description": "JSON path to extract value from payload",
    ///                    "type": "string"
    ///                  },
    ///                  "operator": {
    ///                    "description": "How JSON path value should be matched",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "is_set",
    ///                      "is_not_set"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "json_path"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "description": "Value with which JSON path value should be matched",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "fieldable_id",
    ///                  "fieldable_type",
    ///                  "operator",
    ///                  "rule_type"
    ///                ],
    ///                "properties": {
    ///                  "fieldable_id": {
    ///                    "description": "The ID of the alert field",
    ///                    "type": "string"
    ///                  },
    ///                  "fieldable_type": {
    ///                    "description": "The type of the fieldable (e.g., AlertField)",
    ///                    "type": "string"
    ///                  },
    ///                  "operator": {
    ///                    "description": "How the alert field value should be matched",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "is_empty",
    ///                      "is_not_empty",
    ///                      "contains_key",
    ///                      "does_not_contain_key",
    ///                      "starts_with",
    ///                      "does_not_start_with",
    ///                      "matches",
    ///                      "does_not_match"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "field"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "Values to match against",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "service_ids"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "service"
    ///                    ]
    ///                  },
    ///                  "service_ids": {
    ///                    "description": "Service ids for which this escalation path should be used",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "time_blocks",
    ///                  "time_zone"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "deferral_window"
    ///                    ]
    ///                  },
    ///                  "time_blocks": {
    ///                    "description": "Time windows during which alerts are deferred",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "properties": {
    ///                        "all_day": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "end_time": {
    ///                          "description": "Formatted as HH:MM",
    ///                          "type": "string"
    ///                        },
    ///                        "friday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "monday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "position": {
    ///                          "type": [
    ///                            "integer",
    ///                            "null"
    ///                          ]
    ///                        },
    ///                        "saturday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "start_time": {
    ///                          "description": "Formatted as HH:MM",
    ///                          "type": "string"
    ///                        },
    ///                        "sunday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "thursday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "tuesday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "wednesday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "time_zone": {
    ///                    "description": "Time zone for the deferral window",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "International Date Line West",
    ///                      "Etc/GMT+12",
    ///                      "American Samoa",
    ///                      "Pacific/Pago_Pago",
    ///                      "Midway Island",
    ///                      "Pacific/Midway",
    ///                      "Hawaii",
    ///                      "Pacific/Honolulu",
    ///                      "Alaska",
    ///                      "America/Juneau",
    ///                      "Pacific Time (US & Canada)",
    ///                      "America/Los_Angeles",
    ///                      "Tijuana",
    ///                      "America/Tijuana",
    ///                      "Arizona",
    ///                      "America/Phoenix",
    ///                      "Mazatlan",
    ///                      "America/Mazatlan",
    ///                      "Mountain Time (US & Canada)",
    ///                      "America/Denver",
    ///                      "Central America",
    ///                      "America/Guatemala",
    ///                      "Central Time (US & Canada)",
    ///                      "America/Chicago",
    ///                      "Chihuahua",
    ///                      "America/Chihuahua",
    ///                      "Guadalajara",
    ///                      "America/Mexico_City",
    ///                      "Mexico City",
    ///                      "Monterrey",
    ///                      "America/Monterrey",
    ///                      "Saskatchewan",
    ///                      "America/Regina",
    ///                      "Bogota",
    ///                      "America/Bogota",
    ///                      "Eastern Time (US & Canada)",
    ///                      "America/New_York",
    ///                      "Indiana (East)",
    ///                      "America/Indiana/Indianapolis",
    ///                      "Lima",
    ///                      "America/Lima",
    ///                      "Quito",
    ///                      "Atlantic Time (Canada)",
    ///                      "America/Halifax",
    ///                      "Caracas",
    ///                      "America/Caracas",
    ///                      "Georgetown",
    ///                      "America/Guyana",
    ///                      "La Paz",
    ///                      "America/La_Paz",
    ///                      "Puerto Rico",
    ///                      "America/Puerto_Rico",
    ///                      "Santiago",
    ///                      "America/Santiago",
    ///                      "Newfoundland",
    ///                      "America/St_Johns",
    ///                      "Asuncion",
    ///                      "America/Asuncion",
    ///                      "Brasilia",
    ///                      "America/Sao_Paulo",
    ///                      "Buenos Aires",
    ///                      "America/Argentina/Buenos_Aires",
    ///                      "Montevideo",
    ///                      "America/Montevideo",
    ///                      "Greenland",
    ///                      "America/Nuuk",
    ///                      "Mid-Atlantic",
    ///                      "Atlantic/South_Georgia",
    ///                      "Azores",
    ///                      "Atlantic/Azores",
    ///                      "Cape Verde Is.",
    ///                      "Atlantic/Cape_Verde",
    ///                      "Edinburgh",
    ///                      "Europe/London",
    ///                      "Lisbon",
    ///                      "Europe/Lisbon",
    ///                      "London",
    ///                      "Monrovia",
    ///                      "Africa/Monrovia",
    ///                      "UTC",
    ///                      "Etc/UTC",
    ///                      "Amsterdam",
    ///                      "Europe/Amsterdam",
    ///                      "Belgrade",
    ///                      "Europe/Belgrade",
    ///                      "Berlin",
    ///                      "Europe/Berlin",
    ///                      "Bern",
    ///                      "Europe/Zurich",
    ///                      "Bratislava",
    ///                      "Europe/Bratislava",
    ///                      "Brussels",
    ///                      "Europe/Brussels",
    ///                      "Budapest",
    ///                      "Europe/Budapest",
    ///                      "Casablanca",
    ///                      "Africa/Casablanca",
    ///                      "Copenhagen",
    ///                      "Europe/Copenhagen",
    ///                      "Dublin",
    ///                      "Europe/Dublin",
    ///                      "Ljubljana",
    ///                      "Europe/Ljubljana",
    ///                      "Madrid",
    ///                      "Europe/Madrid",
    ///                      "Paris",
    ///                      "Europe/Paris",
    ///                      "Prague",
    ///                      "Europe/Prague",
    ///                      "Rome",
    ///                      "Europe/Rome",
    ///                      "Sarajevo",
    ///                      "Europe/Sarajevo",
    ///                      "Skopje",
    ///                      "Europe/Skopje",
    ///                      "Stockholm",
    ///                      "Europe/Stockholm",
    ///                      "Vienna",
    ///                      "Europe/Vienna",
    ///                      "Warsaw",
    ///                      "Europe/Warsaw",
    ///                      "West Central Africa",
    ///                      "Africa/Algiers",
    ///                      "Zagreb",
    ///                      "Europe/Zagreb",
    ///                      "Zurich",
    ///                      "Athens",
    ///                      "Europe/Athens",
    ///                      "Bucharest",
    ///                      "Europe/Bucharest",
    ///                      "Cairo",
    ///                      "Africa/Cairo",
    ///                      "Harare",
    ///                      "Africa/Harare",
    ///                      "Helsinki",
    ///                      "Europe/Helsinki",
    ///                      "Jerusalem",
    ///                      "Asia/Jerusalem",
    ///                      "Kaliningrad",
    ///                      "Europe/Kaliningrad",
    ///                      "Kyiv",
    ///                      "Europe/Kiev",
    ///                      "Pretoria",
    ///                      "Africa/Johannesburg",
    ///                      "Riga",
    ///                      "Europe/Riga",
    ///                      "Sofia",
    ///                      "Europe/Sofia",
    ///                      "Tallinn",
    ///                      "Europe/Tallinn",
    ///                      "Vilnius",
    ///                      "Europe/Vilnius",
    ///                      "Baghdad",
    ///                      "Asia/Baghdad",
    ///                      "Istanbul",
    ///                      "Europe/Istanbul",
    ///                      "Kuwait",
    ///                      "Asia/Kuwait",
    ///                      "Minsk",
    ///                      "Europe/Minsk",
    ///                      "Moscow",
    ///                      "Europe/Moscow",
    ///                      "Nairobi",
    ///                      "Africa/Nairobi",
    ///                      "Riyadh",
    ///                      "Asia/Riyadh",
    ///                      "St. Petersburg",
    ///                      "Volgograd",
    ///                      "Europe/Volgograd",
    ///                      "Tehran",
    ///                      "Asia/Tehran",
    ///                      "Abu Dhabi",
    ///                      "Asia/Muscat",
    ///                      "Baku",
    ///                      "Asia/Baku",
    ///                      "Muscat",
    ///                      "Samara",
    ///                      "Europe/Samara",
    ///                      "Tbilisi",
    ///                      "Asia/Tbilisi",
    ///                      "Yerevan",
    ///                      "Asia/Yerevan",
    ///                      "Kabul",
    ///                      "Asia/Kabul",
    ///                      "Almaty",
    ///                      "Asia/Almaty",
    ///                      "Astana",
    ///                      "Ekaterinburg",
    ///                      "Asia/Yekaterinburg",
    ///                      "Islamabad",
    ///                      "Asia/Karachi",
    ///                      "Karachi",
    ///                      "Tashkent",
    ///                      "Asia/Tashkent",
    ///                      "Chennai",
    ///                      "Asia/Kolkata",
    ///                      "Kolkata",
    ///                      "Mumbai",
    ///                      "New Delhi",
    ///                      "Sri Jayawardenepura",
    ///                      "Asia/Colombo",
    ///                      "Kathmandu",
    ///                      "Asia/Kathmandu",
    ///                      "Dhaka",
    ///                      "Asia/Dhaka",
    ///                      "Urumqi",
    ///                      "Asia/Urumqi",
    ///                      "Rangoon",
    ///                      "Asia/Rangoon",
    ///                      "Bangkok",
    ///                      "Asia/Bangkok",
    ///                      "Hanoi",
    ///                      "Jakarta",
    ///                      "Asia/Jakarta",
    ///                      "Krasnoyarsk",
    ///                      "Asia/Krasnoyarsk",
    ///                      "Novosibirsk",
    ///                      "Asia/Novosibirsk",
    ///                      "Beijing",
    ///                      "Asia/Shanghai",
    ///                      "Chongqing",
    ///                      "Asia/Chongqing",
    ///                      "Hong Kong",
    ///                      "Asia/Hong_Kong",
    ///                      "Irkutsk",
    ///                      "Asia/Irkutsk",
    ///                      "Kuala Lumpur",
    ///                      "Asia/Kuala_Lumpur",
    ///                      "Perth",
    ///                      "Australia/Perth",
    ///                      "Singapore",
    ///                      "Asia/Singapore",
    ///                      "Taipei",
    ///                      "Asia/Taipei",
    ///                      "Ulaanbaatar",
    ///                      "Asia/Ulaanbaatar",
    ///                      "Osaka",
    ///                      "Asia/Tokyo",
    ///                      "Sapporo",
    ///                      "Seoul",
    ///                      "Asia/Seoul",
    ///                      "Tokyo",
    ///                      "Yakutsk",
    ///                      "Asia/Yakutsk",
    ///                      "Adelaide",
    ///                      "Australia/Adelaide",
    ///                      "Darwin",
    ///                      "Australia/Darwin",
    ///                      "Brisbane",
    ///                      "Australia/Brisbane",
    ///                      "Canberra",
    ///                      "Australia/Canberra",
    ///                      "Guam",
    ///                      "Pacific/Guam",
    ///                      "Hobart",
    ///                      "Australia/Hobart",
    ///                      "Melbourne",
    ///                      "Australia/Melbourne",
    ///                      "Port Moresby",
    ///                      "Pacific/Port_Moresby",
    ///                      "Sydney",
    ///                      "Australia/Sydney",
    ///                      "Vladivostok",
    ///                      "Asia/Vladivostok",
    ///                      "Magadan",
    ///                      "Asia/Magadan",
    ///                      "New Caledonia",
    ///                      "Pacific/Noumea",
    ///                      "Solomon Is.",
    ///                      "Pacific/Guadalcanal",
    ///                      "Srednekolymsk",
    ///                      "Asia/Srednekolymsk",
    ///                      "Auckland",
    ///                      "Pacific/Auckland",
    ///                      "Fiji",
    ///                      "Pacific/Fiji",
    ///                      "Kamchatka",
    ///                      "Asia/Kamchatka",
    ///                      "Marshall Is.",
    ///                      "Pacific/Majuro",
    ///                      "Wellington",
    ///                      "Chatham Is.",
    ///                      "Pacific/Chatham",
    ///                      "Nuku'alofa",
    ///                      "Pacific/Tongatapu",
    ///                      "Samoa",
    ///                      "Pacific/Apia",
    ///                      "Tokelau Is.",
    ///                      "Pacific/Fakaofo"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "operator",
    ///                  "rule_type",
    ///                  "values"
    ///                ],
    ///                "properties": {
    ///                  "operator": {
    ///                    "description": "How the alert source should be matched",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "is_one_of",
    ///                      "is_not_one_of"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "source"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "operator",
    ///                  "rule_type"
    ///                ],
    ///                "properties": {
    ///                  "operator": {
    ///                    "description": "Whether the alert must (or must not) have related incidents",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is_set",
    ///                      "is_not_set"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "related_incidents"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          }
    ///        },
    ///        "time_restriction_time_zone": {
    ///          "description": "Time zone used for time restrictions.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        },
    ///        "time_restrictions": {
    ///          "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "end_day",
    ///              "end_time",
    ///              "start_day",
    ///              "start_time"
    ///            ],
    ///            "properties": {
    ///              "end_day": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "monday",
    ///                  "tuesday",
    ///                  "wednesday",
    ///                  "thursday",
    ///                  "friday",
    ///                  "saturday",
    ///                  "sunday"
    ///                ]
    ///              },
    ///              "end_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "start_day": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "monday",
    ///                  "tuesday",
    ///                  "wednesday",
    ///                  "thursday",
    ///                  "friday",
    ///                  "saturday",
    ///                  "sunday"
    ///                ]
    ///              },
    ///              "start_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_paths"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyPathData {
        pub attributes: NewEscalationPolicyPathDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewEscalationPolicyPathDataType,
    }
    impl NewEscalationPolicyPathData {
        pub fn builder() -> builder::NewEscalationPolicyPathData {
            Default::default()
        }
    }
    ///`NewEscalationPolicyPathDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "after_deferral_behavior": {
    ///      "description": "What happens after a deferral path finishes. Required for deferral paths.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "re_evaluate",
    ///        "execute_path"
    ///      ]
    ///    },
    ///    "after_deferral_path_id": {
    ///      "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "default": {
    ///      "description": "Whether this escalation path is the default path",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "initial_delay": {
    ///      "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///      "type": "integer"
    ///    },
    ///    "match_mode": {
    ///      "description": "How path rules are matched.",
    ///      "default": "match-all-rules",
    ///      "type": "string",
    ///      "enum": [
    ///        "match-all-rules",
    ///        "match-any-rule"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the escalation path",
    ///      "type": "string"
    ///    },
    ///    "notification_type": {
    ///      "description": "Notification rule type to be used",
    ///      "default": "audible",
    ///      "type": "string",
    ///      "enum": [
    ///        "audible",
    ///        "quiet"
    ///      ]
    ///    },
    ///    "path_type": {
    ///      "description": "The type of escalation path to create",
    ///      "default": "escalation",
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation",
    ///        "deferral"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of this path in the paths for this EP.",
    ///      "type": "integer"
    ///    },
    ///    "repeat": {
    ///      "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_count": {
    ///      "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "rules": {
    ///      "description": "Escalation path conditions",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "oneOf": [
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "urgency_ids"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "alert_urgency"
    ///                ]
    ///              },
    ///              "urgency_ids": {
    ///                "description": "Alert urgency ids for which this escalation path should be used",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "within_working_hour"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "working_hour"
    ///                ]
    ///              },
    ///              "within_working_hour": {
    ///                "description": "Whether the escalation path should be used within working hours",
    ///                "type": "boolean"
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "json_path",
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "json_path": {
    ///                "description": "JSON path to extract value from payload",
    ///                "type": "string"
    ///              },
    ///              "operator": {
    ///                "description": "How JSON path value should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "is_set",
    ///                  "is_not_set"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "json_path"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value with which JSON path value should be matched",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "fieldable_id",
    ///              "fieldable_type",
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "fieldable_id": {
    ///                "description": "The ID of the alert field",
    ///                "type": "string"
    ///              },
    ///              "fieldable_type": {
    ///                "description": "The type of the fieldable (e.g., AlertField)",
    ///                "type": "string"
    ///              },
    ///              "operator": {
    ///                "description": "How the alert field value should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "is_empty",
    ///                  "is_not_empty",
    ///                  "contains_key",
    ///                  "does_not_contain_key",
    ///                  "starts_with",
    ///                  "does_not_start_with",
    ///                  "matches",
    ///                  "does_not_match"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "field"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Values to match against",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "service_ids"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service"
    ///                ]
    ///              },
    ///              "service_ids": {
    ///                "description": "Service ids for which this escalation path should be used",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "time_blocks",
    ///              "time_zone"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "deferral_window"
    ///                ]
    ///              },
    ///              "time_blocks": {
    ///                "description": "Time windows during which alerts are deferred",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "all_day": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "end_time": {
    ///                      "description": "Formatted as HH:MM",
    ///                      "type": "string"
    ///                    },
    ///                    "friday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "monday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "position": {
    ///                      "type": [
    ///                        "integer",
    ///                        "null"
    ///                      ]
    ///                    },
    ///                    "saturday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "start_time": {
    ///                      "description": "Formatted as HH:MM",
    ///                      "type": "string"
    ///                    },
    ///                    "sunday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "thursday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "tuesday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "wednesday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "time_zone": {
    ///                "description": "Time zone for the deferral window",
    ///                "type": "string",
    ///                "enum": [
    ///                  "International Date Line West",
    ///                  "Etc/GMT+12",
    ///                  "American Samoa",
    ///                  "Pacific/Pago_Pago",
    ///                  "Midway Island",
    ///                  "Pacific/Midway",
    ///                  "Hawaii",
    ///                  "Pacific/Honolulu",
    ///                  "Alaska",
    ///                  "America/Juneau",
    ///                  "Pacific Time (US & Canada)",
    ///                  "America/Los_Angeles",
    ///                  "Tijuana",
    ///                  "America/Tijuana",
    ///                  "Arizona",
    ///                  "America/Phoenix",
    ///                  "Mazatlan",
    ///                  "America/Mazatlan",
    ///                  "Mountain Time (US & Canada)",
    ///                  "America/Denver",
    ///                  "Central America",
    ///                  "America/Guatemala",
    ///                  "Central Time (US & Canada)",
    ///                  "America/Chicago",
    ///                  "Chihuahua",
    ///                  "America/Chihuahua",
    ///                  "Guadalajara",
    ///                  "America/Mexico_City",
    ///                  "Mexico City",
    ///                  "Monterrey",
    ///                  "America/Monterrey",
    ///                  "Saskatchewan",
    ///                  "America/Regina",
    ///                  "Bogota",
    ///                  "America/Bogota",
    ///                  "Eastern Time (US & Canada)",
    ///                  "America/New_York",
    ///                  "Indiana (East)",
    ///                  "America/Indiana/Indianapolis",
    ///                  "Lima",
    ///                  "America/Lima",
    ///                  "Quito",
    ///                  "Atlantic Time (Canada)",
    ///                  "America/Halifax",
    ///                  "Caracas",
    ///                  "America/Caracas",
    ///                  "Georgetown",
    ///                  "America/Guyana",
    ///                  "La Paz",
    ///                  "America/La_Paz",
    ///                  "Puerto Rico",
    ///                  "America/Puerto_Rico",
    ///                  "Santiago",
    ///                  "America/Santiago",
    ///                  "Newfoundland",
    ///                  "America/St_Johns",
    ///                  "Asuncion",
    ///                  "America/Asuncion",
    ///                  "Brasilia",
    ///                  "America/Sao_Paulo",
    ///                  "Buenos Aires",
    ///                  "America/Argentina/Buenos_Aires",
    ///                  "Montevideo",
    ///                  "America/Montevideo",
    ///                  "Greenland",
    ///                  "America/Nuuk",
    ///                  "Mid-Atlantic",
    ///                  "Atlantic/South_Georgia",
    ///                  "Azores",
    ///                  "Atlantic/Azores",
    ///                  "Cape Verde Is.",
    ///                  "Atlantic/Cape_Verde",
    ///                  "Edinburgh",
    ///                  "Europe/London",
    ///                  "Lisbon",
    ///                  "Europe/Lisbon",
    ///                  "London",
    ///                  "Monrovia",
    ///                  "Africa/Monrovia",
    ///                  "UTC",
    ///                  "Etc/UTC",
    ///                  "Amsterdam",
    ///                  "Europe/Amsterdam",
    ///                  "Belgrade",
    ///                  "Europe/Belgrade",
    ///                  "Berlin",
    ///                  "Europe/Berlin",
    ///                  "Bern",
    ///                  "Europe/Zurich",
    ///                  "Bratislava",
    ///                  "Europe/Bratislava",
    ///                  "Brussels",
    ///                  "Europe/Brussels",
    ///                  "Budapest",
    ///                  "Europe/Budapest",
    ///                  "Casablanca",
    ///                  "Africa/Casablanca",
    ///                  "Copenhagen",
    ///                  "Europe/Copenhagen",
    ///                  "Dublin",
    ///                  "Europe/Dublin",
    ///                  "Ljubljana",
    ///                  "Europe/Ljubljana",
    ///                  "Madrid",
    ///                  "Europe/Madrid",
    ///                  "Paris",
    ///                  "Europe/Paris",
    ///                  "Prague",
    ///                  "Europe/Prague",
    ///                  "Rome",
    ///                  "Europe/Rome",
    ///                  "Sarajevo",
    ///                  "Europe/Sarajevo",
    ///                  "Skopje",
    ///                  "Europe/Skopje",
    ///                  "Stockholm",
    ///                  "Europe/Stockholm",
    ///                  "Vienna",
    ///                  "Europe/Vienna",
    ///                  "Warsaw",
    ///                  "Europe/Warsaw",
    ///                  "West Central Africa",
    ///                  "Africa/Algiers",
    ///                  "Zagreb",
    ///                  "Europe/Zagreb",
    ///                  "Zurich",
    ///                  "Athens",
    ///                  "Europe/Athens",
    ///                  "Bucharest",
    ///                  "Europe/Bucharest",
    ///                  "Cairo",
    ///                  "Africa/Cairo",
    ///                  "Harare",
    ///                  "Africa/Harare",
    ///                  "Helsinki",
    ///                  "Europe/Helsinki",
    ///                  "Jerusalem",
    ///                  "Asia/Jerusalem",
    ///                  "Kaliningrad",
    ///                  "Europe/Kaliningrad",
    ///                  "Kyiv",
    ///                  "Europe/Kiev",
    ///                  "Pretoria",
    ///                  "Africa/Johannesburg",
    ///                  "Riga",
    ///                  "Europe/Riga",
    ///                  "Sofia",
    ///                  "Europe/Sofia",
    ///                  "Tallinn",
    ///                  "Europe/Tallinn",
    ///                  "Vilnius",
    ///                  "Europe/Vilnius",
    ///                  "Baghdad",
    ///                  "Asia/Baghdad",
    ///                  "Istanbul",
    ///                  "Europe/Istanbul",
    ///                  "Kuwait",
    ///                  "Asia/Kuwait",
    ///                  "Minsk",
    ///                  "Europe/Minsk",
    ///                  "Moscow",
    ///                  "Europe/Moscow",
    ///                  "Nairobi",
    ///                  "Africa/Nairobi",
    ///                  "Riyadh",
    ///                  "Asia/Riyadh",
    ///                  "St. Petersburg",
    ///                  "Volgograd",
    ///                  "Europe/Volgograd",
    ///                  "Tehran",
    ///                  "Asia/Tehran",
    ///                  "Abu Dhabi",
    ///                  "Asia/Muscat",
    ///                  "Baku",
    ///                  "Asia/Baku",
    ///                  "Muscat",
    ///                  "Samara",
    ///                  "Europe/Samara",
    ///                  "Tbilisi",
    ///                  "Asia/Tbilisi",
    ///                  "Yerevan",
    ///                  "Asia/Yerevan",
    ///                  "Kabul",
    ///                  "Asia/Kabul",
    ///                  "Almaty",
    ///                  "Asia/Almaty",
    ///                  "Astana",
    ///                  "Ekaterinburg",
    ///                  "Asia/Yekaterinburg",
    ///                  "Islamabad",
    ///                  "Asia/Karachi",
    ///                  "Karachi",
    ///                  "Tashkent",
    ///                  "Asia/Tashkent",
    ///                  "Chennai",
    ///                  "Asia/Kolkata",
    ///                  "Kolkata",
    ///                  "Mumbai",
    ///                  "New Delhi",
    ///                  "Sri Jayawardenepura",
    ///                  "Asia/Colombo",
    ///                  "Kathmandu",
    ///                  "Asia/Kathmandu",
    ///                  "Dhaka",
    ///                  "Asia/Dhaka",
    ///                  "Urumqi",
    ///                  "Asia/Urumqi",
    ///                  "Rangoon",
    ///                  "Asia/Rangoon",
    ///                  "Bangkok",
    ///                  "Asia/Bangkok",
    ///                  "Hanoi",
    ///                  "Jakarta",
    ///                  "Asia/Jakarta",
    ///                  "Krasnoyarsk",
    ///                  "Asia/Krasnoyarsk",
    ///                  "Novosibirsk",
    ///                  "Asia/Novosibirsk",
    ///                  "Beijing",
    ///                  "Asia/Shanghai",
    ///                  "Chongqing",
    ///                  "Asia/Chongqing",
    ///                  "Hong Kong",
    ///                  "Asia/Hong_Kong",
    ///                  "Irkutsk",
    ///                  "Asia/Irkutsk",
    ///                  "Kuala Lumpur",
    ///                  "Asia/Kuala_Lumpur",
    ///                  "Perth",
    ///                  "Australia/Perth",
    ///                  "Singapore",
    ///                  "Asia/Singapore",
    ///                  "Taipei",
    ///                  "Asia/Taipei",
    ///                  "Ulaanbaatar",
    ///                  "Asia/Ulaanbaatar",
    ///                  "Osaka",
    ///                  "Asia/Tokyo",
    ///                  "Sapporo",
    ///                  "Seoul",
    ///                  "Asia/Seoul",
    ///                  "Tokyo",
    ///                  "Yakutsk",
    ///                  "Asia/Yakutsk",
    ///                  "Adelaide",
    ///                  "Australia/Adelaide",
    ///                  "Darwin",
    ///                  "Australia/Darwin",
    ///                  "Brisbane",
    ///                  "Australia/Brisbane",
    ///                  "Canberra",
    ///                  "Australia/Canberra",
    ///                  "Guam",
    ///                  "Pacific/Guam",
    ///                  "Hobart",
    ///                  "Australia/Hobart",
    ///                  "Melbourne",
    ///                  "Australia/Melbourne",
    ///                  "Port Moresby",
    ///                  "Pacific/Port_Moresby",
    ///                  "Sydney",
    ///                  "Australia/Sydney",
    ///                  "Vladivostok",
    ///                  "Asia/Vladivostok",
    ///                  "Magadan",
    ///                  "Asia/Magadan",
    ///                  "New Caledonia",
    ///                  "Pacific/Noumea",
    ///                  "Solomon Is.",
    ///                  "Pacific/Guadalcanal",
    ///                  "Srednekolymsk",
    ///                  "Asia/Srednekolymsk",
    ///                  "Auckland",
    ///                  "Pacific/Auckland",
    ///                  "Fiji",
    ///                  "Pacific/Fiji",
    ///                  "Kamchatka",
    ///                  "Asia/Kamchatka",
    ///                  "Marshall Is.",
    ///                  "Pacific/Majuro",
    ///                  "Wellington",
    ///                  "Chatham Is.",
    ///                  "Pacific/Chatham",
    ///                  "Nuku'alofa",
    ///                  "Pacific/Tongatapu",
    ///                  "Samoa",
    ///                  "Pacific/Apia",
    ///                  "Tokelau Is.",
    ///                  "Pacific/Fakaofo"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "operator",
    ///              "rule_type",
    ///              "values"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "description": "How the alert source should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "is_one_of",
    ///                  "is_not_one_of"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "source"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "description": "Whether the alert must (or must not) have related incidents",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_set",
    ///                  "is_not_set"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "related_incidents"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "time_restriction_time_zone": {
    ///      "description": "Time zone used for time restrictions.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "International Date Line West",
    ///        "Etc/GMT+12",
    ///        "American Samoa",
    ///        "Pacific/Pago_Pago",
    ///        "Midway Island",
    ///        "Pacific/Midway",
    ///        "Hawaii",
    ///        "Pacific/Honolulu",
    ///        "Alaska",
    ///        "America/Juneau",
    ///        "Pacific Time (US & Canada)",
    ///        "America/Los_Angeles",
    ///        "Tijuana",
    ///        "America/Tijuana",
    ///        "Arizona",
    ///        "America/Phoenix",
    ///        "Mazatlan",
    ///        "America/Mazatlan",
    ///        "Mountain Time (US & Canada)",
    ///        "America/Denver",
    ///        "Central America",
    ///        "America/Guatemala",
    ///        "Central Time (US & Canada)",
    ///        "America/Chicago",
    ///        "Chihuahua",
    ///        "America/Chihuahua",
    ///        "Guadalajara",
    ///        "America/Mexico_City",
    ///        "Mexico City",
    ///        "Monterrey",
    ///        "America/Monterrey",
    ///        "Saskatchewan",
    ///        "America/Regina",
    ///        "Bogota",
    ///        "America/Bogota",
    ///        "Eastern Time (US & Canada)",
    ///        "America/New_York",
    ///        "Indiana (East)",
    ///        "America/Indiana/Indianapolis",
    ///        "Lima",
    ///        "America/Lima",
    ///        "Quito",
    ///        "Atlantic Time (Canada)",
    ///        "America/Halifax",
    ///        "Caracas",
    ///        "America/Caracas",
    ///        "Georgetown",
    ///        "America/Guyana",
    ///        "La Paz",
    ///        "America/La_Paz",
    ///        "Puerto Rico",
    ///        "America/Puerto_Rico",
    ///        "Santiago",
    ///        "America/Santiago",
    ///        "Newfoundland",
    ///        "America/St_Johns",
    ///        "Asuncion",
    ///        "America/Asuncion",
    ///        "Brasilia",
    ///        "America/Sao_Paulo",
    ///        "Buenos Aires",
    ///        "America/Argentina/Buenos_Aires",
    ///        "Montevideo",
    ///        "America/Montevideo",
    ///        "Greenland",
    ///        "America/Nuuk",
    ///        "Mid-Atlantic",
    ///        "Atlantic/South_Georgia",
    ///        "Azores",
    ///        "Atlantic/Azores",
    ///        "Cape Verde Is.",
    ///        "Atlantic/Cape_Verde",
    ///        "Edinburgh",
    ///        "Europe/London",
    ///        "Lisbon",
    ///        "Europe/Lisbon",
    ///        "London",
    ///        "Monrovia",
    ///        "Africa/Monrovia",
    ///        "UTC",
    ///        "Etc/UTC",
    ///        "Amsterdam",
    ///        "Europe/Amsterdam",
    ///        "Belgrade",
    ///        "Europe/Belgrade",
    ///        "Berlin",
    ///        "Europe/Berlin",
    ///        "Bern",
    ///        "Europe/Zurich",
    ///        "Bratislava",
    ///        "Europe/Bratislava",
    ///        "Brussels",
    ///        "Europe/Brussels",
    ///        "Budapest",
    ///        "Europe/Budapest",
    ///        "Casablanca",
    ///        "Africa/Casablanca",
    ///        "Copenhagen",
    ///        "Europe/Copenhagen",
    ///        "Dublin",
    ///        "Europe/Dublin",
    ///        "Ljubljana",
    ///        "Europe/Ljubljana",
    ///        "Madrid",
    ///        "Europe/Madrid",
    ///        "Paris",
    ///        "Europe/Paris",
    ///        "Prague",
    ///        "Europe/Prague",
    ///        "Rome",
    ///        "Europe/Rome",
    ///        "Sarajevo",
    ///        "Europe/Sarajevo",
    ///        "Skopje",
    ///        "Europe/Skopje",
    ///        "Stockholm",
    ///        "Europe/Stockholm",
    ///        "Vienna",
    ///        "Europe/Vienna",
    ///        "Warsaw",
    ///        "Europe/Warsaw",
    ///        "West Central Africa",
    ///        "Africa/Algiers",
    ///        "Zagreb",
    ///        "Europe/Zagreb",
    ///        "Zurich",
    ///        "Athens",
    ///        "Europe/Athens",
    ///        "Bucharest",
    ///        "Europe/Bucharest",
    ///        "Cairo",
    ///        "Africa/Cairo",
    ///        "Harare",
    ///        "Africa/Harare",
    ///        "Helsinki",
    ///        "Europe/Helsinki",
    ///        "Jerusalem",
    ///        "Asia/Jerusalem",
    ///        "Kaliningrad",
    ///        "Europe/Kaliningrad",
    ///        "Kyiv",
    ///        "Europe/Kiev",
    ///        "Pretoria",
    ///        "Africa/Johannesburg",
    ///        "Riga",
    ///        "Europe/Riga",
    ///        "Sofia",
    ///        "Europe/Sofia",
    ///        "Tallinn",
    ///        "Europe/Tallinn",
    ///        "Vilnius",
    ///        "Europe/Vilnius",
    ///        "Baghdad",
    ///        "Asia/Baghdad",
    ///        "Istanbul",
    ///        "Europe/Istanbul",
    ///        "Kuwait",
    ///        "Asia/Kuwait",
    ///        "Minsk",
    ///        "Europe/Minsk",
    ///        "Moscow",
    ///        "Europe/Moscow",
    ///        "Nairobi",
    ///        "Africa/Nairobi",
    ///        "Riyadh",
    ///        "Asia/Riyadh",
    ///        "St. Petersburg",
    ///        "Volgograd",
    ///        "Europe/Volgograd",
    ///        "Tehran",
    ///        "Asia/Tehran",
    ///        "Abu Dhabi",
    ///        "Asia/Muscat",
    ///        "Baku",
    ///        "Asia/Baku",
    ///        "Muscat",
    ///        "Samara",
    ///        "Europe/Samara",
    ///        "Tbilisi",
    ///        "Asia/Tbilisi",
    ///        "Yerevan",
    ///        "Asia/Yerevan",
    ///        "Kabul",
    ///        "Asia/Kabul",
    ///        "Almaty",
    ///        "Asia/Almaty",
    ///        "Astana",
    ///        "Ekaterinburg",
    ///        "Asia/Yekaterinburg",
    ///        "Islamabad",
    ///        "Asia/Karachi",
    ///        "Karachi",
    ///        "Tashkent",
    ///        "Asia/Tashkent",
    ///        "Chennai",
    ///        "Asia/Kolkata",
    ///        "Kolkata",
    ///        "Mumbai",
    ///        "New Delhi",
    ///        "Sri Jayawardenepura",
    ///        "Asia/Colombo",
    ///        "Kathmandu",
    ///        "Asia/Kathmandu",
    ///        "Dhaka",
    ///        "Asia/Dhaka",
    ///        "Urumqi",
    ///        "Asia/Urumqi",
    ///        "Rangoon",
    ///        "Asia/Rangoon",
    ///        "Bangkok",
    ///        "Asia/Bangkok",
    ///        "Hanoi",
    ///        "Jakarta",
    ///        "Asia/Jakarta",
    ///        "Krasnoyarsk",
    ///        "Asia/Krasnoyarsk",
    ///        "Novosibirsk",
    ///        "Asia/Novosibirsk",
    ///        "Beijing",
    ///        "Asia/Shanghai",
    ///        "Chongqing",
    ///        "Asia/Chongqing",
    ///        "Hong Kong",
    ///        "Asia/Hong_Kong",
    ///        "Irkutsk",
    ///        "Asia/Irkutsk",
    ///        "Kuala Lumpur",
    ///        "Asia/Kuala_Lumpur",
    ///        "Perth",
    ///        "Australia/Perth",
    ///        "Singapore",
    ///        "Asia/Singapore",
    ///        "Taipei",
    ///        "Asia/Taipei",
    ///        "Ulaanbaatar",
    ///        "Asia/Ulaanbaatar",
    ///        "Osaka",
    ///        "Asia/Tokyo",
    ///        "Sapporo",
    ///        "Seoul",
    ///        "Asia/Seoul",
    ///        "Tokyo",
    ///        "Yakutsk",
    ///        "Asia/Yakutsk",
    ///        "Adelaide",
    ///        "Australia/Adelaide",
    ///        "Darwin",
    ///        "Australia/Darwin",
    ///        "Brisbane",
    ///        "Australia/Brisbane",
    ///        "Canberra",
    ///        "Australia/Canberra",
    ///        "Guam",
    ///        "Pacific/Guam",
    ///        "Hobart",
    ///        "Australia/Hobart",
    ///        "Melbourne",
    ///        "Australia/Melbourne",
    ///        "Port Moresby",
    ///        "Pacific/Port_Moresby",
    ///        "Sydney",
    ///        "Australia/Sydney",
    ///        "Vladivostok",
    ///        "Asia/Vladivostok",
    ///        "Magadan",
    ///        "Asia/Magadan",
    ///        "New Caledonia",
    ///        "Pacific/Noumea",
    ///        "Solomon Is.",
    ///        "Pacific/Guadalcanal",
    ///        "Srednekolymsk",
    ///        "Asia/Srednekolymsk",
    ///        "Auckland",
    ///        "Pacific/Auckland",
    ///        "Fiji",
    ///        "Pacific/Fiji",
    ///        "Kamchatka",
    ///        "Asia/Kamchatka",
    ///        "Marshall Is.",
    ///        "Pacific/Majuro",
    ///        "Wellington",
    ///        "Chatham Is.",
    ///        "Pacific/Chatham",
    ///        "Nuku'alofa",
    ///        "Pacific/Tongatapu",
    ///        "Samoa",
    ///        "Pacific/Apia",
    ///        "Tokelau Is.",
    ///        "Pacific/Fakaofo"
    ///      ]
    ///    },
    ///    "time_restrictions": {
    ///      "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "end_day",
    ///          "end_time",
    ///          "start_day",
    ///          "start_time"
    ///        ],
    ///        "properties": {
    ///          "end_day": {
    ///            "type": "string",
    ///            "enum": [
    ///              "monday",
    ///              "tuesday",
    ///              "wednesday",
    ///              "thursday",
    ///              "friday",
    ///              "saturday",
    ///              "sunday"
    ///            ]
    ///          },
    ///          "end_time": {
    ///            "description": "Formatted as HH:MM",
    ///            "type": "string"
    ///          },
    ///          "start_day": {
    ///            "type": "string",
    ///            "enum": [
    ///              "monday",
    ///              "tuesday",
    ///              "wednesday",
    ///              "thursday",
    ///              "friday",
    ///              "saturday",
    ///              "sunday"
    ///            ]
    ///          },
    ///          "start_time": {
    ///            "description": "Formatted as HH:MM",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewEscalationPolicyPathDataAttributes {
        ///What happens after a deferral path finishes. Required for deferral paths.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub after_deferral_behavior: ::std::option::Option<
            NewEscalationPolicyPathDataAttributesAfterDeferralBehavior,
        >,
        ///The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub after_deferral_path_id: ::std::option::Option<::std::string::String>,
        ///Whether this escalation path is the default path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///Initial delay for escalation path in minutes. Maximum 1 week (10080).
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub initial_delay: ::std::option::Option<i64>,
        ///How path rules are matched.
        #[serde(
            default = "defaults::new_escalation_policy_path_data_attributes_match_mode"
        )]
        pub match_mode: NewEscalationPolicyPathDataAttributesMatchMode,
        ///The name of the escalation path
        pub name: ::std::string::String,
        ///Notification rule type to be used
        #[serde(
            default = "defaults::new_escalation_policy_path_data_attributes_notification_type"
        )]
        pub notification_type: NewEscalationPolicyPathDataAttributesNotificationType,
        ///The type of escalation path to create
        #[serde(
            default = "defaults::new_escalation_policy_path_data_attributes_path_type"
        )]
        pub path_type: NewEscalationPolicyPathDataAttributesPathType,
        ///The position of this path in the paths for this EP.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether this path should be repeated until someone acknowledges the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat: ::std::option::Option<bool>,
        ///The number of times this path will be executed until someone acknowledges the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_count: ::std::option::Option<i64>,
        ///Escalation path conditions
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<NewEscalationPolicyPathDataAttributesRulesItem>,
        ///Time zone used for time restrictions.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_restriction_time_zone: ::std::option::Option<
            NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone,
        >,
        ///If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub time_restrictions: ::std::vec::Vec<
            NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
        >,
    }
    impl NewEscalationPolicyPathDataAttributes {
        pub fn builder() -> builder::NewEscalationPolicyPathDataAttributes {
            Default::default()
        }
    }
    ///What happens after a deferral path finishes. Required for deferral paths.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "What happens after a deferral path finishes. Required for deferral paths.",
    ///  "type": "string",
    ///  "enum": [
    ///    "re_evaluate",
    ///    "execute_path"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        #[serde(rename = "re_evaluate")]
        ReEvaluate,
        #[serde(rename = "execute_path")]
        ExecutePath,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ReEvaluate => f.write_str("re_evaluate"),
                Self::ExecutePath => f.write_str("execute_path"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "re_evaluate" => Ok(Self::ReEvaluate),
                "execute_path" => Ok(Self::ExecutePath),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///How path rules are matched.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How path rules are matched.",
    ///  "default": "match-all-rules",
    ///  "type": "string",
    ///  "enum": [
    ///    "match-all-rules",
    ///    "match-any-rule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesMatchMode {
        #[serde(rename = "match-all-rules")]
        MatchAllRules,
        #[serde(rename = "match-any-rule")]
        MatchAnyRule,
    }
    impl ::std::fmt::Display for NewEscalationPolicyPathDataAttributesMatchMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::MatchAllRules => f.write_str("match-all-rules"),
                Self::MatchAnyRule => f.write_str("match-any-rule"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyPathDataAttributesMatchMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "match-all-rules" => Ok(Self::MatchAllRules),
                "match-any-rule" => Ok(Self::MatchAnyRule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for NewEscalationPolicyPathDataAttributesMatchMode {
        fn default() -> Self {
            NewEscalationPolicyPathDataAttributesMatchMode::MatchAllRules
        }
    }
    ///Notification rule type to be used
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Notification rule type to be used",
    ///  "default": "audible",
    ///  "type": "string",
    ///  "enum": [
    ///    "audible",
    ///    "quiet"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesNotificationType {
        #[serde(rename = "audible")]
        Audible,
        #[serde(rename = "quiet")]
        Quiet,
    }
    impl ::std::fmt::Display for NewEscalationPolicyPathDataAttributesNotificationType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Audible => f.write_str("audible"),
                Self::Quiet => f.write_str("quiet"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyPathDataAttributesNotificationType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "audible" => Ok(Self::Audible),
                "quiet" => Ok(Self::Quiet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for NewEscalationPolicyPathDataAttributesNotificationType {
        fn default() -> Self {
            NewEscalationPolicyPathDataAttributesNotificationType::Audible
        }
    }
    ///The type of escalation path to create
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of escalation path to create",
    ///  "default": "escalation",
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation",
    ///    "deferral"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesPathType {
        #[serde(rename = "escalation")]
        Escalation,
        #[serde(rename = "deferral")]
        Deferral,
    }
    impl ::std::fmt::Display for NewEscalationPolicyPathDataAttributesPathType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Escalation => f.write_str("escalation"),
                Self::Deferral => f.write_str("deferral"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyPathDataAttributesPathType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation" => Ok(Self::Escalation),
                "deferral" => Ok(Self::Deferral),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for NewEscalationPolicyPathDataAttributesPathType {
        fn default() -> Self {
            NewEscalationPolicyPathDataAttributesPathType::Escalation
        }
    }
    ///`NewEscalationPolicyPathDataAttributesRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "urgency_ids"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_urgency"
    ///          ]
    ///        },
    ///        "urgency_ids": {
    ///          "description": "Alert urgency ids for which this escalation path should be used",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "within_working_hour"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "working_hour"
    ///          ]
    ///        },
    ///        "within_working_hour": {
    ///          "description": "Whether the escalation path should be used within working hours",
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "json_path",
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "json_path": {
    ///          "description": "JSON path to extract value from payload",
    ///          "type": "string"
    ///        },
    ///        "operator": {
    ///          "description": "How JSON path value should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "contains",
    ///            "does_not_contain",
    ///            "is_one_of",
    ///            "is_not_one_of",
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "json_path"
    ///          ]
    ///        },
    ///        "value": {
    ///          "description": "Value with which JSON path value should be matched",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "fieldable_id",
    ///        "fieldable_type",
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "fieldable_id": {
    ///          "description": "The ID of the alert field",
    ///          "type": "string"
    ///        },
    ///        "fieldable_type": {
    ///          "description": "The type of the fieldable (e.g., AlertField)",
    ///          "type": "string"
    ///        },
    ///        "operator": {
    ///          "description": "How the alert field value should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "is_one_of",
    ///            "is_not_one_of",
    ///            "contains",
    ///            "does_not_contain",
    ///            "is_empty",
    ///            "is_not_empty",
    ///            "contains_key",
    ///            "does_not_contain_key",
    ///            "starts_with",
    ///            "does_not_start_with",
    ///            "matches",
    ///            "does_not_match"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "field"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Values to match against",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "service_ids"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "service"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Service ids for which this escalation path should be used",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "time_blocks",
    ///        "time_zone"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "deferral_window"
    ///          ]
    ///        },
    ///        "time_blocks": {
    ///          "description": "Time windows during which alerts are deferred",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "all_day": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "end_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "friday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "monday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "position": {
    ///                "type": [
    ///                  "integer",
    ///                  "null"
    ///                ]
    ///              },
    ///              "saturday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "start_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "sunday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "thursday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "tuesday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "wednesday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "time_zone": {
    ///          "description": "Time zone for the deferral window",
    ///          "type": "string",
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "operator",
    ///        "rule_type",
    ///        "values"
    ///      ],
    ///      "properties": {
    ///        "operator": {
    ///          "description": "How the alert source should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "is_one_of",
    ///            "is_not_one_of"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "source"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Alert source values to match against (e.g., manual, datadog)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "operator": {
    ///          "description": "Whether the alert must (or must not) have related incidents",
    ///          "type": "string",
    ///          "enum": [
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "related_incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(tag = "rule_type")]
    pub enum NewEscalationPolicyPathDataAttributesRulesItem {
        #[serde(rename = "alert_urgency")]
        AlertUrgency {
            ///Alert urgency ids for which this escalation path should be used
            urgency_ids: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "working_hour")]
        WorkingHour {
            ///Whether the escalation path should be used within working hours
            within_working_hour: bool,
        },
        #[serde(rename = "json_path")]
        JsonPath {
            ///JSON path to extract value from payload
            json_path: ::std::string::String,
            ///How JSON path value should be matched
            operator: NewEscalationPolicyPathDataAttributesRulesItemOperator,
            ///Value with which JSON path value should be matched
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            value: ::std::option::Option<::std::string::String>,
            ///Values to match against (for is_one_of / is_not_one_of operators)
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "field")]
        Field {
            ///The ID of the alert field
            fieldable_id: ::std::string::String,
            ///The type of the fieldable (e.g., AlertField)
            fieldable_type: ::std::string::String,
            ///How the alert field value should be matched
            operator: NewEscalationPolicyPathDataAttributesRulesItemOperator,
            ///Values to match against
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "service")]
        Service {
            ///Service ids for which this escalation path should be used
            service_ids: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "deferral_window")]
        DeferralWindow {
            ///Time windows during which alerts are deferred
            time_blocks: ::std::vec::Vec<
                NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
            >,
            ///Time zone for the deferral window
            time_zone: NewEscalationPolicyPathDataAttributesRulesItemTimeZone,
        },
        #[serde(rename = "source")]
        Source {
            ///How the alert source should be matched
            operator: NewEscalationPolicyPathDataAttributesRulesItemOperator,
            ///Alert source values to match against (e.g., manual, datadog)
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "related_incidents")]
        RelatedIncidents {
            ///Whether the alert must (or must not) have related incidents
            operator: NewEscalationPolicyPathDataAttributesRulesItemOperator,
        },
    }
    ///How JSON path value should be matched
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How JSON path value should be matched",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain",
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "is_set",
    ///    "is_not_set"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesRulesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "is_set")]
        IsSet,
        #[serde(rename = "is_not_set")]
        IsNotSet,
    }
    impl ::std::fmt::Display for NewEscalationPolicyPathDataAttributesRulesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::IsSet => f.write_str("is_set"),
                Self::IsNotSet => f.write_str("is_not_set"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyPathDataAttributesRulesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "is_set" => Ok(Self::IsSet),
                "is_not_set" => Ok(Self::IsNotSet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "all_day": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "end_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "friday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "monday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "saturday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "start_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "sunday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "thursday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "tuesday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "wednesday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
        #[serde(default)]
        pub all_day: bool,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        #[serde(default)]
        pub friday: bool,
        #[serde(default)]
        pub monday: bool,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default)]
        pub saturday: bool,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
        #[serde(default)]
        pub sunday: bool,
        #[serde(default)]
        pub thursday: bool,
        #[serde(default)]
        pub tuesday: bool,
        #[serde(default)]
        pub wednesday: bool,
    }
    impl ::std::default::Default
    for NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
        fn default() -> Self {
            Self {
                all_day: Default::default(),
                end_time: Default::default(),
                friday: Default::default(),
                monday: Default::default(),
                position: Default::default(),
                saturday: Default::default(),
                start_time: Default::default(),
                sunday: Default::default(),
                thursday: Default::default(),
                tuesday: Default::default(),
                wednesday: Default::default(),
            }
        }
    }
    impl NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
        pub fn builder() -> builder::NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            Default::default()
        }
    }
    ///Time zone for the deferral window
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone for the deferral window",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesRulesItemTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display for NewEscalationPolicyPathDataAttributesRulesItemTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Time zone used for time restrictions.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone used for time restrictions.",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyPathDataAttributesTimeRestrictionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "end_day",
    ///    "end_time",
    ///    "start_day",
    ///    "start_time"
    ///  ],
    ///  "properties": {
    ///    "end_day": {
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "end_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "start_day": {
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
        pub end_day: NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay,
        ///Formatted as HH:MM
        pub end_time: ::std::string::String,
        pub start_day: NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay,
        ///Formatted as HH:MM
        pub start_time: ::std::string::String,
    }
    impl NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
        pub fn builder() -> builder::NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            Default::default()
        }
    }
    ///`NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewEscalationPolicyPathDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_paths"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewEscalationPolicyPathDataType {
        #[serde(rename = "escalation_paths")]
        EscalationPaths,
    }
    impl ::std::fmt::Display for NewEscalationPolicyPathDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPaths => f.write_str("escalation_paths"),
            }
        }
    }
    impl ::std::str::FromStr for NewEscalationPolicyPathDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_paths" => Ok(Self::EscalationPaths),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewEscalationPolicyPathDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewEscalationPolicyPathDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewEscalationPolicyPathDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "kind",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "auto_set_by_catalog_property_id": {
    ///              "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "default_values": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The default values.",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "The description of the form field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the form field is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "input_kind": {
    ///              "description": "The input kind of the form field",
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "textarea",
    ///                "select",
    ///                "multi_select",
    ///                "date",
    ///                "datetime",
    ///                "number",
    ///                "checkbox",
    ///                "tags",
    ///                "rich_text"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the form field",
    ///              "type": "string",
    ///              "enum": [
    ///                "custom",
    ///                "title",
    ///                "summary",
    ///                "mitigation_message",
    ///                "resolution_message",
    ///                "severity",
    ///                "environments",
    ///                "types",
    ///                "services",
    ///                "causes",
    ///                "functionalities",
    ///                "teams",
    ///                "visibility",
    ///                "mark_as_test",
    ///                "mark_as_backfilled",
    ///                "labels",
    ///                "notify_emails",
    ///                "trigger_manual_workflows",
    ///                "show_ongoing_incidents",
    ///                "attach_alerts",
    ///                "mark_as_in_triage",
    ///                "in_triage_at",
    ///                "started_at",
    ///                "detected_at",
    ///                "acknowledged_at",
    ///                "mitigated_at",
    ///                "resolved_at",
    ///                "closed_at",
    ///                "custom_sub_status",
    ///                "manual_starting_datetime_field"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the form field",
    ///              "type": "string"
    ///            },
    ///            "required": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "show_on_incident_details": {
    ///              "description": "Whether the form field is shown on the incident details panel",
    ///              "type": "boolean"
    ///            },
    ///            "shown": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "value_kind": {
    ///              "description": "The value kind of the form field",
    ///              "type": "string",
    ///              "enum": [
    ///                "inherit",
    ///                "group",
    ///                "service",
    ///                "functionality",
    ///                "user",
    ///                "catalog_entity",
    ///                "environment",
    ///                "cause",
    ///                "incident_type"
    ///              ]
    ///            },
    ///            "value_kind_catalog_id": {
    ///              "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormField {
        pub data: NewFormFieldData,
    }
    impl NewFormField {
        pub fn builder() -> builder::NewFormField {
            Default::default()
        }
    }
    ///`NewFormFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "kind",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "auto_set_by_catalog_property_id": {
    ///          "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "default_values": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The default values.",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "The description of the form field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the form field is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "input_kind": {
    ///          "description": "The input kind of the form field",
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "textarea",
    ///            "select",
    ///            "multi_select",
    ///            "date",
    ///            "datetime",
    ///            "number",
    ///            "checkbox",
    ///            "tags",
    ///            "rich_text"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the form field",
    ///          "type": "string",
    ///          "enum": [
    ///            "custom",
    ///            "title",
    ///            "summary",
    ///            "mitigation_message",
    ///            "resolution_message",
    ///            "severity",
    ///            "environments",
    ///            "types",
    ///            "services",
    ///            "causes",
    ///            "functionalities",
    ///            "teams",
    ///            "visibility",
    ///            "mark_as_test",
    ///            "mark_as_backfilled",
    ///            "labels",
    ///            "notify_emails",
    ///            "trigger_manual_workflows",
    ///            "show_ongoing_incidents",
    ///            "attach_alerts",
    ///            "mark_as_in_triage",
    ///            "in_triage_at",
    ///            "started_at",
    ///            "detected_at",
    ///            "acknowledged_at",
    ///            "mitigated_at",
    ///            "resolved_at",
    ///            "closed_at",
    ///            "custom_sub_status",
    ///            "manual_starting_datetime_field"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the form field",
    ///          "type": "string"
    ///        },
    ///        "required": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "show_on_incident_details": {
    ///          "description": "Whether the form field is shown on the incident details panel",
    ///          "type": "boolean"
    ///        },
    ///        "shown": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "value_kind": {
    ///          "description": "The value kind of the form field",
    ///          "type": "string",
    ///          "enum": [
    ///            "inherit",
    ///            "group",
    ///            "service",
    ///            "functionality",
    ///            "user",
    ///            "catalog_entity",
    ///            "environment",
    ///            "cause",
    ///            "incident_type"
    ///          ]
    ///        },
    ///        "value_kind_catalog_id": {
    ///          "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldData {
        pub attributes: NewFormFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormFieldDataType,
    }
    impl NewFormFieldData {
        pub fn builder() -> builder::NewFormFieldData {
            Default::default()
        }
    }
    ///`NewFormFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "kind",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "auto_set_by_catalog_property_id": {
    ///      "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "default_values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The default values.",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the form field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the form field is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "input_kind": {
    ///      "description": "The input kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "textarea",
    ///        "select",
    ///        "multi_select",
    ///        "date",
    ///        "datetime",
    ///        "number",
    ///        "checkbox",
    ///        "tags",
    ///        "rich_text"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "custom",
    ///        "title",
    ///        "summary",
    ///        "mitigation_message",
    ///        "resolution_message",
    ///        "severity",
    ///        "environments",
    ///        "types",
    ///        "services",
    ///        "causes",
    ///        "functionalities",
    ///        "teams",
    ///        "visibility",
    ///        "mark_as_test",
    ///        "mark_as_backfilled",
    ///        "labels",
    ///        "notify_emails",
    ///        "trigger_manual_workflows",
    ///        "show_ongoing_incidents",
    ///        "attach_alerts",
    ///        "mark_as_in_triage",
    ///        "in_triage_at",
    ///        "started_at",
    ///        "detected_at",
    ///        "acknowledged_at",
    ///        "mitigated_at",
    ///        "resolved_at",
    ///        "closed_at",
    ///        "custom_sub_status",
    ///        "manual_starting_datetime_field"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the form field",
    ///      "type": "string"
    ///    },
    ///    "required": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "show_on_incident_details": {
    ///      "description": "Whether the form field is shown on the incident details panel",
    ///      "type": "boolean"
    ///    },
    ///    "shown": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "value_kind": {
    ///      "description": "The value kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "inherit",
    ///        "group",
    ///        "service",
    ///        "functionality",
    ///        "user",
    ///        "catalog_entity",
    ///        "environment",
    ///        "cause",
    ///        "incident_type"
    ///      ]
    ///    },
    ///    "value_kind_catalog_id": {
    ///      "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewFormFieldDataAttributes {
        ///Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_set_by_catalog_property_id: ::std::option::Option<
            ::std::string::String,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub default_values: ::std::vec::Vec<::std::string::String>,
        ///The description of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the form field is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The input kind of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub input_kind: ::std::option::Option<NewFormFieldDataAttributesInputKind>,
        ///The kind of the form field
        pub kind: NewFormFieldDataAttributesKind,
        ///The name of the form field
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub required: ::std::vec::Vec<::std::string::String>,
        ///Whether the form field is shown on the incident details panel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_on_incident_details: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub shown: ::std::vec::Vec<::std::string::String>,
        ///The value kind of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value_kind: ::std::option::Option<NewFormFieldDataAttributesValueKind>,
        ///The ID of the catalog used when value_kind is `catalog_entity`
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value_kind_catalog_id: ::std::option::Option<::std::string::String>,
    }
    impl NewFormFieldDataAttributes {
        pub fn builder() -> builder::NewFormFieldDataAttributes {
            Default::default()
        }
    }
    ///The input kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The input kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "textarea",
    ///    "select",
    ///    "multi_select",
    ///    "date",
    ///    "datetime",
    ///    "number",
    ///    "checkbox",
    ///    "tags",
    ///    "rich_text"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldDataAttributesInputKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "textarea")]
        Textarea,
        #[serde(rename = "select")]
        Select,
        #[serde(rename = "multi_select")]
        MultiSelect,
        #[serde(rename = "date")]
        Date,
        #[serde(rename = "datetime")]
        Datetime,
        #[serde(rename = "number")]
        Number,
        #[serde(rename = "checkbox")]
        Checkbox,
        #[serde(rename = "tags")]
        Tags,
        #[serde(rename = "rich_text")]
        RichText,
    }
    impl ::std::fmt::Display for NewFormFieldDataAttributesInputKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Textarea => f.write_str("textarea"),
                Self::Select => f.write_str("select"),
                Self::MultiSelect => f.write_str("multi_select"),
                Self::Date => f.write_str("date"),
                Self::Datetime => f.write_str("datetime"),
                Self::Number => f.write_str("number"),
                Self::Checkbox => f.write_str("checkbox"),
                Self::Tags => f.write_str("tags"),
                Self::RichText => f.write_str("rich_text"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldDataAttributesInputKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "textarea" => Ok(Self::Textarea),
                "select" => Ok(Self::Select),
                "multi_select" => Ok(Self::MultiSelect),
                "date" => Ok(Self::Date),
                "datetime" => Ok(Self::Datetime),
                "number" => Ok(Self::Number),
                "checkbox" => Ok(Self::Checkbox),
                "tags" => Ok(Self::Tags),
                "rich_text" => Ok(Self::RichText),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldDataAttributesInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldDataAttributesInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldDataAttributesInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "custom",
    ///    "title",
    ///    "summary",
    ///    "mitigation_message",
    ///    "resolution_message",
    ///    "severity",
    ///    "environments",
    ///    "types",
    ///    "services",
    ///    "causes",
    ///    "functionalities",
    ///    "teams",
    ///    "visibility",
    ///    "mark_as_test",
    ///    "mark_as_backfilled",
    ///    "labels",
    ///    "notify_emails",
    ///    "trigger_manual_workflows",
    ///    "show_ongoing_incidents",
    ///    "attach_alerts",
    ///    "mark_as_in_triage",
    ///    "in_triage_at",
    ///    "started_at",
    ///    "detected_at",
    ///    "acknowledged_at",
    ///    "mitigated_at",
    ///    "resolved_at",
    ///    "closed_at",
    ///    "custom_sub_status",
    ///    "manual_starting_datetime_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldDataAttributesKind {
        #[serde(rename = "custom")]
        Custom,
        #[serde(rename = "title")]
        Title,
        #[serde(rename = "summary")]
        Summary,
        #[serde(rename = "mitigation_message")]
        MitigationMessage,
        #[serde(rename = "resolution_message")]
        ResolutionMessage,
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "types")]
        Types,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "teams")]
        Teams,
        #[serde(rename = "visibility")]
        Visibility,
        #[serde(rename = "mark_as_test")]
        MarkAsTest,
        #[serde(rename = "mark_as_backfilled")]
        MarkAsBackfilled,
        #[serde(rename = "labels")]
        Labels,
        #[serde(rename = "notify_emails")]
        NotifyEmails,
        #[serde(rename = "trigger_manual_workflows")]
        TriggerManualWorkflows,
        #[serde(rename = "show_ongoing_incidents")]
        ShowOngoingIncidents,
        #[serde(rename = "attach_alerts")]
        AttachAlerts,
        #[serde(rename = "mark_as_in_triage")]
        MarkAsInTriage,
        #[serde(rename = "in_triage_at")]
        InTriageAt,
        #[serde(rename = "started_at")]
        StartedAt,
        #[serde(rename = "detected_at")]
        DetectedAt,
        #[serde(rename = "acknowledged_at")]
        AcknowledgedAt,
        #[serde(rename = "mitigated_at")]
        MitigatedAt,
        #[serde(rename = "resolved_at")]
        ResolvedAt,
        #[serde(rename = "closed_at")]
        ClosedAt,
        #[serde(rename = "custom_sub_status")]
        CustomSubStatus,
        #[serde(rename = "manual_starting_datetime_field")]
        ManualStartingDatetimeField,
    }
    impl ::std::fmt::Display for NewFormFieldDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Custom => f.write_str("custom"),
                Self::Title => f.write_str("title"),
                Self::Summary => f.write_str("summary"),
                Self::MitigationMessage => f.write_str("mitigation_message"),
                Self::ResolutionMessage => f.write_str("resolution_message"),
                Self::Severity => f.write_str("severity"),
                Self::Environments => f.write_str("environments"),
                Self::Types => f.write_str("types"),
                Self::Services => f.write_str("services"),
                Self::Causes => f.write_str("causes"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Teams => f.write_str("teams"),
                Self::Visibility => f.write_str("visibility"),
                Self::MarkAsTest => f.write_str("mark_as_test"),
                Self::MarkAsBackfilled => f.write_str("mark_as_backfilled"),
                Self::Labels => f.write_str("labels"),
                Self::NotifyEmails => f.write_str("notify_emails"),
                Self::TriggerManualWorkflows => f.write_str("trigger_manual_workflows"),
                Self::ShowOngoingIncidents => f.write_str("show_ongoing_incidents"),
                Self::AttachAlerts => f.write_str("attach_alerts"),
                Self::MarkAsInTriage => f.write_str("mark_as_in_triage"),
                Self::InTriageAt => f.write_str("in_triage_at"),
                Self::StartedAt => f.write_str("started_at"),
                Self::DetectedAt => f.write_str("detected_at"),
                Self::AcknowledgedAt => f.write_str("acknowledged_at"),
                Self::MitigatedAt => f.write_str("mitigated_at"),
                Self::ResolvedAt => f.write_str("resolved_at"),
                Self::ClosedAt => f.write_str("closed_at"),
                Self::CustomSubStatus => f.write_str("custom_sub_status"),
                Self::ManualStartingDatetimeField => {
                    f.write_str("manual_starting_datetime_field")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom" => Ok(Self::Custom),
                "title" => Ok(Self::Title),
                "summary" => Ok(Self::Summary),
                "mitigation_message" => Ok(Self::MitigationMessage),
                "resolution_message" => Ok(Self::ResolutionMessage),
                "severity" => Ok(Self::Severity),
                "environments" => Ok(Self::Environments),
                "types" => Ok(Self::Types),
                "services" => Ok(Self::Services),
                "causes" => Ok(Self::Causes),
                "functionalities" => Ok(Self::Functionalities),
                "teams" => Ok(Self::Teams),
                "visibility" => Ok(Self::Visibility),
                "mark_as_test" => Ok(Self::MarkAsTest),
                "mark_as_backfilled" => Ok(Self::MarkAsBackfilled),
                "labels" => Ok(Self::Labels),
                "notify_emails" => Ok(Self::NotifyEmails),
                "trigger_manual_workflows" => Ok(Self::TriggerManualWorkflows),
                "show_ongoing_incidents" => Ok(Self::ShowOngoingIncidents),
                "attach_alerts" => Ok(Self::AttachAlerts),
                "mark_as_in_triage" => Ok(Self::MarkAsInTriage),
                "in_triage_at" => Ok(Self::InTriageAt),
                "started_at" => Ok(Self::StartedAt),
                "detected_at" => Ok(Self::DetectedAt),
                "acknowledged_at" => Ok(Self::AcknowledgedAt),
                "mitigated_at" => Ok(Self::MitigatedAt),
                "resolved_at" => Ok(Self::ResolvedAt),
                "closed_at" => Ok(Self::ClosedAt),
                "custom_sub_status" => Ok(Self::CustomSubStatus),
                "manual_starting_datetime_field" => Ok(Self::ManualStartingDatetimeField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The value kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The value kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "inherit",
    ///    "group",
    ///    "service",
    ///    "functionality",
    ///    "user",
    ///    "catalog_entity",
    ///    "environment",
    ///    "cause",
    ///    "incident_type"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldDataAttributesValueKind {
        #[serde(rename = "inherit")]
        Inherit,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
    }
    impl ::std::fmt::Display for NewFormFieldDataAttributesValueKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Inherit => f.write_str("inherit"),
                Self::Group => f.write_str("group"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::User => f.write_str("user"),
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::Environment => f.write_str("environment"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldDataAttributesValueKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "inherit" => Ok(Self::Inherit),
                "group" => Ok(Self::Group),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "user" => Ok(Self::User),
                "catalog_entity" => Ok(Self::CatalogEntity),
                "environment" => Ok(Self::Environment),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldDataAttributesValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldDataAttributesValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldDataAttributesValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldDataType {
        #[serde(rename = "form_fields")]
        FormFields,
    }
    impl ::std::fmt::Display for NewFormFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFields => f.write_str("form_fields"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_fields" => Ok(Self::FormFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewFormFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewFormFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldOption`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "form_field_id",
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the form field option",
    ///              "type": "string"
    ///            },
    ///            "default": {
    ///              "type": "boolean"
    ///            },
    ///            "form_field_id": {
    ///              "description": "The ID of the form field",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the form field option",
    ///              "type": "integer"
    ///            },
    ///            "value": {
    ///              "description": "The value of the form field option",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_options"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldOption {
        pub data: NewFormFieldOptionData,
    }
    impl NewFormFieldOption {
        pub fn builder() -> builder::NewFormFieldOption {
            Default::default()
        }
    }
    ///`NewFormFieldOptionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "form_field_id",
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the form field option",
    ///          "type": "string"
    ///        },
    ///        "default": {
    ///          "type": "boolean"
    ///        },
    ///        "form_field_id": {
    ///          "description": "The ID of the form field",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the form field option",
    ///          "type": "integer"
    ///        },
    ///        "value": {
    ///          "description": "The value of the form field option",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldOptionData {
        pub attributes: NewFormFieldOptionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormFieldOptionDataType,
    }
    impl NewFormFieldOptionData {
        pub fn builder() -> builder::NewFormFieldOptionData {
            Default::default()
        }
    }
    ///`NewFormFieldOptionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the form field option",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "type": "boolean"
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the form field option",
    ///      "type": "integer"
    ///    },
    ///    "value": {
    ///      "description": "The value of the form field option",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewFormFieldOptionDataAttributes {
        ///The hex color of the form field option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The ID of the form field
        pub form_field_id: ::std::string::String,
        ///The position of the form field option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The value of the form field option
        pub value: ::std::string::String,
    }
    impl NewFormFieldOptionDataAttributes {
        pub fn builder() -> builder::NewFormFieldOptionDataAttributes {
            Default::default()
        }
    }
    ///`NewFormFieldOptionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldOptionDataType {
        #[serde(rename = "form_field_options")]
        FormFieldOptions,
    }
    impl ::std::fmt::Display for NewFormFieldOptionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldOptions => f.write_str("form_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldOptionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_options" => Ok(Self::FormFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewFormFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewFormFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldPlacement`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "form",
    ///            "form_set_id"
    ///          ],
    ///          "properties": {
    ///            "form": {
    ///              "description": "The form this field is placed on.",
    ///              "type": "string"
    ///            },
    ///            "form_set_id": {
    ///              "description": "The form set this field is placed in.",
    ///              "type": "string"
    ///            },
    ///            "non_editable": {
    ///              "description": "Whether the field is read-only and cannot be edited by users.",
    ///              "type": "boolean"
    ///            },
    ///            "placement_operator": {
    ///              "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///              "type": "string",
    ///              "enum": [
    ///                "and",
    ///                "or"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "The position of the field placement.",
    ///              "type": "integer"
    ///            },
    ///            "required": {
    ///              "description": "Whether the field is unconditionally required on this form.",
    ///              "type": "boolean"
    ///            },
    ///            "required_operator": {
    ///              "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///              "type": "string",
    ///              "enum": [
    ///                "and",
    ///                "or"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_placements"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPlacement {
        pub data: NewFormFieldPlacementData,
    }
    impl NewFormFieldPlacement {
        pub fn builder() -> builder::NewFormFieldPlacement {
            Default::default()
        }
    }
    ///`NewFormFieldPlacementCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "comparison",
    ///            "conditioned",
    ///            "form_field_id",
    ///            "values"
    ///          ],
    ///          "properties": {
    ///            "comparison": {
    ///              "description": "The condition comparison.",
    ///              "type": "string",
    ///              "enum": [
    ///                "equal",
    ///                "not_equal",
    ///                "is_set",
    ///                "is_not_set"
    ///              ]
    ///            },
    ///            "conditioned": {
    ///              "description": "The resource or attribute the condition applies.",
    ///              "type": "string",
    ///              "enum": [
    ///                "placement",
    ///                "required"
    ///              ]
    ///            },
    ///            "form_field_id": {
    ///              "description": "The condition field.",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The condition position.",
    ///              "type": "integer"
    ///            },
    ///            "values": {
    ///              "description": "The values for comparison.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value for comparison.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_placement_conditions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPlacementCondition {
        pub data: NewFormFieldPlacementConditionData,
    }
    impl NewFormFieldPlacementCondition {
        pub fn builder() -> builder::NewFormFieldPlacementCondition {
            Default::default()
        }
    }
    ///`NewFormFieldPlacementConditionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "comparison",
    ///        "conditioned",
    ///        "form_field_id",
    ///        "values"
    ///      ],
    ///      "properties": {
    ///        "comparison": {
    ///          "description": "The condition comparison.",
    ///          "type": "string",
    ///          "enum": [
    ///            "equal",
    ///            "not_equal",
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "conditioned": {
    ///          "description": "The resource or attribute the condition applies.",
    ///          "type": "string",
    ///          "enum": [
    ///            "placement",
    ///            "required"
    ///          ]
    ///        },
    ///        "form_field_id": {
    ///          "description": "The condition field.",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The condition position.",
    ///          "type": "integer"
    ///        },
    ///        "values": {
    ///          "description": "The values for comparison.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value for comparison.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placement_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPlacementConditionData {
        pub attributes: NewFormFieldPlacementConditionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormFieldPlacementConditionDataType,
    }
    impl NewFormFieldPlacementConditionData {
        pub fn builder() -> builder::NewFormFieldPlacementConditionData {
            Default::default()
        }
    }
    ///`NewFormFieldPlacementConditionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "comparison",
    ///    "conditioned",
    ///    "form_field_id",
    ///    "values"
    ///  ],
    ///  "properties": {
    ///    "comparison": {
    ///      "description": "The condition comparison.",
    ///      "type": "string",
    ///      "enum": [
    ///        "equal",
    ///        "not_equal",
    ///        "is_set",
    ///        "is_not_set"
    ///      ]
    ///    },
    ///    "conditioned": {
    ///      "description": "The resource or attribute the condition applies.",
    ///      "type": "string",
    ///      "enum": [
    ///        "placement",
    ///        "required"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The condition field.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The condition position.",
    ///      "type": "integer"
    ///    },
    ///    "values": {
    ///      "description": "The values for comparison.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value for comparison.",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPlacementConditionDataAttributes {
        ///The condition comparison.
        pub comparison: NewFormFieldPlacementConditionDataAttributesComparison,
        ///The resource or attribute the condition applies.
        pub conditioned: NewFormFieldPlacementConditionDataAttributesConditioned,
        ///The condition field.
        pub form_field_id: ::std::string::String,
        ///The condition position.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The values for comparison.
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl NewFormFieldPlacementConditionDataAttributes {
        pub fn builder() -> builder::NewFormFieldPlacementConditionDataAttributes {
            Default::default()
        }
    }
    ///The condition comparison.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition comparison.",
    ///  "type": "string",
    ///  "enum": [
    ///    "equal",
    ///    "not_equal",
    ///    "is_set",
    ///    "is_not_set"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPlacementConditionDataAttributesComparison {
        #[serde(rename = "equal")]
        Equal,
        #[serde(rename = "not_equal")]
        NotEqual,
        #[serde(rename = "is_set")]
        IsSet,
        #[serde(rename = "is_not_set")]
        IsNotSet,
    }
    impl ::std::fmt::Display for NewFormFieldPlacementConditionDataAttributesComparison {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Equal => f.write_str("equal"),
                Self::NotEqual => f.write_str("not_equal"),
                Self::IsSet => f.write_str("is_set"),
                Self::IsNotSet => f.write_str("is_not_set"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPlacementConditionDataAttributesComparison {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "equal" => Ok(Self::Equal),
                "not_equal" => Ok(Self::NotEqual),
                "is_set" => Ok(Self::IsSet),
                "is_not_set" => Ok(Self::IsNotSet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewFormFieldPlacementConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPlacementConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPlacementConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The resource or attribute the condition applies.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The resource or attribute the condition applies.",
    ///  "type": "string",
    ///  "enum": [
    ///    "placement",
    ///    "required"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPlacementConditionDataAttributesConditioned {
        #[serde(rename = "placement")]
        Placement,
        #[serde(rename = "required")]
        Required,
    }
    impl ::std::fmt::Display
    for NewFormFieldPlacementConditionDataAttributesConditioned {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Placement => f.write_str("placement"),
                Self::Required => f.write_str("required"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewFormFieldPlacementConditionDataAttributesConditioned {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "placement" => Ok(Self::Placement),
                "required" => Ok(Self::Required),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewFormFieldPlacementConditionDataAttributesConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPlacementConditionDataAttributesConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPlacementConditionDataAttributesConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldPlacementConditionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placement_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPlacementConditionDataType {
        #[serde(rename = "form_field_placement_conditions")]
        FormFieldPlacementConditions,
    }
    impl ::std::fmt::Display for NewFormFieldPlacementConditionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacementConditions => {
                    f.write_str("form_field_placement_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPlacementConditionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placement_conditions" => {
                    Ok(Self::FormFieldPlacementConditions)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldPlacementConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPlacementConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPlacementConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldPlacementData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "form",
    ///        "form_set_id"
    ///      ],
    ///      "properties": {
    ///        "form": {
    ///          "description": "The form this field is placed on.",
    ///          "type": "string"
    ///        },
    ///        "form_set_id": {
    ///          "description": "The form set this field is placed in.",
    ///          "type": "string"
    ///        },
    ///        "non_editable": {
    ///          "description": "Whether the field is read-only and cannot be edited by users.",
    ///          "type": "boolean"
    ///        },
    ///        "placement_operator": {
    ///          "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///          "type": "string",
    ///          "enum": [
    ///            "and",
    ///            "or"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "The position of the field placement.",
    ///          "type": "integer"
    ///        },
    ///        "required": {
    ///          "description": "Whether the field is unconditionally required on this form.",
    ///          "type": "boolean"
    ///        },
    ///        "required_operator": {
    ///          "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///          "type": "string",
    ///          "enum": [
    ///            "and",
    ///            "or"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placements"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPlacementData {
        pub attributes: NewFormFieldPlacementDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormFieldPlacementDataType,
    }
    impl NewFormFieldPlacementData {
        pub fn builder() -> builder::NewFormFieldPlacementData {
            Default::default()
        }
    }
    ///`NewFormFieldPlacementDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form",
    ///    "form_set_id"
    ///  ],
    ///  "properties": {
    ///    "form": {
    ///      "description": "The form this field is placed on.",
    ///      "type": "string"
    ///    },
    ///    "form_set_id": {
    ///      "description": "The form set this field is placed in.",
    ///      "type": "string"
    ///    },
    ///    "non_editable": {
    ///      "description": "Whether the field is read-only and cannot be edited by users.",
    ///      "type": "boolean"
    ///    },
    ///    "placement_operator": {
    ///      "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of the field placement.",
    ///      "type": "integer"
    ///    },
    ///    "required": {
    ///      "description": "Whether the field is unconditionally required on this form.",
    ///      "type": "boolean"
    ///    },
    ///    "required_operator": {
    ///      "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPlacementDataAttributes {
        ///The form this field is placed on.
        pub form: ::std::string::String,
        ///The form set this field is placed in.
        pub form_set_id: ::std::string::String,
        ///Whether the field is read-only and cannot be edited by users.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub non_editable: ::std::option::Option<bool>,
        ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub placement_operator: ::std::option::Option<
            NewFormFieldPlacementDataAttributesPlacementOperator,
        >,
        ///The position of the field placement.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether the field is unconditionally required on this form.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required_operator: ::std::option::Option<
            NewFormFieldPlacementDataAttributesRequiredOperator,
        >,
    }
    impl NewFormFieldPlacementDataAttributes {
        pub fn builder() -> builder::NewFormFieldPlacementDataAttributes {
            Default::default()
        }
    }
    ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPlacementDataAttributesPlacementOperator {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display for NewFormFieldPlacementDataAttributesPlacementOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPlacementDataAttributesPlacementOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewFormFieldPlacementDataAttributesPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPlacementDataAttributesPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPlacementDataAttributesPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPlacementDataAttributesRequiredOperator {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display for NewFormFieldPlacementDataAttributesRequiredOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPlacementDataAttributesRequiredOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewFormFieldPlacementDataAttributesRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPlacementDataAttributesRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPlacementDataAttributesRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldPlacementDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placements"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPlacementDataType {
        #[serde(rename = "form_field_placements")]
        FormFieldPlacements,
    }
    impl ::std::fmt::Display for NewFormFieldPlacementDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacements => f.write_str("form_field_placements"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPlacementDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placements" => Ok(Self::FormFieldPlacements),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldPlacementDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPlacementDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPlacementDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldPosition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "form",
    ///            "form_field_id",
    ///            "position"
    ///          ],
    ///          "properties": {
    ///            "form": {
    ///              "description": "The form for the position",
    ///              "type": "string",
    ///              "enum": [
    ///                "web_new_incident_form",
    ///                "web_update_incident_form",
    ///                "web_incident_post_mortem_form",
    ///                "web_incident_mitigation_form",
    ///                "web_incident_resolution_form",
    ///                "web_incident_cancellation_form",
    ///                "web_scheduled_incident_form",
    ///                "web_update_scheduled_incident_form",
    ///                "incident_post_mortem",
    ///                "slack_new_incident_form",
    ///                "slack_update_incident_form",
    ///                "slack_update_incident_status_form",
    ///                "slack_incident_mitigation_form",
    ///                "slack_incident_resolution_form",
    ///                "slack_incident_cancellation_form",
    ///                "slack_scheduled_incident_form",
    ///                "slack_update_scheduled_incident_form"
    ///              ]
    ///            },
    ///            "form_field_id": {
    ///              "description": "The ID of the form field.",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the form_field_position",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_positions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPosition {
        pub data: NewFormFieldPositionData,
    }
    impl NewFormFieldPosition {
        pub fn builder() -> builder::NewFormFieldPosition {
            Default::default()
        }
    }
    ///`NewFormFieldPositionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "form",
    ///        "form_field_id",
    ///        "position"
    ///      ],
    ///      "properties": {
    ///        "form": {
    ///          "description": "The form for the position",
    ///          "type": "string",
    ///          "enum": [
    ///            "web_new_incident_form",
    ///            "web_update_incident_form",
    ///            "web_incident_post_mortem_form",
    ///            "web_incident_mitigation_form",
    ///            "web_incident_resolution_form",
    ///            "web_incident_cancellation_form",
    ///            "web_scheduled_incident_form",
    ///            "web_update_scheduled_incident_form",
    ///            "incident_post_mortem",
    ///            "slack_new_incident_form",
    ///            "slack_update_incident_form",
    ///            "slack_update_incident_status_form",
    ///            "slack_incident_mitigation_form",
    ///            "slack_incident_resolution_form",
    ///            "slack_incident_cancellation_form",
    ///            "slack_scheduled_incident_form",
    ///            "slack_update_scheduled_incident_form"
    ///          ]
    ///        },
    ///        "form_field_id": {
    ///          "description": "The ID of the form field.",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the form_field_position",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_positions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormFieldPositionData {
        pub attributes: NewFormFieldPositionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormFieldPositionDataType,
    }
    impl NewFormFieldPositionData {
        pub fn builder() -> builder::NewFormFieldPositionData {
            Default::default()
        }
    }
    ///`NewFormFieldPositionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form",
    ///    "form_field_id",
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "form": {
    ///      "description": "The form for the position",
    ///      "type": "string",
    ///      "enum": [
    ///        "web_new_incident_form",
    ///        "web_update_incident_form",
    ///        "web_incident_post_mortem_form",
    ///        "web_incident_mitigation_form",
    ///        "web_incident_resolution_form",
    ///        "web_incident_cancellation_form",
    ///        "web_scheduled_incident_form",
    ///        "web_update_scheduled_incident_form",
    ///        "incident_post_mortem",
    ///        "slack_new_incident_form",
    ///        "slack_update_incident_form",
    ///        "slack_update_incident_status_form",
    ///        "slack_incident_mitigation_form",
    ///        "slack_incident_resolution_form",
    ///        "slack_incident_cancellation_form",
    ///        "slack_scheduled_incident_form",
    ///        "slack_update_scheduled_incident_form"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the form_field_position",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewFormFieldPositionDataAttributes {
        ///The form for the position
        pub form: NewFormFieldPositionDataAttributesForm,
        ///The ID of the form field.
        pub form_field_id: ::std::string::String,
        ///The position of the form_field_position
        pub position: i64,
    }
    impl NewFormFieldPositionDataAttributes {
        pub fn builder() -> builder::NewFormFieldPositionDataAttributes {
            Default::default()
        }
    }
    ///The form for the position
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The form for the position",
    ///  "type": "string",
    ///  "enum": [
    ///    "web_new_incident_form",
    ///    "web_update_incident_form",
    ///    "web_incident_post_mortem_form",
    ///    "web_incident_mitigation_form",
    ///    "web_incident_resolution_form",
    ///    "web_incident_cancellation_form",
    ///    "web_scheduled_incident_form",
    ///    "web_update_scheduled_incident_form",
    ///    "incident_post_mortem",
    ///    "slack_new_incident_form",
    ///    "slack_update_incident_form",
    ///    "slack_update_incident_status_form",
    ///    "slack_incident_mitigation_form",
    ///    "slack_incident_resolution_form",
    ///    "slack_incident_cancellation_form",
    ///    "slack_scheduled_incident_form",
    ///    "slack_update_scheduled_incident_form"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPositionDataAttributesForm {
        #[serde(rename = "web_new_incident_form")]
        WebNewIncidentForm,
        #[serde(rename = "web_update_incident_form")]
        WebUpdateIncidentForm,
        #[serde(rename = "web_incident_post_mortem_form")]
        WebIncidentPostMortemForm,
        #[serde(rename = "web_incident_mitigation_form")]
        WebIncidentMitigationForm,
        #[serde(rename = "web_incident_resolution_form")]
        WebIncidentResolutionForm,
        #[serde(rename = "web_incident_cancellation_form")]
        WebIncidentCancellationForm,
        #[serde(rename = "web_scheduled_incident_form")]
        WebScheduledIncidentForm,
        #[serde(rename = "web_update_scheduled_incident_form")]
        WebUpdateScheduledIncidentForm,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
        #[serde(rename = "slack_new_incident_form")]
        SlackNewIncidentForm,
        #[serde(rename = "slack_update_incident_form")]
        SlackUpdateIncidentForm,
        #[serde(rename = "slack_update_incident_status_form")]
        SlackUpdateIncidentStatusForm,
        #[serde(rename = "slack_incident_mitigation_form")]
        SlackIncidentMitigationForm,
        #[serde(rename = "slack_incident_resolution_form")]
        SlackIncidentResolutionForm,
        #[serde(rename = "slack_incident_cancellation_form")]
        SlackIncidentCancellationForm,
        #[serde(rename = "slack_scheduled_incident_form")]
        SlackScheduledIncidentForm,
        #[serde(rename = "slack_update_scheduled_incident_form")]
        SlackUpdateScheduledIncidentForm,
    }
    impl ::std::fmt::Display for NewFormFieldPositionDataAttributesForm {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebNewIncidentForm => f.write_str("web_new_incident_form"),
                Self::WebUpdateIncidentForm => f.write_str("web_update_incident_form"),
                Self::WebIncidentPostMortemForm => {
                    f.write_str("web_incident_post_mortem_form")
                }
                Self::WebIncidentMitigationForm => {
                    f.write_str("web_incident_mitigation_form")
                }
                Self::WebIncidentResolutionForm => {
                    f.write_str("web_incident_resolution_form")
                }
                Self::WebIncidentCancellationForm => {
                    f.write_str("web_incident_cancellation_form")
                }
                Self::WebScheduledIncidentForm => {
                    f.write_str("web_scheduled_incident_form")
                }
                Self::WebUpdateScheduledIncidentForm => {
                    f.write_str("web_update_scheduled_incident_form")
                }
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
                Self::SlackNewIncidentForm => f.write_str("slack_new_incident_form"),
                Self::SlackUpdateIncidentForm => {
                    f.write_str("slack_update_incident_form")
                }
                Self::SlackUpdateIncidentStatusForm => {
                    f.write_str("slack_update_incident_status_form")
                }
                Self::SlackIncidentMitigationForm => {
                    f.write_str("slack_incident_mitigation_form")
                }
                Self::SlackIncidentResolutionForm => {
                    f.write_str("slack_incident_resolution_form")
                }
                Self::SlackIncidentCancellationForm => {
                    f.write_str("slack_incident_cancellation_form")
                }
                Self::SlackScheduledIncidentForm => {
                    f.write_str("slack_scheduled_incident_form")
                }
                Self::SlackUpdateScheduledIncidentForm => {
                    f.write_str("slack_update_scheduled_incident_form")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPositionDataAttributesForm {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "web_new_incident_form" => Ok(Self::WebNewIncidentForm),
                "web_update_incident_form" => Ok(Self::WebUpdateIncidentForm),
                "web_incident_post_mortem_form" => Ok(Self::WebIncidentPostMortemForm),
                "web_incident_mitigation_form" => Ok(Self::WebIncidentMitigationForm),
                "web_incident_resolution_form" => Ok(Self::WebIncidentResolutionForm),
                "web_incident_cancellation_form" => Ok(Self::WebIncidentCancellationForm),
                "web_scheduled_incident_form" => Ok(Self::WebScheduledIncidentForm),
                "web_update_scheduled_incident_form" => {
                    Ok(Self::WebUpdateScheduledIncidentForm)
                }
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                "slack_new_incident_form" => Ok(Self::SlackNewIncidentForm),
                "slack_update_incident_form" => Ok(Self::SlackUpdateIncidentForm),
                "slack_update_incident_status_form" => {
                    Ok(Self::SlackUpdateIncidentStatusForm)
                }
                "slack_incident_mitigation_form" => Ok(Self::SlackIncidentMitigationForm),
                "slack_incident_resolution_form" => Ok(Self::SlackIncidentResolutionForm),
                "slack_incident_cancellation_form" => {
                    Ok(Self::SlackIncidentCancellationForm)
                }
                "slack_scheduled_incident_form" => Ok(Self::SlackScheduledIncidentForm),
                "slack_update_scheduled_incident_form" => {
                    Ok(Self::SlackUpdateScheduledIncidentForm)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldPositionDataAttributesForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPositionDataAttributesForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPositionDataAttributesForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormFieldPositionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_positions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormFieldPositionDataType {
        #[serde(rename = "form_field_positions")]
        FormFieldPositions,
    }
    impl ::std::fmt::Display for NewFormFieldPositionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPositions => f.write_str("form_field_positions"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormFieldPositionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_positions" => Ok(Self::FormFieldPositions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormFieldPositionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormFieldPositionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormFieldPositionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormSet`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "forms",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "forms": {
    ///              "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the form set",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_sets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormSet {
        pub data: NewFormSetData,
    }
    impl NewFormSet {
        pub fn builder() -> builder::NewFormSet {
            Default::default()
        }
    }
    ///`NewFormSetCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "comparison",
    ///            "form_field_id",
    ///            "values"
    ///          ],
    ///          "properties": {
    ///            "comparison": {
    ///              "description": "The condition comparison.",
    ///              "type": "string",
    ///              "enum": [
    ///                "equal"
    ///              ]
    ///            },
    ///            "form_field_id": {
    ///              "description": "The form field this condition applies.",
    ///              "type": "string"
    ///            },
    ///            "values": {
    ///              "description": "The values for comparison.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value for comparison.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_set_conditions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormSetCondition {
        pub data: NewFormSetConditionData,
    }
    impl NewFormSetCondition {
        pub fn builder() -> builder::NewFormSetCondition {
            Default::default()
        }
    }
    ///`NewFormSetConditionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "comparison",
    ///        "form_field_id",
    ///        "values"
    ///      ],
    ///      "properties": {
    ///        "comparison": {
    ///          "description": "The condition comparison.",
    ///          "type": "string",
    ///          "enum": [
    ///            "equal"
    ///          ]
    ///        },
    ///        "form_field_id": {
    ///          "description": "The form field this condition applies.",
    ///          "type": "string"
    ///        },
    ///        "values": {
    ///          "description": "The values for comparison.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value for comparison.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_set_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormSetConditionData {
        pub attributes: NewFormSetConditionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormSetConditionDataType,
    }
    impl NewFormSetConditionData {
        pub fn builder() -> builder::NewFormSetConditionData {
            Default::default()
        }
    }
    ///`NewFormSetConditionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "comparison",
    ///    "form_field_id",
    ///    "values"
    ///  ],
    ///  "properties": {
    ///    "comparison": {
    ///      "description": "The condition comparison.",
    ///      "type": "string",
    ///      "enum": [
    ///        "equal"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The form field this condition applies.",
    ///      "type": "string"
    ///    },
    ///    "values": {
    ///      "description": "The values for comparison.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value for comparison.",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormSetConditionDataAttributes {
        ///The condition comparison.
        pub comparison: NewFormSetConditionDataAttributesComparison,
        ///The form field this condition applies.
        pub form_field_id: ::std::string::String,
        ///The values for comparison.
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl NewFormSetConditionDataAttributes {
        pub fn builder() -> builder::NewFormSetConditionDataAttributes {
            Default::default()
        }
    }
    ///The condition comparison.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition comparison.",
    ///  "type": "string",
    ///  "enum": [
    ///    "equal"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormSetConditionDataAttributesComparison {
        #[serde(rename = "equal")]
        Equal,
    }
    impl ::std::fmt::Display for NewFormSetConditionDataAttributesComparison {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Equal => f.write_str("equal"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormSetConditionDataAttributesComparison {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "equal" => Ok(Self::Equal),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormSetConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormSetConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewFormSetConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormSetConditionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_set_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormSetConditionDataType {
        #[serde(rename = "form_set_conditions")]
        FormSetConditions,
    }
    impl ::std::fmt::Display for NewFormSetConditionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSetConditions => f.write_str("form_set_conditions"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormSetConditionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_set_conditions" => Ok(Self::FormSetConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormSetConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewFormSetConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewFormSetConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFormSetData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "forms",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "forms": {
    ///          "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the form set",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFormSetData {
        pub attributes: NewFormSetDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFormSetDataType,
    }
    impl NewFormSetData {
        pub fn builder() -> builder::NewFormSetData {
            Default::default()
        }
    }
    ///`NewFormSetDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "forms",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "forms": {
    ///      "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the form set",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewFormSetDataAttributes {
        ///The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`
        pub forms: ::std::vec::Vec<::std::string::String>,
        ///The name of the form set
        pub name: ::std::string::String,
    }
    impl NewFormSetDataAttributes {
        pub fn builder() -> builder::NewFormSetDataAttributes {
            Default::default()
        }
    }
    ///`NewFormSetDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFormSetDataType {
        #[serde(rename = "form_sets")]
        FormSets,
    }
    impl ::std::fmt::Display for NewFormSetDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSets => f.write_str("form_sets"),
            }
        }
    }
    impl ::std::str::FromStr for NewFormSetDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_sets" => Ok(Self::FormSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFormSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewFormSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewFormSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "backstage_id": {
    ///              "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cortex_id": {
    ///              "description": "The Cortex group id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "environment_ids": {
    ///              "description": "Environments associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "escalation_policy_id": {
    ///              "description": "The escalation policy id of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_id": {
    ///              "description": "The external id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the functionality",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "opsgenie_id": {
    ///              "description": "The Opsgenie service id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "opsgenie_team_id": {
    ///              "description": "The Opsgenie team id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "Owner Teams associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "owner_user_ids": {
    ///              "description": "Owner Users associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "pagerduty_id": {
    ///              "description": "The PagerDuty service id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the functionality",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this functionality.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "public_description": {
    ///              "description": "The public description of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "Services associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_now_ci_sys_id": {
    ///              "description": "The Service Now CI sys id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_uptime": {
    ///              "description": "Show uptime",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_uptime_last_days": {
    ///              "description": "Show uptime over x days",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                30,
    ///                60,
    ///                90
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "functionalities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFunctionality {
        pub data: NewFunctionalityData,
    }
    impl NewFunctionality {
        pub fn builder() -> builder::NewFunctionality {
            Default::default()
        }
    }
    ///`NewFunctionalityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "backstage_id": {
    ///          "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cortex_id": {
    ///          "description": "The Cortex group id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "environment_ids": {
    ///          "description": "Environments associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "escalation_policy_id": {
    ///          "description": "The escalation policy id of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_id": {
    ///          "description": "The external id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the functionality",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "opsgenie_id": {
    ///          "description": "The Opsgenie service id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "opsgenie_team_id": {
    ///          "description": "The Opsgenie team id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "Owner Teams associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "owner_user_ids": {
    ///          "description": "Owner Users associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "pagerduty_id": {
    ///          "description": "The PagerDuty service id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the functionality",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this functionality.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "public_description": {
    ///          "description": "The public description of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Services associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_now_ci_sys_id": {
    ///          "description": "The Service Now CI sys id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_uptime": {
    ///          "description": "Show uptime",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_uptime_last_days": {
    ///          "description": "Show uptime over x days",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            30,
    ///            60,
    ///            90
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFunctionalityData {
        pub attributes: NewFunctionalityDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewFunctionalityDataType,
    }
    impl NewFunctionalityData {
        pub fn builder() -> builder::NewFunctionalityData {
            Default::default()
        }
    }
    ///`NewFunctionalityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "Environments associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The escalation policy id of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the functionality",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie service id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_team_id": {
    ///      "description": "The Opsgenie team id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owner Teams associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_ids": {
    ///      "description": "Owner Users associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty service id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the functionality",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this functionality.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Services associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime": {
    ///      "description": "Show uptime",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime_last_days": {
    ///      "description": "Show uptime over x days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        30,
    ///        60,
    ///        90
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewFunctionalityDataAttributes {
        ///The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///The description of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Environments associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The escalation policy id of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The external id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///The name of the functionality
        pub name: ::std::string::String,
        ///Emails to attach to the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie service id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The Opsgenie team id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_team_id: ::std::option::Option<::std::string::String>,
        ///Owner Teams associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Owner Users associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The PagerDuty service id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///Position of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this functionality.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewFunctionalityDataAttributesPropertiesItem>,
        ///The public description of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///Services associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Service Now CI sys id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Show uptime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime: ::std::option::Option<bool>,
        ///Show uptime over x days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime_last_days: ::std::option::Option<
            NewFunctionalityDataAttributesShowUptimeLastDays,
        >,
        ///Slack Aliases associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<NewFunctionalityDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<NewFunctionalityDataAttributesSlackChannelsItem>,
        >,
    }
    impl NewFunctionalityDataAttributes {
        pub fn builder() -> builder::NewFunctionalityDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFunctionalityDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl NewFunctionalityDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewFunctionalityDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///Show uptime over x days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Show uptime over x days",
    ///  "type": "integer",
    ///  "enum": [
    ///    30,
    ///    60,
    ///    90
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewFunctionalityDataAttributesShowUptimeLastDays(i64);
    impl ::std::ops::Deref for NewFunctionalityDataAttributesShowUptimeLastDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewFunctionalityDataAttributesShowUptimeLastDays> for i64 {
        fn from(value: NewFunctionalityDataAttributesShowUptimeLastDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64>
    for NewFunctionalityDataAttributesShowUptimeLastDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![30_i64, 60_i64, 90_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for NewFunctionalityDataAttributesShowUptimeLastDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`NewFunctionalityDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFunctionalityDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl NewFunctionalityDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::NewFunctionalityDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`NewFunctionalityDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewFunctionalityDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl NewFunctionalityDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::NewFunctionalityDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`NewFunctionalityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewFunctionalityDataType {
        #[serde(rename = "functionalities")]
        Functionalities,
    }
    impl ::std::fmt::Display for NewFunctionalityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Functionalities => f.write_str("functionalities"),
            }
        }
    }
    impl ::std::str::FromStr for NewFunctionalityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "functionalities" => Ok(Self::Functionalities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewHeartbeat`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "alert_summary",
    ///            "interval",
    ///            "interval_unit",
    ///            "name",
    ///            "notification_target_id",
    ///            "notification_target_type"
    ///          ],
    ///          "properties": {
    ///            "alert_description": {
    ///              "description": "Description of alerts triggered when heartbeat expires.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_summary": {
    ///              "description": "Summary of alerts triggered when heartbeat expires.",
    ///              "type": "string"
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "Urgency of alerts triggered when heartbeat expires.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the heartbeat",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether to trigger alerts when heartbeat is expired.",
    ///              "type": "boolean"
    ///            },
    ///            "interval": {
    ///              "type": "integer"
    ///            },
    ///            "interval_unit": {
    ///              "type": "string",
    ///              "enum": [
    ///                "minutes",
    ///                "hours",
    ///                "days"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the heartbeat",
    ///              "type": "string"
    ///            },
    ///            "notification_target_id": {
    ///              "type": "string"
    ///            },
    ///            "notification_target_type": {
    ///              "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///              "type": "string",
    ///              "enum": [
    ///                "User",
    ///                "Group",
    ///                "Service",
    ///                "EscalationPolicy",
    ///                "Functionality"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "heartbeats"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewHeartbeat {
        pub data: NewHeartbeatData,
    }
    impl NewHeartbeat {
        pub fn builder() -> builder::NewHeartbeat {
            Default::default()
        }
    }
    ///`NewHeartbeatData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "alert_summary",
    ///        "interval",
    ///        "interval_unit",
    ///        "name",
    ///        "notification_target_id",
    ///        "notification_target_type"
    ///      ],
    ///      "properties": {
    ///        "alert_description": {
    ///          "description": "Description of alerts triggered when heartbeat expires.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_summary": {
    ///          "description": "Summary of alerts triggered when heartbeat expires.",
    ///          "type": "string"
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "Urgency of alerts triggered when heartbeat expires.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the heartbeat",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether to trigger alerts when heartbeat is expired.",
    ///          "type": "boolean"
    ///        },
    ///        "interval": {
    ///          "type": "integer"
    ///        },
    ///        "interval_unit": {
    ///          "type": "string",
    ///          "enum": [
    ///            "minutes",
    ///            "hours",
    ///            "days"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the heartbeat",
    ///          "type": "string"
    ///        },
    ///        "notification_target_id": {
    ///          "type": "string"
    ///        },
    ///        "notification_target_type": {
    ///          "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "User",
    ///            "Group",
    ///            "Service",
    ///            "EscalationPolicy",
    ///            "Functionality"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "heartbeats"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewHeartbeatData {
        pub attributes: NewHeartbeatDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewHeartbeatDataType,
    }
    impl NewHeartbeatData {
        pub fn builder() -> builder::NewHeartbeatData {
            Default::default()
        }
    }
    ///`NewHeartbeatDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_summary",
    ///    "interval",
    ///    "interval_unit",
    ///    "name",
    ///    "notification_target_id",
    ///    "notification_target_type"
    ///  ],
    ///  "properties": {
    ///    "alert_description": {
    ///      "description": "Description of alerts triggered when heartbeat expires.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_summary": {
    ///      "description": "Summary of alerts triggered when heartbeat expires.",
    ///      "type": "string"
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "Urgency of alerts triggered when heartbeat expires.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the heartbeat",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether to trigger alerts when heartbeat is expired.",
    ///      "type": "boolean"
    ///    },
    ///    "interval": {
    ///      "type": "integer"
    ///    },
    ///    "interval_unit": {
    ///      "type": "string",
    ///      "enum": [
    ///        "minutes",
    ///        "hours",
    ///        "days"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the heartbeat",
    ///      "type": "string"
    ///    },
    ///    "notification_target_id": {
    ///      "type": "string"
    ///    },
    ///    "notification_target_type": {
    ///      "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Group",
    ///        "Service",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewHeartbeatDataAttributes {
        ///Description of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_description: ::std::option::Option<::std::string::String>,
        ///Summary of alerts triggered when heartbeat expires.
        pub alert_summary: ::std::string::String,
        ///Urgency of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The description of the heartbeat
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether to trigger alerts when heartbeat is expired.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        pub interval: i64,
        pub interval_unit: NewHeartbeatDataAttributesIntervalUnit,
        ///The name of the heartbeat
        pub name: ::std::string::String,
        pub notification_target_id: ::std::string::String,
        ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub notification_target_type: NewHeartbeatDataAttributesNotificationTargetType,
    }
    impl NewHeartbeatDataAttributes {
        pub fn builder() -> builder::NewHeartbeatDataAttributes {
            Default::default()
        }
    }
    ///`NewHeartbeatDataAttributesIntervalUnit`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "minutes",
    ///    "hours",
    ///    "days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewHeartbeatDataAttributesIntervalUnit {
        #[serde(rename = "minutes")]
        Minutes,
        #[serde(rename = "hours")]
        Hours,
        #[serde(rename = "days")]
        Days,
    }
    impl ::std::fmt::Display for NewHeartbeatDataAttributesIntervalUnit {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Minutes => f.write_str("minutes"),
                Self::Hours => f.write_str("hours"),
                Self::Days => f.write_str("days"),
            }
        }
    }
    impl ::std::str::FromStr for NewHeartbeatDataAttributesIntervalUnit {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "minutes" => Ok(Self::Minutes),
                "hours" => Ok(Self::Hours),
                "days" => Ok(Self::Days),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewHeartbeatDataAttributesIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewHeartbeatDataAttributesIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewHeartbeatDataAttributesIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Group",
    ///    "Service",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewHeartbeatDataAttributesNotificationTargetType {
        User,
        Group,
        Service,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for NewHeartbeatDataAttributesNotificationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Group => f.write_str("Group"),
                Self::Service => f.write_str("Service"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for NewHeartbeatDataAttributesNotificationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Group" => Ok(Self::Group),
                "Service" => Ok(Self::Service),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewHeartbeatDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewHeartbeatDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewHeartbeatDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewHeartbeatDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "heartbeats"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewHeartbeatDataType {
        #[serde(rename = "heartbeats")]
        Heartbeats,
    }
    impl ::std::fmt::Display for NewHeartbeatDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Heartbeats => f.write_str("heartbeats"),
            }
        }
    }
    impl ::std::str::FromStr for NewHeartbeatDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "heartbeats" => Ok(Self::Heartbeats),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewHeartbeatDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewHeartbeatDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewHeartbeatDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "acknowledged_at": {
    ///              "description": "Date of acknowledgment",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_ids": {
    ///              "description": "The Alert IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "cancelled_at": {
    ///              "description": "Date of cancellation",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cause_ids": {
    ///              "description": "The Cause IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "closed_at": {
    ///              "description": "Date of closure",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "detected_at": {
    ///              "description": "Date of detection",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "duplicate_incident_id": {
    ///              "description": "ID of duplicated incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "functionality_ids": {
    ///              "description": "The Functionality IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "google_drive_parent_id": {
    ///              "description": "Google Drive parent folder ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "google_drive_url": {
    ///              "description": "Google Drive URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "group_ids": {
    ///              "description": "The Team IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "in_triage_at": {
    ///              "description": "Date of triage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_type_ids": {
    ///              "description": "The Incident Type IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "jira_issue_id": {
    ///              "description": "Jira issue ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_key": {
    ///              "description": "Jira issue key",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_url": {
    ///              "description": "Jira issue URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "test",
    ///                "test_sub",
    ///                "example",
    ///                "example_sub",
    ///                "normal",
    ///                "normal_sub",
    ///                "backfilled",
    ///                "scheduled",
    ///                "scheduled_sub"
    ///              ]
    ///            },
    ///            "labels": {
    ///              "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            },
    ///            "mitigated_at": {
    ///              "description": "Date of mitigation",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "muted_service_ids": {
    ///              "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails you want to notify",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "parent_incident_id": {
    ///              "description": "ID of parent incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "private": {
    ///              "description": "Create an incident as private. Once an incident is made as private it cannot be undone",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "public_title": {
    ///              "description": "The public title of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "resolved_at": {
    ///              "description": "Date of resolution",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "scheduled_for": {
    ///              "description": "Date of when the maintenance begins",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "scheduled_until": {
    ///              "description": "Date of when the maintenance ends",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_id": {
    ///              "description": "The Severity ID to attach to the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_archived": {
    ///              "description": "Whether the Slack channel is archived",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_id": {
    ///              "description": "Slack channel id",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_name": {
    ///              "description": "Slack channel name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_url": {
    ///              "description": "Slack channel url",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "started_at": {
    ///              "description": "Date of start",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "status": {
    ///              "description": "The status of the incident",
    ///              "type": "string",
    ///              "enum": [
    ///                "in_triage",
    ///                "started",
    ///                "detected",
    ///                "acknowledged",
    ///                "mitigated",
    ///                "resolved",
    ///                "closed",
    ///                "cancelled",
    ///                "scheduled",
    ///                "in_progress",
    ///                "completed"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the incident. We will autogenerate one if null",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "url": {
    ///              "description": "The url to the incident",
    ///              "type": "string"
    ///            },
    ///            "user_id": {
    ///              "description": "User ID of the creator of the incident. Default to the user attached to the Api Key",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncident {
        pub data: NewIncidentData,
    }
    impl NewIncident {
        pub fn builder() -> builder::NewIncident {
            Default::default()
        }
    }
    ///`NewIncidentActionItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "summary"
    ///          ],
    ///          "properties": {
    ///            "assigned_to_group_ids": {
    ///              "description": "IDs of groups you wish to assign this action item",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "assigned_to_user_id": {
    ///              "description": "ID of user you wish to assign this action item",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the action item",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "due_date": {
    ///              "description": "The due date of the action item",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "form_field_selections": {
    ///              "description": "Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "form_field_id"
    ///                ],
    ///                "properties": {
    ///                  "_destroy": {
    ///                    "description": "Set to true to remove the field's value from the action item",
    ///                    "type": [
    ///                      "boolean",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "form_field_id": {
    ///                    "description": "ID of the custom field",
    ///                    "type": "string"
    ///                  },
    ///                  "id": {
    ///                    "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///                    "type": "string"
    ///                  },
    ///                  "selected_catalog_entity_ids": {
    ///                    "description": "IDs of the selected catalog entities",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_cause_ids": {
    ///                    "description": "IDs of the selected causes",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_environment_ids": {
    ///                    "description": "IDs of the selected environments",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_functionality_ids": {
    ///                    "description": "IDs of the selected functionalities",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_group_ids": {
    ///                    "description": "IDs of the selected teams",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_incident_type_ids": {
    ///                    "description": "IDs of the selected incident types",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_option_ids": {
    ///                    "description": "IDs of the selected custom field options",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_service_ids": {
    ///                    "description": "IDs of the selected services",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_user_ids": {
    ///                    "description": "IDs of the selected users",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "integer"
    ///                    }
    ///                  },
    ///                  "value": {
    ///                    "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///                    "oneOf": [
    ///                      {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      {
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    ]
    ///                  }
    ///                },
    ///                "additionalProperties": false
    ///              }
    ///            },
    ///            "jira_issue_id": {
    ///              "description": "The Jira issue ID.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_key": {
    ///              "description": "The Jira issue key.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_url": {
    ///              "description": "The Jira issue URL.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "task",
    ///                "follow_up"
    ///              ]
    ///            },
    ///            "priority": {
    ///              "description": "The priority of the action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "high",
    ///                "medium",
    ///                "low"
    ///              ]
    ///            },
    ///            "status": {
    ///              "description": "The status of the action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "open",
    ///                "in_progress",
    ///                "cancelled",
    ///                "done"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the action item",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_action_items"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentActionItem {
        pub data: NewIncidentActionItemData,
    }
    impl NewIncidentActionItem {
        pub fn builder() -> builder::NewIncidentActionItem {
            Default::default()
        }
    }
    ///`NewIncidentActionItemData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "summary"
    ///      ],
    ///      "properties": {
    ///        "assigned_to_group_ids": {
    ///          "description": "IDs of groups you wish to assign this action item",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "assigned_to_user_id": {
    ///          "description": "ID of user you wish to assign this action item",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the action item",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "due_date": {
    ///          "description": "The due date of the action item",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "form_field_selections": {
    ///          "description": "Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "form_field_id"
    ///            ],
    ///            "properties": {
    ///              "_destroy": {
    ///                "description": "Set to true to remove the field's value from the action item",
    ///                "type": [
    ///                  "boolean",
    ///                  "null"
    ///                ]
    ///              },
    ///              "form_field_id": {
    ///                "description": "ID of the custom field",
    ///                "type": "string"
    ///              },
    ///              "id": {
    ///                "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///                "type": "string"
    ///              },
    ///              "selected_catalog_entity_ids": {
    ///                "description": "IDs of the selected catalog entities",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_cause_ids": {
    ///                "description": "IDs of the selected causes",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_environment_ids": {
    ///                "description": "IDs of the selected environments",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_functionality_ids": {
    ///                "description": "IDs of the selected functionalities",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_group_ids": {
    ///                "description": "IDs of the selected teams",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_incident_type_ids": {
    ///                "description": "IDs of the selected incident types",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_option_ids": {
    ///                "description": "IDs of the selected custom field options",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_service_ids": {
    ///                "description": "IDs of the selected services",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_user_ids": {
    ///                "description": "IDs of the selected users",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "integer"
    ///                }
    ///              },
    ///              "value": {
    ///                "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///                "oneOf": [
    ///                  {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                ]
    ///              }
    ///            },
    ///            "additionalProperties": false
    ///          }
    ///        },
    ///        "jira_issue_id": {
    ///          "description": "The Jira issue ID.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_key": {
    ///          "description": "The Jira issue key.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_url": {
    ///          "description": "The Jira issue URL.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "task",
    ///            "follow_up"
    ///          ]
    ///        },
    ///        "priority": {
    ///          "description": "The priority of the action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "high",
    ///            "medium",
    ///            "low"
    ///          ]
    ///        },
    ///        "status": {
    ///          "description": "The status of the action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "open",
    ///            "in_progress",
    ///            "cancelled",
    ///            "done"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the action item",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_action_items"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentActionItemData {
        pub attributes: NewIncidentActionItemDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentActionItemDataType,
    }
    impl NewIncidentActionItemData {
        pub fn builder() -> builder::NewIncidentActionItemData {
            Default::default()
        }
    }
    ///`NewIncidentActionItemDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "summary"
    ///  ],
    ///  "properties": {
    ///    "assigned_to_group_ids": {
    ///      "description": "IDs of groups you wish to assign this action item",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "assigned_to_user_id": {
    ///      "description": "ID of user you wish to assign this action item",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the action item",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_date": {
    ///      "description": "The due date of the action item",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "form_field_selections": {
    ///      "description": "Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "form_field_id"
    ///        ],
    ///        "properties": {
    ///          "_destroy": {
    ///            "description": "Set to true to remove the field's value from the action item",
    ///            "type": [
    ///              "boolean",
    ///              "null"
    ///            ]
    ///          },
    ///          "form_field_id": {
    ///            "description": "ID of the custom field",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///            "type": "string"
    ///          },
    ///          "selected_catalog_entity_ids": {
    ///            "description": "IDs of the selected catalog entities",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_cause_ids": {
    ///            "description": "IDs of the selected causes",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_environment_ids": {
    ///            "description": "IDs of the selected environments",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_functionality_ids": {
    ///            "description": "IDs of the selected functionalities",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_group_ids": {
    ///            "description": "IDs of the selected teams",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_incident_type_ids": {
    ///            "description": "IDs of the selected incident types",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_option_ids": {
    ///            "description": "IDs of the selected custom field options",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_service_ids": {
    ///            "description": "IDs of the selected services",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_user_ids": {
    ///            "description": "IDs of the selected users",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "value": {
    ///            "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///            "oneOf": [
    ///              {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            ]
    ///          }
    ///        },
    ///        "additionalProperties": false
    ///      }
    ///    },
    ///    "jira_issue_id": {
    ///      "description": "The Jira issue ID.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "The Jira issue key.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_url": {
    ///      "description": "The Jira issue URL.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "task",
    ///        "follow_up"
    ///      ]
    ///    },
    ///    "priority": {
    ///      "description": "The priority of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "in_progress",
    ///        "cancelled",
    ///        "done"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the action item",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentActionItemDataAttributes {
        ///IDs of groups you wish to assign this action item
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub assigned_to_group_ids: ::std::vec::Vec<::std::string::String>,
        ///ID of user you wish to assign this action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user_id: ::std::option::Option<i64>,
        ///The description of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_selections: ::std::option::Option<
            ::std::vec::Vec<NewIncidentActionItemDataAttributesFormFieldSelectionsItem>,
        >,
        ///The Jira issue ID.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_id: ::std::option::Option<::std::string::String>,
        ///The Jira issue key.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_key: ::std::option::Option<::std::string::String>,
        ///The Jira issue URL.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_url: ::std::option::Option<::std::string::String>,
        ///The kind of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<NewIncidentActionItemDataAttributesKind>,
        ///The priority of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<NewIncidentActionItemDataAttributesPriority>,
        ///The status of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<NewIncidentActionItemDataAttributesStatus>,
        ///The summary of the action item
        pub summary: ::std::string::String,
    }
    impl NewIncidentActionItemDataAttributes {
        pub fn builder() -> builder::NewIncidentActionItemDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentActionItemDataAttributesFormFieldSelectionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id"
    ///  ],
    ///  "properties": {
    ///    "_destroy": {
    ///      "description": "Set to true to remove the field's value from the action item",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "ID of the custom field",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///      "type": "string"
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "description": "IDs of the selected catalog entities",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "description": "IDs of the selected causes",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "description": "IDs of the selected environments",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "description": "IDs of the selected functionalities",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "description": "IDs of the selected teams",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "description": "IDs of the selected incident types",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "description": "IDs of the selected custom field options",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "description": "IDs of the selected services",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "description": "IDs of the selected users",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///      "oneOf": [
    ///        {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
        ///Set to true to remove the field's value from the action item
        #[serde(
            rename = "_destroy",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub destroy: ::std::option::Option<bool>,
        ///ID of the custom field
        pub form_field_id: ::std::string::String,
        ///ID of an existing selection. Required when updating or removing a field's existing value.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///IDs of the selected catalog entities
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected causes
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected environments
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected functionalities
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected teams
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected incident types
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected custom field options
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected services
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected users
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        ///Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<
            NewIncidentActionItemDataAttributesFormFieldSelectionsItemValue,
        >,
    }
    impl NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
        pub fn builder() -> builder::NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
            Default::default()
        }
    }
    ///Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///  "oneOf": [
    ///    {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum NewIncidentActionItemDataAttributesFormFieldSelectionsItemValue {
        Variant0(::std::option::Option<::std::string::String>),
        Variant1(::std::vec::Vec<::std::string::String>),
    }
    impl ::std::convert::From<::std::option::Option<::std::string::String>>
    for NewIncidentActionItemDataAttributesFormFieldSelectionsItemValue {
        fn from(value: ::std::option::Option<::std::string::String>) -> Self {
            Self::Variant0(value)
        }
    }
    impl ::std::convert::From<::std::vec::Vec<::std::string::String>>
    for NewIncidentActionItemDataAttributesFormFieldSelectionsItemValue {
        fn from(value: ::std::vec::Vec<::std::string::String>) -> Self {
            Self::Variant1(value)
        }
    }
    ///The kind of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "task",
    ///    "follow_up"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentActionItemDataAttributesKind {
        #[serde(rename = "task")]
        Task,
        #[serde(rename = "follow_up")]
        FollowUp,
    }
    impl ::std::fmt::Display for NewIncidentActionItemDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Task => f.write_str("task"),
                Self::FollowUp => f.write_str("follow_up"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentActionItemDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "task" => Ok(Self::Task),
                "follow_up" => Ok(Self::FollowUp),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentActionItemDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentActionItemDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentActionItemDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The priority of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentActionItemDataAttributesPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for NewIncidentActionItemDataAttributesPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentActionItemDataAttributesPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentActionItemDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentActionItemDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentActionItemDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "in_progress",
    ///    "cancelled",
    ///    "done"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentActionItemDataAttributesStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "done")]
        Done,
    }
    impl ::std::fmt::Display for NewIncidentActionItemDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Done => f.write_str("done"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentActionItemDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "in_progress" => Ok(Self::InProgress),
                "cancelled" => Ok(Self::Cancelled),
                "done" => Ok(Self::Done),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentActionItemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentActionItemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentActionItemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentActionItemDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_action_items"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentActionItemDataType {
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
    }
    impl ::std::fmt::Display for NewIncidentActionItemDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentActionItems => f.write_str("incident_action_items"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentActionItemDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_action_items" => Ok(Self::IncidentActionItems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentActionItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentActionItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentActionItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentCustomFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "custom_field_id",
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "custom_field_id": {
    ///              "description": "The custom field for this selection",
    ///              "type": "integer"
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected option id for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "value": {
    ///              "description": "The selected value for text kind custom fields",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_custom_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentCustomFieldSelection {
        pub data: NewIncidentCustomFieldSelectionData,
    }
    impl NewIncidentCustomFieldSelection {
        pub fn builder() -> builder::NewIncidentCustomFieldSelection {
            Default::default()
        }
    }
    ///`NewIncidentCustomFieldSelectionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "custom_field_id",
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "custom_field_id": {
    ///          "description": "The custom field for this selection",
    ///          "type": "integer"
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected option id for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "value": {
    ///          "description": "The selected value for text kind custom fields",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentCustomFieldSelectionData {
        pub attributes: NewIncidentCustomFieldSelectionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentCustomFieldSelectionDataType,
    }
    impl NewIncidentCustomFieldSelectionData {
        pub fn builder() -> builder::NewIncidentCustomFieldSelectionData {
            Default::default()
        }
    }
    ///`NewIncidentCustomFieldSelectionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "custom_field_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "custom_field_id": {
    ///      "description": "The custom field for this selection",
    ///      "type": "integer"
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "The selected value for text kind custom fields",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentCustomFieldSelectionDataAttributes {
        ///The custom field for this selection
        pub custom_field_id: i64,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<i64>,
        ///The selected value for text kind custom fields
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl NewIncidentCustomFieldSelectionDataAttributes {
        pub fn builder() -> builder::NewIncidentCustomFieldSelectionDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentCustomFieldSelectionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentCustomFieldSelectionDataType {
        #[serde(rename = "incident_custom_field_selections")]
        IncidentCustomFieldSelections,
    }
    impl ::std::fmt::Display for NewIncidentCustomFieldSelectionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCustomFieldSelections => {
                    f.write_str("incident_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentCustomFieldSelectionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_custom_field_selections" => {
                    Ok(Self::IncidentCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "acknowledged_at": {
    ///          "description": "Date of acknowledgment",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_ids": {
    ///          "description": "The Alert IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "cancelled_at": {
    ///          "description": "Date of cancellation",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cause_ids": {
    ///          "description": "The Cause IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "closed_at": {
    ///          "description": "Date of closure",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "detected_at": {
    ///          "description": "Date of detection",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "duplicate_incident_id": {
    ///          "description": "ID of duplicated incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "functionality_ids": {
    ///          "description": "The Functionality IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "google_drive_parent_id": {
    ///          "description": "Google Drive parent folder ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "google_drive_url": {
    ///          "description": "Google Drive URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "group_ids": {
    ///          "description": "The Team IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "in_triage_at": {
    ///          "description": "Date of triage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_type_ids": {
    ///          "description": "The Incident Type IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "jira_issue_id": {
    ///          "description": "Jira issue ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_key": {
    ///          "description": "Jira issue key",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_url": {
    ///          "description": "Jira issue URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "test",
    ///            "test_sub",
    ///            "example",
    ///            "example_sub",
    ///            "normal",
    ///            "normal_sub",
    ///            "backfilled",
    ///            "scheduled",
    ///            "scheduled_sub"
    ///          ]
    ///        },
    ///        "labels": {
    ///          "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        },
    ///        "mitigated_at": {
    ///          "description": "Date of mitigation",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "muted_service_ids": {
    ///          "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails you want to notify",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "parent_incident_id": {
    ///          "description": "ID of parent incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "private": {
    ///          "description": "Create an incident as private. Once an incident is made as private it cannot be undone",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "public_title": {
    ///          "description": "The public title of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "resolved_at": {
    ///          "description": "Date of resolution",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "scheduled_for": {
    ///          "description": "Date of when the maintenance begins",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "scheduled_until": {
    ///          "description": "Date of when the maintenance ends",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_id": {
    ///          "description": "The Severity ID to attach to the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_archived": {
    ///          "description": "Whether the Slack channel is archived",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_id": {
    ///          "description": "Slack channel id",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_name": {
    ///          "description": "Slack channel name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_url": {
    ///          "description": "Slack channel url",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "started_at": {
    ///          "description": "Date of start",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "status": {
    ///          "description": "The status of the incident",
    ///          "type": "string",
    ///          "enum": [
    ///            "in_triage",
    ///            "started",
    ///            "detected",
    ///            "acknowledged",
    ///            "mitigated",
    ///            "resolved",
    ///            "closed",
    ///            "cancelled",
    ///            "scheduled",
    ///            "in_progress",
    ///            "completed"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the incident. We will autogenerate one if null",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "url": {
    ///          "description": "The url to the incident",
    ///          "type": "string"
    ///        },
    ///        "user_id": {
    ///          "description": "User ID of the creator of the incident. Default to the user attached to the Api Key",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentData {
        pub attributes: NewIncidentDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentDataType,
    }
    impl NewIncidentData {
        pub fn builder() -> builder::NewIncidentData {
            Default::default()
        }
    }
    ///`NewIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "acknowledged_at": {
    ///      "description": "Date of acknowledgment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_ids": {
    ///      "description": "The Alert IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "cancelled_at": {
    ///      "description": "Date of cancellation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cause_ids": {
    ///      "description": "The Cause IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "closed_at": {
    ///      "description": "Date of closure",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "detected_at": {
    ///      "description": "Date of detection",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "duplicate_incident_id": {
    ///      "description": "ID of duplicated incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "google_drive_parent_id": {
    ///      "description": "Google Drive parent folder ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_drive_url": {
    ///      "description": "Google Drive URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "in_triage_at": {
    ///      "description": "Date of triage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "jira_issue_id": {
    ///      "description": "Jira issue ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "Jira issue key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_url": {
    ///      "description": "Jira issue URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "test",
    ///        "test_sub",
    ///        "example",
    ///        "example_sub",
    ///        "normal",
    ///        "normal_sub",
    ///        "backfilled",
    ///        "scheduled",
    ///        "scheduled_sub"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "mitigated_at": {
    ///      "description": "Date of mitigation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "muted_service_ids": {
    ///      "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails you want to notify",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "parent_incident_id": {
    ///      "description": "ID of parent incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "private": {
    ///      "description": "Create an incident as private. Once an incident is made as private it cannot be undone",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_title": {
    ///      "description": "The public title of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolved_at": {
    ///      "description": "Date of resolution",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "scheduled_for": {
    ///      "description": "Date of when the maintenance begins",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "scheduled_until": {
    ///      "description": "Date of when the maintenance ends",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_id": {
    ///      "description": "The Severity ID to attach to the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_archived": {
    ///      "description": "Whether the Slack channel is archived",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_id": {
    ///      "description": "Slack channel id",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_name": {
    ///      "description": "Slack channel name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_url": {
    ///      "description": "Slack channel url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "Date of start",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident",
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "detected",
    ///        "acknowledged",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the incident. We will autogenerate one if null",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "url": {
    ///      "description": "The url to the incident",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "User ID of the creator of the incident. Default to the user attached to the Api Key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentDataAttributes {
        ///Date of acknowledgment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub acknowledged_at: ::std::option::Option<::std::string::String>,
        ///The Alert IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of cancellation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancelled_at: ::std::option::Option<::std::string::String>,
        ///The Cause IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cause_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of closure
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub closed_at: ::std::option::Option<::std::string::String>,
        ///Date of detection
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub detected_at: ::std::option::Option<::std::string::String>,
        ///ID of duplicated incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duplicate_incident_id: ::std::option::Option<::std::string::String>,
        ///The Environment IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Functionality IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Google Drive parent folder ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_parent_id: ::std::option::Option<::std::string::String>,
        ///Google Drive URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_url: ::std::option::Option<::std::string::String>,
        ///The Team IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of triage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub in_triage_at: ::std::option::Option<::std::string::String>,
        ///The Incident Type IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Jira issue ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_id: ::std::option::Option<::std::string::String>,
        ///Jira issue key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_key: ::std::option::Option<::std::string::String>,
        ///Jira issue URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_url: ::std::option::Option<::std::string::String>,
        ///The kind of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<NewIncidentDataAttributesKind>,
        ///Labels to attach to the incidents. eg: {"platform":"osx", "version": "1.29"}
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Date of mitigation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_at: ::std::option::Option<::std::string::String>,
        ///The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub muted_service_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Emails you want to notify
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///ID of parent incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_incident_id: ::std::option::Option<::std::string::String>,
        ///Create an incident as private. Once an incident is made as private it cannot be undone
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        ///The public title of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_title: ::std::option::Option<::std::string::String>,
        ///Date of resolution
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_at: ::std::option::Option<::std::string::String>,
        ///Date of when the maintenance begins
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scheduled_for: ::std::option::Option<::std::string::String>,
        ///Date of when the maintenance ends
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scheduled_until: ::std::option::Option<::std::string::String>,
        ///The Service IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Severity ID to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_id: ::std::option::Option<::std::string::String>,
        ///Whether the Slack channel is archived
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_archived: ::std::option::Option<bool>,
        ///Slack channel id
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_name: ::std::option::Option<::std::string::String>,
        ///Slack channel url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_url: ::std::option::Option<::std::string::String>,
        ///Date of start
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        ///The status of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<NewIncidentDataAttributesStatus>,
        ///The summary of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///The title of the incident. We will autogenerate one if null
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        ///The url to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub url: ::std::option::Option<::std::string::String>,
        ///User ID of the creator of the incident. Default to the user attached to the Api Key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for NewIncidentDataAttributes {
        fn default() -> Self {
            Self {
                acknowledged_at: Default::default(),
                alert_ids: Default::default(),
                cancelled_at: Default::default(),
                cause_ids: Default::default(),
                closed_at: Default::default(),
                detected_at: Default::default(),
                duplicate_incident_id: Default::default(),
                environment_ids: Default::default(),
                functionality_ids: Default::default(),
                google_drive_parent_id: Default::default(),
                google_drive_url: Default::default(),
                group_ids: Default::default(),
                in_triage_at: Default::default(),
                incident_type_ids: Default::default(),
                jira_issue_id: Default::default(),
                jira_issue_key: Default::default(),
                jira_issue_url: Default::default(),
                kind: Default::default(),
                labels: Default::default(),
                mitigated_at: Default::default(),
                muted_service_ids: Default::default(),
                notify_emails: Default::default(),
                parent_incident_id: Default::default(),
                private: Default::default(),
                public_title: Default::default(),
                resolved_at: Default::default(),
                scheduled_for: Default::default(),
                scheduled_until: Default::default(),
                service_ids: Default::default(),
                severity_id: Default::default(),
                slack_channel_archived: Default::default(),
                slack_channel_id: Default::default(),
                slack_channel_name: Default::default(),
                slack_channel_url: Default::default(),
                started_at: Default::default(),
                status: Default::default(),
                summary: Default::default(),
                title: Default::default(),
                url: Default::default(),
                user_id: Default::default(),
            }
        }
    }
    impl NewIncidentDataAttributes {
        pub fn builder() -> builder::NewIncidentDataAttributes {
            Default::default()
        }
    }
    ///The kind of the incident
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the incident",
    ///  "type": "string",
    ///  "enum": [
    ///    "test",
    ///    "test_sub",
    ///    "example",
    ///    "example_sub",
    ///    "normal",
    ///    "normal_sub",
    ///    "backfilled",
    ///    "scheduled",
    ///    "scheduled_sub"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentDataAttributesKind {
        #[serde(rename = "test")]
        Test,
        #[serde(rename = "test_sub")]
        TestSub,
        #[serde(rename = "example")]
        Example,
        #[serde(rename = "example_sub")]
        ExampleSub,
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "normal_sub")]
        NormalSub,
        #[serde(rename = "backfilled")]
        Backfilled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "scheduled_sub")]
        ScheduledSub,
    }
    impl ::std::fmt::Display for NewIncidentDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Test => f.write_str("test"),
                Self::TestSub => f.write_str("test_sub"),
                Self::Example => f.write_str("example"),
                Self::ExampleSub => f.write_str("example_sub"),
                Self::Normal => f.write_str("normal"),
                Self::NormalSub => f.write_str("normal_sub"),
                Self::Backfilled => f.write_str("backfilled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::ScheduledSub => f.write_str("scheduled_sub"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "test" => Ok(Self::Test),
                "test_sub" => Ok(Self::TestSub),
                "example" => Ok(Self::Example),
                "example_sub" => Ok(Self::ExampleSub),
                "normal" => Ok(Self::Normal),
                "normal_sub" => Ok(Self::NormalSub),
                "backfilled" => Ok(Self::Backfilled),
                "scheduled" => Ok(Self::Scheduled),
                "scheduled_sub" => Ok(Self::ScheduledSub),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the incident
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident",
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "detected",
    ///    "acknowledged",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentDataAttributesStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "detected")]
        Detected,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for NewIncidentDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Detected => f.write_str("detected"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "detected" => Ok(Self::Detected),
                "acknowledged" => Ok(Self::Acknowledged),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for NewIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "event"
    ///          ],
    ///          "properties": {
    ///            "event": {
    ///              "description": "The summary of the incident event",
    ///              "type": "string"
    ///            },
    ///            "visibility": {
    ///              "description": "The visibility of the incident action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "internal",
    ///                "external"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_events"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentEvent {
        pub data: NewIncidentEventData,
    }
    impl NewIncidentEvent {
        pub fn builder() -> builder::NewIncidentEvent {
            Default::default()
        }
    }
    ///`NewIncidentEventData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "event"
    ///      ],
    ///      "properties": {
    ///        "event": {
    ///          "description": "The summary of the incident event",
    ///          "type": "string"
    ///        },
    ///        "visibility": {
    ///          "description": "The visibility of the incident action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "internal",
    ///            "external"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentEventData {
        pub attributes: NewIncidentEventDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentEventDataType,
    }
    impl NewIncidentEventData {
        pub fn builder() -> builder::NewIncidentEventData {
            Default::default()
        }
    }
    ///`NewIncidentEventDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "event"
    ///  ],
    ///  "properties": {
    ///    "event": {
    ///      "description": "The summary of the incident event",
    ///      "type": "string"
    ///    },
    ///    "visibility": {
    ///      "description": "The visibility of the incident action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "internal",
    ///        "external"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentEventDataAttributes {
        ///The summary of the incident event
        pub event: ::std::string::String,
        ///The visibility of the incident action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub visibility: ::std::option::Option<NewIncidentEventDataAttributesVisibility>,
    }
    impl NewIncidentEventDataAttributes {
        pub fn builder() -> builder::NewIncidentEventDataAttributes {
            Default::default()
        }
    }
    ///The visibility of the incident action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The visibility of the incident action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "internal",
    ///    "external"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentEventDataAttributesVisibility {
        #[serde(rename = "internal")]
        Internal,
        #[serde(rename = "external")]
        External,
    }
    impl ::std::fmt::Display for NewIncidentEventDataAttributesVisibility {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Internal => f.write_str("internal"),
                Self::External => f.write_str("external"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentEventDataAttributesVisibility {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "internal" => Ok(Self::Internal),
                "external" => Ok(Self::External),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentEventDataAttributesVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentEventDataAttributesVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentEventDataAttributesVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentEventDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentEventDataType {
        #[serde(rename = "incident_events")]
        IncidentEvents,
    }
    impl ::std::fmt::Display for NewIncidentEventDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEvents => f.write_str("incident_events"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentEventDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_events" => Ok(Self::IncidentEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewIncidentEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewIncidentEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentEventFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "functionality_id",
    ///            "incident_event_id",
    ///            "status"
    ///          ],
    ///          "properties": {
    ///            "functionality_id": {
    ///              "description": "The ID of the functionality.",
    ///              "type": "string"
    ///            },
    ///            "incident_event_id": {
    ///              "description": "The ID of the incident event.",
    ///              "type": "string"
    ///            },
    ///            "status": {
    ///              "description": "The status of the affected functionality",
    ///              "type": "string",
    ///              "enum": [
    ///                "operational",
    ///                "partial_outage",
    ///                "major_outage"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_event_functionalities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentEventFunctionality {
        pub data: NewIncidentEventFunctionalityData,
    }
    impl NewIncidentEventFunctionality {
        pub fn builder() -> builder::NewIncidentEventFunctionality {
            Default::default()
        }
    }
    ///`NewIncidentEventFunctionalityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "functionality_id",
    ///        "incident_event_id",
    ///        "status"
    ///      ],
    ///      "properties": {
    ///        "functionality_id": {
    ///          "description": "The ID of the functionality.",
    ///          "type": "string"
    ///        },
    ///        "incident_event_id": {
    ///          "description": "The ID of the incident event.",
    ///          "type": "string"
    ///        },
    ///        "status": {
    ///          "description": "The status of the affected functionality",
    ///          "type": "string",
    ///          "enum": [
    ///            "operational",
    ///            "partial_outage",
    ///            "major_outage"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentEventFunctionalityData {
        pub attributes: NewIncidentEventFunctionalityDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentEventFunctionalityDataType,
    }
    impl NewIncidentEventFunctionalityData {
        pub fn builder() -> builder::NewIncidentEventFunctionalityData {
            Default::default()
        }
    }
    ///`NewIncidentEventFunctionalityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "functionality_id",
    ///    "incident_event_id",
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "functionality_id": {
    ///      "description": "The ID of the functionality.",
    ///      "type": "string"
    ///    },
    ///    "incident_event_id": {
    ///      "description": "The ID of the incident event.",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status of the affected functionality",
    ///      "type": "string",
    ///      "enum": [
    ///        "operational",
    ///        "partial_outage",
    ///        "major_outage"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentEventFunctionalityDataAttributes {
        ///The ID of the functionality.
        pub functionality_id: ::std::string::String,
        ///The ID of the incident event.
        pub incident_event_id: ::std::string::String,
        ///The status of the affected functionality
        pub status: NewIncidentEventFunctionalityDataAttributesStatus,
    }
    impl NewIncidentEventFunctionalityDataAttributes {
        pub fn builder() -> builder::NewIncidentEventFunctionalityDataAttributes {
            Default::default()
        }
    }
    ///The status of the affected functionality
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the affected functionality",
    ///  "type": "string",
    ///  "enum": [
    ///    "operational",
    ///    "partial_outage",
    ///    "major_outage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentEventFunctionalityDataAttributesStatus {
        #[serde(rename = "operational")]
        Operational,
        #[serde(rename = "partial_outage")]
        PartialOutage,
        #[serde(rename = "major_outage")]
        MajorOutage,
    }
    impl ::std::fmt::Display for NewIncidentEventFunctionalityDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Operational => f.write_str("operational"),
                Self::PartialOutage => f.write_str("partial_outage"),
                Self::MajorOutage => f.write_str("major_outage"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentEventFunctionalityDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "operational" => Ok(Self::Operational),
                "partial_outage" => Ok(Self::PartialOutage),
                "major_outage" => Ok(Self::MajorOutage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewIncidentEventFunctionalityDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentEventFunctionalityDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentEventFunctionalityDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentEventFunctionalityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentEventFunctionalityDataType {
        #[serde(rename = "incident_event_functionalities")]
        IncidentEventFunctionalities,
    }
    impl ::std::fmt::Display for NewIncidentEventFunctionalityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventFunctionalities => {
                    f.write_str("incident_event_functionalities")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentEventFunctionalityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_functionalities" => {
                    Ok(Self::IncidentEventFunctionalities)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentEventFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentEventFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentEventFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentEventService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "incident_event_id",
    ///            "service_id",
    ///            "status"
    ///          ],
    ///          "properties": {
    ///            "incident_event_id": {
    ///              "description": "The ID of the incident event.",
    ///              "type": "string"
    ///            },
    ///            "service_id": {
    ///              "description": "The ID of the service.",
    ///              "type": "string"
    ///            },
    ///            "status": {
    ///              "description": "The status of the affected service",
    ///              "type": "string",
    ///              "enum": [
    ///                "operational",
    ///                "partial_outage",
    ///                "major_outage"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_event_services"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentEventService {
        pub data: NewIncidentEventServiceData,
    }
    impl NewIncidentEventService {
        pub fn builder() -> builder::NewIncidentEventService {
            Default::default()
        }
    }
    ///`NewIncidentEventServiceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "incident_event_id",
    ///        "service_id",
    ///        "status"
    ///      ],
    ///      "properties": {
    ///        "incident_event_id": {
    ///          "description": "The ID of the incident event.",
    ///          "type": "string"
    ///        },
    ///        "service_id": {
    ///          "description": "The ID of the service.",
    ///          "type": "string"
    ///        },
    ///        "status": {
    ///          "description": "The status of the affected service",
    ///          "type": "string",
    ///          "enum": [
    ///            "operational",
    ///            "partial_outage",
    ///            "major_outage"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentEventServiceData {
        pub attributes: NewIncidentEventServiceDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentEventServiceDataType,
    }
    impl NewIncidentEventServiceData {
        pub fn builder() -> builder::NewIncidentEventServiceData {
            Default::default()
        }
    }
    ///`NewIncidentEventServiceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_event_id",
    ///    "service_id",
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "incident_event_id": {
    ///      "description": "The ID of the incident event.",
    ///      "type": "string"
    ///    },
    ///    "service_id": {
    ///      "description": "The ID of the service.",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status of the affected service",
    ///      "type": "string",
    ///      "enum": [
    ///        "operational",
    ///        "partial_outage",
    ///        "major_outage"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentEventServiceDataAttributes {
        ///The ID of the incident event.
        pub incident_event_id: ::std::string::String,
        ///The ID of the service.
        pub service_id: ::std::string::String,
        ///The status of the affected service
        pub status: NewIncidentEventServiceDataAttributesStatus,
    }
    impl NewIncidentEventServiceDataAttributes {
        pub fn builder() -> builder::NewIncidentEventServiceDataAttributes {
            Default::default()
        }
    }
    ///The status of the affected service
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the affected service",
    ///  "type": "string",
    ///  "enum": [
    ///    "operational",
    ///    "partial_outage",
    ///    "major_outage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentEventServiceDataAttributesStatus {
        #[serde(rename = "operational")]
        Operational,
        #[serde(rename = "partial_outage")]
        PartialOutage,
        #[serde(rename = "major_outage")]
        MajorOutage,
    }
    impl ::std::fmt::Display for NewIncidentEventServiceDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Operational => f.write_str("operational"),
                Self::PartialOutage => f.write_str("partial_outage"),
                Self::MajorOutage => f.write_str("major_outage"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentEventServiceDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "operational" => Ok(Self::Operational),
                "partial_outage" => Ok(Self::PartialOutage),
                "major_outage" => Ok(Self::MajorOutage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentEventServiceDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentEventServiceDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentEventServiceDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentEventServiceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentEventServiceDataType {
        #[serde(rename = "incident_event_services")]
        IncidentEventServices,
    }
    impl ::std::fmt::Display for NewIncidentEventServiceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventServices => f.write_str("incident_event_services"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentEventServiceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_services" => Ok(Self::IncidentEventServices),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentEventServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentEventServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentEventServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentFeedback`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "feedback",
    ///            "rating"
    ///          ],
    ///          "properties": {
    ///            "anonymous": {
    ///              "description": "Is the feedback anonymous?",
    ///              "type": "boolean"
    ///            },
    ///            "feedback": {
    ///              "description": "The feedback of the incident feedback",
    ///              "type": "string"
    ///            },
    ///            "rating": {
    ///              "description": "The rating of the incident feedback",
    ///              "type": "integer",
    ///              "enum": [
    ///                4,
    ///                3,
    ///                2,
    ///                1,
    ///                0
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_feedbacks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentFeedback {
        pub data: NewIncidentFeedbackData,
    }
    impl NewIncidentFeedback {
        pub fn builder() -> builder::NewIncidentFeedback {
            Default::default()
        }
    }
    ///`NewIncidentFeedbackData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "feedback",
    ///        "rating"
    ///      ],
    ///      "properties": {
    ///        "anonymous": {
    ///          "description": "Is the feedback anonymous?",
    ///          "type": "boolean"
    ///        },
    ///        "feedback": {
    ///          "description": "The feedback of the incident feedback",
    ///          "type": "string"
    ///        },
    ///        "rating": {
    ///          "description": "The rating of the incident feedback",
    ///          "type": "integer",
    ///          "enum": [
    ///            4,
    ///            3,
    ///            2,
    ///            1,
    ///            0
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_feedbacks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentFeedbackData {
        pub attributes: NewIncidentFeedbackDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentFeedbackDataType,
    }
    impl NewIncidentFeedbackData {
        pub fn builder() -> builder::NewIncidentFeedbackData {
            Default::default()
        }
    }
    ///`NewIncidentFeedbackDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "feedback",
    ///    "rating"
    ///  ],
    ///  "properties": {
    ///    "anonymous": {
    ///      "description": "Is the feedback anonymous?",
    ///      "type": "boolean"
    ///    },
    ///    "feedback": {
    ///      "description": "The feedback of the incident feedback",
    ///      "type": "string"
    ///    },
    ///    "rating": {
    ///      "description": "The rating of the incident feedback",
    ///      "type": "integer",
    ///      "enum": [
    ///        4,
    ///        3,
    ///        2,
    ///        1,
    ///        0
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentFeedbackDataAttributes {
        ///Is the feedback anonymous?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub anonymous: ::std::option::Option<bool>,
        ///The feedback of the incident feedback
        pub feedback: ::std::string::String,
        ///The rating of the incident feedback
        pub rating: NewIncidentFeedbackDataAttributesRating,
    }
    impl NewIncidentFeedbackDataAttributes {
        pub fn builder() -> builder::NewIncidentFeedbackDataAttributes {
            Default::default()
        }
    }
    ///The rating of the incident feedback
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The rating of the incident feedback",
    ///  "type": "integer",
    ///  "enum": [
    ///    4,
    ///    3,
    ///    2,
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewIncidentFeedbackDataAttributesRating(i64);
    impl ::std::ops::Deref for NewIncidentFeedbackDataAttributesRating {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewIncidentFeedbackDataAttributesRating> for i64 {
        fn from(value: NewIncidentFeedbackDataAttributesRating) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for NewIncidentFeedbackDataAttributesRating {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![4_i64, 3_i64, 2_i64, 1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for NewIncidentFeedbackDataAttributesRating {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`NewIncidentFeedbackDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_feedbacks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentFeedbackDataType {
        #[serde(rename = "incident_feedbacks")]
        IncidentFeedbacks,
    }
    impl ::std::fmt::Display for NewIncidentFeedbackDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFeedbacks => f.write_str("incident_feedbacks"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentFeedbackDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_feedbacks" => Ok(Self::IncidentFeedbacks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentFeedbackDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentFeedbackDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewIncidentFeedbackDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentFormFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "form_field_id",
    ///            "incident_id"
    ///          ],
    ///          "properties": {
    ///            "form_field_id": {
    ///              "description": "The custom field for this selection",
    ///              "type": "string"
    ///            },
    ///            "incident_id": {
    ///              "type": "string"
    ///            },
    ///            "selected_catalog_entity_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected catalog entities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_cause_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected causes for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_environment_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected environments for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_functionality_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected functionalities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_group_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected groups (teams) for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_incident_type_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected incident types for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected options for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_service_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected services for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_user_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected users for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "value": {
    ///              "description": "The selected value for text kind custom fields",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_form_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentFormFieldSelection {
        pub data: NewIncidentFormFieldSelectionData,
    }
    impl NewIncidentFormFieldSelection {
        pub fn builder() -> builder::NewIncidentFormFieldSelection {
            Default::default()
        }
    }
    ///`NewIncidentFormFieldSelectionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "form_field_id",
    ///        "incident_id"
    ///      ],
    ///      "properties": {
    ///        "form_field_id": {
    ///          "description": "The custom field for this selection",
    ///          "type": "string"
    ///        },
    ///        "incident_id": {
    ///          "type": "string"
    ///        },
    ///        "selected_catalog_entity_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected catalog entities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_cause_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected causes for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_environment_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected environments for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_functionality_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected functionalities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_group_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected groups (teams) for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_incident_type_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected incident types for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected options for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected services for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_user_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected users for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "value": {
    ///          "description": "The selected value for text kind custom fields",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_form_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentFormFieldSelectionData {
        pub attributes: NewIncidentFormFieldSelectionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentFormFieldSelectionDataType,
    }
    impl NewIncidentFormFieldSelectionData {
        pub fn builder() -> builder::NewIncidentFormFieldSelectionData {
            Default::default()
        }
    }
    ///`NewIncidentFormFieldSelectionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id",
    ///    "incident_id"
    ///  ],
    ///  "properties": {
    ///    "form_field_id": {
    ///      "description": "The custom field for this selection",
    ///      "type": "string"
    ///    },
    ///    "incident_id": {
    ///      "type": "string"
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected catalog entities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected causes for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected environments for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected functionalities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected groups (teams) for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected incident types for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected options for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected services for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected users for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "The selected value for text kind custom fields",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentFormFieldSelectionDataAttributes {
        ///The custom field for this selection
        pub form_field_id: ::std::string::String,
        pub incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        ///The selected value for text kind custom fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl NewIncidentFormFieldSelectionDataAttributes {
        pub fn builder() -> builder::NewIncidentFormFieldSelectionDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentFormFieldSelectionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentFormFieldSelectionDataType {
        #[serde(rename = "incident_form_field_selections")]
        IncidentFormFieldSelections,
    }
    impl ::std::fmt::Display for NewIncidentFormFieldSelectionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFormFieldSelections => {
                    f.write_str("incident_form_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentFormFieldSelectionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form_field_selections" => Ok(Self::IncidentFormFieldSelections),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentFormFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentFormFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentFormFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSet`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The incident permission set description.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The incident permission set name.",
    ///              "type": "string"
    ///            },
    ///            "private_incident_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "public_incident_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_sets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSet {
        pub data: NewIncidentPermissionSetData,
    }
    impl NewIncidentPermissionSet {
        pub fn builder() -> builder::NewIncidentPermissionSet {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetBoolean`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "incident_permission_set_id",
    ///            "kind"
    ///          ],
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "incident_permission_set_id": {
    ///              "type": "string"
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "publish_to_status_page",
    ///                "assign_incident_roles",
    ///                "invite_subscribers",
    ///                "update_summary",
    ///                "update_timeline",
    ///                "trigger_workflows",
    ///                "create_communications",
    ///                "read_communications",
    ///                "update_communications",
    ///                "delete_communications",
    ///                "send_communications",
    ///                "modify_custom_fields"
    ///              ]
    ///            },
    ///            "private": {
    ///              "type": "boolean"
    ///            },
    ///            "severity_params": {
    ///              "type": "object",
    ///              "properties": {
    ///                "applies_to_unassigned": {
    ///                  "description": "Whether permissions are enabled for incident without severity",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "create_enabled": {
    ///                  "description": "Whether permissions are enabled when creating incident",
    ///                  "default": false,
    ///                  "type": "boolean"
    ///                },
    ///                "fully_enabled": {
    ///                  "description": "Whether permissions are enabled for any severity incident",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "severity_ids": {
    ///                  "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_set_booleans"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetBoolean {
        pub data: NewIncidentPermissionSetBooleanData,
    }
    impl NewIncidentPermissionSetBoolean {
        pub fn builder() -> builder::NewIncidentPermissionSetBoolean {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetBooleanData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "incident_permission_set_id",
    ///        "kind"
    ///      ],
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "incident_permission_set_id": {
    ///          "type": "string"
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "publish_to_status_page",
    ///            "assign_incident_roles",
    ///            "invite_subscribers",
    ///            "update_summary",
    ///            "update_timeline",
    ///            "trigger_workflows",
    ///            "create_communications",
    ///            "read_communications",
    ///            "update_communications",
    ///            "delete_communications",
    ///            "send_communications",
    ///            "modify_custom_fields"
    ///          ]
    ///        },
    ///        "private": {
    ///          "type": "boolean"
    ///        },
    ///        "severity_params": {
    ///          "type": "object",
    ///          "properties": {
    ///            "applies_to_unassigned": {
    ///              "description": "Whether permissions are enabled for incident without severity",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "create_enabled": {
    ///              "description": "Whether permissions are enabled when creating incident",
    ///              "default": false,
    ///              "type": "boolean"
    ///            },
    ///            "fully_enabled": {
    ///              "description": "Whether permissions are enabled for any severity incident",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "severity_ids": {
    ///              "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_booleans"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetBooleanData {
        pub attributes: NewIncidentPermissionSetBooleanDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentPermissionSetBooleanDataType,
    }
    impl NewIncidentPermissionSetBooleanData {
        pub fn builder() -> builder::NewIncidentPermissionSetBooleanData {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetBooleanDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_permission_set_id",
    ///    "kind"
    ///  ],
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "incident_permission_set_id": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "publish_to_status_page",
    ///        "assign_incident_roles",
    ///        "invite_subscribers",
    ///        "update_summary",
    ///        "update_timeline",
    ///        "trigger_workflows",
    ///        "create_communications",
    ///        "read_communications",
    ///        "update_communications",
    ///        "delete_communications",
    ///        "send_communications",
    ///        "modify_custom_fields"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "severity_params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "applies_to_unassigned": {
    ///          "description": "Whether permissions are enabled for incident without severity",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "create_enabled": {
    ///          "description": "Whether permissions are enabled when creating incident",
    ///          "default": false,
    ///          "type": "boolean"
    ///        },
    ///        "fully_enabled": {
    ///          "description": "Whether permissions are enabled for any severity incident",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "severity_ids": {
    ///          "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentPermissionSetBooleanDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        pub incident_permission_set_id: ::std::string::String,
        pub kind: NewIncidentPermissionSetBooleanDataAttributesKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_params: ::std::option::Option<
            NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
        >,
    }
    impl NewIncidentPermissionSetBooleanDataAttributes {
        pub fn builder() -> builder::NewIncidentPermissionSetBooleanDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetBooleanDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "publish_to_status_page",
    ///    "assign_incident_roles",
    ///    "invite_subscribers",
    ///    "update_summary",
    ///    "update_timeline",
    ///    "trigger_workflows",
    ///    "create_communications",
    ///    "read_communications",
    ///    "update_communications",
    ///    "delete_communications",
    ///    "send_communications",
    ///    "modify_custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetBooleanDataAttributesKind {
        #[serde(rename = "publish_to_status_page")]
        PublishToStatusPage,
        #[serde(rename = "assign_incident_roles")]
        AssignIncidentRoles,
        #[serde(rename = "invite_subscribers")]
        InviteSubscribers,
        #[serde(rename = "update_summary")]
        UpdateSummary,
        #[serde(rename = "update_timeline")]
        UpdateTimeline,
        #[serde(rename = "trigger_workflows")]
        TriggerWorkflows,
        #[serde(rename = "create_communications")]
        CreateCommunications,
        #[serde(rename = "read_communications")]
        ReadCommunications,
        #[serde(rename = "update_communications")]
        UpdateCommunications,
        #[serde(rename = "delete_communications")]
        DeleteCommunications,
        #[serde(rename = "send_communications")]
        SendCommunications,
        #[serde(rename = "modify_custom_fields")]
        ModifyCustomFields,
    }
    impl ::std::fmt::Display for NewIncidentPermissionSetBooleanDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PublishToStatusPage => f.write_str("publish_to_status_page"),
                Self::AssignIncidentRoles => f.write_str("assign_incident_roles"),
                Self::InviteSubscribers => f.write_str("invite_subscribers"),
                Self::UpdateSummary => f.write_str("update_summary"),
                Self::UpdateTimeline => f.write_str("update_timeline"),
                Self::TriggerWorkflows => f.write_str("trigger_workflows"),
                Self::CreateCommunications => f.write_str("create_communications"),
                Self::ReadCommunications => f.write_str("read_communications"),
                Self::UpdateCommunications => f.write_str("update_communications"),
                Self::DeleteCommunications => f.write_str("delete_communications"),
                Self::SendCommunications => f.write_str("send_communications"),
                Self::ModifyCustomFields => f.write_str("modify_custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentPermissionSetBooleanDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "publish_to_status_page" => Ok(Self::PublishToStatusPage),
                "assign_incident_roles" => Ok(Self::AssignIncidentRoles),
                "invite_subscribers" => Ok(Self::InviteSubscribers),
                "update_summary" => Ok(Self::UpdateSummary),
                "update_timeline" => Ok(Self::UpdateTimeline),
                "trigger_workflows" => Ok(Self::TriggerWorkflows),
                "create_communications" => Ok(Self::CreateCommunications),
                "read_communications" => Ok(Self::ReadCommunications),
                "update_communications" => Ok(Self::UpdateCommunications),
                "delete_communications" => Ok(Self::DeleteCommunications),
                "send_communications" => Ok(Self::SendCommunications),
                "modify_custom_fields" => Ok(Self::ModifyCustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewIncidentPermissionSetBooleanDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetBooleanDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetBooleanDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSetBooleanDataAttributesSeverityParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "applies_to_unassigned": {
    ///      "description": "Whether permissions are enabled for incident without severity",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "create_enabled": {
    ///      "description": "Whether permissions are enabled when creating incident",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "fully_enabled": {
    ///      "description": "Whether permissions are enabled for any severity incident",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "severity_ids": {
    ///      "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
        ///Whether permissions are enabled for incident without severity
        #[serde(default = "defaults::default_bool::<true>")]
        pub applies_to_unassigned: bool,
        ///Whether permissions are enabled when creating incident
        #[serde(default)]
        pub create_enabled: bool,
        ///Whether permissions are enabled for any severity incident
        #[serde(default = "defaults::default_bool::<true>")]
        pub fully_enabled: bool,
        ///Severity ids that determine if an incident is permitted based on matching severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
        fn default() -> Self {
            Self {
                applies_to_unassigned: defaults::default_bool::<true>(),
                create_enabled: Default::default(),
                fully_enabled: defaults::default_bool::<true>(),
                severity_ids: Default::default(),
            }
        }
    }
    impl NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
        pub fn builder() -> builder::NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetBooleanDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_booleans"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetBooleanDataType {
        #[serde(rename = "incident_permission_set_booleans")]
        IncidentPermissionSetBooleans,
    }
    impl ::std::fmt::Display for NewIncidentPermissionSetBooleanDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetBooleans => {
                    f.write_str("incident_permission_set_booleans")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentPermissionSetBooleanDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_booleans" => {
                    Ok(Self::IncidentPermissionSetBooleans)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentPermissionSetBooleanDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetBooleanDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetBooleanDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSetData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The incident permission set description.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The incident permission set name.",
    ///          "type": "string"
    ///        },
    ///        "private_incident_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "public_incident_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetData {
        pub attributes: NewIncidentPermissionSetDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentPermissionSetDataType,
    }
    impl NewIncidentPermissionSetData {
        pub fn builder() -> builder::NewIncidentPermissionSetData {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The incident permission set description.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The incident permission set name.",
    ///      "type": "string"
    ///    },
    ///    "private_incident_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "public_incident_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentPermissionSetDataAttributes {
        ///The incident permission set description.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The incident permission set name.
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub private_incident_permissions: ::std::vec::Vec<
            NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub public_incident_permissions: ::std::vec::Vec<
            NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem,
        >,
    }
    impl NewIncidentPermissionSetDataAttributes {
        pub fn builder() -> builder::NewIncidentPermissionSetDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSetDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetDataType {
        #[serde(rename = "incident_permission_sets")]
        IncidentPermissionSets,
    }
    impl ::std::fmt::Display for NewIncidentPermissionSetDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSets => f.write_str("incident_permission_sets"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentPermissionSetDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_sets" => Ok(Self::IncidentPermissionSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentPermissionSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSetResource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "incident_permission_set_id",
    ///            "kind"
    ///          ],
    ///          "properties": {
    ///            "incident_permission_set_id": {
    ///              "type": "string"
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "severities",
    ///                "incident_types",
    ///                "statuses",
    ///                "sub_statuses"
    ///              ]
    ///            },
    ///            "private": {
    ///              "type": "boolean"
    ///            },
    ///            "resource_id": {
    ///              "type": "string"
    ///            },
    ///            "resource_type": {
    ///              "type": "string"
    ///            },
    ///            "severity_params": {
    ///              "type": "object",
    ///              "properties": {
    ///                "applies_to_unassigned": {
    ///                  "description": "Whether permissions are enabled for incident without severity",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "create_enabled": {
    ///                  "description": "Whether permissions are enabled when creating incident",
    ///                  "default": false,
    ///                  "type": "boolean"
    ///                },
    ///                "fully_enabled": {
    ///                  "description": "Whether permissions are enabled for any severity incident",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "severity_ids": {
    ///                  "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_set_resources"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetResource {
        pub data: NewIncidentPermissionSetResourceData,
    }
    impl NewIncidentPermissionSetResource {
        pub fn builder() -> builder::NewIncidentPermissionSetResource {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetResourceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "incident_permission_set_id",
    ///        "kind"
    ///      ],
    ///      "properties": {
    ///        "incident_permission_set_id": {
    ///          "type": "string"
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "severities",
    ///            "incident_types",
    ///            "statuses",
    ///            "sub_statuses"
    ///          ]
    ///        },
    ///        "private": {
    ///          "type": "boolean"
    ///        },
    ///        "resource_id": {
    ///          "type": "string"
    ///        },
    ///        "resource_type": {
    ///          "type": "string"
    ///        },
    ///        "severity_params": {
    ///          "type": "object",
    ///          "properties": {
    ///            "applies_to_unassigned": {
    ///              "description": "Whether permissions are enabled for incident without severity",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "create_enabled": {
    ///              "description": "Whether permissions are enabled when creating incident",
    ///              "default": false,
    ///              "type": "boolean"
    ///            },
    ///            "fully_enabled": {
    ///              "description": "Whether permissions are enabled for any severity incident",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "severity_ids": {
    ///              "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_resources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetResourceData {
        pub attributes: NewIncidentPermissionSetResourceDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentPermissionSetResourceDataType,
    }
    impl NewIncidentPermissionSetResourceData {
        pub fn builder() -> builder::NewIncidentPermissionSetResourceData {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetResourceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_permission_set_id",
    ///    "kind"
    ///  ],
    ///  "properties": {
    ///    "incident_permission_set_id": {
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities",
    ///        "incident_types",
    ///        "statuses",
    ///        "sub_statuses"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "resource_id": {
    ///      "type": "string"
    ///    },
    ///    "resource_type": {
    ///      "type": "string"
    ///    },
    ///    "severity_params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "applies_to_unassigned": {
    ///          "description": "Whether permissions are enabled for incident without severity",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "create_enabled": {
    ///          "description": "Whether permissions are enabled when creating incident",
    ///          "default": false,
    ///          "type": "boolean"
    ///        },
    ///        "fully_enabled": {
    ///          "description": "Whether permissions are enabled for any severity incident",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "severity_ids": {
    ///          "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentPermissionSetResourceDataAttributes {
        pub incident_permission_set_id: ::std::string::String,
        pub kind: NewIncidentPermissionSetResourceDataAttributesKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resource_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resource_type: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_params: ::std::option::Option<
            NewIncidentPermissionSetResourceDataAttributesSeverityParams,
        >,
    }
    impl NewIncidentPermissionSetResourceDataAttributes {
        pub fn builder() -> builder::NewIncidentPermissionSetResourceDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetResourceDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "incident_types",
    ///    "statuses",
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetResourceDataAttributesKind {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "statuses")]
        Statuses,
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for NewIncidentPermissionSetResourceDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Statuses => f.write_str("statuses"),
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentPermissionSetResourceDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "incident_types" => Ok(Self::IncidentTypes),
                "statuses" => Ok(Self::Statuses),
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewIncidentPermissionSetResourceDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetResourceDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetResourceDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentPermissionSetResourceDataAttributesSeverityParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "applies_to_unassigned": {
    ///      "description": "Whether permissions are enabled for incident without severity",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "create_enabled": {
    ///      "description": "Whether permissions are enabled when creating incident",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "fully_enabled": {
    ///      "description": "Whether permissions are enabled for any severity incident",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "severity_ids": {
    ///      "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentPermissionSetResourceDataAttributesSeverityParams {
        ///Whether permissions are enabled for incident without severity
        #[serde(default = "defaults::default_bool::<true>")]
        pub applies_to_unassigned: bool,
        ///Whether permissions are enabled when creating incident
        #[serde(default)]
        pub create_enabled: bool,
        ///Whether permissions are enabled for any severity incident
        #[serde(default = "defaults::default_bool::<true>")]
        pub fully_enabled: bool,
        ///Severity ids that determine if an incident is permitted based on matching severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for NewIncidentPermissionSetResourceDataAttributesSeverityParams {
        fn default() -> Self {
            Self {
                applies_to_unassigned: defaults::default_bool::<true>(),
                create_enabled: Default::default(),
                fully_enabled: defaults::default_bool::<true>(),
                severity_ids: Default::default(),
            }
        }
    }
    impl NewIncidentPermissionSetResourceDataAttributesSeverityParams {
        pub fn builder() -> builder::NewIncidentPermissionSetResourceDataAttributesSeverityParams {
            Default::default()
        }
    }
    ///`NewIncidentPermissionSetResourceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_resources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentPermissionSetResourceDataType {
        #[serde(rename = "incident_permission_set_resources")]
        IncidentPermissionSetResources,
    }
    impl ::std::fmt::Display for NewIncidentPermissionSetResourceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetResources => {
                    f.write_str("incident_permission_set_resources")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentPermissionSetResourceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_resources" => {
                    Ok(Self::IncidentPermissionSetResources)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentPermissionSetResourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentPermissionSetResourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentPermissionSetResourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "allow_multi_user_assignment": {
    ///              "type": "boolean"
    ///            },
    ///            "description": {
    ///              "description": "The description of the incident role",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the incident role",
    ///              "type": "string"
    ///            },
    ///            "optional": {
    ///              "type": "boolean"
    ///            },
    ///            "position": {
    ///              "description": "Position of the incident role",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the incident role",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentRole {
        pub data: NewIncidentRoleData,
    }
    impl NewIncidentRole {
        pub fn builder() -> builder::NewIncidentRole {
            Default::default()
        }
    }
    ///`NewIncidentRoleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "allow_multi_user_assignment": {
    ///          "type": "boolean"
    ///        },
    ///        "description": {
    ///          "description": "The description of the incident role",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the incident role",
    ///          "type": "string"
    ///        },
    ///        "optional": {
    ///          "type": "boolean"
    ///        },
    ///        "position": {
    ///          "description": "Position of the incident role",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the incident role",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentRoleData {
        pub attributes: NewIncidentRoleDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentRoleDataType,
    }
    impl NewIncidentRoleData {
        pub fn builder() -> builder::NewIncidentRoleData {
            Default::default()
        }
    }
    ///`NewIncidentRoleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "allow_multi_user_assignment": {
    ///      "type": "boolean"
    ///    },
    ///    "description": {
    ///      "description": "The description of the incident role",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the incident role",
    ///      "type": "string"
    ///    },
    ///    "optional": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "Position of the incident role",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the incident role",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentRoleDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub allow_multi_user_assignment: ::std::option::Option<bool>,
        ///The description of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the incident role
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub optional: ::std::option::Option<bool>,
        ///Position of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The summary of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
    }
    impl NewIncidentRoleDataAttributes {
        pub fn builder() -> builder::NewIncidentRoleDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentRoleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentRoleDataType {
        #[serde(rename = "incident_roles")]
        IncidentRoles,
    }
    impl ::std::fmt::Display for NewIncidentRoleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoles => f.write_str("incident_roles"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentRoleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_roles" => Ok(Self::IncidentRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewIncidentRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewIncidentRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentRoleTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "task"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the incident task",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_role_id": {
    ///              "type": "string"
    ///            },
    ///            "priority": {
    ///              "description": "The priority of the incident task",
    ///              "type": "string",
    ///              "enum": [
    ///                "high",
    ///                "medium",
    ///                "low"
    ///              ]
    ///            },
    ///            "task": {
    ///              "description": "The task of the incident task",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_role_tasks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentRoleTask {
        pub data: NewIncidentRoleTaskData,
    }
    impl NewIncidentRoleTask {
        pub fn builder() -> builder::NewIncidentRoleTask {
            Default::default()
        }
    }
    ///`NewIncidentRoleTaskData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "task"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the incident task",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_role_id": {
    ///          "type": "string"
    ///        },
    ///        "priority": {
    ///          "description": "The priority of the incident task",
    ///          "type": "string",
    ///          "enum": [
    ///            "high",
    ///            "medium",
    ///            "low"
    ///          ]
    ///        },
    ///        "task": {
    ///          "description": "The task of the incident task",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_role_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentRoleTaskData {
        pub attributes: NewIncidentRoleTaskDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentRoleTaskDataType,
    }
    impl NewIncidentRoleTaskData {
        pub fn builder() -> builder::NewIncidentRoleTaskData {
            Default::default()
        }
    }
    ///`NewIncidentRoleTaskDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "task"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the incident task",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_role_id": {
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority of the incident task",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "task": {
    ///      "description": "The task of the incident task",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentRoleTaskDataAttributes {
        ///The description of the incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///The priority of the incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<NewIncidentRoleTaskDataAttributesPriority>,
        ///The task of the incident task
        pub task: ::std::string::String,
    }
    impl NewIncidentRoleTaskDataAttributes {
        pub fn builder() -> builder::NewIncidentRoleTaskDataAttributes {
            Default::default()
        }
    }
    ///The priority of the incident task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority of the incident task",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentRoleTaskDataAttributesPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for NewIncidentRoleTaskDataAttributesPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentRoleTaskDataAttributesPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentRoleTaskDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentRoleTaskDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentRoleTaskDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentRoleTaskDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_role_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentRoleTaskDataType {
        #[serde(rename = "incident_role_tasks")]
        IncidentRoleTasks,
    }
    impl ::std::fmt::Display for NewIncidentRoleTaskDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoleTasks => f.write_str("incident_role_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentRoleTaskDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_role_tasks" => Ok(Self::IncidentRoleTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentRoleTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentRoleTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewIncidentRoleTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentStatusPageEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "event"
    ///          ],
    ///          "properties": {
    ///            "event": {
    ///              "description": "The summary of the incident event",
    ///              "type": "string"
    ///            },
    ///            "notify_subscribers": {
    ///              "description": "Notify all status pages subscribers",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "should_tweet": {
    ///              "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "started_at": {
    ///              "description": "When the event started. Defaults to the time of creation.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "status": {
    ///              "description": "The status of the incident event",
    ///              "type": "string",
    ///              "enum": [
    ///                "investigating",
    ///                "identified",
    ///                "monitoring",
    ///                "resolved",
    ///                "scheduled",
    ///                "in_progress",
    ///                "completed"
    ///              ]
    ///            },
    ///            "status_page_id": {
    ///              "description": "Unique ID of the status page you wish to post the event to",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_status_page_events"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentStatusPageEvent {
        pub data: NewIncidentStatusPageEventData,
    }
    impl NewIncidentStatusPageEvent {
        pub fn builder() -> builder::NewIncidentStatusPageEvent {
            Default::default()
        }
    }
    ///`NewIncidentStatusPageEventData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "event"
    ///      ],
    ///      "properties": {
    ///        "event": {
    ///          "description": "The summary of the incident event",
    ///          "type": "string"
    ///        },
    ///        "notify_subscribers": {
    ///          "description": "Notify all status pages subscribers",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "should_tweet": {
    ///          "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "started_at": {
    ///          "description": "When the event started. Defaults to the time of creation.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "status": {
    ///          "description": "The status of the incident event",
    ///          "type": "string",
    ///          "enum": [
    ///            "investigating",
    ///            "identified",
    ///            "monitoring",
    ///            "resolved",
    ///            "scheduled",
    ///            "in_progress",
    ///            "completed"
    ///          ]
    ///        },
    ///        "status_page_id": {
    ///          "description": "Unique ID of the status page you wish to post the event to",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_status_page_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentStatusPageEventData {
        pub attributes: NewIncidentStatusPageEventDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentStatusPageEventDataType,
    }
    impl NewIncidentStatusPageEventData {
        pub fn builder() -> builder::NewIncidentStatusPageEventData {
            Default::default()
        }
    }
    ///`NewIncidentStatusPageEventDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "event"
    ///  ],
    ///  "properties": {
    ///    "event": {
    ///      "description": "The summary of the incident event",
    ///      "type": "string"
    ///    },
    ///    "notify_subscribers": {
    ///      "description": "Notify all status pages subscribers",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "should_tweet": {
    ///      "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "When the event started. Defaults to the time of creation.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident event",
    ///      "type": "string",
    ///      "enum": [
    ///        "investigating",
    ///        "identified",
    ///        "monitoring",
    ///        "resolved",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "status_page_id": {
    ///      "description": "Unique ID of the status page you wish to post the event to",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentStatusPageEventDataAttributes {
        ///The summary of the incident event
        pub event: ::std::string::String,
        ///Notify all status pages subscribers
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_subscribers: ::std::option::Option<bool>,
        ///For Statuspage.io integrated pages auto publishes a tweet for your update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_tweet: ::std::option::Option<bool>,
        ///When the event started. Defaults to the time of creation.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The status of the incident event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<
            NewIncidentStatusPageEventDataAttributesStatus,
        >,
        ///Unique ID of the status page you wish to post the event to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status_page_id: ::std::option::Option<::std::string::String>,
    }
    impl NewIncidentStatusPageEventDataAttributes {
        pub fn builder() -> builder::NewIncidentStatusPageEventDataAttributes {
            Default::default()
        }
    }
    ///The status of the incident event
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident event",
    ///  "type": "string",
    ///  "enum": [
    ///    "investigating",
    ///    "identified",
    ///    "monitoring",
    ///    "resolved",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentStatusPageEventDataAttributesStatus {
        #[serde(rename = "investigating")]
        Investigating,
        #[serde(rename = "identified")]
        Identified,
        #[serde(rename = "monitoring")]
        Monitoring,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for NewIncidentStatusPageEventDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Investigating => f.write_str("investigating"),
                Self::Identified => f.write_str("identified"),
                Self::Monitoring => f.write_str("monitoring"),
                Self::Resolved => f.write_str("resolved"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentStatusPageEventDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "investigating" => Ok(Self::Investigating),
                "identified" => Ok(Self::Identified),
                "monitoring" => Ok(Self::Monitoring),
                "resolved" => Ok(Self::Resolved),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewIncidentStatusPageEventDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentStatusPageEventDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentStatusPageEventDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentStatusPageEventDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_status_page_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentStatusPageEventDataType {
        #[serde(rename = "incident_status_page_events")]
        IncidentStatusPageEvents,
    }
    impl ::std::fmt::Display for NewIncidentStatusPageEventDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentStatusPageEvents => {
                    f.write_str("incident_status_page_events")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentStatusPageEventDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_status_page_events" => Ok(Self::IncidentStatusPageEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentStatusPageEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentStatusPageEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentStatusPageEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "assigned_at",
    ///            "sub_status_id"
    ///          ],
    ///          "properties": {
    ///            "assigned_at": {
    ///              "type": "string"
    ///            },
    ///            "assigned_by_user_id": {
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "sub_status_id": {
    ///              "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_sub_statuses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentSubStatus {
        pub data: NewIncidentSubStatusData,
    }
    impl NewIncidentSubStatus {
        pub fn builder() -> builder::NewIncidentSubStatus {
            Default::default()
        }
    }
    ///`NewIncidentSubStatusData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "assigned_at",
    ///        "sub_status_id"
    ///      ],
    ///      "properties": {
    ///        "assigned_at": {
    ///          "type": "string"
    ///        },
    ///        "assigned_by_user_id": {
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "sub_status_id": {
    ///          "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentSubStatusData {
        pub attributes: NewIncidentSubStatusDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentSubStatusDataType,
    }
    impl NewIncidentSubStatusData {
        pub fn builder() -> builder::NewIncidentSubStatusData {
            Default::default()
        }
    }
    ///`NewIncidentSubStatusDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "assigned_at",
    ///    "sub_status_id"
    ///  ],
    ///  "properties": {
    ///    "assigned_at": {
    ///      "type": "string"
    ///    },
    ///    "assigned_by_user_id": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "sub_status_id": {
    ///      "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentSubStatusDataAttributes {
        pub assigned_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_by_user_id: ::std::option::Option<i64>,
        ///Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.
        pub sub_status_id: ::std::string::String,
    }
    impl NewIncidentSubStatusDataAttributes {
        pub fn builder() -> builder::NewIncidentSubStatusDataAttributes {
            Default::default()
        }
    }
    ///`NewIncidentSubStatusDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentSubStatusDataType {
        #[serde(rename = "incident_sub_statuses")]
        IncidentSubStatuses,
    }
    impl ::std::fmt::Display for NewIncidentSubStatusDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentSubStatuses => f.write_str("incident_sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentSubStatusDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_sub_statuses" => Ok(Self::IncidentSubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewIncidentSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewIncidentSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewIncidentType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the incident type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the incident type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the incident type",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the incident type",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the incident type",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this incident type.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this incident type",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this incident type",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_types"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentType {
        pub data: NewIncidentTypeData,
    }
    impl NewIncidentType {
        pub fn builder() -> builder::NewIncidentType {
            Default::default()
        }
    }
    ///`NewIncidentTypeData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the incident type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the incident type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the incident type",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the incident type",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the incident type",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this incident type.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this incident type",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this incident type",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentTypeData {
        pub attributes: NewIncidentTypeDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewIncidentTypeDataType,
    }
    impl NewIncidentTypeData {
        pub fn builder() -> builder::NewIncidentTypeData {
            Default::default()
        }
    }
    ///`NewIncidentTypeDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the incident type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the incident type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the incident type",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the incident type",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this incident type.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewIncidentTypeDataAttributes {
        ///The hex color of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the incident type
        pub name: ::std::string::String,
        ///Emails to attach to the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this incident type.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewIncidentTypeDataAttributesPropertiesItem>,
        ///Slack Aliases associated with this incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<NewIncidentTypeDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<NewIncidentTypeDataAttributesSlackChannelsItem>,
        >,
    }
    impl NewIncidentTypeDataAttributes {
        pub fn builder() -> builder::NewIncidentTypeDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentTypeDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl NewIncidentTypeDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewIncidentTypeDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`NewIncidentTypeDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentTypeDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl NewIncidentTypeDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::NewIncidentTypeDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`NewIncidentTypeDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewIncidentTypeDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl NewIncidentTypeDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::NewIncidentTypeDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`NewIncidentTypeDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewIncidentTypeDataType {
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for NewIncidentTypeDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for NewIncidentTypeDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewIncidentTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewIncidentTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewIncidentTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewLiveCallRouter`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "country_code",
    ///            "kind",
    ///            "name",
    ///            "paging_targets",
    ///            "phone_number",
    ///            "phone_type",
    ///            "voicemail_greeting"
    ///          ],
    ///          "properties": {
    ///            "alert_urgency_id": {
    ///              "description": "This is used in escalation paths to determine who to page",
    ///              "type": "string"
    ///            },
    ///            "caller_greeting": {
    ///              "description": "The caller greeting message of the live_call_router",
    ///              "type": "string"
    ///            },
    ///            "calling_tree_enabled": {
    ///              "description": "Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected",
    ///              "type": "boolean"
    ///            },
    ///            "calling_tree_prompt": {
    ///              "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///              "type": "string"
    ///            },
    ///            "country_code": {
    ///              "description": "The country code of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "AU",
    ///                "CA",
    ///                "DE",
    ///                "NL",
    ///                "NZ",
    ///                "SE",
    ///                "CH",
    ///                "GB",
    ///                "US"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the live_call_router is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "escalation_level_delay_in_seconds": {
    ///              "description": "This overrides the delay (seconds) in escalation levels",
    ///              "type": "integer"
    ///            },
    ///            "escalation_policy_trigger_params": {
    ///              "type": "object",
    ///              "required": [
    ///                "id",
    ///                "type"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "The ID of notification target",
    ///                  "type": "string"
    ///                },
    ///                "type": {
    ///                  "description": "The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "service",
    ///                    "group",
    ///                    "escalation_policy",
    ///                    "functionality"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "voicemail",
    ///                "live"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the live_call_router",
    ///              "type": "string"
    ///            },
    ///            "paging_targets": {
    ///              "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "alert_urgency_id",
    ///                  "id",
    ///                  "type"
    ///                ],
    ///                "properties": {
    ///                  "alert_urgency_id": {
    ///                    "description": "This is used in escalation paths to determine who to page",
    ///                    "type": "string"
    ///                  },
    ///                  "id": {
    ///                    "description": "The ID of paging target",
    ///                    "type": "string"
    ///                  },
    ///                  "type": {
    ///                    "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "service",
    ///                      "team",
    ///                      "escalation_policy",
    ///                      "functionality"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "phone_number": {
    ///              "description": "You can select a phone number using [generate_phone_number](#//api/v1/live_call_routers/generate_phone_number) API and pass that phone number here to register",
    ///              "type": "string"
    ///            },
    ///            "phone_type": {
    ///              "description": "The phone type of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "local",
    ///                "toll_free",
    ///                "mobile"
    ///              ]
    ///            },
    ///            "sent_to_voicemail_delay": {
    ///              "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///              "type": "integer"
    ///            },
    ///            "should_auto_resolve_alert_on_call_end": {
    ///              "description": "This overrides the delay (seconds) in escalation levels",
    ///              "type": "boolean"
    ///            },
    ///            "should_redirect_to_voicemail_on_no_answer": {
    ///              "description": "This prompts the caller to choose voicemail or connect live",
    ///              "type": "boolean"
    ///            },
    ///            "voicemail_greeting": {
    ///              "description": "The voicemail greeting of the live_call_router",
    ///              "type": "string"
    ///            },
    ///            "waiting_music_url": {
    ///              "description": "The waiting music URL of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "live_call_routers"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewLiveCallRouter {
        pub data: NewLiveCallRouterData,
    }
    impl NewLiveCallRouter {
        pub fn builder() -> builder::NewLiveCallRouter {
            Default::default()
        }
    }
    ///`NewLiveCallRouterData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "country_code",
    ///        "kind",
    ///        "name",
    ///        "paging_targets",
    ///        "phone_number",
    ///        "phone_type",
    ///        "voicemail_greeting"
    ///      ],
    ///      "properties": {
    ///        "alert_urgency_id": {
    ///          "description": "This is used in escalation paths to determine who to page",
    ///          "type": "string"
    ///        },
    ///        "caller_greeting": {
    ///          "description": "The caller greeting message of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "calling_tree_enabled": {
    ///          "description": "Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected",
    ///          "type": "boolean"
    ///        },
    ///        "calling_tree_prompt": {
    ///          "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///          "type": "string"
    ///        },
    ///        "country_code": {
    ///          "description": "The country code of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "AU",
    ///            "CA",
    ///            "DE",
    ///            "NL",
    ///            "NZ",
    ///            "SE",
    ///            "CH",
    ///            "GB",
    ///            "US"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the live_call_router is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "escalation_level_delay_in_seconds": {
    ///          "description": "This overrides the delay (seconds) in escalation levels",
    ///          "type": "integer"
    ///        },
    ///        "escalation_policy_trigger_params": {
    ///          "type": "object",
    ///          "required": [
    ///            "id",
    ///            "type"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "The ID of notification target",
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "description": "The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///              "type": "string",
    ///              "enum": [
    ///                "service",
    ///                "group",
    ///                "escalation_policy",
    ///                "functionality"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "voicemail",
    ///            "live"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "paging_targets": {
    ///          "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "alert_urgency_id",
    ///              "id",
    ///              "type"
    ///            ],
    ///            "properties": {
    ///              "alert_urgency_id": {
    ///                "description": "This is used in escalation paths to determine who to page",
    ///                "type": "string"
    ///              },
    ///              "id": {
    ///                "description": "The ID of paging target",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service",
    ///                  "team",
    ///                  "escalation_policy",
    ///                  "functionality"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "phone_number": {
    ///          "description": "You can select a phone number using [generate_phone_number](#//api/v1/live_call_routers/generate_phone_number) API and pass that phone number here to register",
    ///          "type": "string"
    ///        },
    ///        "phone_type": {
    ///          "description": "The phone type of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "local",
    ///            "toll_free",
    ///            "mobile"
    ///          ]
    ///        },
    ///        "sent_to_voicemail_delay": {
    ///          "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///          "type": "integer"
    ///        },
    ///        "should_auto_resolve_alert_on_call_end": {
    ///          "description": "This overrides the delay (seconds) in escalation levels",
    ///          "type": "boolean"
    ///        },
    ///        "should_redirect_to_voicemail_on_no_answer": {
    ///          "description": "This prompts the caller to choose voicemail or connect live",
    ///          "type": "boolean"
    ///        },
    ///        "voicemail_greeting": {
    ///          "description": "The voicemail greeting of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "waiting_music_url": {
    ///          "description": "The waiting music URL of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "live_call_routers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewLiveCallRouterData {
        pub attributes: NewLiveCallRouterDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewLiveCallRouterDataType,
    }
    impl NewLiveCallRouterData {
        pub fn builder() -> builder::NewLiveCallRouterData {
            Default::default()
        }
    }
    ///`NewLiveCallRouterDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "country_code",
    ///    "kind",
    ///    "name",
    ///    "paging_targets",
    ///    "phone_number",
    ///    "phone_type",
    ///    "voicemail_greeting"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "This is used in escalation paths to determine who to page",
    ///      "type": "string"
    ///    },
    ///    "caller_greeting": {
    ///      "description": "The caller greeting message of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "calling_tree_enabled": {
    ///      "description": "Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected",
    ///      "type": "boolean"
    ///    },
    ///    "calling_tree_prompt": {
    ///      "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///      "type": "string"
    ///    },
    ///    "country_code": {
    ///      "description": "The country code of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "AU",
    ///        "CA",
    ///        "DE",
    ///        "NL",
    ///        "NZ",
    ///        "SE",
    ///        "CH",
    ///        "GB",
    ///        "US"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the live_call_router is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "escalation_level_delay_in_seconds": {
    ///      "description": "This overrides the delay (seconds) in escalation levels",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_trigger_params": {
    ///      "type": "object",
    ///      "required": [
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "The ID of notification target",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "description": "The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "service",
    ///            "group",
    ///            "escalation_policy",
    ///            "functionality"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "voicemail",
    ///        "live"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "paging_targets": {
    ///      "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "alert_urgency_id",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_id": {
    ///            "description": "This is used in escalation paths to determine who to page",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "The ID of paging target",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "service",
    ///              "team",
    ///              "escalation_policy",
    ///              "functionality"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "phone_number": {
    ///      "description": "You can select a phone number using [generate_phone_number](#//api/v1/live_call_routers/generate_phone_number) API and pass that phone number here to register",
    ///      "type": "string"
    ///    },
    ///    "phone_type": {
    ///      "description": "The phone type of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "local",
    ///        "toll_free",
    ///        "mobile"
    ///      ]
    ///    },
    ///    "sent_to_voicemail_delay": {
    ///      "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///      "type": "integer"
    ///    },
    ///    "should_auto_resolve_alert_on_call_end": {
    ///      "description": "This overrides the delay (seconds) in escalation levels",
    ///      "type": "boolean"
    ///    },
    ///    "should_redirect_to_voicemail_on_no_answer": {
    ///      "description": "This prompts the caller to choose voicemail or connect live",
    ///      "type": "boolean"
    ///    },
    ///    "voicemail_greeting": {
    ///      "description": "The voicemail greeting of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "waiting_music_url": {
    ///      "description": "The waiting music URL of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewLiveCallRouterDataAttributes {
        ///This is used in escalation paths to determine who to page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The caller greeting message of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub caller_greeting: ::std::option::Option<::std::string::String>,
        ///Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calling_tree_enabled: ::std::option::Option<bool>,
        ///The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calling_tree_prompt: ::std::option::Option<::std::string::String>,
        ///The country code of the live_call_router
        pub country_code: NewLiveCallRouterDataAttributesCountryCode,
        ///Whether the live_call_router is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///This overrides the delay (seconds) in escalation levels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_level_delay_in_seconds: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_trigger_params: ::std::option::Option<
            NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
        >,
        ///The kind of the live_call_router
        pub kind: NewLiveCallRouterDataAttributesKind,
        ///The name of the live_call_router
        pub name: ::std::string::String,
        ///Paging targets that callers can select from when this live call router is configured as a phone tree.
        pub paging_targets: ::std::vec::Vec<
            NewLiveCallRouterDataAttributesPagingTargetsItem,
        >,
        ///You can select a phone number using [generate_phone_number](#//api/v1/live_call_routers/generate_phone_number) API and pass that phone number here to register
        pub phone_number: ::std::string::String,
        ///The phone type of the live_call_router
        pub phone_type: NewLiveCallRouterDataAttributesPhoneType,
        ///The delay (seconds) after which the caller in redirected to voicemail
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sent_to_voicemail_delay: ::std::option::Option<i64>,
        ///This overrides the delay (seconds) in escalation levels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_auto_resolve_alert_on_call_end: ::std::option::Option<bool>,
        ///This prompts the caller to choose voicemail or connect live
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_redirect_to_voicemail_on_no_answer: ::std::option::Option<bool>,
        ///The voicemail greeting of the live_call_router
        pub voicemail_greeting: ::std::string::String,
        ///The waiting music URL of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub waiting_music_url: ::std::option::Option<
            NewLiveCallRouterDataAttributesWaitingMusicUrl,
        >,
    }
    impl NewLiveCallRouterDataAttributes {
        pub fn builder() -> builder::NewLiveCallRouterDataAttributes {
            Default::default()
        }
    }
    ///The country code of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The country code of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "AU",
    ///    "CA",
    ///    "DE",
    ///    "NL",
    ///    "NZ",
    ///    "SE",
    ///    "CH",
    ///    "GB",
    ///    "US"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataAttributesCountryCode {
        #[serde(rename = "AU")]
        Au,
        #[serde(rename = "CA")]
        Ca,
        #[serde(rename = "DE")]
        De,
        #[serde(rename = "NL")]
        Nl,
        #[serde(rename = "NZ")]
        Nz,
        #[serde(rename = "SE")]
        Se,
        #[serde(rename = "CH")]
        Ch,
        #[serde(rename = "GB")]
        Gb,
        #[serde(rename = "US")]
        Us,
    }
    impl ::std::fmt::Display for NewLiveCallRouterDataAttributesCountryCode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Au => f.write_str("AU"),
                Self::Ca => f.write_str("CA"),
                Self::De => f.write_str("DE"),
                Self::Nl => f.write_str("NL"),
                Self::Nz => f.write_str("NZ"),
                Self::Se => f.write_str("SE"),
                Self::Ch => f.write_str("CH"),
                Self::Gb => f.write_str("GB"),
                Self::Us => f.write_str("US"),
            }
        }
    }
    impl ::std::str::FromStr for NewLiveCallRouterDataAttributesCountryCode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AU" => Ok(Self::Au),
                "CA" => Ok(Self::Ca),
                "DE" => Ok(Self::De),
                "NL" => Ok(Self::Nl),
                "NZ" => Ok(Self::Nz),
                "SE" => Ok(Self::Se),
                "CH" => Ok(Self::Ch),
                "GB" => Ok(Self::Gb),
                "US" => Ok(Self::Us),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewLiveCallRouterDataAttributesCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewLiveCallRouterDataAttributesCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewLiveCallRouterDataAttributesCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of notification target",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "group",
    ///        "escalation_policy",
    ///        "functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
        ///The ID of notification target
        pub id: ::std::string::String,
        ///The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.
        #[serde(rename = "type")]
        pub type_: NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType,
    }
    impl NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
        pub fn builder() -> builder::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            Default::default()
        }
    }
    ///The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "group",
    ///    "escalation_policy",
    ///    "functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "escalation_policy")]
        EscalationPolicy,
        #[serde(rename = "functionality")]
        Functionality,
    }
    impl ::std::fmt::Display
    for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Group => f.write_str("group"),
                Self::EscalationPolicy => f.write_str("escalation_policy"),
                Self::Functionality => f.write_str("functionality"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "group" => Ok(Self::Group),
                "escalation_policy" => Ok(Self::EscalationPolicy),
                "functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "voicemail",
    ///    "live"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataAttributesKind {
        #[serde(rename = "voicemail")]
        Voicemail,
        #[serde(rename = "live")]
        Live,
    }
    impl ::std::fmt::Display for NewLiveCallRouterDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Voicemail => f.write_str("voicemail"),
                Self::Live => f.write_str("live"),
            }
        }
    }
    impl ::std::str::FromStr for NewLiveCallRouterDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "voicemail" => Ok(Self::Voicemail),
                "live" => Ok(Self::Live),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewLiveCallRouterDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewLiveCallRouterDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewLiveCallRouterDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewLiveCallRouterDataAttributesPagingTargetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_urgency_id",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "This is used in escalation paths to determine who to page",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "The ID of paging target",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "team",
    ///        "escalation_policy",
    ///        "functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewLiveCallRouterDataAttributesPagingTargetsItem {
        ///This is used in escalation paths to determine who to page
        pub alert_urgency_id: ::std::string::String,
        ///The ID of paging target
        pub id: ::std::string::String,
        ///The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.
        #[serde(rename = "type")]
        pub type_: NewLiveCallRouterDataAttributesPagingTargetsItemType,
    }
    impl NewLiveCallRouterDataAttributesPagingTargetsItem {
        pub fn builder() -> builder::NewLiveCallRouterDataAttributesPagingTargetsItem {
            Default::default()
        }
    }
    ///The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "team",
    ///    "escalation_policy",
    ///    "functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataAttributesPagingTargetsItemType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "escalation_policy")]
        EscalationPolicy,
        #[serde(rename = "functionality")]
        Functionality,
    }
    impl ::std::fmt::Display for NewLiveCallRouterDataAttributesPagingTargetsItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
                Self::EscalationPolicy => f.write_str("escalation_policy"),
                Self::Functionality => f.write_str("functionality"),
            }
        }
    }
    impl ::std::str::FromStr for NewLiveCallRouterDataAttributesPagingTargetsItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                "escalation_policy" => Ok(Self::EscalationPolicy),
                "functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewLiveCallRouterDataAttributesPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewLiveCallRouterDataAttributesPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewLiveCallRouterDataAttributesPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The phone type of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The phone type of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "local",
    ///    "toll_free",
    ///    "mobile"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataAttributesPhoneType {
        #[serde(rename = "local")]
        Local,
        #[serde(rename = "toll_free")]
        TollFree,
        #[serde(rename = "mobile")]
        Mobile,
    }
    impl ::std::fmt::Display for NewLiveCallRouterDataAttributesPhoneType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Local => f.write_str("local"),
                Self::TollFree => f.write_str("toll_free"),
                Self::Mobile => f.write_str("mobile"),
            }
        }
    }
    impl ::std::str::FromStr for NewLiveCallRouterDataAttributesPhoneType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "local" => Ok(Self::Local),
                "toll_free" => Ok(Self::TollFree),
                "mobile" => Ok(Self::Mobile),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewLiveCallRouterDataAttributesPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewLiveCallRouterDataAttributesPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewLiveCallRouterDataAttributesPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The waiting music URL of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The waiting music URL of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataAttributesWaitingMusicUrl {
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3,
        #[serde(rename = "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3")]
        HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3,
    }
    impl ::std::fmt::Display for NewLiveCallRouterDataAttributesWaitingMusicUrl {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3",
                    )
                }
            }
        }
    }
    impl ::std::str::FromStr for NewLiveCallRouterDataAttributesWaitingMusicUrl {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3)
                }
                "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3)
                }
                "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3)
                }
                "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewLiveCallRouterDataAttributesWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewLiveCallRouterDataAttributesWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewLiveCallRouterDataAttributesWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewLiveCallRouterDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "live_call_routers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewLiveCallRouterDataType {
        #[serde(rename = "live_call_routers")]
        LiveCallRouters,
    }
    impl ::std::fmt::Display for NewLiveCallRouterDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LiveCallRouters => f.write_str("live_call_routers"),
            }
        }
    }
    impl ::std::str::FromStr for NewLiveCallRouterDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "live_call_routers" => Ok(Self::LiveCallRouters),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewLiveCallRouterDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewLiveCallRouterDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewLiveCallRouterDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallPayReport`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "end_date",
    ///            "start_date"
    ///          ],
    ///          "properties": {
    ///            "end_date": {
    ///              "description": "The end date for the report period.",
    ///              "type": "string",
    ///              "format": "date"
    ///            },
    ///            "schedule_ids": {
    ///              "description": "List of schedule UUIDs to scope the report.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "start_date": {
    ///              "description": "The start date for the report period.",
    ///              "type": "string",
    ///              "format": "date"
    ///            },
    ///            "time_zone": {
    ///              "description": "IANA timezone used to compute day and weekend boundaries. Defaults to the team's timezone.",
    ///              "type": "string"
    ///            },
    ///            "use_responders_time_zone": {
    ///              "description": "When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.",
    ///              "type": "boolean"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_pay_reports"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOnCallPayReport {
        pub data: NewOnCallPayReportData,
    }
    impl NewOnCallPayReport {
        pub fn builder() -> builder::NewOnCallPayReport {
            Default::default()
        }
    }
    ///`NewOnCallPayReportData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "end_date",
    ///        "start_date"
    ///      ],
    ///      "properties": {
    ///        "end_date": {
    ///          "description": "The end date for the report period.",
    ///          "type": "string",
    ///          "format": "date"
    ///        },
    ///        "schedule_ids": {
    ///          "description": "List of schedule UUIDs to scope the report.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "start_date": {
    ///          "description": "The start date for the report period.",
    ///          "type": "string",
    ///          "format": "date"
    ///        },
    ///        "time_zone": {
    ///          "description": "IANA timezone used to compute day and weekend boundaries. Defaults to the team's timezone.",
    ///          "type": "string"
    ///        },
    ///        "use_responders_time_zone": {
    ///          "description": "When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.",
    ///          "type": "boolean"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_pay_reports"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOnCallPayReportData {
        pub attributes: NewOnCallPayReportDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewOnCallPayReportDataType,
    }
    impl NewOnCallPayReportData {
        pub fn builder() -> builder::NewOnCallPayReportData {
            Default::default()
        }
    }
    ///`NewOnCallPayReportDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "end_date",
    ///    "start_date"
    ///  ],
    ///  "properties": {
    ///    "end_date": {
    ///      "description": "The end date for the report period.",
    ///      "type": "string",
    ///      "format": "date"
    ///    },
    ///    "schedule_ids": {
    ///      "description": "List of schedule UUIDs to scope the report.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "start_date": {
    ///      "description": "The start date for the report period.",
    ///      "type": "string",
    ///      "format": "date"
    ///    },
    ///    "time_zone": {
    ///      "description": "IANA timezone used to compute day and weekend boundaries. Defaults to the team's timezone.",
    ///      "type": "string"
    ///    },
    ///    "use_responders_time_zone": {
    ///      "description": "When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.",
    ///      "type": "boolean"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewOnCallPayReportDataAttributes {
        ///The end date for the report period.
        pub end_date: ::chrono::naive::NaiveDate,
        ///List of schedule UUIDs to scope the report.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedule_ids: ::std::vec::Vec<::std::string::String>,
        ///The start date for the report period.
        pub start_date: ::chrono::naive::NaiveDate,
        ///IANA timezone used to compute day and weekend boundaries. Defaults to the team's timezone.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub use_responders_time_zone: ::std::option::Option<bool>,
    }
    impl NewOnCallPayReportDataAttributes {
        pub fn builder() -> builder::NewOnCallPayReportDataAttributes {
            Default::default()
        }
    }
    ///`NewOnCallPayReportDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_pay_reports"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallPayReportDataType {
        #[serde(rename = "on_call_pay_reports")]
        OnCallPayReports,
    }
    impl ::std::fmt::Display for NewOnCallPayReportDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallPayReports => f.write_str("on_call_pay_reports"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallPayReportDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_pay_reports" => Ok(Self::OnCallPayReports),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewOnCallPayReportDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewOnCallPayReportDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewOnCallPayReportDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "alert_fields_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_groups_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_routing_rules_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_sources_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_urgency_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alerts_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "update",
    ///                  "read",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "api_keys_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "audits_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "catalogs_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "contacts_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "read"
    ///                ]
    ///              }
    ///            },
    ///            "escalation_policies_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "groups_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "heartbeats_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "integrations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "invitations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "live_call_routing_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The role name.",
    ///              "type": "string"
    ///            },
    ///            "on_call_readiness_report_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "read"
    ///                ]
    ///              }
    ///            },
    ///            "on_call_roles_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "schedule_override_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "update"
    ///                ]
    ///              }
    ///            },
    ///            "schedules_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "services_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "system_role": {
    ///              "description": "The kind of role (user and custom type roles are only editable)",
    ///              "default": "custom",
    ///              "type": "string",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "admin",
    ///                  "user",
    ///                  "custom",
    ///                  "observer",
    ///                  "no_access"
    ///                ]
    ///              }
    ///            },
    ///            "webhooks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "workflows_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOnCallRole {
        pub data: NewOnCallRoleData,
    }
    impl NewOnCallRole {
        pub fn builder() -> builder::NewOnCallRole {
            Default::default()
        }
    }
    ///`NewOnCallRoleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "alert_fields_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_groups_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_routing_rules_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_sources_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_urgency_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alerts_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "update",
    ///              "read",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "api_keys_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "audits_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "catalogs_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "contacts_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "read"
    ///            ]
    ///          }
    ///        },
    ///        "escalation_policies_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "groups_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "heartbeats_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "integrations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "invitations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "live_call_routing_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The role name.",
    ///          "type": "string"
    ///        },
    ///        "on_call_readiness_report_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "read"
    ///            ]
    ///          }
    ///        },
    ///        "on_call_roles_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "schedule_override_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "update"
    ///            ]
    ///          }
    ///        },
    ///        "schedules_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "services_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "system_role": {
    ///          "description": "The kind of role (user and custom type roles are only editable)",
    ///          "default": "custom",
    ///          "type": "string",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "admin",
    ///              "user",
    ///              "custom",
    ///              "observer",
    ///              "no_access"
    ///            ]
    ///          }
    ///        },
    ///        "webhooks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "workflows_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOnCallRoleData {
        pub attributes: NewOnCallRoleDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewOnCallRoleDataType,
    }
    impl NewOnCallRoleData {
        pub fn builder() -> builder::NewOnCallRoleData {
            Default::default()
        }
    }
    ///`NewOnCallRoleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alert_fields_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_routing_rules_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_sources_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_urgency_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alerts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update",
    ///          "read",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "api_keys_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "audits_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "catalogs_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "contacts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "escalation_policies_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "heartbeats_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "integrations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "invitations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "live_call_routing_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The role name.",
    ///      "type": "string"
    ///    },
    ///    "on_call_readiness_report_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "on_call_roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "schedule_override_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update"
    ///        ]
    ///      }
    ///    },
    ///    "schedules_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "services_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "system_role": {
    ///      "description": "The kind of role (user and custom type roles are only editable)",
    ///      "default": "custom",
    ///      "type": "string",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "admin",
    ///          "user",
    ///          "custom",
    ///          "observer",
    ///          "no_access"
    ///        ]
    ///      }
    ///    },
    ///    "webhooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "workflows_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewOnCallRoleDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_fields_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAlertFieldsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_groups_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAlertGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_routing_rules_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_sources_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAlertSourcesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_urgency_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAlertsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub api_keys_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesApiKeysPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub audits_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesAuditsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub catalogs_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesCatalogsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub contacts_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesContactsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub escalation_policies_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub heartbeats_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesHeartbeatsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub integrations_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesIntegrationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub invitations_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesInvitationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub live_call_routing_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem,
        >,
        ///The role name.
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub on_call_readiness_report_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub on_call_roles_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesOnCallRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedule_override_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesScheduleOverridePermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedules_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesSchedulesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesServicesPermissionsItem,
        >,
        ///The kind of role (user and custom type roles are only editable)
        #[serde(default = "defaults::new_on_call_role_data_attributes_system_role")]
        pub system_role: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub webhooks_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesWebhooksPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub workflows_permissions: ::std::vec::Vec<
            NewOnCallRoleDataAttributesWorkflowsPermissionsItem,
        >,
    }
    impl NewOnCallRoleDataAttributes {
        pub fn builder() -> builder::NewOnCallRoleDataAttributes {
            Default::default()
        }
    }
    ///`NewOnCallRoleDataAttributesAlertFieldsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesAlertGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesAlertSourcesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesAlertsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update",
    ///    "read",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAlertsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesAlertsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
                Self::Read => f.write_str("read"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesAlertsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                "read" => Ok(Self::Read),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesApiKeysPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesApiKeysPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesApiKeysPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesAuditsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesAuditsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesAuditsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesAuditsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesCatalogsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesCatalogsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesCatalogsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesContactsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesContactsPermissionsItem {
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesContactsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesContactsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesHeartbeatsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesIntegrationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesIntegrationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesIntegrationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesInvitationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesInvitationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesInvitationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display
    for NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesOnCallRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesScheduleOverridePermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
    }
    impl ::std::fmt::Display
    for NewOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesSchedulesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesSchedulesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesSchedulesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesServicesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesServicesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesServicesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesServicesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesWebhooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesWebhooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesWebhooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataAttributesWorkflowsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataAttributesWorkflowsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataAttributesWorkflowsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallRoleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallRoleDataType {
        #[serde(rename = "on_call_roles")]
        OnCallRoles,
    }
    impl ::std::fmt::Display for NewOnCallRoleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallRoles => f.write_str("on_call_roles"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallRoleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_roles" => Ok(Self::OnCallRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewOnCallRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewOnCallRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewOnCallRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallShadow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "ends_at",
    ///            "shadow_user_id",
    ///            "shadowable_id",
    ///            "shadowable_type",
    ///            "starts_at"
    ///          ],
    ///          "properties": {
    ///            "ends_at": {
    ///              "description": "End datetime for shadow shift",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "shadow_user_id": {
    ///              "description": "Which user the shadow shift belongs to.",
    ///              "type": "integer"
    ///            },
    ///            "shadowable_id": {
    ///              "description": "ID of schedule or user the shadow user is shadowing",
    ///              "type": "string"
    ///            },
    ///            "shadowable_type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "User",
    ///                "Schedule"
    ///              ]
    ///            },
    ///            "starts_at": {
    ///              "description": "Start datetime of shadow shift",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_shadows"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOnCallShadow {
        pub data: NewOnCallShadowData,
    }
    impl NewOnCallShadow {
        pub fn builder() -> builder::NewOnCallShadow {
            Default::default()
        }
    }
    ///`NewOnCallShadowData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "ends_at",
    ///        "shadow_user_id",
    ///        "shadowable_id",
    ///        "shadowable_type",
    ///        "starts_at"
    ///      ],
    ///      "properties": {
    ///        "ends_at": {
    ///          "description": "End datetime for shadow shift",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "shadow_user_id": {
    ///          "description": "Which user the shadow shift belongs to.",
    ///          "type": "integer"
    ///        },
    ///        "shadowable_id": {
    ///          "description": "ID of schedule or user the shadow user is shadowing",
    ///          "type": "string"
    ///        },
    ///        "shadowable_type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "User",
    ///            "Schedule"
    ///          ]
    ///        },
    ///        "starts_at": {
    ///          "description": "Start datetime of shadow shift",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_shadows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOnCallShadowData {
        pub attributes: NewOnCallShadowDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewOnCallShadowDataType,
    }
    impl NewOnCallShadowData {
        pub fn builder() -> builder::NewOnCallShadowData {
            Default::default()
        }
    }
    ///`NewOnCallShadowDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ends_at",
    ///    "shadow_user_id",
    ///    "shadowable_id",
    ///    "shadowable_type",
    ///    "starts_at"
    ///  ],
    ///  "properties": {
    ///    "ends_at": {
    ///      "description": "End datetime for shadow shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "shadow_user_id": {
    ///      "description": "Which user the shadow shift belongs to.",
    ///      "type": "integer"
    ///    },
    ///    "shadowable_id": {
    ///      "description": "ID of schedule or user the shadow user is shadowing",
    ///      "type": "string"
    ///    },
    ///    "shadowable_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Schedule"
    ///      ]
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of shadow shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewOnCallShadowDataAttributes {
        ///End datetime for shadow shift
        pub ends_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Which user the shadow shift belongs to.
        pub shadow_user_id: i64,
        ///ID of schedule or user the shadow user is shadowing
        pub shadowable_id: ::std::string::String,
        pub shadowable_type: NewOnCallShadowDataAttributesShadowableType,
        ///Start datetime of shadow shift
        pub starts_at: ::chrono::DateTime<::chrono::offset::Utc>,
    }
    impl NewOnCallShadowDataAttributes {
        pub fn builder() -> builder::NewOnCallShadowDataAttributes {
            Default::default()
        }
    }
    ///`NewOnCallShadowDataAttributesShadowableType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Schedule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallShadowDataAttributesShadowableType {
        User,
        Schedule,
    }
    impl ::std::fmt::Display for NewOnCallShadowDataAttributesShadowableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Schedule => f.write_str("Schedule"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallShadowDataAttributesShadowableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Schedule" => Ok(Self::Schedule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewOnCallShadowDataAttributesShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewOnCallShadowDataAttributesShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewOnCallShadowDataAttributesShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOnCallShadowDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_shadows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOnCallShadowDataType {
        #[serde(rename = "on_call_shadows")]
        OnCallShadows,
    }
    impl ::std::fmt::Display for NewOnCallShadowDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallShadows => f.write_str("on_call_shadows"),
            }
        }
    }
    impl ::std::str::FromStr for NewOnCallShadowDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_shadows" => Ok(Self::OnCallShadows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewOnCallShadowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewOnCallShadowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewOnCallShadowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewOverrideShift`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "ends_at",
    ///            "starts_at",
    ///            "user_id"
    ///          ],
    ///          "properties": {
    ///            "ends_at": {
    ///              "description": "End datetime of override shift",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "starts_at": {
    ///              "description": "Start datetime of override shift",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "user_id": {
    ///              "description": "Override shift user",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "shifts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOverrideShift {
        pub data: NewOverrideShiftData,
    }
    impl NewOverrideShift {
        pub fn builder() -> builder::NewOverrideShift {
            Default::default()
        }
    }
    ///`NewOverrideShiftData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "ends_at",
    ///        "starts_at",
    ///        "user_id"
    ///      ],
    ///      "properties": {
    ///        "ends_at": {
    ///          "description": "End datetime of override shift",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "starts_at": {
    ///          "description": "Start datetime of override shift",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "user_id": {
    ///          "description": "Override shift user",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shifts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewOverrideShiftData {
        pub attributes: NewOverrideShiftDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewOverrideShiftDataType,
    }
    impl NewOverrideShiftData {
        pub fn builder() -> builder::NewOverrideShiftData {
            Default::default()
        }
    }
    ///`NewOverrideShiftDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ends_at",
    ///    "starts_at",
    ///    "user_id"
    ///  ],
    ///  "properties": {
    ///    "ends_at": {
    ///      "description": "End datetime of override shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of override shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "user_id": {
    ///      "description": "Override shift user",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewOverrideShiftDataAttributes {
        ///End datetime of override shift
        pub ends_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Start datetime of override shift
        pub starts_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Override shift user
        pub user_id: i64,
    }
    impl NewOverrideShiftDataAttributes {
        pub fn builder() -> builder::NewOverrideShiftDataAttributes {
            Default::default()
        }
    }
    ///`NewOverrideShiftDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shifts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewOverrideShiftDataType {
        #[serde(rename = "shifts")]
        Shifts,
    }
    impl ::std::fmt::Display for NewOverrideShiftDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Shifts => f.write_str("shifts"),
            }
        }
    }
    impl ::std::str::FromStr for NewOverrideShiftDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shifts" => Ok(Self::Shifts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewOverrideShiftDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewOverrideShiftDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewOverrideShiftDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewPlaybook`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "title"
    ///          ],
    ///          "properties": {
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "external_url": {
    ///              "description": "The external url of the playbook",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "functionality_ids": {
    ///              "description": "The Functionality IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "description": "The Team IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_type_ids": {
    ///              "description": "The Incident Type IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_ids": {
    ///              "description": "The Severity IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the playbook",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the playbook",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "playbooks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPlaybook {
        pub data: NewPlaybookData,
    }
    impl NewPlaybook {
        pub fn builder() -> builder::NewPlaybook {
            Default::default()
        }
    }
    ///`NewPlaybookData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "external_url": {
    ///          "description": "The external url of the playbook",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "functionality_ids": {
    ///          "description": "The Functionality IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "description": "The Team IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_type_ids": {
    ///          "description": "The Incident Type IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_ids": {
    ///          "description": "The Severity IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the playbook",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the playbook",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbooks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPlaybookData {
        pub attributes: NewPlaybookDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewPlaybookDataType,
    }
    impl NewPlaybookData {
        pub fn builder() -> builder::NewPlaybookData {
            Default::default()
        }
    }
    ///`NewPlaybookDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_url": {
    ///      "description": "The external url of the playbook",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "The Severity IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the playbook",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the playbook",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewPlaybookDataAttributes {
        ///The Environment IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The external url of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The Functionality IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Team IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Incident Type IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Service IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Severity IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The summary of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///The title of the playbook
        pub title: ::std::string::String,
    }
    impl NewPlaybookDataAttributes {
        pub fn builder() -> builder::NewPlaybookDataAttributes {
            Default::default()
        }
    }
    ///`NewPlaybookDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbooks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewPlaybookDataType {
        #[serde(rename = "playbooks")]
        Playbooks,
    }
    impl ::std::fmt::Display for NewPlaybookDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Playbooks => f.write_str("playbooks"),
            }
        }
    }
    impl ::std::str::FromStr for NewPlaybookDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbooks" => Ok(Self::Playbooks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewPlaybookDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewPlaybookDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewPlaybookDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewPlaybookTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "task"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the task",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "The position of the task",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "task": {
    ///              "description": "The task of the task",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "playbook_tasks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPlaybookTask {
        pub data: NewPlaybookTaskData,
    }
    impl NewPlaybookTask {
        pub fn builder() -> builder::NewPlaybookTask {
            Default::default()
        }
    }
    ///`NewPlaybookTaskData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "task"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the task",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "The position of the task",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "task": {
    ///          "description": "The task of the task",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbook_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPlaybookTaskData {
        pub attributes: NewPlaybookTaskDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewPlaybookTaskDataType,
    }
    impl NewPlaybookTaskData {
        pub fn builder() -> builder::NewPlaybookTaskData {
            Default::default()
        }
    }
    ///`NewPlaybookTaskDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "task"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the task",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of the task",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "task": {
    ///      "description": "The task of the task",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewPlaybookTaskDataAttributes {
        ///The description of the task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The position of the task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The task of the task
        pub task: ::std::string::String,
    }
    impl NewPlaybookTaskDataAttributes {
        pub fn builder() -> builder::NewPlaybookTaskDataAttributes {
            Default::default()
        }
    }
    ///`NewPlaybookTaskDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbook_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewPlaybookTaskDataType {
        #[serde(rename = "playbook_tasks")]
        PlaybookTasks,
    }
    impl ::std::fmt::Display for NewPlaybookTaskDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PlaybookTasks => f.write_str("playbook_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for NewPlaybookTaskDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbook_tasks" => Ok(Self::PlaybookTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewPlaybookTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewPlaybookTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewPlaybookTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewPostMortemTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "content": {
    ///              "description": "The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.",
    ///              "type": "string"
    ///            },
    ///            "default": {
    ///              "description": "Default selected template when editing a postmortem",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "format": {
    ///              "description": "The format of the input",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "html",
    ///                "markdown"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the postmortem template",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "post_mortem_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPostMortemTemplate {
        pub data: NewPostMortemTemplateData,
    }
    impl NewPostMortemTemplate {
        pub fn builder() -> builder::NewPostMortemTemplate {
            Default::default()
        }
    }
    ///`NewPostMortemTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "content": {
    ///          "description": "The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.",
    ///          "type": "string"
    ///        },
    ///        "default": {
    ///          "description": "Default selected template when editing a postmortem",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "format": {
    ///          "description": "The format of the input",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "html",
    ///            "markdown"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the postmortem template",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "post_mortem_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPostMortemTemplateData {
        pub attributes: NewPostMortemTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewPostMortemTemplateDataType,
    }
    impl NewPostMortemTemplateData {
        pub fn builder() -> builder::NewPostMortemTemplateData {
            Default::default()
        }
    }
    ///`NewPostMortemTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "description": "Default selected template when editing a postmortem",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "format": {
    ///      "description": "The format of the input",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "html",
    ///        "markdown"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the postmortem template",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewPostMortemTemplateDataAttributes {
        ///The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///Default selected template when editing a postmortem
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The format of the input
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub format: ::std::option::Option<NewPostMortemTemplateDataAttributesFormat>,
        ///The name of the postmortem template
        pub name: ::std::string::String,
    }
    impl NewPostMortemTemplateDataAttributes {
        pub fn builder() -> builder::NewPostMortemTemplateDataAttributes {
            Default::default()
        }
    }
    ///The format of the input
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The format of the input",
    ///  "type": "string",
    ///  "enum": [
    ///    "html",
    ///    "markdown"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewPostMortemTemplateDataAttributesFormat {
        #[serde(rename = "html")]
        Html,
        #[serde(rename = "markdown")]
        Markdown,
    }
    impl ::std::fmt::Display for NewPostMortemTemplateDataAttributesFormat {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Html => f.write_str("html"),
                Self::Markdown => f.write_str("markdown"),
            }
        }
    }
    impl ::std::str::FromStr for NewPostMortemTemplateDataAttributesFormat {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "html" => Ok(Self::Html),
                "markdown" => Ok(Self::Markdown),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewPostMortemTemplateDataAttributesFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewPostMortemTemplateDataAttributesFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewPostMortemTemplateDataAttributesFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewPostMortemTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "post_mortem_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewPostMortemTemplateDataType {
        #[serde(rename = "post_mortem_templates")]
        PostMortemTemplates,
    }
    impl ::std::fmt::Display for NewPostMortemTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PostMortemTemplates => f.write_str("post_mortem_templates"),
            }
        }
    }
    impl ::std::str::FromStr for NewPostMortemTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "post_mortem_templates" => Ok(Self::PostMortemTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewPostMortemTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewPostMortemTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewPostMortemTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewPulse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "summary"
    ///          ],
    ///          "properties": {
    ///            "data": {
    ///              "description": "Additional data",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            },
    ///            "ended_at": {
    ///              "description": "Pulse end datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the pulse",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "external_url": {
    ///              "description": "The external url of the pulse",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "labels": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "description": "Key of the tag",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value of the tag",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "refs": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "description": "Key of the ref",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value of the ref",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the pulse",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "source": {
    ///              "description": "The source of the pulse (eg: k8s)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "started_at": {
    ///              "description": "Pulse start datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the pulse",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "pulses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPulse {
        pub data: NewPulseData,
    }
    impl NewPulse {
        pub fn builder() -> builder::NewPulse {
            Default::default()
        }
    }
    ///`NewPulseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "summary"
    ///      ],
    ///      "properties": {
    ///        "data": {
    ///          "description": "Additional data",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        },
    ///        "ended_at": {
    ///          "description": "Pulse end datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the pulse",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "external_url": {
    ///          "description": "The external url of the pulse",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "labels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "key",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "key": {
    ///                "description": "Key of the tag",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value of the tag",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "refs": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "key",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "key": {
    ///                "description": "Key of the ref",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value of the ref",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the pulse",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "source": {
    ///          "description": "The source of the pulse (eg: k8s)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "started_at": {
    ///          "description": "Pulse start datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the pulse",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "pulses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPulseData {
        pub attributes: NewPulseDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewPulseDataType,
    }
    impl NewPulseData {
        pub fn builder() -> builder::NewPulseData {
            Default::default()
        }
    }
    ///`NewPulseDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "summary"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "description": "Additional data",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "ended_at": {
    ///      "description": "Pulse end datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the pulse",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_url": {
    ///      "description": "The external url of the pulse",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the tag",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the tag",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "refs": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the ref",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the ref",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the pulse",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "source": {
    ///      "description": "The source of the pulse (eg: k8s)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "Pulse start datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the pulse",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewPulseDataAttributes {
        ///Additional data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Pulse end datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The Environment IDs to attach to the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The external url of the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<
            ::std::option::Option<NewPulseDataAttributesLabelsItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub refs: ::std::vec::Vec<::std::option::Option<NewPulseDataAttributesRefsItem>>,
        ///The Service IDs to attach to the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The source of the pulse (eg: k8s)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<::std::string::String>,
        ///Pulse start datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The summary of the pulse
        pub summary: ::std::string::String,
    }
    impl NewPulseDataAttributes {
        pub fn builder() -> builder::NewPulseDataAttributes {
            Default::default()
        }
    }
    ///`NewPulseDataAttributesLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the tag",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the tag",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPulseDataAttributesLabelsItem {
        ///Key of the tag
        pub key: ::std::string::String,
        ///Value of the tag
        pub value: ::std::string::String,
    }
    impl NewPulseDataAttributesLabelsItem {
        pub fn builder() -> builder::NewPulseDataAttributesLabelsItem {
            Default::default()
        }
    }
    ///`NewPulseDataAttributesRefsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the ref",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the ref",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewPulseDataAttributesRefsItem {
        ///Key of the ref
        pub key: ::std::string::String,
        ///Value of the ref
        pub value: ::std::string::String,
    }
    impl NewPulseDataAttributesRefsItem {
        pub fn builder() -> builder::NewPulseDataAttributesRefsItem {
            Default::default()
        }
    }
    ///`NewPulseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "pulses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewPulseDataType {
        #[serde(rename = "pulses")]
        Pulses,
    }
    impl ::std::fmt::Display for NewPulseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Pulses => f.write_str("pulses"),
            }
        }
    }
    impl ::std::str::FromStr for NewPulseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pulses" => Ok(Self::Pulses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewPulseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewPulseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewPulseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRetrospectiveProcess`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "copy_from",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "copy_from": {
    ///              "description": "Retrospective process ID from which retrospective steps have to be copied. To use starter template for retrospective steps provide value: 'starter_template'",
    ///              "type": "string"
    ///            },
    ///            "description": {
    ///              "description": "The description of the retrospective process",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the retrospective process",
    ///              "type": "string"
    ///            },
    ///            "retrospective_process_matching_criteria": {
    ///              "type": "object",
    ///              "oneOf": [
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "severity_ids"
    ///                  ],
    ///                  "properties": {
    ///                    "severity_ids": {
    ///                      "description": "Severity IDs for retrospective process matching criteria",
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "group_ids"
    ///                  ],
    ///                  "properties": {
    ///                    "group_ids": {
    ///                      "description": "Team IDs for retrospective process matching criteria",
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "incident_type_ids"
    ///                  ],
    ///                  "properties": {
    ///                    "incident_type_ids": {
    ///                      "description": "Incident type IDs for retrospective process matching criteria",
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                }
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_processes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveProcess {
        pub data: NewRetrospectiveProcessData,
    }
    impl NewRetrospectiveProcess {
        pub fn builder() -> builder::NewRetrospectiveProcess {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "copy_from",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "copy_from": {
    ///          "description": "Retrospective process ID from which retrospective steps have to be copied. To use starter template for retrospective steps provide value: 'starter_template'",
    ///          "type": "string"
    ///        },
    ///        "description": {
    ///          "description": "The description of the retrospective process",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the retrospective process",
    ///          "type": "string"
    ///        },
    ///        "retrospective_process_matching_criteria": {
    ///          "type": "object",
    ///          "oneOf": [
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "severity_ids"
    ///              ],
    ///              "properties": {
    ///                "severity_ids": {
    ///                  "description": "Severity IDs for retrospective process matching criteria",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "group_ids"
    ///              ],
    ///              "properties": {
    ///                "group_ids": {
    ///                  "description": "Team IDs for retrospective process matching criteria",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "incident_type_ids"
    ///              ],
    ///              "properties": {
    ///                "incident_type_ids": {
    ///                  "description": "Incident type IDs for retrospective process matching criteria",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            }
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_processes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveProcessData {
        pub attributes: NewRetrospectiveProcessDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewRetrospectiveProcessDataType,
    }
    impl NewRetrospectiveProcessData {
        pub fn builder() -> builder::NewRetrospectiveProcessData {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "copy_from",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "copy_from": {
    ///      "description": "Retrospective process ID from which retrospective steps have to be copied. To use starter template for retrospective steps provide value: 'starter_template'",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the retrospective process",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the retrospective process",
    ///      "type": "string"
    ///    },
    ///    "retrospective_process_matching_criteria": {
    ///      "type": "object",
    ///      "oneOf": [
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "severity_ids"
    ///          ],
    ///          "properties": {
    ///            "severity_ids": {
    ///              "description": "Severity IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "group_ids"
    ///          ],
    ///          "properties": {
    ///            "group_ids": {
    ///              "description": "Team IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "incident_type_ids"
    ///          ],
    ///          "properties": {
    ///            "incident_type_ids": {
    ///              "description": "Incident type IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        }
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewRetrospectiveProcessDataAttributes {
        ///Retrospective process ID from which retrospective steps have to be copied. To use starter template for retrospective steps provide value: 'starter_template'
        pub copy_from: ::std::string::String,
        ///The description of the retrospective process
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the retrospective process
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub retrospective_process_matching_criteria: ::std::option::Option<
            NewRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria,
        >,
    }
    impl NewRetrospectiveProcessDataAttributes {
        pub fn builder() -> builder::NewRetrospectiveProcessDataAttributes {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "severity_ids"
    ///      ],
    ///      "properties": {
    ///        "severity_ids": {
    ///          "description": "Severity IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "group_ids"
    ///      ],
    ///      "properties": {
    ///        "group_ids": {
    ///          "description": "Team IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "incident_type_ids"
    ///      ],
    ///      "properties": {
    ///        "incident_type_ids": {
    ///          "description": "Incident type IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub enum NewRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria {
        #[serde(rename = "severity_ids")]
        SeverityIds(::std::vec::Vec<::std::string::String>),
        #[serde(rename = "group_ids")]
        GroupIds(::std::vec::Vec<::std::string::String>),
        #[serde(rename = "incident_type_ids")]
        IncidentTypeIds(::std::vec::Vec<::std::string::String>),
    }
    ///`NewRetrospectiveProcessDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_processes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRetrospectiveProcessDataType {
        #[serde(rename = "retrospective_processes")]
        RetrospectiveProcesses,
    }
    impl ::std::fmt::Display for NewRetrospectiveProcessDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcesses => f.write_str("retrospective_processes"),
            }
        }
    }
    impl ::std::str::FromStr for NewRetrospectiveProcessDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_processes" => Ok(Self::RetrospectiveProcesses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRetrospectiveProcessDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRetrospectiveProcessDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRetrospectiveProcessDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRetrospectiveProcessGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "sub_status_id"
    ///          ],
    ///          "properties": {
    ///            "position": {
    ///              "type": "integer"
    ///            },
    ///            "sub_status_id": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_process_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveProcessGroup {
        pub data: NewRetrospectiveProcessGroupData,
    }
    impl NewRetrospectiveProcessGroup {
        pub fn builder() -> builder::NewRetrospectiveProcessGroup {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "sub_status_id"
    ///      ],
    ///      "properties": {
    ///        "position": {
    ///          "type": "integer"
    ///        },
    ///        "sub_status_id": {
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveProcessGroupData {
        pub attributes: NewRetrospectiveProcessGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewRetrospectiveProcessGroupDataType,
    }
    impl NewRetrospectiveProcessGroupData {
        pub fn builder() -> builder::NewRetrospectiveProcessGroupData {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "sub_status_id"
    ///  ],
    ///  "properties": {
    ///    "position": {
    ///      "type": "integer"
    ///    },
    ///    "sub_status_id": {
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewRetrospectiveProcessGroupDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        pub sub_status_id: ::std::string::String,
    }
    impl NewRetrospectiveProcessGroupDataAttributes {
        pub fn builder() -> builder::NewRetrospectiveProcessGroupDataAttributes {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRetrospectiveProcessGroupDataType {
        #[serde(rename = "retrospective_process_groups")]
        RetrospectiveProcessGroups,
    }
    impl ::std::fmt::Display for NewRetrospectiveProcessGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroups => {
                    f.write_str("retrospective_process_groups")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewRetrospectiveProcessGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_groups" => Ok(Self::RetrospectiveProcessGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRetrospectiveProcessGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRetrospectiveProcessGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRetrospectiveProcessGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRetrospectiveProcessGroupStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "retrospective_step_id"
    ///          ],
    ///          "properties": {
    ///            "position": {
    ///              "type": "integer"
    ///            },
    ///            "retrospective_step_id": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_process_group_steps"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveProcessGroupStep {
        pub data: NewRetrospectiveProcessGroupStepData,
    }
    impl NewRetrospectiveProcessGroupStep {
        pub fn builder() -> builder::NewRetrospectiveProcessGroupStep {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessGroupStepData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "retrospective_step_id"
    ///      ],
    ///      "properties": {
    ///        "position": {
    ///          "type": "integer"
    ///        },
    ///        "retrospective_step_id": {
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_group_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveProcessGroupStepData {
        pub attributes: NewRetrospectiveProcessGroupStepDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewRetrospectiveProcessGroupStepDataType,
    }
    impl NewRetrospectiveProcessGroupStepData {
        pub fn builder() -> builder::NewRetrospectiveProcessGroupStepData {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessGroupStepDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "retrospective_step_id"
    ///  ],
    ///  "properties": {
    ///    "position": {
    ///      "type": "integer"
    ///    },
    ///    "retrospective_step_id": {
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewRetrospectiveProcessGroupStepDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        pub retrospective_step_id: ::std::string::String,
    }
    impl NewRetrospectiveProcessGroupStepDataAttributes {
        pub fn builder() -> builder::NewRetrospectiveProcessGroupStepDataAttributes {
            Default::default()
        }
    }
    ///`NewRetrospectiveProcessGroupStepDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_group_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRetrospectiveProcessGroupStepDataType {
        #[serde(rename = "retrospective_process_group_steps")]
        RetrospectiveProcessGroupSteps,
    }
    impl ::std::fmt::Display for NewRetrospectiveProcessGroupStepDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroupSteps => {
                    f.write_str("retrospective_process_group_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewRetrospectiveProcessGroupStepDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_group_steps" => {
                    Ok(Self::RetrospectiveProcessGroupSteps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRetrospectiveProcessGroupStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRetrospectiveProcessGroupStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRetrospectiveProcessGroupStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRetrospectiveStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "title"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the step",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "due_after_days": {
    ///              "description": "Due date in days",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_role_id": {
    ///              "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the step",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "skippable": {
    ///              "description": "Is the step skippable?",
    ///              "type": "boolean"
    ///            },
    ///            "title": {
    ///              "description": "The name of the step",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_steps"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveStep {
        pub data: NewRetrospectiveStepData,
    }
    impl NewRetrospectiveStep {
        pub fn builder() -> builder::NewRetrospectiveStep {
            Default::default()
        }
    }
    ///`NewRetrospectiveStepData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the step",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "due_after_days": {
    ///          "description": "Due date in days",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_role_id": {
    ///          "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the step",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "skippable": {
    ///          "description": "Is the step skippable?",
    ///          "type": "boolean"
    ///        },
    ///        "title": {
    ///          "description": "The name of the step",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRetrospectiveStepData {
        pub attributes: NewRetrospectiveStepDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewRetrospectiveStepDataType,
    }
    impl NewRetrospectiveStepData {
        pub fn builder() -> builder::NewRetrospectiveStepData {
            Default::default()
        }
    }
    ///`NewRetrospectiveStepDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_after_days": {
    ///      "description": "Due date in days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_role_id": {
    ///      "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the step",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "skippable": {
    ///      "description": "Is the step skippable?",
    ///      "type": "boolean"
    ///    },
    ///    "title": {
    ///      "description": "The name of the step",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewRetrospectiveStepDataAttributes {
        ///The description of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Due date in days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_after_days: ::std::option::Option<i64>,
        ///Users assigned to the selected incident role will be the default owners for this step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///Position of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Is the step skippable?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skippable: ::std::option::Option<bool>,
        ///The name of the step
        pub title: ::std::string::String,
    }
    impl NewRetrospectiveStepDataAttributes {
        pub fn builder() -> builder::NewRetrospectiveStepDataAttributes {
            Default::default()
        }
    }
    ///`NewRetrospectiveStepDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRetrospectiveStepDataType {
        #[serde(rename = "retrospective_steps")]
        RetrospectiveSteps,
    }
    impl ::std::fmt::Display for NewRetrospectiveStepDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveSteps => f.write_str("retrospective_steps"),
            }
        }
    }
    impl ::std::str::FromStr for NewRetrospectiveStepDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_steps" => Ok(Self::RetrospectiveSteps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "alerts_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read"
    ///                ]
    ///              }
    ///            },
    ///            "api_keys_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "audits_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "billing_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "catalogs_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "communication_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "edge_connector_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "environments_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "form_fields_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "functionalities_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "groups_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_causes_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_communication_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete",
    ///                  "send"
    ///                ]
    ///              }
    ///            },
    ///            "incident_feedbacks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_permission_set_id": {
    ///              "description": "Associated incident permissions set.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_roles_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_types_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incidents_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "integrations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "invitations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The role name.",
    ///              "type": "string"
    ///            },
    ///            "paging_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "playbooks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "private_incidents_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "pulses_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "update",
    ///                  "read"
    ///                ]
    ///              }
    ///            },
    ///            "retrospective_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "roles_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "secrets_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "services_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "severities_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "slas_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "status_pages_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "sub_statuses_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "webhooks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "workflows_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRole {
        pub data: NewRoleData,
    }
    impl NewRole {
        pub fn builder() -> builder::NewRole {
            Default::default()
        }
    }
    ///`NewRoleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "alerts_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read"
    ///            ]
    ///          }
    ///        },
    ///        "api_keys_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "audits_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "billing_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "catalogs_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "communication_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "edge_connector_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "environments_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "form_fields_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "functionalities_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "groups_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_causes_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_communication_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete",
    ///              "send"
    ///            ]
    ///          }
    ///        },
    ///        "incident_feedbacks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_permission_set_id": {
    ///          "description": "Associated incident permissions set.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_roles_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_types_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incidents_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "integrations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "invitations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The role name.",
    ///          "type": "string"
    ///        },
    ///        "paging_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "playbooks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "private_incidents_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "pulses_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "update",
    ///              "read"
    ///            ]
    ///          }
    ///        },
    ///        "retrospective_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "roles_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "secrets_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "services_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "severities_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "slas_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "status_pages_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "sub_statuses_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "webhooks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "workflows_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewRoleData {
        pub attributes: NewRoleDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewRoleDataType,
    }
    impl NewRoleData {
        pub fn builder() -> builder::NewRoleData {
            Default::default()
        }
    }
    ///`NewRoleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alerts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "api_keys_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "audits_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "billing_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "catalogs_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "communication_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "edge_connector_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "environments_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "form_fields_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "functionalities_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_causes_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_communication_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete",
    ///          "send"
    ///        ]
    ///      }
    ///    },
    ///    "incident_feedbacks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_permission_set_id": {
    ///      "description": "Associated incident permissions set.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_types_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incidents_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "integrations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "invitations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The role name.",
    ///      "type": "string"
    ///    },
    ///    "paging_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "playbooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "private_incidents_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "pulses_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update",
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "retrospective_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "secrets_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "services_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "severities_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "slas_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "status_pages_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "sub_statuses_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "webhooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "workflows_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewRoleDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_permissions: ::std::vec::Vec<
            NewRoleDataAttributesAlertsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub api_keys_permissions: ::std::vec::Vec<
            NewRoleDataAttributesApiKeysPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub audits_permissions: ::std::vec::Vec<
            NewRoleDataAttributesAuditsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub billing_permissions: ::std::vec::Vec<
            NewRoleDataAttributesBillingPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub catalogs_permissions: ::std::vec::Vec<
            NewRoleDataAttributesCatalogsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub communication_permissions: ::std::vec::Vec<
            NewRoleDataAttributesCommunicationPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub edge_connector_permissions: ::std::vec::Vec<
            NewRoleDataAttributesEdgeConnectorPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environments_permissions: ::std::vec::Vec<
            NewRoleDataAttributesEnvironmentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub form_fields_permissions: ::std::vec::Vec<
            NewRoleDataAttributesFormFieldsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionalities_permissions: ::std::vec::Vec<
            NewRoleDataAttributesFunctionalitiesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups_permissions: ::std::vec::Vec<
            NewRoleDataAttributesGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_causes_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIncidentCausesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_communication_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIncidentCommunicationPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_feedbacks_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIncidentFeedbacksPermissionsItem,
        >,
        ///Associated incident permissions set.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_permission_set_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_roles_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIncidentRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_types_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIncidentTypesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incidents_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIncidentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub integrations_permissions: ::std::vec::Vec<
            NewRoleDataAttributesIntegrationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub invitations_permissions: ::std::vec::Vec<
            NewRoleDataAttributesInvitationsPermissionsItem,
        >,
        ///The role name.
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub paging_permissions: ::std::vec::Vec<
            NewRoleDataAttributesPagingPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub playbooks_permissions: ::std::vec::Vec<
            NewRoleDataAttributesPlaybooksPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub private_incidents_permissions: ::std::vec::Vec<
            NewRoleDataAttributesPrivateIncidentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub pulses_permissions: ::std::vec::Vec<
            NewRoleDataAttributesPulsesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub retrospective_permissions: ::std::vec::Vec<
            NewRoleDataAttributesRetrospectivePermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub roles_permissions: ::std::vec::Vec<
            NewRoleDataAttributesRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub secrets_permissions: ::std::vec::Vec<
            NewRoleDataAttributesSecretsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services_permissions: ::std::vec::Vec<
            NewRoleDataAttributesServicesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub severities_permissions: ::std::vec::Vec<
            NewRoleDataAttributesSeveritiesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub slas_permissions: ::std::vec::Vec<NewRoleDataAttributesSlasPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub status_pages_permissions: ::std::vec::Vec<
            NewRoleDataAttributesStatusPagesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sub_statuses_permissions: ::std::vec::Vec<
            NewRoleDataAttributesSubStatusesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub webhooks_permissions: ::std::vec::Vec<
            NewRoleDataAttributesWebhooksPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub workflows_permissions: ::std::vec::Vec<
            NewRoleDataAttributesWorkflowsPermissionsItem,
        >,
    }
    impl NewRoleDataAttributes {
        pub fn builder() -> builder::NewRoleDataAttributes {
            Default::default()
        }
    }
    ///`NewRoleDataAttributesAlertsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesAlertsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesAlertsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesAlertsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesApiKeysPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesApiKeysPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesApiKeysPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesApiKeysPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesAuditsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesAuditsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesAuditsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesAuditsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesBillingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesBillingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesBillingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesBillingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesCatalogsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesCatalogsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesCatalogsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesCatalogsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesCommunicationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesCommunicationPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesCommunicationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesCommunicationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesEdgeConnectorPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesEdgeConnectorPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesEdgeConnectorPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesEdgeConnectorPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesEnvironmentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesEnvironmentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesEnvironmentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesEnvironmentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesFormFieldsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesFormFieldsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesFormFieldsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesFormFieldsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesFunctionalitiesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesFunctionalitiesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesFunctionalitiesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesFunctionalitiesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIncidentCausesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIncidentCausesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesIncidentCausesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesIncidentCausesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIncidentCommunicationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete",
    ///    "send"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIncidentCommunicationPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
        #[serde(rename = "send")]
        Send,
    }
    impl ::std::fmt::Display
    for NewRoleDataAttributesIncidentCommunicationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
                Self::Send => f.write_str("send"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                "send" => Ok(Self::Send),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIncidentFeedbacksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIncidentFeedbacksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesIncidentFeedbacksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIncidentRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIncidentRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesIncidentRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesIncidentRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIncidentTypesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIncidentTypesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesIncidentTypesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesIncidentTypesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIncidentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIncidentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesIncidentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesIncidentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesIntegrationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesIntegrationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesIntegrationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesIntegrationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesInvitationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesInvitationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesInvitationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesInvitationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesPagingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesPagingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesPagingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesPagingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesPagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesPagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesPagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesPlaybooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesPlaybooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesPlaybooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesPlaybooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesPlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesPlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesPlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesPrivateIncidentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesPrivateIncidentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesPrivateIncidentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesPulsesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update",
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesPulsesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesPulsesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesPulsesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesPulsesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesPulsesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesPulsesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesRetrospectivePermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesRetrospectivePermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesRetrospectivePermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesRetrospectivePermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesSecretsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesSecretsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesSecretsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesSecretsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesServicesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesServicesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesServicesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesServicesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesSeveritiesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesSeveritiesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesSeveritiesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesSeveritiesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesSlasPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesSlasPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesSlasPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesSlasPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesStatusPagesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesStatusPagesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesStatusPagesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesStatusPagesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesSubStatusesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesSubStatusesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesSubStatusesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesSubStatusesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesWebhooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesWebhooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesWebhooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesWebhooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataAttributesWorkflowsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataAttributesWorkflowsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for NewRoleDataAttributesWorkflowsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataAttributesWorkflowsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewRoleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewRoleDataType {
        #[serde(rename = "roles")]
        Roles,
    }
    impl ::std::fmt::Display for NewRoleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Roles => f.write_str("roles"),
            }
        }
    }
    impl ::std::str::FromStr for NewRoleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "roles" => Ok(Self::Roles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSchedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "owner_user_id"
    ///          ],
    ///          "properties": {
    ///            "all_time_coverage": {
    ///              "description": "24/7 coverage of the schedule",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the schedule",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "include_shadows_in_slack_notifications": {
    ///              "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the schedule",
    ///              "type": "string"
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "Owning teams.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "owner_user_id": {
    ///              "description": "ID of the owner of the schedule",
    ///              "type": "integer"
    ///            },
    ///            "shift_report_day_of_week": {
    ///              "description": "Day of week the weekly shift summary is sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "monday",
    ///                "tuesday",
    ///                "wednesday",
    ///                "thursday",
    ///                "friday",
    ///                "saturday",
    ///                "sunday"
    ///              ]
    ///            },
    ///            "shift_report_enabled": {
    ///              "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_report_time_of_day": {
    ///              "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_report_time_zone": {
    ///              "description": "IANA time zone used for the weekly shift summary",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_start_notifications_enabled": {
    ///              "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_update_notifications_enabled": {
    ///              "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "slack_user_group": {
    ///              "type": "object",
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack user group ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack user group name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "sync_linear_enabled": {
    ///              "description": "Whether the schedule is synced with Linear",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSchedule {
        pub data: NewScheduleData,
    }
    impl NewSchedule {
        pub fn builder() -> builder::NewSchedule {
            Default::default()
        }
    }
    ///`NewScheduleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "owner_user_id"
    ///      ],
    ///      "properties": {
    ///        "all_time_coverage": {
    ///          "description": "24/7 coverage of the schedule",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the schedule",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "include_shadows_in_slack_notifications": {
    ///          "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the schedule",
    ///          "type": "string"
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "Owning teams.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "owner_user_id": {
    ///          "description": "ID of the owner of the schedule",
    ///          "type": "integer"
    ///        },
    ///        "shift_report_day_of_week": {
    ///          "description": "Day of week the weekly shift summary is sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "monday",
    ///            "tuesday",
    ///            "wednesday",
    ///            "thursday",
    ///            "friday",
    ///            "saturday",
    ///            "sunday"
    ///          ]
    ///        },
    ///        "shift_report_enabled": {
    ///          "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_report_time_of_day": {
    ///          "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_report_time_zone": {
    ///          "description": "IANA time zone used for the weekly shift summary",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_start_notifications_enabled": {
    ///          "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_update_notifications_enabled": {
    ///          "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "slack_user_group": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack user group ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack user group name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "sync_linear_enabled": {
    ///          "description": "Whether the schedule is synced with Linear",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleData {
        pub attributes: NewScheduleDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewScheduleDataType,
    }
    impl NewScheduleData {
        pub fn builder() -> builder::NewScheduleData {
            Default::default()
        }
    }
    ///`NewScheduleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "owner_user_id"
    ///  ],
    ///  "properties": {
    ///    "all_time_coverage": {
    ///      "description": "24/7 coverage of the schedule",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the schedule",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "include_shadows_in_slack_notifications": {
    ///      "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the schedule",
    ///      "type": "string"
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owning teams.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_id": {
    ///      "description": "ID of the owner of the schedule",
    ///      "type": "integer"
    ///    },
    ///    "shift_report_day_of_week": {
    ///      "description": "Day of week the weekly shift summary is sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "shift_report_enabled": {
    ///      "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_report_time_of_day": {
    ///      "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_report_time_zone": {
    ///      "description": "IANA time zone used for the weekly shift summary",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_start_notifications_enabled": {
    ///      "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_update_notifications_enabled": {
    ///      "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "slack_user_group": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack user group ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack user group name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "sync_linear_enabled": {
    ///      "description": "Whether the schedule is synced with Linear",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewScheduleDataAttributes {
        ///24/7 coverage of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub all_time_coverage: ::std::option::Option<bool>,
        ///The description of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub include_shadows_in_slack_notifications: ::std::option::Option<bool>,
        ///The name of the schedule
        pub name: ::std::string::String,
        ///Owning teams.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owner_group_ids: ::std::vec::Vec<::std::string::String>,
        ///ID of the owner of the schedule
        pub owner_user_id: i64,
        ///Day of week the weekly shift summary is sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_day_of_week: ::std::option::Option<
            NewScheduleDataAttributesShiftReportDayOfWeek,
        >,
        ///Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_enabled: ::std::option::Option<bool>,
        ///Time of day the weekly shift summary is sent, in HH:MM 24-hour format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_time_of_day: ::std::option::Option<::std::string::String>,
        ///IANA time zone used for the weekly shift summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_time_zone: ::std::option::Option<::std::string::String>,
        ///Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_start_notifications_enabled: ::std::option::Option<bool>,
        ///Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_update_notifications_enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel: ::std::option::Option<NewScheduleDataAttributesSlackChannel>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_user_group: ::std::option::Option<
            NewScheduleDataAttributesSlackUserGroup,
        >,
        ///Whether the schedule is synced with Linear
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sync_linear_enabled: ::std::option::Option<bool>,
    }
    impl NewScheduleDataAttributes {
        pub fn builder() -> builder::NewScheduleDataAttributes {
            Default::default()
        }
    }
    ///Day of week the weekly shift summary is sent
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Day of week the weekly shift summary is sent",
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleDataAttributesShiftReportDayOfWeek {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display for NewScheduleDataAttributesShiftReportDayOfWeek {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleDataAttributesShiftReportDayOfWeek {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleDataAttributesShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleDataAttributesShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleDataAttributesShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleDataAttributesSlackChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleDataAttributesSlackChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for NewScheduleDataAttributesSlackChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl NewScheduleDataAttributesSlackChannel {
        pub fn builder() -> builder::NewScheduleDataAttributesSlackChannel {
            Default::default()
        }
    }
    ///`NewScheduleDataAttributesSlackUserGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack user group ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack user group name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleDataAttributesSlackUserGroup {
        ///Slack user group ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack user group name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for NewScheduleDataAttributesSlackUserGroup {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl NewScheduleDataAttributesSlackUserGroup {
        pub fn builder() -> builder::NewScheduleDataAttributesSlackUserGroup {
            Default::default()
        }
    }
    ///`NewScheduleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleDataType {
        #[serde(rename = "schedules")]
        Schedules,
    }
    impl ::std::fmt::Display for NewScheduleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Schedules => f.write_str("schedules"),
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedules" => Ok(Self::Schedules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "schedule_rotationable_attributes",
    ///            "schedule_rotationable_type"
    ///          ],
    ///          "properties": {
    ///            "active_all_week": {
    ///              "description": "Schedule rotation active all week?",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "active_days": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Schedule rotation active days",
    ///                "type": "string",
    ///                "enum": [
    ///                  "S",
    ///                  "M",
    ///                  "T",
    ///                  "W",
    ///                  "R",
    ///                  "F",
    ///                  "U"
    ///                ]
    ///              }
    ///            },
    ///            "active_time_attributes": {
    ///              "description": "Schedule rotation's active times",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "end_time",
    ///                  "start_time"
    ///                ],
    ///                "properties": {
    ///                  "end_time": {
    ///                    "description": "End time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  },
    ///                  "start_time": {
    ///                    "description": "Start time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "active_time_type": {
    ///              "type": "string",
    ///              "items": {
    ///                "description": "Schedule rotation active time type",
    ///                "default": "all_day",
    ///                "type": "string",
    ///                "enum": [
    ///                  "all_day",
    ///                  "same_time",
    ///                  "custom"
    ///                ]
    ///              }
    ///            },
    ///            "end_time": {
    ///              "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "name": {
    ///              "description": "The name of the schedule rotation",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the schedule rotation",
    ///              "type": "integer"
    ///            },
    ///            "schedule_rotation_members": {
    ///              "description": "You can only add schedule rotation members if your account has schedule nesting feature enabled",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "member_id",
    ///                  "member_type"
    ///                ],
    ///                "properties": {
    ///                  "member_id": {
    ///                    "description": "ID of the member",
    ///                    "type": "string"
    ///                  },
    ///                  "member_type": {
    ///                    "description": "Type of member",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "User",
    ///                      "Schedule"
    ///                    ]
    ///                  },
    ///                  "position": {
    ///                    "description": "Position of the member in rotation",
    ///                    "type": "integer"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "schedule_rotationable_attributes": {
    ///              "type": "object",
    ///              "oneOf": [
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_time"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for daily rotation",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_day",
    ///                    "handoff_time"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_day": {
    ///                      "description": "Hand off day for weekly/biweekly rotation",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "S",
    ///                        "M",
    ///                        "T",
    ///                        "W",
    ///                        "R",
    ///                        "F",
    ///                        "U"
    ///                      ]
    ///                    },
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for weekly/biweekly rotation",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_day",
    ///                    "handoff_time"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_day": {
    ///                      "description": "Hand off day for monthly rotation",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "first_day_of_month",
    ///                        "last_day_of_month"
    ///                      ]
    ///                    },
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for monthly rotation",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_time",
    ///                    "shift_length",
    ///                    "shift_length_unit"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    },
    ///                    "shift_length": {
    ///                      "description": "Shift length for custom rotation",
    ///                      "type": "integer"
    ///                    },
    ///                    "shift_length_unit": {
    ///                      "description": "Shift length unit for custom rotation",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "hours",
    ///                        "days",
    ///                        "weeks"
    ///                      ]
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                }
    ///              ]
    ///            },
    ///            "schedule_rotationable_type": {
    ///              "description": "Schedule rotation type",
    ///              "type": "string",
    ///              "enum": [
    ///                "ScheduleDailyRotation",
    ///                "ScheduleWeeklyRotation",
    ///                "ScheduleBiweeklyRotation",
    ///                "ScheduleMonthlyRotation",
    ///                "ScheduleCustomRotation"
    ///              ]
    ///            },
    ///            "start_time": {
    ///              "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "time_zone": {
    ///              "description": "A valid IANA time zone name.",
    ///              "default": "Etc/UTC",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotations"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotation {
        pub data: NewScheduleRotationData,
    }
    impl NewScheduleRotation {
        pub fn builder() -> builder::NewScheduleRotation {
            Default::default()
        }
    }
    ///`NewScheduleRotationActiveDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "active_time_attributes",
    ///            "day_name"
    ///          ],
    ///          "properties": {
    ///            "active_time_attributes": {
    ///              "description": "Schedule rotation active times per day",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "end_time": {
    ///                    "description": "End time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  },
    ///                  "start_time": {
    ///                    "description": "Start time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "day_name": {
    ///              "description": "Schedule rotation day name for which active times to be created",
    ///              "type": "string",
    ///              "enum": [
    ///                "S",
    ///                "M",
    ///                "T",
    ///                "W",
    ///                "R",
    ///                "F",
    ///                "U"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotation_active_days"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationActiveDay {
        pub data: NewScheduleRotationActiveDayData,
    }
    impl NewScheduleRotationActiveDay {
        pub fn builder() -> builder::NewScheduleRotationActiveDay {
            Default::default()
        }
    }
    ///`NewScheduleRotationActiveDayData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "active_time_attributes",
    ///        "day_name"
    ///      ],
    ///      "properties": {
    ///        "active_time_attributes": {
    ///          "description": "Schedule rotation active times per day",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "end_time": {
    ///                "description": "End time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              },
    ///              "start_time": {
    ///                "description": "Start time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "day_name": {
    ///          "description": "Schedule rotation day name for which active times to be created",
    ///          "type": "string",
    ///          "enum": [
    ///            "S",
    ///            "M",
    ///            "T",
    ///            "W",
    ///            "R",
    ///            "F",
    ///            "U"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_active_days"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationActiveDayData {
        pub attributes: NewScheduleRotationActiveDayDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewScheduleRotationActiveDayDataType,
    }
    impl NewScheduleRotationActiveDayData {
        pub fn builder() -> builder::NewScheduleRotationActiveDayData {
            Default::default()
        }
    }
    ///`NewScheduleRotationActiveDayDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "active_time_attributes",
    ///    "day_name"
    ///  ],
    ///  "properties": {
    ///    "active_time_attributes": {
    ///      "description": "Schedule rotation active times per day",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "end_time": {
    ///            "description": "End time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          },
    ///          "start_time": {
    ///            "description": "Start time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "day_name": {
    ///      "description": "Schedule rotation day name for which active times to be created",
    ///      "type": "string",
    ///      "enum": [
    ///        "S",
    ///        "M",
    ///        "T",
    ///        "W",
    ///        "R",
    ///        "F",
    ///        "U"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewScheduleRotationActiveDayDataAttributes {
        ///Schedule rotation active times per day
        pub active_time_attributes: ::std::vec::Vec<
            NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
        >,
        ///Schedule rotation day name for which active times to be created
        pub day_name: NewScheduleRotationActiveDayDataAttributesDayName,
    }
    impl NewScheduleRotationActiveDayDataAttributes {
        pub fn builder() -> builder::NewScheduleRotationActiveDayDataAttributes {
            Default::default()
        }
    }
    ///`NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "end_time": {
    ///      "description": "End time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
        ///End time for schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        ///Start time for schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
        fn default() -> Self {
            Self {
                end_time: Default::default(),
                start_time: Default::default(),
            }
        }
    }
    impl NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
        pub fn builder() -> builder::NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            Default::default()
        }
    }
    ///Schedule rotation day name for which active times to be created
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation day name for which active times to be created",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationActiveDayDataAttributesDayName {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for NewScheduleRotationActiveDayDataAttributesDayName {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleRotationActiveDayDataAttributesDayName {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationActiveDayDataAttributesDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationActiveDayDataAttributesDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationActiveDayDataAttributesDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotationActiveDayDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_active_days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationActiveDayDataType {
        #[serde(rename = "schedule_rotation_active_days")]
        ScheduleRotationActiveDays,
    }
    impl ::std::fmt::Display for NewScheduleRotationActiveDayDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationActiveDays => {
                    f.write_str("schedule_rotation_active_days")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleRotationActiveDayDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_active_days" => Ok(Self::ScheduleRotationActiveDays),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewScheduleRotationActiveDayDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationActiveDayDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationActiveDayDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotationData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "schedule_rotationable_attributes",
    ///        "schedule_rotationable_type"
    ///      ],
    ///      "properties": {
    ///        "active_all_week": {
    ///          "description": "Schedule rotation active all week?",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "active_days": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Schedule rotation active days",
    ///            "type": "string",
    ///            "enum": [
    ///              "S",
    ///              "M",
    ///              "T",
    ///              "W",
    ///              "R",
    ///              "F",
    ///              "U"
    ///            ]
    ///          }
    ///        },
    ///        "active_time_attributes": {
    ///          "description": "Schedule rotation's active times",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "end_time",
    ///              "start_time"
    ///            ],
    ///            "properties": {
    ///              "end_time": {
    ///                "description": "End time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              },
    ///              "start_time": {
    ///                "description": "Start time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "active_time_type": {
    ///          "type": "string",
    ///          "items": {
    ///            "description": "Schedule rotation active time type",
    ///            "default": "all_day",
    ///            "type": "string",
    ///            "enum": [
    ///              "all_day",
    ///              "same_time",
    ///              "custom"
    ///            ]
    ///          }
    ///        },
    ///        "end_time": {
    ///          "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "name": {
    ///          "description": "The name of the schedule rotation",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the schedule rotation",
    ///          "type": "integer"
    ///        },
    ///        "schedule_rotation_members": {
    ///          "description": "You can only add schedule rotation members if your account has schedule nesting feature enabled",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "member_id",
    ///              "member_type"
    ///            ],
    ///            "properties": {
    ///              "member_id": {
    ///                "description": "ID of the member",
    ///                "type": "string"
    ///              },
    ///              "member_type": {
    ///                "description": "Type of member",
    ///                "type": "string",
    ///                "enum": [
    ///                  "User",
    ///                  "Schedule"
    ///                ]
    ///              },
    ///              "position": {
    ///                "description": "Position of the member in rotation",
    ///                "type": "integer"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "schedule_rotationable_attributes": {
    ///          "type": "object",
    ///          "oneOf": [
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_time"
    ///              ],
    ///              "properties": {
    ///                "handoff_time": {
    ///                  "description": "Hand off time for daily rotation",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_day",
    ///                "handoff_time"
    ///              ],
    ///              "properties": {
    ///                "handoff_day": {
    ///                  "description": "Hand off day for weekly/biweekly rotation",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "S",
    ///                    "M",
    ///                    "T",
    ///                    "W",
    ///                    "R",
    ///                    "F",
    ///                    "U"
    ///                  ]
    ///                },
    ///                "handoff_time": {
    ///                  "description": "Hand off time for weekly/biweekly rotation",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_day",
    ///                "handoff_time"
    ///              ],
    ///              "properties": {
    ///                "handoff_day": {
    ///                  "description": "Hand off day for monthly rotation",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "first_day_of_month",
    ///                    "last_day_of_month"
    ///                  ]
    ///                },
    ///                "handoff_time": {
    ///                  "description": "Hand off time for monthly rotation",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_time",
    ///                "shift_length",
    ///                "shift_length_unit"
    ///              ],
    ///              "properties": {
    ///                "handoff_time": {
    ///                  "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                },
    ///                "shift_length": {
    ///                  "description": "Shift length for custom rotation",
    ///                  "type": "integer"
    ///                },
    ///                "shift_length_unit": {
    ///                  "description": "Shift length unit for custom rotation",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "hours",
    ///                    "days",
    ///                    "weeks"
    ///                  ]
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            }
    ///          ]
    ///        },
    ///        "schedule_rotationable_type": {
    ///          "description": "Schedule rotation type",
    ///          "type": "string",
    ///          "enum": [
    ///            "ScheduleDailyRotation",
    ///            "ScheduleWeeklyRotation",
    ///            "ScheduleBiweeklyRotation",
    ///            "ScheduleMonthlyRotation",
    ///            "ScheduleCustomRotation"
    ///          ]
    ///        },
    ///        "start_time": {
    ///          "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "time_zone": {
    ///          "description": "A valid IANA time zone name.",
    ///          "default": "Etc/UTC",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationData {
        pub attributes: NewScheduleRotationDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewScheduleRotationDataType,
    }
    impl NewScheduleRotationData {
        pub fn builder() -> builder::NewScheduleRotationData {
            Default::default()
        }
    }
    ///`NewScheduleRotationDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "schedule_rotationable_attributes",
    ///    "schedule_rotationable_type"
    ///  ],
    ///  "properties": {
    ///    "active_all_week": {
    ///      "description": "Schedule rotation active all week?",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "active_days": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Schedule rotation active days",
    ///        "type": "string",
    ///        "enum": [
    ///          "S",
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U"
    ///        ]
    ///      }
    ///    },
    ///    "active_time_attributes": {
    ///      "description": "Schedule rotation's active times",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "end_time",
    ///          "start_time"
    ///        ],
    ///        "properties": {
    ///          "end_time": {
    ///            "description": "End time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          },
    ///          "start_time": {
    ///            "description": "Start time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "active_time_type": {
    ///      "type": "string",
    ///      "items": {
    ///        "description": "Schedule rotation active time type",
    ///        "default": "all_day",
    ///        "type": "string",
    ///        "enum": [
    ///          "all_day",
    ///          "same_time",
    ///          "custom"
    ///        ]
    ///      }
    ///    },
    ///    "end_time": {
    ///      "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "name": {
    ///      "description": "The name of the schedule rotation",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the schedule rotation",
    ///      "type": "integer"
    ///    },
    ///    "schedule_rotation_members": {
    ///      "description": "You can only add schedule rotation members if your account has schedule nesting feature enabled",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "member_id",
    ///          "member_type"
    ///        ],
    ///        "properties": {
    ///          "member_id": {
    ///            "description": "ID of the member",
    ///            "type": "string"
    ///          },
    ///          "member_type": {
    ///            "description": "Type of member",
    ///            "type": "string",
    ///            "enum": [
    ///              "User",
    ///              "Schedule"
    ///            ]
    ///          },
    ///          "position": {
    ///            "description": "Position of the member in rotation",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "schedule_rotationable_attributes": {
    ///      "type": "object",
    ///      "oneOf": [
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_time": {
    ///              "description": "Hand off time for daily rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_day",
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_day": {
    ///              "description": "Hand off day for weekly/biweekly rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "S",
    ///                "M",
    ///                "T",
    ///                "W",
    ///                "R",
    ///                "F",
    ///                "U"
    ///              ]
    ///            },
    ///            "handoff_time": {
    ///              "description": "Hand off time for weekly/biweekly rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_day",
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_day": {
    ///              "description": "Hand off day for monthly rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "first_day_of_month",
    ///                "last_day_of_month"
    ///              ]
    ///            },
    ///            "handoff_time": {
    ///              "description": "Hand off time for monthly rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_time",
    ///            "shift_length",
    ///            "shift_length_unit"
    ///          ],
    ///          "properties": {
    ///            "handoff_time": {
    ///              "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///              "type": "string",
    ///              "format": "time"
    ///            },
    ///            "shift_length": {
    ///              "description": "Shift length for custom rotation",
    ///              "type": "integer"
    ///            },
    ///            "shift_length_unit": {
    ///              "description": "Shift length unit for custom rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "hours",
    ///                "days",
    ///                "weeks"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        }
    ///      ]
    ///    },
    ///    "schedule_rotationable_type": {
    ///      "description": "Schedule rotation type",
    ///      "type": "string",
    ///      "enum": [
    ///        "ScheduleDailyRotation",
    ///        "ScheduleWeeklyRotation",
    ///        "ScheduleBiweeklyRotation",
    ///        "ScheduleMonthlyRotation",
    ///        "ScheduleCustomRotation"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "default": "Etc/UTC",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewScheduleRotationDataAttributes {
        ///Schedule rotation active all week?
        #[serde(default = "defaults::default_bool::<true>")]
        pub active_all_week: bool,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_days: ::std::vec::Vec<
            NewScheduleRotationDataAttributesActiveDaysItem,
        >,
        ///Schedule rotation's active times
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_time_attributes: ::std::vec::Vec<
            NewScheduleRotationDataAttributesActiveTimeAttributesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub active_time_type: ::std::option::Option<::std::string::String>,
        ///RFC3339 date-time when rotation ends. Shifts will only be created before this time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The name of the schedule rotation
        pub name: ::std::string::String,
        ///Position of the schedule rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///You can only add schedule rotation members if your account has schedule nesting feature enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_rotation_members: ::std::option::Option<
            ::std::vec::Vec<NewScheduleRotationDataAttributesScheduleRotationMembersItem>,
        >,
        pub schedule_rotationable_attributes: NewScheduleRotationDataAttributesScheduleRotationableAttributes,
        ///Schedule rotation type
        pub schedule_rotationable_type: NewScheduleRotationDataAttributesScheduleRotationableType,
        ///RFC3339 date-time when rotation starts. Shifts will only be created after this time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///A valid IANA time zone name.
        #[serde(default = "defaults::new_schedule_rotation_data_attributes_time_zone")]
        pub time_zone: ::std::string::String,
    }
    impl NewScheduleRotationDataAttributes {
        pub fn builder() -> builder::NewScheduleRotationDataAttributes {
            Default::default()
        }
    }
    ///Schedule rotation active days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation active days",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataAttributesActiveDaysItem {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for NewScheduleRotationDataAttributesActiveDaysItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleRotationDataAttributesActiveDaysItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationDataAttributesActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataAttributesActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationDataAttributesActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotationDataAttributesActiveTimeAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "end_time",
    ///    "start_time"
    ///  ],
    ///  "properties": {
    ///    "end_time": {
    ///      "description": "End time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationDataAttributesActiveTimeAttributesItem {
        ///End time for schedule rotation active time
        pub end_time: ::std::string::String,
        ///Start time for schedule rotation active time
        pub start_time: ::std::string::String,
    }
    impl NewScheduleRotationDataAttributesActiveTimeAttributesItem {
        pub fn builder() -> builder::NewScheduleRotationDataAttributesActiveTimeAttributesItem {
            Default::default()
        }
    }
    ///`NewScheduleRotationDataAttributesScheduleRotationMembersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "member_id",
    ///    "member_type"
    ///  ],
    ///  "properties": {
    ///    "member_id": {
    ///      "description": "ID of the member",
    ///      "type": "string"
    ///    },
    ///    "member_type": {
    ///      "description": "Type of member",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Schedule"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the member in rotation",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationDataAttributesScheduleRotationMembersItem {
        ///ID of the member
        pub member_id: ::std::string::String,
        ///Type of member
        pub member_type: NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType,
        ///Position of the member in rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewScheduleRotationDataAttributesScheduleRotationMembersItem {
        pub fn builder() -> builder::NewScheduleRotationDataAttributesScheduleRotationMembersItem {
            Default::default()
        }
    }
    ///Type of member
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of member",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Schedule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        User,
        Schedule,
    }
    impl ::std::fmt::Display
    for NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Schedule => f.write_str("Schedule"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Schedule" => Ok(Self::Schedule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotationDataAttributesScheduleRotationableAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_time": {
    ///          "description": "Hand off time for daily rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_day",
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_day": {
    ///          "description": "Hand off day for weekly/biweekly rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "S",
    ///            "M",
    ///            "T",
    ///            "W",
    ///            "R",
    ///            "F",
    ///            "U"
    ///          ]
    ///        },
    ///        "handoff_time": {
    ///          "description": "Hand off time for weekly/biweekly rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_day",
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_day": {
    ///          "description": "Hand off day for monthly rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "first_day_of_month",
    ///            "last_day_of_month"
    ///          ]
    ///        },
    ///        "handoff_time": {
    ///          "description": "Hand off time for monthly rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_time",
    ///        "shift_length",
    ///        "shift_length_unit"
    ///      ],
    ///      "properties": {
    ///        "handoff_time": {
    ///          "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///          "type": "string",
    ///          "format": "time"
    ///        },
    ///        "shift_length": {
    ///          "description": "Shift length for custom rotation",
    ///          "type": "integer"
    ///        },
    ///        "shift_length_unit": {
    ///          "description": "Shift length unit for custom rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "hours",
    ///            "days",
    ///            "weeks"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged, deny_unknown_fields)]
    pub enum NewScheduleRotationDataAttributesScheduleRotationableAttributes {
        Variant0 {
            ///Hand off time for daily rotation
            handoff_time: ::std::string::String,
        },
        Variant1 {
            ///Hand off day for weekly/biweekly rotation
            handoff_day: NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay,
            ///Hand off time for weekly/biweekly rotation
            handoff_time: ::std::string::String,
        },
        Variant2 {
            ///Hand off day for monthly rotation
            handoff_day: NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay,
            ///Hand off time for monthly rotation
            handoff_time: ::std::string::String,
        },
        Variant3 {
            ///Hand off time for custom rotation. Use minutes for hourly rotation.
            handoff_time: ::std::string::String,
            ///Shift length for custom rotation
            shift_length: i64,
            ///Shift length unit for custom rotation
            shift_length_unit: NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit,
        },
    }
    ///Hand off day for weekly/biweekly rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Hand off day for weekly/biweekly rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Hand off day for monthly rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Hand off day for monthly rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "first_day_of_month",
    ///    "last_day_of_month"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        #[serde(rename = "first_day_of_month")]
        FirstDayOfMonth,
        #[serde(rename = "last_day_of_month")]
        LastDayOfMonth,
    }
    impl ::std::fmt::Display
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FirstDayOfMonth => f.write_str("first_day_of_month"),
                Self::LastDayOfMonth => f.write_str("last_day_of_month"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "first_day_of_month" => Ok(Self::FirstDayOfMonth),
                "last_day_of_month" => Ok(Self::LastDayOfMonth),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Shift length unit for custom rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Shift length unit for custom rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "hours",
    ///    "days",
    ///    "weeks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        #[serde(rename = "hours")]
        Hours,
        #[serde(rename = "days")]
        Days,
        #[serde(rename = "weeks")]
        Weeks,
    }
    impl ::std::fmt::Display
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Hours => f.write_str("hours"),
                Self::Days => f.write_str("days"),
                Self::Weeks => f.write_str("weeks"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "hours" => Ok(Self::Hours),
                "days" => Ok(Self::Days),
                "weeks" => Ok(Self::Weeks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Schedule rotation type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation type",
    ///  "type": "string",
    ///  "enum": [
    ///    "ScheduleDailyRotation",
    ///    "ScheduleWeeklyRotation",
    ///    "ScheduleBiweeklyRotation",
    ///    "ScheduleMonthlyRotation",
    ///    "ScheduleCustomRotation"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataAttributesScheduleRotationableType {
        ScheduleDailyRotation,
        ScheduleWeeklyRotation,
        ScheduleBiweeklyRotation,
        ScheduleMonthlyRotation,
        ScheduleCustomRotation,
    }
    impl ::std::fmt::Display
    for NewScheduleRotationDataAttributesScheduleRotationableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleDailyRotation => f.write_str("ScheduleDailyRotation"),
                Self::ScheduleWeeklyRotation => f.write_str("ScheduleWeeklyRotation"),
                Self::ScheduleBiweeklyRotation => f.write_str("ScheduleBiweeklyRotation"),
                Self::ScheduleMonthlyRotation => f.write_str("ScheduleMonthlyRotation"),
                Self::ScheduleCustomRotation => f.write_str("ScheduleCustomRotation"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewScheduleRotationDataAttributesScheduleRotationableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ScheduleDailyRotation" => Ok(Self::ScheduleDailyRotation),
                "ScheduleWeeklyRotation" => Ok(Self::ScheduleWeeklyRotation),
                "ScheduleBiweeklyRotation" => Ok(Self::ScheduleBiweeklyRotation),
                "ScheduleMonthlyRotation" => Ok(Self::ScheduleMonthlyRotation),
                "ScheduleCustomRotation" => Ok(Self::ScheduleCustomRotation),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewScheduleRotationDataAttributesScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationDataAttributesScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotationDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationDataType {
        #[serde(rename = "schedule_rotations")]
        ScheduleRotations,
    }
    impl ::std::fmt::Display for NewScheduleRotationDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotations => f.write_str("schedule_rotations"),
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleRotationDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotations" => Ok(Self::ScheduleRotations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewScheduleRotationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewScheduleRotationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewScheduleRotationUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "user_id"
    ///          ],
    ///          "properties": {
    ///            "position": {
    ///              "description": "Position of the user inside rotation",
    ///              "type": "integer"
    ///            },
    ///            "user_id": {
    ///              "description": "Schedule rotation user",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotation_users"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationUser {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<NewScheduleRotationUserData>,
    }
    impl ::std::default::Default for NewScheduleRotationUser {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl NewScheduleRotationUser {
        pub fn builder() -> builder::NewScheduleRotationUser {
            Default::default()
        }
    }
    ///`NewScheduleRotationUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "user_id"
    ///      ],
    ///      "properties": {
    ///        "position": {
    ///          "description": "Position of the user inside rotation",
    ///          "type": "integer"
    ///        },
    ///        "user_id": {
    ///          "description": "Schedule rotation user",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewScheduleRotationUserData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<NewScheduleRotationUserDataAttributes>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<NewScheduleRotationUserDataType>,
    }
    impl ::std::default::Default for NewScheduleRotationUserData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl NewScheduleRotationUserData {
        pub fn builder() -> builder::NewScheduleRotationUserData {
            Default::default()
        }
    }
    ///`NewScheduleRotationUserDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "user_id"
    ///  ],
    ///  "properties": {
    ///    "position": {
    ///      "description": "Position of the user inside rotation",
    ///      "type": "integer"
    ///    },
    ///    "user_id": {
    ///      "description": "Schedule rotation user",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewScheduleRotationUserDataAttributes {
        ///Position of the user inside rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Schedule rotation user
        pub user_id: i64,
    }
    impl NewScheduleRotationUserDataAttributes {
        pub fn builder() -> builder::NewScheduleRotationUserDataAttributes {
            Default::default()
        }
    }
    ///`NewScheduleRotationUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewScheduleRotationUserDataType {
        #[serde(rename = "schedule_rotation_users")]
        ScheduleRotationUsers,
    }
    impl ::std::fmt::Display for NewScheduleRotationUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationUsers => f.write_str("schedule_rotation_users"),
            }
        }
    }
    impl ::std::str::FromStr for NewScheduleRotationUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_users" => Ok(Self::ScheduleRotationUsers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewScheduleRotationUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewScheduleRotationUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewScheduleRotationUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSecret`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "secret"
    ///          ],
    ///          "properties": {
    ///            "hashicorp_vault_mount": {
    ///              "description": "The HashiCorp Vault secret mount path",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "hashicorp_vault_path": {
    ///              "description": "The HashiCorp Vault secret path",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "hashicorp_vault_version": {
    ///              "description": "The HashiCorp Vault secret version",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the secret",
    ///              "type": "string",
    ///              "enum": [
    ///                "built_in",
    ///                "hashicorp_vault"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the secret",
    ///              "type": "string"
    ///            },
    ///            "secret": {
    ///              "description": "The secret",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "secrets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSecret {
        pub data: NewSecretData,
    }
    impl NewSecret {
        pub fn builder() -> builder::NewSecret {
            Default::default()
        }
    }
    ///`NewSecretData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "secret"
    ///      ],
    ///      "properties": {
    ///        "hashicorp_vault_mount": {
    ///          "description": "The HashiCorp Vault secret mount path",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "hashicorp_vault_path": {
    ///          "description": "The HashiCorp Vault secret path",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "hashicorp_vault_version": {
    ///          "description": "The HashiCorp Vault secret version",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the secret",
    ///          "type": "string",
    ///          "enum": [
    ///            "built_in",
    ///            "hashicorp_vault"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the secret",
    ///          "type": "string"
    ///        },
    ///        "secret": {
    ///          "description": "The secret",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "secrets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSecretData {
        pub attributes: NewSecretDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewSecretDataType,
    }
    impl NewSecretData {
        pub fn builder() -> builder::NewSecretData {
            Default::default()
        }
    }
    ///`NewSecretDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "secret"
    ///  ],
    ///  "properties": {
    ///    "hashicorp_vault_mount": {
    ///      "description": "The HashiCorp Vault secret mount path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "hashicorp_vault_path": {
    ///      "description": "The HashiCorp Vault secret path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "hashicorp_vault_version": {
    ///      "description": "The HashiCorp Vault secret version",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the secret",
    ///      "type": "string",
    ///      "enum": [
    ///        "built_in",
    ///        "hashicorp_vault"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the secret",
    ///      "type": "string"
    ///    },
    ///    "secret": {
    ///      "description": "The secret",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewSecretDataAttributes {
        ///The HashiCorp Vault secret mount path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_mount: ::std::option::Option<::std::string::String>,
        ///The HashiCorp Vault secret path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_path: ::std::option::Option<::std::string::String>,
        ///The HashiCorp Vault secret version
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_version: ::std::option::Option<::std::string::String>,
        ///The kind of the secret
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<NewSecretDataAttributesKind>,
        ///The name of the secret
        pub name: ::std::string::String,
        ///The secret
        pub secret: ::std::string::String,
    }
    impl NewSecretDataAttributes {
        pub fn builder() -> builder::NewSecretDataAttributes {
            Default::default()
        }
    }
    ///The kind of the secret
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the secret",
    ///  "type": "string",
    ///  "enum": [
    ///    "built_in",
    ///    "hashicorp_vault"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSecretDataAttributesKind {
        #[serde(rename = "built_in")]
        BuiltIn,
        #[serde(rename = "hashicorp_vault")]
        HashicorpVault,
    }
    impl ::std::fmt::Display for NewSecretDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::BuiltIn => f.write_str("built_in"),
                Self::HashicorpVault => f.write_str("hashicorp_vault"),
            }
        }
    }
    impl ::std::str::FromStr for NewSecretDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "built_in" => Ok(Self::BuiltIn),
                "hashicorp_vault" => Ok(Self::HashicorpVault),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSecretDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSecretDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewSecretDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSecretDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "secrets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSecretDataType {
        #[serde(rename = "secrets")]
        Secrets,
    }
    impl ::std::fmt::Display for NewSecretDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Secrets => f.write_str("secrets"),
            }
        }
    }
    impl ::std::str::FromStr for NewSecretDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "secrets" => Ok(Self::Secrets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSecretDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewSecretDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewSecretDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "alert_broadcast_channel": {
    ///              "description": "Slack channel to broadcast alerts to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "alert_broadcast_enabled": {
    ///              "description": "Enable alerts to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "The alert urgency id of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alerts_email_enabled": {
    ///              "description": "Enable alerts through email",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "backstage_id": {
    ///              "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cortex_id": {
    ///              "description": "The Cortex group id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "environment_ids": {
    ///              "description": "Environments associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "escalation_policy_id": {
    ///              "description": "The escalation policy id of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_id": {
    ///              "description": "The external id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "github_repository_branch": {
    ///              "description": "The GitHub repository branch associated to this service. eg: main",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "github_repository_name": {
    ///              "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "gitlab_repository_branch": {
    ///              "description": "The GitLab repository branch associated to this service. eg: main",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "gitlab_repository_name": {
    ///              "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_broadcast_channel": {
    ///              "description": "Slack channel to broadcast incidents to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "incident_broadcast_enabled": {
    ///              "description": "Enable incidents to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "kubernetes_deployment_name": {
    ///              "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the service",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "opsgenie_id": {
    ///              "description": "The Opsgenie service id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "opsgenie_team_id": {
    ///              "description": "The Opsgenie team id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "Owner Teams associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "owner_user_ids": {
    ///              "description": "Owner Users associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "pagerduty_id": {
    ///              "description": "The PagerDuty service id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the service",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this service.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "public_description": {
    ///              "description": "The public description of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "Services dependent on this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_now_ci_sys_id": {
    ///              "description": "The Service Now CI sys id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_uptime": {
    ///              "description": "Show uptime",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_uptime_last_days": {
    ///              "description": "Show uptime over x days",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                30,
    ///                60,
    ///                90
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "services"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewService {
        pub data: NewServiceData,
    }
    impl NewService {
        pub fn builder() -> builder::NewService {
            Default::default()
        }
    }
    ///`NewServiceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "alert_broadcast_channel": {
    ///          "description": "Slack channel to broadcast alerts to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "alert_broadcast_enabled": {
    ///          "description": "Enable alerts to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "The alert urgency id of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alerts_email_enabled": {
    ///          "description": "Enable alerts through email",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "backstage_id": {
    ///          "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cortex_id": {
    ///          "description": "The Cortex group id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "environment_ids": {
    ///          "description": "Environments associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "escalation_policy_id": {
    ///          "description": "The escalation policy id of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_id": {
    ///          "description": "The external id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "github_repository_branch": {
    ///          "description": "The GitHub repository branch associated to this service. eg: main",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "github_repository_name": {
    ///          "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "gitlab_repository_branch": {
    ///          "description": "The GitLab repository branch associated to this service. eg: main",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "gitlab_repository_name": {
    ///          "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_broadcast_channel": {
    ///          "description": "Slack channel to broadcast incidents to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "incident_broadcast_enabled": {
    ///          "description": "Enable incidents to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "kubernetes_deployment_name": {
    ///          "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the service",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "opsgenie_id": {
    ///          "description": "The Opsgenie service id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "opsgenie_team_id": {
    ///          "description": "The Opsgenie team id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "Owner Teams associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "owner_user_ids": {
    ///          "description": "Owner Users associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "pagerduty_id": {
    ///          "description": "The PagerDuty service id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the service",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this service.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "public_description": {
    ///          "description": "The public description of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Services dependent on this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_now_ci_sys_id": {
    ///          "description": "The Service Now CI sys id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_uptime": {
    ///          "description": "Show uptime",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_uptime_last_days": {
    ///          "description": "Show uptime over x days",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            30,
    ///            60,
    ///            90
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewServiceData {
        pub attributes: NewServiceDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewServiceDataType,
    }
    impl NewServiceData {
        pub fn builder() -> builder::NewServiceData {
            Default::default()
        }
    }
    ///`NewServiceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "alert_broadcast_channel": {
    ///      "description": "Slack channel to broadcast alerts to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "alert_broadcast_enabled": {
    ///      "description": "Enable alerts to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The alert urgency id of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_enabled": {
    ///      "description": "Enable alerts through email",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "Environments associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The escalation policy id of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_repository_branch": {
    ///      "description": "The GitHub repository branch associated to this service. eg: main",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_repository_name": {
    ///      "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_repository_branch": {
    ///      "description": "The GitLab repository branch associated to this service. eg: main",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_repository_name": {
    ///      "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_broadcast_channel": {
    ///      "description": "Slack channel to broadcast incidents to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_broadcast_enabled": {
    ///      "description": "Enable incidents to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "kubernetes_deployment_name": {
    ///      "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the service",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie service id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_team_id": {
    ///      "description": "The Opsgenie team id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owner Teams associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_ids": {
    ///      "description": "Owner Users associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty service id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the service",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this service.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Services dependent on this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime": {
    ///      "description": "Show uptime",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime_last_days": {
    ///      "description": "Show uptime over x days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        30,
    ///        60,
    ///        90
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewServiceDataAttributes {
        ///Slack channel to broadcast alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_channel: ::std::option::Option<
            NewServiceDataAttributesAlertBroadcastChannel,
        >,
        ///Enable alerts to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_enabled: ::std::option::Option<bool>,
        ///The alert urgency id of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Enable alerts through email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_enabled: ::std::option::Option<bool>,
        ///The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///The description of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Environments associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The escalation policy id of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The external id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///The GitHub repository branch associated to this service. eg: main
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_repository_branch: ::std::option::Option<::std::string::String>,
        ///The GitHub repository name associated to this service. eg: rootlyhq/my-service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_repository_name: ::std::option::Option<::std::string::String>,
        ///The GitLab repository branch associated to this service. eg: main
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_repository_branch: ::std::option::Option<::std::string::String>,
        ///The GitLab repository name associated to this service. eg: rootlyhq/my-service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_repository_name: ::std::option::Option<::std::string::String>,
        ///Slack channel to broadcast incidents to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_channel: ::std::option::Option<
            NewServiceDataAttributesIncidentBroadcastChannel,
        >,
        ///Enable incidents to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_enabled: ::std::option::Option<bool>,
        ///The Kubernetes deployment name associated to this service. eg: namespace/deployment-name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kubernetes_deployment_name: ::std::option::Option<::std::string::String>,
        ///The name of the service
        pub name: ::std::string::String,
        ///Emails to attach to the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie service id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The Opsgenie team id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_team_id: ::std::option::Option<::std::string::String>,
        ///Owner Teams associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Owner Users associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The PagerDuty service id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///Position of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this service.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewServiceDataAttributesPropertiesItem>,
        ///The public description of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///Services dependent on this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Service Now CI sys id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Show uptime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime: ::std::option::Option<bool>,
        ///Show uptime over x days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime_last_days: ::std::option::Option<
            NewServiceDataAttributesShowUptimeLastDays,
        >,
        ///Slack Aliases associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<NewServiceDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<NewServiceDataAttributesSlackChannelsItem>,
        >,
    }
    impl NewServiceDataAttributes {
        pub fn builder() -> builder::NewServiceDataAttributes {
            Default::default()
        }
    }
    ///Slack channel to broadcast alerts to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast alerts to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewServiceDataAttributesAlertBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl NewServiceDataAttributesAlertBroadcastChannel {
        pub fn builder() -> builder::NewServiceDataAttributesAlertBroadcastChannel {
            Default::default()
        }
    }
    ///Slack channel to broadcast incidents to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast incidents to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewServiceDataAttributesIncidentBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl NewServiceDataAttributesIncidentBroadcastChannel {
        pub fn builder() -> builder::NewServiceDataAttributesIncidentBroadcastChannel {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewServiceDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl NewServiceDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewServiceDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///Show uptime over x days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Show uptime over x days",
    ///  "type": "integer",
    ///  "enum": [
    ///    30,
    ///    60,
    ///    90
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewServiceDataAttributesShowUptimeLastDays(i64);
    impl ::std::ops::Deref for NewServiceDataAttributesShowUptimeLastDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewServiceDataAttributesShowUptimeLastDays> for i64 {
        fn from(value: NewServiceDataAttributesShowUptimeLastDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for NewServiceDataAttributesShowUptimeLastDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![30_i64, 60_i64, 90_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for NewServiceDataAttributesShowUptimeLastDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`NewServiceDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewServiceDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl NewServiceDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::NewServiceDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`NewServiceDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewServiceDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl NewServiceDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::NewServiceDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`NewServiceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewServiceDataType {
        #[serde(rename = "services")]
        Services,
    }
    impl ::std::fmt::Display for NewServiceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Services => f.write_str("services"),
            }
        }
    }
    impl ::std::str::FromStr for NewServiceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "services" => Ok(Self::Services),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the severity",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the severity",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the severity",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the severity",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "severity": {
    ///              "description": "The severity of the severity",
    ///              "type": "string",
    ///              "enum": [
    ///                "critical",
    ///                "high",
    ///                "medium",
    ///                "low"
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "severities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSeverity {
        pub data: NewSeverityData,
    }
    impl NewSeverity {
        pub fn builder() -> builder::NewSeverity {
            Default::default()
        }
    }
    ///`NewSeverityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the severity",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the severity",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the severity",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the severity",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "severity": {
    ///          "description": "The severity of the severity",
    ///          "type": "string",
    ///          "enum": [
    ///            "critical",
    ///            "high",
    ///            "medium",
    ///            "low"
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSeverityData {
        pub attributes: NewSeverityDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewSeverityDataType,
    }
    impl NewSeverityData {
        pub fn builder() -> builder::NewSeverityData {
            Default::default()
        }
    }
    ///`NewSeverityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the severity",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the severity",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the severity",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the severity",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "severity": {
    ///      "description": "The severity of the severity",
    ///      "type": "string",
    ///      "enum": [
    ///        "critical",
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewSeverityDataAttributes {
        ///The hex color of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the severity
        pub name: ::std::string::String,
        ///Emails to attach to the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The severity of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity: ::std::option::Option<NewSeverityDataAttributesSeverity>,
        ///Slack Aliases associated with this severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<NewSeverityDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<NewSeverityDataAttributesSlackChannelsItem>,
        >,
    }
    impl NewSeverityDataAttributes {
        pub fn builder() -> builder::NewSeverityDataAttributes {
            Default::default()
        }
    }
    ///The severity of the severity
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The severity of the severity",
    ///  "type": "string",
    ///  "enum": [
    ///    "critical",
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSeverityDataAttributesSeverity {
        #[serde(rename = "critical")]
        Critical,
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for NewSeverityDataAttributesSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Critical => f.write_str("critical"),
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for NewSeverityDataAttributesSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "critical" => Ok(Self::Critical),
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSeverityDataAttributesSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSeverityDataAttributesSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSeverityDataAttributesSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSeverityDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSeverityDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl NewSeverityDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::NewSeverityDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`NewSeverityDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSeverityDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl NewSeverityDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::NewSeverityDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`NewSeverityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSeverityDataType {
        #[serde(rename = "severities")]
        Severities,
    }
    impl ::std::fmt::Display for NewSeverityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
            }
        }
    }
    impl ::std::str::FromStr for NewSeverityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSeverityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewSeverityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewSeverityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSla`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "assignment_deadline_days",
    ///            "assignment_deadline_parent_status",
    ///            "completion_deadline_days",
    ///            "completion_deadline_parent_status",
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "assignment_deadline_days": {
    ///              "description": "Number of days for the assignment deadline",
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                2,
    ///                3,
    ///                4,
    ///                5,
    ///                6,
    ///                7,
    ///                14,
    ///                21,
    ///                30
    ///              ]
    ///            },
    ///            "assignment_deadline_parent_status": {
    ///              "description": "The incident parent status that triggers the assignment deadline",
    ///              "type": "string",
    ///              "enum": [
    ///                "in_triage",
    ///                "started",
    ///                "mitigated",
    ///                "resolved",
    ///                "closed",
    ///                "cancelled"
    ///              ]
    ///            },
    ///            "assignment_deadline_sub_status_id": {
    ///              "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "uuid"
    ///            },
    ///            "assignment_skip_weekends": {
    ///              "description": "Whether to skip weekends when calculating the assignment deadline",
    ///              "type": "boolean"
    ///            },
    ///            "completion_deadline_days": {
    ///              "description": "Number of days for the completion deadline",
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                2,
    ///                3,
    ///                4,
    ///                5,
    ///                6,
    ///                7,
    ///                14,
    ///                21,
    ///                30
    ///              ]
    ///            },
    ///            "completion_deadline_parent_status": {
    ///              "description": "The incident parent status that triggers the completion deadline",
    ///              "type": "string",
    ///              "enum": [
    ///                "in_triage",
    ///                "started",
    ///                "mitigated",
    ///                "resolved",
    ///                "closed",
    ///                "cancelled"
    ///              ]
    ///            },
    ///            "completion_deadline_sub_status_id": {
    ///              "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "uuid"
    ///            },
    ///            "completion_skip_weekends": {
    ///              "description": "Whether to skip weekends when calculating the completion deadline",
    ///              "type": "boolean"
    ///            },
    ///            "condition_match_type": {
    ///              "description": "Whether all or any conditions must match",
    ///              "type": "string",
    ///              "enum": [
    ///                "ALL",
    ///                "ANY"
    ///              ]
    ///            },
    ///            "conditions": {
    ///              "description": "Conditions that determine which incidents this SLA applies to. Maximum 20.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "conditionable_type",
    ///                  "operator"
    ///                ],
    ///                "properties": {
    ///                  "conditionable_type": {
    ///                    "description": "The type of condition",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "SLAs::BuiltInFieldCondition",
    ///                      "SLAs::CustomFieldCondition"
    ///                    ]
    ///                  },
    ///                  "form_field_id": {
    ///                    "description": "The ID of the form field (for custom field conditions)",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "format": "uuid"
    ///                  },
    ///                  "operator": {
    ///                    "description": "The comparison operator",
    ///                    "type": "string"
    ///                  },
    ///                  "position": {
    ///                    "description": "The position of the condition for ordering",
    ///                    "type": "integer"
    ///                  },
    ///                  "property": {
    ///                    "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "severity",
    ///                      "environment",
    ///                      "service",
    ///                      "functionality",
    ///                      "incident_type",
    ///                      "group",
    ///                      "cause",
    ///                      "sub_status",
    ///                      "incident_role",
    ///                      "status",
    ///                      "kind",
    ///                      "visibility",
    ///                      "summary",
    ///                      "started_at",
    ///                      "detected_at",
    ///                      "acknowledged_at",
    ///                      "mitigated_at",
    ///                      "resolved_at"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "The values to compare against",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "A description of the SLA",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "manager_role_id": {
    ///              "description": "The ID of the incident role responsible for this SLA. Must provide either manager_role_id or manager_user_id.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "uuid"
    ///            },
    ///            "manager_user_id": {
    ///              "description": "The ID of the user responsible for this SLA. Must provide either manager_role_id or manager_user_id.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the SLA",
    ///              "type": "string"
    ///            },
    ///            "notification_configurations": {
    ///              "description": "Notification timing configurations. Maximum 20.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "offset_days",
    ///                  "offset_type"
    ///                ],
    ///                "properties": {
    ///                  "offset_days": {
    ///                    "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///                    "type": "integer"
    ///                  },
    ///                  "offset_type": {
    ///                    "description": "When to send the notification relative to the deadline",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "before_due",
    ///                      "when_due",
    ///                      "after_due"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the SLA for ordering",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "slas"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSla {
        pub data: NewSlaData,
    }
    impl NewSla {
        pub fn builder() -> builder::NewSla {
            Default::default()
        }
    }
    ///`NewSlaData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "assignment_deadline_days",
    ///        "assignment_deadline_parent_status",
    ///        "completion_deadline_days",
    ///        "completion_deadline_parent_status",
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "assignment_deadline_days": {
    ///          "description": "Number of days for the assignment deadline",
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            2,
    ///            3,
    ///            4,
    ///            5,
    ///            6,
    ///            7,
    ///            14,
    ///            21,
    ///            30
    ///          ]
    ///        },
    ///        "assignment_deadline_parent_status": {
    ///          "description": "The incident parent status that triggers the assignment deadline",
    ///          "type": "string",
    ///          "enum": [
    ///            "in_triage",
    ///            "started",
    ///            "mitigated",
    ///            "resolved",
    ///            "closed",
    ///            "cancelled"
    ///          ]
    ///        },
    ///        "assignment_deadline_sub_status_id": {
    ///          "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "uuid"
    ///        },
    ///        "assignment_skip_weekends": {
    ///          "description": "Whether to skip weekends when calculating the assignment deadline",
    ///          "type": "boolean"
    ///        },
    ///        "completion_deadline_days": {
    ///          "description": "Number of days for the completion deadline",
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            2,
    ///            3,
    ///            4,
    ///            5,
    ///            6,
    ///            7,
    ///            14,
    ///            21,
    ///            30
    ///          ]
    ///        },
    ///        "completion_deadline_parent_status": {
    ///          "description": "The incident parent status that triggers the completion deadline",
    ///          "type": "string",
    ///          "enum": [
    ///            "in_triage",
    ///            "started",
    ///            "mitigated",
    ///            "resolved",
    ///            "closed",
    ///            "cancelled"
    ///          ]
    ///        },
    ///        "completion_deadline_sub_status_id": {
    ///          "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "uuid"
    ///        },
    ///        "completion_skip_weekends": {
    ///          "description": "Whether to skip weekends when calculating the completion deadline",
    ///          "type": "boolean"
    ///        },
    ///        "condition_match_type": {
    ///          "description": "Whether all or any conditions must match",
    ///          "type": "string",
    ///          "enum": [
    ///            "ALL",
    ///            "ANY"
    ///          ]
    ///        },
    ///        "conditions": {
    ///          "description": "Conditions that determine which incidents this SLA applies to. Maximum 20.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "conditionable_type",
    ///              "operator"
    ///            ],
    ///            "properties": {
    ///              "conditionable_type": {
    ///                "description": "The type of condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "SLAs::BuiltInFieldCondition",
    ///                  "SLAs::CustomFieldCondition"
    ///                ]
    ///              },
    ///              "form_field_id": {
    ///                "description": "The ID of the form field (for custom field conditions)",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "format": "uuid"
    ///              },
    ///              "operator": {
    ///                "description": "The comparison operator",
    ///                "type": "string"
    ///              },
    ///              "position": {
    ///                "description": "The position of the condition for ordering",
    ///                "type": "integer"
    ///              },
    ///              "property": {
    ///                "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "severity",
    ///                  "environment",
    ///                  "service",
    ///                  "functionality",
    ///                  "incident_type",
    ///                  "group",
    ///                  "cause",
    ///                  "sub_status",
    ///                  "incident_role",
    ///                  "status",
    ///                  "kind",
    ///                  "visibility",
    ///                  "summary",
    ///                  "started_at",
    ///                  "detected_at",
    ///                  "acknowledged_at",
    ///                  "mitigated_at",
    ///                  "resolved_at"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "The values to compare against",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "A description of the SLA",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "manager_role_id": {
    ///          "description": "The ID of the incident role responsible for this SLA. Must provide either manager_role_id or manager_user_id.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "uuid"
    ///        },
    ///        "manager_user_id": {
    ///          "description": "The ID of the user responsible for this SLA. Must provide either manager_role_id or manager_user_id.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the SLA",
    ///          "type": "string"
    ///        },
    ///        "notification_configurations": {
    ///          "description": "Notification timing configurations. Maximum 20.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "offset_days",
    ///              "offset_type"
    ///            ],
    ///            "properties": {
    ///              "offset_days": {
    ///                "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///                "type": "integer"
    ///              },
    ///              "offset_type": {
    ///                "description": "When to send the notification relative to the deadline",
    ///                "type": "string",
    ///                "enum": [
    ///                  "before_due",
    ///                  "when_due",
    ///                  "after_due"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the SLA for ordering",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "slas"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSlaData {
        pub attributes: NewSlaDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewSlaDataType,
    }
    impl NewSlaData {
        pub fn builder() -> builder::NewSlaData {
            Default::default()
        }
    }
    ///`NewSlaDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "assignment_deadline_days",
    ///    "assignment_deadline_parent_status",
    ///    "completion_deadline_days",
    ///    "completion_deadline_parent_status",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "assignment_deadline_days": {
    ///      "description": "Number of days for the assignment deadline",
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        2,
    ///        3,
    ///        4,
    ///        5,
    ///        6,
    ///        7,
    ///        14,
    ///        21,
    ///        30
    ///      ]
    ///    },
    ///    "assignment_deadline_parent_status": {
    ///      "description": "The incident parent status that triggers the assignment deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled"
    ///      ]
    ///    },
    ///    "assignment_deadline_sub_status_id": {
    ///      "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "assignment_skip_weekends": {
    ///      "description": "Whether to skip weekends when calculating the assignment deadline",
    ///      "type": "boolean"
    ///    },
    ///    "completion_deadline_days": {
    ///      "description": "Number of days for the completion deadline",
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        2,
    ///        3,
    ///        4,
    ///        5,
    ///        6,
    ///        7,
    ///        14,
    ///        21,
    ///        30
    ///      ]
    ///    },
    ///    "completion_deadline_parent_status": {
    ///      "description": "The incident parent status that triggers the completion deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled"
    ///      ]
    ///    },
    ///    "completion_deadline_sub_status_id": {
    ///      "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "completion_skip_weekends": {
    ///      "description": "Whether to skip weekends when calculating the completion deadline",
    ///      "type": "boolean"
    ///    },
    ///    "condition_match_type": {
    ///      "description": "Whether all or any conditions must match",
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "description": "Conditions that determine which incidents this SLA applies to. Maximum 20.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "conditionable_type",
    ///          "operator"
    ///        ],
    ///        "properties": {
    ///          "conditionable_type": {
    ///            "description": "The type of condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "SLAs::BuiltInFieldCondition",
    ///              "SLAs::CustomFieldCondition"
    ///            ]
    ///          },
    ///          "form_field_id": {
    ///            "description": "The ID of the form field (for custom field conditions)",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "operator": {
    ///            "description": "The comparison operator",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition for ordering",
    ///            "type": "integer"
    ///          },
    ///          "property": {
    ///            "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "severity",
    ///              "environment",
    ///              "service",
    ///              "functionality",
    ///              "incident_type",
    ///              "group",
    ///              "cause",
    ///              "sub_status",
    ///              "incident_role",
    ///              "status",
    ///              "kind",
    ///              "visibility",
    ///              "summary",
    ///              "started_at",
    ///              "detected_at",
    ///              "acknowledged_at",
    ///              "mitigated_at",
    ///              "resolved_at"
    ///            ]
    ///          },
    ///          "values": {
    ///            "description": "The values to compare against",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "A description of the SLA",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "manager_role_id": {
    ///      "description": "The ID of the incident role responsible for this SLA. Must provide either manager_role_id or manager_user_id.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "manager_user_id": {
    ///      "description": "The ID of the user responsible for this SLA. Must provide either manager_role_id or manager_user_id.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the SLA",
    ///      "type": "string"
    ///    },
    ///    "notification_configurations": {
    ///      "description": "Notification timing configurations. Maximum 20.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "offset_days",
    ///          "offset_type"
    ///        ],
    ///        "properties": {
    ///          "offset_days": {
    ///            "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///            "type": "integer"
    ///          },
    ///          "offset_type": {
    ///            "description": "When to send the notification relative to the deadline",
    ///            "type": "string",
    ///            "enum": [
    ///              "before_due",
    ///              "when_due",
    ///              "after_due"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the SLA for ordering",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewSlaDataAttributes {
        ///Number of days for the assignment deadline
        pub assignment_deadline_days: NewSlaDataAttributesAssignmentDeadlineDays,
        ///The incident parent status that triggers the assignment deadline
        pub assignment_deadline_parent_status: NewSlaDataAttributesAssignmentDeadlineParentStatus,
        ///Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_deadline_sub_status_id: ::std::option::Option<::uuid::Uuid>,
        ///Whether to skip weekends when calculating the assignment deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_skip_weekends: ::std::option::Option<bool>,
        ///Number of days for the completion deadline
        pub completion_deadline_days: NewSlaDataAttributesCompletionDeadlineDays,
        ///The incident parent status that triggers the completion deadline
        pub completion_deadline_parent_status: NewSlaDataAttributesCompletionDeadlineParentStatus,
        ///Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_deadline_sub_status_id: ::std::option::Option<::uuid::Uuid>,
        ///Whether to skip weekends when calculating the completion deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_skip_weekends: ::std::option::Option<bool>,
        ///Whether all or any conditions must match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_match_type: ::std::option::Option<
            NewSlaDataAttributesConditionMatchType,
        >,
        ///Conditions that determine which incidents this SLA applies to. Maximum 20.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<NewSlaDataAttributesConditionsItem>,
        ///A description of the SLA
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The ID of the incident role responsible for this SLA. Must provide either manager_role_id or manager_user_id.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub manager_role_id: ::std::option::Option<::uuid::Uuid>,
        ///The ID of the user responsible for this SLA. Must provide either manager_role_id or manager_user_id.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub manager_user_id: ::std::option::Option<i64>,
        ///The name of the SLA
        pub name: ::std::string::String,
        ///Notification timing configurations. Maximum 20.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub notification_configurations: ::std::vec::Vec<
            NewSlaDataAttributesNotificationConfigurationsItem,
        >,
        ///Position of the SLA for ordering
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewSlaDataAttributes {
        pub fn builder() -> builder::NewSlaDataAttributes {
            Default::default()
        }
    }
    ///Number of days for the assignment deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Number of days for the assignment deadline",
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    2,
    ///    3,
    ///    4,
    ///    5,
    ///    6,
    ///    7,
    ///    14,
    ///    21,
    ///    30
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewSlaDataAttributesAssignmentDeadlineDays(i64);
    impl ::std::ops::Deref for NewSlaDataAttributesAssignmentDeadlineDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewSlaDataAttributesAssignmentDeadlineDays> for i64 {
        fn from(value: NewSlaDataAttributesAssignmentDeadlineDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for NewSlaDataAttributesAssignmentDeadlineDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 2_i64, 3_i64, 4_i64, 5_i64, 6_i64, 7_i64, 14_i64, 21_i64, 30_i64]
                .contains(&value)
            {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for NewSlaDataAttributesAssignmentDeadlineDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///The incident parent status that triggers the assignment deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The incident parent status that triggers the assignment deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataAttributesAssignmentDeadlineParentStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
    }
    impl ::std::fmt::Display for NewSlaDataAttributesAssignmentDeadlineParentStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
            }
        }
    }
    impl ::std::str::FromStr for NewSlaDataAttributesAssignmentDeadlineParentStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewSlaDataAttributesAssignmentDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSlaDataAttributesAssignmentDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSlaDataAttributesAssignmentDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Number of days for the completion deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Number of days for the completion deadline",
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    2,
    ///    3,
    ///    4,
    ///    5,
    ///    6,
    ///    7,
    ///    14,
    ///    21,
    ///    30
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewSlaDataAttributesCompletionDeadlineDays(i64);
    impl ::std::ops::Deref for NewSlaDataAttributesCompletionDeadlineDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewSlaDataAttributesCompletionDeadlineDays> for i64 {
        fn from(value: NewSlaDataAttributesCompletionDeadlineDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for NewSlaDataAttributesCompletionDeadlineDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 2_i64, 3_i64, 4_i64, 5_i64, 6_i64, 7_i64, 14_i64, 21_i64, 30_i64]
                .contains(&value)
            {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for NewSlaDataAttributesCompletionDeadlineDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///The incident parent status that triggers the completion deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The incident parent status that triggers the completion deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataAttributesCompletionDeadlineParentStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
    }
    impl ::std::fmt::Display for NewSlaDataAttributesCompletionDeadlineParentStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
            }
        }
    }
    impl ::std::str::FromStr for NewSlaDataAttributesCompletionDeadlineParentStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewSlaDataAttributesCompletionDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSlaDataAttributesCompletionDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSlaDataAttributesCompletionDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Whether all or any conditions must match
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Whether all or any conditions must match",
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataAttributesConditionMatchType {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
    }
    impl ::std::fmt::Display for NewSlaDataAttributesConditionMatchType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
            }
        }
    }
    impl ::std::str::FromStr for NewSlaDataAttributesConditionMatchType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSlaDataAttributesConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSlaDataAttributesConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSlaDataAttributesConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSlaDataAttributesConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "conditionable_type",
    ///    "operator"
    ///  ],
    ///  "properties": {
    ///    "conditionable_type": {
    ///      "description": "The type of condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "SLAs::BuiltInFieldCondition",
    ///        "SLAs::CustomFieldCondition"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field (for custom field conditions)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "operator": {
    ///      "description": "The comparison operator",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition for ordering",
    ///      "type": "integer"
    ///    },
    ///    "property": {
    ///      "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "severity",
    ///        "environment",
    ///        "service",
    ///        "functionality",
    ///        "incident_type",
    ///        "group",
    ///        "cause",
    ///        "sub_status",
    ///        "incident_role",
    ///        "status",
    ///        "kind",
    ///        "visibility",
    ///        "summary",
    ///        "started_at",
    ///        "detected_at",
    ///        "acknowledged_at",
    ///        "mitigated_at",
    ///        "resolved_at"
    ///      ]
    ///    },
    ///    "values": {
    ///      "description": "The values to compare against",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSlaDataAttributesConditionsItem {
        ///The type of condition
        pub conditionable_type: NewSlaDataAttributesConditionsItemConditionableType,
        ///The ID of the form field (for custom field conditions)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::uuid::Uuid>,
        ///The comparison operator
        pub operator: ::std::string::String,
        ///The position of the condition for ordering
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property: ::std::option::Option<NewSlaDataAttributesConditionsItemProperty>,
        ///The values to compare against
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub values: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl NewSlaDataAttributesConditionsItem {
        pub fn builder() -> builder::NewSlaDataAttributesConditionsItem {
            Default::default()
        }
    }
    ///The type of condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "SLAs::BuiltInFieldCondition",
    ///    "SLAs::CustomFieldCondition"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataAttributesConditionsItemConditionableType {
        #[serde(rename = "SLAs::BuiltInFieldCondition")]
        SlAsBuiltInFieldCondition,
        #[serde(rename = "SLAs::CustomFieldCondition")]
        SlAsCustomFieldCondition,
    }
    impl ::std::fmt::Display for NewSlaDataAttributesConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SlAsBuiltInFieldCondition => {
                    f.write_str("SLAs::BuiltInFieldCondition")
                }
                Self::SlAsCustomFieldCondition => {
                    f.write_str("SLAs::CustomFieldCondition")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewSlaDataAttributesConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SLAs::BuiltInFieldCondition" => Ok(Self::SlAsBuiltInFieldCondition),
                "SLAs::CustomFieldCondition" => Ok(Self::SlAsCustomFieldCondition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewSlaDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSlaDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSlaDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///  "type": "string",
    ///  "enum": [
    ///    "severity",
    ///    "environment",
    ///    "service",
    ///    "functionality",
    ///    "incident_type",
    ///    "group",
    ///    "cause",
    ///    "sub_status",
    ///    "incident_role",
    ///    "status",
    ///    "kind",
    ///    "visibility",
    ///    "summary",
    ///    "started_at",
    ///    "detected_at",
    ///    "acknowledged_at",
    ///    "mitigated_at",
    ///    "resolved_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataAttributesConditionsItemProperty {
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "sub_status")]
        SubStatus,
        #[serde(rename = "incident_role")]
        IncidentRole,
        #[serde(rename = "status")]
        Status,
        #[serde(rename = "kind")]
        Kind,
        #[serde(rename = "visibility")]
        Visibility,
        #[serde(rename = "summary")]
        Summary,
        #[serde(rename = "started_at")]
        StartedAt,
        #[serde(rename = "detected_at")]
        DetectedAt,
        #[serde(rename = "acknowledged_at")]
        AcknowledgedAt,
        #[serde(rename = "mitigated_at")]
        MitigatedAt,
        #[serde(rename = "resolved_at")]
        ResolvedAt,
    }
    impl ::std::fmt::Display for NewSlaDataAttributesConditionsItemProperty {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severity => f.write_str("severity"),
                Self::Environment => f.write_str("environment"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Group => f.write_str("group"),
                Self::Cause => f.write_str("cause"),
                Self::SubStatus => f.write_str("sub_status"),
                Self::IncidentRole => f.write_str("incident_role"),
                Self::Status => f.write_str("status"),
                Self::Kind => f.write_str("kind"),
                Self::Visibility => f.write_str("visibility"),
                Self::Summary => f.write_str("summary"),
                Self::StartedAt => f.write_str("started_at"),
                Self::DetectedAt => f.write_str("detected_at"),
                Self::AcknowledgedAt => f.write_str("acknowledged_at"),
                Self::MitigatedAt => f.write_str("mitigated_at"),
                Self::ResolvedAt => f.write_str("resolved_at"),
            }
        }
    }
    impl ::std::str::FromStr for NewSlaDataAttributesConditionsItemProperty {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severity" => Ok(Self::Severity),
                "environment" => Ok(Self::Environment),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "group" => Ok(Self::Group),
                "cause" => Ok(Self::Cause),
                "sub_status" => Ok(Self::SubStatus),
                "incident_role" => Ok(Self::IncidentRole),
                "status" => Ok(Self::Status),
                "kind" => Ok(Self::Kind),
                "visibility" => Ok(Self::Visibility),
                "summary" => Ok(Self::Summary),
                "started_at" => Ok(Self::StartedAt),
                "detected_at" => Ok(Self::DetectedAt),
                "acknowledged_at" => Ok(Self::AcknowledgedAt),
                "mitigated_at" => Ok(Self::MitigatedAt),
                "resolved_at" => Ok(Self::ResolvedAt),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSlaDataAttributesConditionsItemProperty {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSlaDataAttributesConditionsItemProperty {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSlaDataAttributesConditionsItemProperty {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSlaDataAttributesNotificationConfigurationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "offset_days",
    ///    "offset_type"
    ///  ],
    ///  "properties": {
    ///    "offset_days": {
    ///      "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///      "type": "integer"
    ///    },
    ///    "offset_type": {
    ///      "description": "When to send the notification relative to the deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "before_due",
    ///        "when_due",
    ///        "after_due"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSlaDataAttributesNotificationConfigurationsItem {
        ///Number of days before or after the deadline. Must be 0 for when_due.
        pub offset_days: i64,
        ///When to send the notification relative to the deadline
        pub offset_type: NewSlaDataAttributesNotificationConfigurationsItemOffsetType,
    }
    impl NewSlaDataAttributesNotificationConfigurationsItem {
        pub fn builder() -> builder::NewSlaDataAttributesNotificationConfigurationsItem {
            Default::default()
        }
    }
    ///When to send the notification relative to the deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "When to send the notification relative to the deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "before_due",
    ///    "when_due",
    ///    "after_due"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataAttributesNotificationConfigurationsItemOffsetType {
        #[serde(rename = "before_due")]
        BeforeDue,
        #[serde(rename = "when_due")]
        WhenDue,
        #[serde(rename = "after_due")]
        AfterDue,
    }
    impl ::std::fmt::Display
    for NewSlaDataAttributesNotificationConfigurationsItemOffsetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::BeforeDue => f.write_str("before_due"),
                Self::WhenDue => f.write_str("when_due"),
                Self::AfterDue => f.write_str("after_due"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "before_due" => Ok(Self::BeforeDue),
                "when_due" => Ok(Self::WhenDue),
                "after_due" => Ok(Self::AfterDue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSlaDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "slas"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSlaDataType {
        #[serde(rename = "slas")]
        Slas,
    }
    impl ::std::fmt::Display for NewSlaDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Slas => f.write_str("slas"),
            }
        }
    }
    impl ::std::str::FromStr for NewSlaDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "slas" => Ok(Self::Slas),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSlaDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewSlaDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewSlaDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewStatusPage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "title"
    ///          ],
    ///          "properties": {
    ///            "allow_search_engine_index": {
    ///              "description": "Allow search engines to include your public status page in search results",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "authentication_enabled": {
    ///              "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///              "deprecated": true,
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "authentication_method": {
    ///              "description": "Authentication method",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "none",
    ///                "password",
    ///                "saml"
    ///              ]
    ///            },
    ///            "authentication_password": {
    ///              "description": "Authentication password",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the status page",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Enabled / Disable the status page",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_domain_names": {
    ///              "description": "External domain names attached to the status page",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "failure_message": {
    ///              "description": "Message showing when at least one component is not operational",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "footer_color": {
    ///              "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "functionality_ids": {
    ///              "description": "Functionalities attached to the status page",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "ga_tracking_id": {
    ///              "description": "Google Analytics tracking ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "header_color": {
    ///              "description": "The color of the header. Eg. \"#0061F2\"",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "public": {
    ///              "description": "Make the status page accessible to the public",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "public_description": {
    ///              "description": "The public description of the status page",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "public_title": {
    ///              "description": "The public title of the status page",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_idp_cert": {
    ///              "description": "SAML IdP certificate",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_idp_slo_service_url": {
    ///              "description": "SAML IdP SLO service URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_idp_sso_service_url": {
    ///              "description": "SAML IdP SSO service URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_name_identifier_format": {
    ///              "description": "SAML name identifier format",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///                "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///                "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///                "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///              ]
    ///            },
    ///            "section_order": {
    ///              "description": "Order of sections on the status page",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "maintenance",
    ///                  "system_status",
    ///                  "incidents"
    ///                ]
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "Services attached to the status page",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "show_uptime": {
    ///              "description": "Show uptime",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_uptime_last_days": {
    ///              "description": "Show uptime over x days",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                30,
    ///                60,
    ///                90
    ///              ]
    ///            },
    ///            "success_message": {
    ///              "description": "Message showing when all components are operational",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "time_zone": {
    ///              "description": "A valid IANA time zone name.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the status page",
    ///              "type": "string"
    ///            },
    ///            "website_privacy_url": {
    ///              "description": "Website Privacy URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "website_support_url": {
    ///              "description": "Website Support URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "website_url": {
    ///              "description": "Website URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "status_pages"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewStatusPage {
        pub data: NewStatusPageData,
    }
    impl NewStatusPage {
        pub fn builder() -> builder::NewStatusPage {
            Default::default()
        }
    }
    ///`NewStatusPageData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "allow_search_engine_index": {
    ///          "description": "Allow search engines to include your public status page in search results",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "authentication_enabled": {
    ///          "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///          "deprecated": true,
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "authentication_method": {
    ///          "description": "Authentication method",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "none",
    ///            "password",
    ///            "saml"
    ///          ]
    ///        },
    ///        "authentication_password": {
    ///          "description": "Authentication password",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the status page",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Enabled / Disable the status page",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_domain_names": {
    ///          "description": "External domain names attached to the status page",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "failure_message": {
    ///          "description": "Message showing when at least one component is not operational",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "footer_color": {
    ///          "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "functionality_ids": {
    ///          "description": "Functionalities attached to the status page",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "ga_tracking_id": {
    ///          "description": "Google Analytics tracking ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "header_color": {
    ///          "description": "The color of the header. Eg. \"#0061F2\"",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "public": {
    ///          "description": "Make the status page accessible to the public",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "public_description": {
    ///          "description": "The public description of the status page",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "public_title": {
    ///          "description": "The public title of the status page",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_idp_cert": {
    ///          "description": "SAML IdP certificate",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_idp_slo_service_url": {
    ///          "description": "SAML IdP SLO service URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_idp_sso_service_url": {
    ///          "description": "SAML IdP SSO service URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_name_identifier_format": {
    ///          "description": "SAML name identifier format",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///            "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///            "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///            "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///          ]
    ///        },
    ///        "section_order": {
    ///          "description": "Order of sections on the status page",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "maintenance",
    ///              "system_status",
    ///              "incidents"
    ///            ]
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "Services attached to the status page",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "show_uptime": {
    ///          "description": "Show uptime",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_uptime_last_days": {
    ///          "description": "Show uptime over x days",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            30,
    ///            60,
    ///            90
    ///          ]
    ///        },
    ///        "success_message": {
    ///          "description": "Message showing when all components are operational",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "time_zone": {
    ///          "description": "A valid IANA time zone name.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the status page",
    ///          "type": "string"
    ///        },
    ///        "website_privacy_url": {
    ///          "description": "Website Privacy URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "website_support_url": {
    ///          "description": "Website Support URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "website_url": {
    ///          "description": "Website URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_pages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewStatusPageData {
        pub attributes: NewStatusPageDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewStatusPageDataType,
    }
    impl NewStatusPageData {
        pub fn builder() -> builder::NewStatusPageData {
            Default::default()
        }
    }
    ///`NewStatusPageDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "allow_search_engine_index": {
    ///      "description": "Allow search engines to include your public status page in search results",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "authentication_enabled": {
    ///      "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///      "deprecated": true,
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "authentication_method": {
    ///      "description": "Authentication method",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "none",
    ///        "password",
    ///        "saml"
    ///      ]
    ///    },
    ///    "authentication_password": {
    ///      "description": "Authentication password",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Enabled / Disable the status page",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_domain_names": {
    ///      "description": "External domain names attached to the status page",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "failure_message": {
    ///      "description": "Message showing when at least one component is not operational",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "footer_color": {
    ///      "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "Functionalities attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "ga_tracking_id": {
    ///      "description": "Google Analytics tracking ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "header_color": {
    ///      "description": "The color of the header. Eg. \"#0061F2\"",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public": {
    ///      "description": "Make the status page accessible to the public",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_title": {
    ///      "description": "The public title of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_cert": {
    ///      "description": "SAML IdP certificate",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_slo_service_url": {
    ///      "description": "SAML IdP SLO service URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_sso_service_url": {
    ///      "description": "SAML IdP SSO service URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_name_identifier_format": {
    ///      "description": "SAML name identifier format",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///        "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///        "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///        "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///      ]
    ///    },
    ///    "section_order": {
    ///      "description": "Order of sections on the status page",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "maintenance",
    ///          "system_status",
    ///          "incidents"
    ///        ]
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "Services attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "show_uptime": {
    ///      "description": "Show uptime",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime_last_days": {
    ///      "description": "Show uptime over x days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        30,
    ///        60,
    ///        90
    ///      ]
    ///    },
    ///    "success_message": {
    ///      "description": "Message showing when all components are operational",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the status page",
    ///      "type": "string"
    ///    },
    ///    "website_privacy_url": {
    ///      "description": "Website Privacy URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "website_support_url": {
    ///      "description": "Website Support URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "website_url": {
    ///      "description": "Website URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewStatusPageDataAttributes {
        ///Allow search engines to include your public status page in search results
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub allow_search_engine_index: ::std::option::Option<bool>,
        ///Enable authentication (deprecated - use authentication_method instead)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_enabled: ::std::option::Option<bool>,
        ///Authentication method
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_method: ::std::option::Option<
            NewStatusPageDataAttributesAuthenticationMethod,
        >,
        ///Authentication password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_password: ::std::option::Option<::std::string::String>,
        ///The description of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Enabled / Disable the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///External domain names attached to the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_domain_names: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Message showing when at least one component is not operational
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub failure_message: ::std::option::Option<::std::string::String>,
        ///The color of the footer. Eg. "#1F2F41"
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub footer_color: ::std::option::Option<::std::string::String>,
        ///Functionalities attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///Google Analytics tracking ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ga_tracking_id: ::std::option::Option<::std::string::String>,
        ///The color of the header. Eg. "#0061F2"
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub header_color: ::std::option::Option<::std::string::String>,
        ///Make the status page accessible to the public
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public: ::std::option::Option<bool>,
        ///The public description of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///The public title of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_title: ::std::option::Option<::std::string::String>,
        ///SAML IdP certificate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_cert: ::std::option::Option<::std::string::String>,
        ///SAML IdP SLO service URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_slo_service_url: ::std::option::Option<::std::string::String>,
        ///SAML IdP SSO service URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_sso_service_url: ::std::option::Option<::std::string::String>,
        ///SAML name identifier format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_name_identifier_format: ::std::option::Option<
            NewStatusPageDataAttributesSamlNameIdentifierFormat,
        >,
        ///Order of sections on the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub section_order: ::std::option::Option<
            ::std::vec::Vec<NewStatusPageDataAttributesSectionOrderItem>,
        >,
        ///Services attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        ///Show uptime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime: ::std::option::Option<bool>,
        ///Show uptime over x days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime_last_days: ::std::option::Option<
            NewStatusPageDataAttributesShowUptimeLastDays,
        >,
        ///Message showing when all components are operational
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub success_message: ::std::option::Option<::std::string::String>,
        ///A valid IANA time zone name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///The title of the status page
        pub title: ::std::string::String,
        ///Website Privacy URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_privacy_url: ::std::option::Option<::std::string::String>,
        ///Website Support URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_support_url: ::std::option::Option<::std::string::String>,
        ///Website URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_url: ::std::option::Option<::std::string::String>,
    }
    impl NewStatusPageDataAttributes {
        pub fn builder() -> builder::NewStatusPageDataAttributes {
            Default::default()
        }
    }
    ///Authentication method
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Authentication method",
    ///  "type": "string",
    ///  "enum": [
    ///    "none",
    ///    "password",
    ///    "saml"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageDataAttributesAuthenticationMethod {
        #[serde(rename = "none")]
        None,
        #[serde(rename = "password")]
        Password,
        #[serde(rename = "saml")]
        Saml,
    }
    impl ::std::fmt::Display for NewStatusPageDataAttributesAuthenticationMethod {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::None => f.write_str("none"),
                Self::Password => f.write_str("password"),
                Self::Saml => f.write_str("saml"),
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageDataAttributesAuthenticationMethod {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "none" => Ok(Self::None),
                "password" => Ok(Self::Password),
                "saml" => Ok(Self::Saml),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewStatusPageDataAttributesAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewStatusPageDataAttributesAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewStatusPageDataAttributesAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///SAML name identifier format
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "SAML name identifier format",
    ///  "type": "string",
    ///  "enum": [
    ///    "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///    "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///    "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///    "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageDataAttributesSamlNameIdentifierFormat {
        #[serde(rename = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")]
        UrnOasisNamesTcSaml11NameidFormatEmailAddress,
        #[serde(rename = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")]
        UrnOasisNamesTcSaml20NameidFormatPersistent,
        #[serde(rename = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient")]
        UrnOasisNamesTcSaml20NameidFormatTransient,
        #[serde(rename = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")]
        UrnOasisNamesTcSaml11NameidFormatUnspecified,
    }
    impl ::std::fmt::Display for NewStatusPageDataAttributesSamlNameIdentifierFormat {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UrnOasisNamesTcSaml11NameidFormatEmailAddress => {
                    f.write_str("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")
                }
                Self::UrnOasisNamesTcSaml20NameidFormatPersistent => {
                    f.write_str("urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")
                }
                Self::UrnOasisNamesTcSaml20NameidFormatTransient => {
                    f.write_str("urn:oasis:names:tc:SAML:2.0:nameid-format:transient")
                }
                Self::UrnOasisNamesTcSaml11NameidFormatUnspecified => {
                    f.write_str("urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageDataAttributesSamlNameIdentifierFormat {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" => {
                    Ok(Self::UrnOasisNamesTcSaml11NameidFormatEmailAddress)
                }
                "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" => {
                    Ok(Self::UrnOasisNamesTcSaml20NameidFormatPersistent)
                }
                "urn:oasis:names:tc:SAML:2.0:nameid-format:transient" => {
                    Ok(Self::UrnOasisNamesTcSaml20NameidFormatTransient)
                }
                "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" => {
                    Ok(Self::UrnOasisNamesTcSaml11NameidFormatUnspecified)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewStatusPageDataAttributesSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewStatusPageDataAttributesSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewStatusPageDataAttributesSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewStatusPageDataAttributesSectionOrderItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "maintenance",
    ///    "system_status",
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageDataAttributesSectionOrderItem {
        #[serde(rename = "maintenance")]
        Maintenance,
        #[serde(rename = "system_status")]
        SystemStatus,
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for NewStatusPageDataAttributesSectionOrderItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Maintenance => f.write_str("maintenance"),
                Self::SystemStatus => f.write_str("system_status"),
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageDataAttributesSectionOrderItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "maintenance" => Ok(Self::Maintenance),
                "system_status" => Ok(Self::SystemStatus),
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewStatusPageDataAttributesSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewStatusPageDataAttributesSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewStatusPageDataAttributesSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Show uptime over x days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Show uptime over x days",
    ///  "type": "integer",
    ///  "enum": [
    ///    30,
    ///    60,
    ///    90
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct NewStatusPageDataAttributesShowUptimeLastDays(i64);
    impl ::std::ops::Deref for NewStatusPageDataAttributesShowUptimeLastDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<NewStatusPageDataAttributesShowUptimeLastDays> for i64 {
        fn from(value: NewStatusPageDataAttributesShowUptimeLastDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for NewStatusPageDataAttributesShowUptimeLastDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![30_i64, 60_i64, 90_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for NewStatusPageDataAttributesShowUptimeLastDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`NewStatusPageDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_pages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageDataType {
        #[serde(rename = "status_pages")]
        StatusPages,
    }
    impl ::std::fmt::Display for NewStatusPageDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPages => f.write_str("status_pages"),
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_pages" => Ok(Self::StatusPages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewStatusPageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewStatusPageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewStatusPageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewStatusPageTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "body",
    ///            "title"
    ///          ],
    ///          "properties": {
    ///            "body": {
    ///              "description": "Description of the event the template will populate",
    ///              "type": "string"
    ///            },
    ///            "enabled": {
    ///              "description": "Enable / Disable the status page template",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the status page template",
    ///              "type": "string",
    ///              "enum": [
    ///                "normal",
    ///                "scheduled"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the status page template",
    ///              "type": "integer"
    ///            },
    ///            "should_notify_subscribers": {
    ///              "description": "Controls if incident subscribers should be notified",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "status_page_id": {
    ///              "type": "string"
    ///            },
    ///            "title": {
    ///              "description": "Title of the template",
    ///              "type": "string"
    ///            },
    ///            "update_status": {
    ///              "description": "Status of the event the template will populate",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "investigating",
    ///                "identified",
    ///                "monitoring",
    ///                "resolved",
    ///                "scheduled",
    ///                "in_progress",
    ///                "completed"
    ///              ]
    ///            },
    ///            "update_title": {
    ///              "description": "Title that will be used for the status page update",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "status_page_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewStatusPageTemplate {
        pub data: NewStatusPageTemplateData,
    }
    impl NewStatusPageTemplate {
        pub fn builder() -> builder::NewStatusPageTemplate {
            Default::default()
        }
    }
    ///`NewStatusPageTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "body",
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "body": {
    ///          "description": "Description of the event the template will populate",
    ///          "type": "string"
    ///        },
    ///        "enabled": {
    ///          "description": "Enable / Disable the status page template",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the status page template",
    ///          "type": "string",
    ///          "enum": [
    ///            "normal",
    ///            "scheduled"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the status page template",
    ///          "type": "integer"
    ///        },
    ///        "should_notify_subscribers": {
    ///          "description": "Controls if incident subscribers should be notified",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "status_page_id": {
    ///          "type": "string"
    ///        },
    ///        "title": {
    ///          "description": "Title of the template",
    ///          "type": "string"
    ///        },
    ///        "update_status": {
    ///          "description": "Status of the event the template will populate",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "investigating",
    ///            "identified",
    ///            "monitoring",
    ///            "resolved",
    ///            "scheduled",
    ///            "in_progress",
    ///            "completed"
    ///          ]
    ///        },
    ///        "update_title": {
    ///          "description": "Title that will be used for the status page update",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_page_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewStatusPageTemplateData {
        pub attributes: NewStatusPageTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewStatusPageTemplateDataType,
    }
    impl NewStatusPageTemplateData {
        pub fn builder() -> builder::NewStatusPageTemplateData {
            Default::default()
        }
    }
    ///`NewStatusPageTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "body",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "Description of the event the template will populate",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "description": "Enable / Disable the status page template",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the status page template",
    ///      "type": "string",
    ///      "enum": [
    ///        "normal",
    ///        "scheduled"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the status page template",
    ///      "type": "integer"
    ///    },
    ///    "should_notify_subscribers": {
    ///      "description": "Controls if incident subscribers should be notified",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "status_page_id": {
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "Title of the template",
    ///      "type": "string"
    ///    },
    ///    "update_status": {
    ///      "description": "Status of the event the template will populate",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "investigating",
    ///        "identified",
    ///        "monitoring",
    ///        "resolved",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "update_title": {
    ///      "description": "Title that will be used for the status page update",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewStatusPageTemplateDataAttributes {
        ///Description of the event the template will populate
        pub body: ::std::string::String,
        ///Enable / Disable the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The kind of the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<NewStatusPageTemplateDataAttributesKind>,
        ///Position of the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Controls if incident subscribers should be notified
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_notify_subscribers: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status_page_id: ::std::option::Option<::std::string::String>,
        ///Title of the template
        pub title: ::std::string::String,
        ///Status of the event the template will populate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_status: ::std::option::Option<
            NewStatusPageTemplateDataAttributesUpdateStatus,
        >,
        ///Title that will be used for the status page update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_title: ::std::option::Option<::std::string::String>,
    }
    impl NewStatusPageTemplateDataAttributes {
        pub fn builder() -> builder::NewStatusPageTemplateDataAttributes {
            Default::default()
        }
    }
    ///The kind of the status page template
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the status page template",
    ///  "type": "string",
    ///  "enum": [
    ///    "normal",
    ///    "scheduled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageTemplateDataAttributesKind {
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "scheduled")]
        Scheduled,
    }
    impl ::std::fmt::Display for NewStatusPageTemplateDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Normal => f.write_str("normal"),
                Self::Scheduled => f.write_str("scheduled"),
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageTemplateDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "normal" => Ok(Self::Normal),
                "scheduled" => Ok(Self::Scheduled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewStatusPageTemplateDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewStatusPageTemplateDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewStatusPageTemplateDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Status of the event the template will populate
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Status of the event the template will populate",
    ///  "type": "string",
    ///  "enum": [
    ///    "investigating",
    ///    "identified",
    ///    "monitoring",
    ///    "resolved",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageTemplateDataAttributesUpdateStatus {
        #[serde(rename = "investigating")]
        Investigating,
        #[serde(rename = "identified")]
        Identified,
        #[serde(rename = "monitoring")]
        Monitoring,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for NewStatusPageTemplateDataAttributesUpdateStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Investigating => f.write_str("investigating"),
                Self::Identified => f.write_str("identified"),
                Self::Monitoring => f.write_str("monitoring"),
                Self::Resolved => f.write_str("resolved"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageTemplateDataAttributesUpdateStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "investigating" => Ok(Self::Investigating),
                "identified" => Ok(Self::Identified),
                "monitoring" => Ok(Self::Monitoring),
                "resolved" => Ok(Self::Resolved),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewStatusPageTemplateDataAttributesUpdateStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewStatusPageTemplateDataAttributesUpdateStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewStatusPageTemplateDataAttributesUpdateStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewStatusPageTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_page_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewStatusPageTemplateDataType {
        #[serde(rename = "status_page_templates")]
        StatusPageTemplates,
    }
    impl ::std::fmt::Display for NewStatusPageTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPageTemplates => f.write_str("status_page_templates"),
            }
        }
    }
    impl ::std::str::FromStr for NewStatusPageTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_page_templates" => Ok(Self::StatusPageTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewStatusPageTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewStatusPageTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewStatusPageTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "parent_status"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "parent_status": {
    ///              "type": "string",
    ///              "enum": [
    ///                "started",
    ///                "retrospective"
    ///              ]
    ///            },
    ///            "position": {
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "sub_statuses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSubStatus {
        pub data: NewSubStatusData,
    }
    impl NewSubStatus {
        pub fn builder() -> builder::NewSubStatus {
            Default::default()
        }
    }
    ///`NewSubStatusData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "parent_status"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "parent_status": {
    ///          "type": "string",
    ///          "enum": [
    ///            "started",
    ///            "retrospective"
    ///          ]
    ///        },
    ///        "position": {
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewSubStatusData {
        pub attributes: NewSubStatusDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewSubStatusDataType,
    }
    impl NewSubStatusData {
        pub fn builder() -> builder::NewSubStatusData {
            Default::default()
        }
    }
    ///`NewSubStatusDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "parent_status"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "parent_status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "started",
    ///        "retrospective"
    ///      ]
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewSubStatusDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub name: ::std::string::String,
        pub parent_status: NewSubStatusDataAttributesParentStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewSubStatusDataAttributes {
        pub fn builder() -> builder::NewSubStatusDataAttributes {
            Default::default()
        }
    }
    ///`NewSubStatusDataAttributesParentStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "started",
    ///    "retrospective"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSubStatusDataAttributesParentStatus {
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "retrospective")]
        Retrospective,
    }
    impl ::std::fmt::Display for NewSubStatusDataAttributesParentStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Started => f.write_str("started"),
                Self::Retrospective => f.write_str("retrospective"),
            }
        }
    }
    impl ::std::str::FromStr for NewSubStatusDataAttributesParentStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "started" => Ok(Self::Started),
                "retrospective" => Ok(Self::Retrospective),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSubStatusDataAttributesParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewSubStatusDataAttributesParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewSubStatusDataAttributesParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewSubStatusDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewSubStatusDataType {
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for NewSubStatusDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for NewSubStatusDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "admin_ids": {
    ///              "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "alert_broadcast_channel": {
    ///              "description": "Slack channel to broadcast alerts to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "alert_broadcast_enabled": {
    ///              "description": "Enable alerts to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "The alert urgency id of the team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alerts_email_enabled": {
    ///              "description": "Enable alerts through email",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "auto_add_members_scope": {
    ///              "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "off",
    ///                "public_only",
    ///                "public_and_test",
    ///                "all"
    ///              ]
    ///            },
    ///            "auto_add_members_when_attached": {
    ///              "description": "Auto add members to incident channel when team is attached",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "backstage_id": {
    ///              "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cortex_id": {
    ///              "description": "The Cortex group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_id": {
    ///              "description": "The external id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_broadcast_channel": {
    ///              "description": "Slack channel to broadcast incidents to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "incident_broadcast_enabled": {
    ///              "description": "Enable incidents to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the team",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the team",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "opsgenie_id": {
    ///              "description": "The Opsgenie group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "opsgenie_team_id": {
    ///              "description": "The Opsgenie team id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "pagerduty_id": {
    ///              "description": "The PagerDuty group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "pagerduty_service_id": {
    ///              "description": "The PagerDuty service id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "pagertree_id": {
    ///              "description": "The PagerTree group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the team",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this team.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "service_now_ci_sys_id": {
    ///              "description": "The Service Now CI sys id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this team",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this team",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "user_ids": {
    ///              "description": "The user ids of the members of this team.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "victor_ops_id": {
    ///              "description": "The VictorOps group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeam {
        pub data: NewTeamData,
    }
    impl NewTeam {
        pub fn builder() -> builder::NewTeam {
            Default::default()
        }
    }
    ///`NewTeamData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "admin_ids": {
    ///          "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "alert_broadcast_channel": {
    ///          "description": "Slack channel to broadcast alerts to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "alert_broadcast_enabled": {
    ///          "description": "Enable alerts to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "The alert urgency id of the team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alerts_email_enabled": {
    ///          "description": "Enable alerts through email",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "auto_add_members_scope": {
    ///          "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "off",
    ///            "public_only",
    ///            "public_and_test",
    ///            "all"
    ///          ]
    ///        },
    ///        "auto_add_members_when_attached": {
    ///          "description": "Auto add members to incident channel when team is attached",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "backstage_id": {
    ///          "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cortex_id": {
    ///          "description": "The Cortex group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_id": {
    ///          "description": "The external id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_broadcast_channel": {
    ///          "description": "Slack channel to broadcast incidents to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "incident_broadcast_enabled": {
    ///          "description": "Enable incidents to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the team",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the team",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "opsgenie_id": {
    ///          "description": "The Opsgenie group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "opsgenie_team_id": {
    ///          "description": "The Opsgenie team id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "pagerduty_id": {
    ///          "description": "The PagerDuty group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "pagerduty_service_id": {
    ///          "description": "The PagerDuty service id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "pagertree_id": {
    ///          "description": "The PagerTree group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the team",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this team.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "service_now_ci_sys_id": {
    ///          "description": "The Service Now CI sys id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this team",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this team",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "user_ids": {
    ///          "description": "The user ids of the members of this team.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "victor_ops_id": {
    ///          "description": "The VictorOps group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeamData {
        pub attributes: NewTeamDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewTeamDataType,
    }
    impl NewTeamData {
        pub fn builder() -> builder::NewTeamData {
            Default::default()
        }
    }
    ///`NewTeamDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "admin_ids": {
    ///      "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "alert_broadcast_channel": {
    ///      "description": "Slack channel to broadcast alerts to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "alert_broadcast_enabled": {
    ///      "description": "Enable alerts to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The alert urgency id of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_enabled": {
    ///      "description": "Enable alerts through email",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "auto_add_members_scope": {
    ///      "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "off",
    ///        "public_only",
    ///        "public_and_test",
    ///        "all"
    ///      ]
    ///    },
    ///    "auto_add_members_when_attached": {
    ///      "description": "Auto add members to incident channel when team is attached",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_broadcast_channel": {
    ///      "description": "Slack channel to broadcast incidents to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_broadcast_enabled": {
    ///      "description": "Enable incidents to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the team",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_team_id": {
    ///      "description": "The Opsgenie team id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_service_id": {
    ///      "description": "The PagerDuty service id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagertree_id": {
    ///      "description": "The PagerTree group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the team",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this team.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "user_ids": {
    ///      "description": "The user ids of the members of this team.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "victor_ops_id": {
    ///      "description": "The VictorOps group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewTeamDataAttributes {
        ///The user ids of the admins of this team. These users must also be present in user_ids attribute.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub admin_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///Slack channel to broadcast alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_channel: ::std::option::Option<
            NewTeamDataAttributesAlertBroadcastChannel,
        >,
        ///Enable alerts to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_enabled: ::std::option::Option<bool>,
        ///The alert urgency id of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Enable alerts through email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_enabled: ::std::option::Option<bool>,
        ///Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_add_members_scope: ::std::option::Option<
            NewTeamDataAttributesAutoAddMembersScope,
        >,
        ///Auto add members to incident channel when team is attached
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_add_members_when_attached: ::std::option::Option<bool>,
        ///The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///The description of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The external id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///Slack channel to broadcast incidents to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_channel: ::std::option::Option<
            NewTeamDataAttributesIncidentBroadcastChannel,
        >,
        ///Enable incidents to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_enabled: ::std::option::Option<bool>,
        ///The name of the team
        pub name: ::std::string::String,
        ///Emails to attach to the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The Opsgenie team id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_team_id: ::std::option::Option<::std::string::String>,
        ///The PagerDuty group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///The PagerDuty service id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_service_id: ::std::option::Option<::std::string::String>,
        ///The PagerTree group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagertree_id: ::std::option::Option<::std::string::String>,
        ///Position of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this team.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<NewTeamDataAttributesPropertiesItem>,
        ///The Service Now CI sys id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<NewTeamDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<NewTeamDataAttributesSlackChannelsItem>,
        >,
        ///The user ids of the members of this team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The VictorOps group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub victor_ops_id: ::std::option::Option<::std::string::String>,
    }
    impl NewTeamDataAttributes {
        pub fn builder() -> builder::NewTeamDataAttributes {
            Default::default()
        }
    }
    ///Slack channel to broadcast alerts to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast alerts to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeamDataAttributesAlertBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl NewTeamDataAttributesAlertBroadcastChannel {
        pub fn builder() -> builder::NewTeamDataAttributesAlertBroadcastChannel {
            Default::default()
        }
    }
    ///Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///  "type": "string",
    ///  "enum": [
    ///    "off",
    ///    "public_only",
    ///    "public_and_test",
    ///    "all"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewTeamDataAttributesAutoAddMembersScope {
        #[serde(rename = "off")]
        Off,
        #[serde(rename = "public_only")]
        PublicOnly,
        #[serde(rename = "public_and_test")]
        PublicAndTest,
        #[serde(rename = "all")]
        All,
    }
    impl ::std::fmt::Display for NewTeamDataAttributesAutoAddMembersScope {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Off => f.write_str("off"),
                Self::PublicOnly => f.write_str("public_only"),
                Self::PublicAndTest => f.write_str("public_and_test"),
                Self::All => f.write_str("all"),
            }
        }
    }
    impl ::std::str::FromStr for NewTeamDataAttributesAutoAddMembersScope {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "off" => Ok(Self::Off),
                "public_only" => Ok(Self::PublicOnly),
                "public_and_test" => Ok(Self::PublicAndTest),
                "all" => Ok(Self::All),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewTeamDataAttributesAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewTeamDataAttributesAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewTeamDataAttributesAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Slack channel to broadcast incidents to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast incidents to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeamDataAttributesIncidentBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl NewTeamDataAttributesIncidentBroadcastChannel {
        pub fn builder() -> builder::NewTeamDataAttributesIncidentBroadcastChannel {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeamDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl NewTeamDataAttributesPropertiesItem {
        pub fn builder() -> builder::NewTeamDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`NewTeamDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeamDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl NewTeamDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::NewTeamDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`NewTeamDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewTeamDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl NewTeamDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::NewTeamDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`NewTeamDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewTeamDataType {
        #[serde(rename = "groups")]
        Groups,
    }
    impl ::std::fmt::Display for NewTeamDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Groups => f.write_str("groups"),
            }
        }
    }
    impl ::std::str::FromStr for NewTeamDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "groups" => Ok(Self::Groups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewTeamDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewTeamDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewTeamDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewUserEmailAddress`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "email"
    ///          ],
    ///          "properties": {
    ///            "email": {
    ///              "description": "Email address",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_email_addresses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewUserEmailAddress {
        pub data: NewUserEmailAddressData,
    }
    impl NewUserEmailAddress {
        pub fn builder() -> builder::NewUserEmailAddress {
            Default::default()
        }
    }
    ///`NewUserEmailAddressData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "email"
    ///      ],
    ///      "properties": {
    ///        "email": {
    ///          "description": "Email address",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_email_addresses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewUserEmailAddressData {
        pub attributes: NewUserEmailAddressDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewUserEmailAddressDataType,
    }
    impl NewUserEmailAddressData {
        pub fn builder() -> builder::NewUserEmailAddressData {
            Default::default()
        }
    }
    ///`NewUserEmailAddressDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "email"
    ///  ],
    ///  "properties": {
    ///    "email": {
    ///      "description": "Email address",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewUserEmailAddressDataAttributes {
        ///Email address
        pub email: ::std::string::String,
    }
    impl NewUserEmailAddressDataAttributes {
        pub fn builder() -> builder::NewUserEmailAddressDataAttributes {
            Default::default()
        }
    }
    ///`NewUserEmailAddressDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_email_addresses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewUserEmailAddressDataType {
        #[serde(rename = "user_email_addresses")]
        UserEmailAddresses,
    }
    impl ::std::fmt::Display for NewUserEmailAddressDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserEmailAddresses => f.write_str("user_email_addresses"),
            }
        }
    }
    impl ::std::str::FromStr for NewUserEmailAddressDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_email_addresses" => Ok(Self::UserEmailAddresses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewUserEmailAddressDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewUserEmailAddressDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewUserEmailAddressDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewUserNotificationRule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "enabled_contact_types"
    ///          ],
    ///          "properties": {
    ///            "delay": {
    ///              "description": "Delay after which rule gets triggered",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled_contact_types": {
    ///              "description": "Contact types for which notification needs to be enabled",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "email",
    ///                  "sms",
    ///                  "call",
    ///                  "device",
    ///                  "non_critical_device",
    ///                  "slack",
    ///                  "google_chat"
    ///                ]
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the rule",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_call_number_id": {
    ///              "description": "User phone number to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_device_id": {
    ///              "description": "User device to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_email_address_id": {
    ///              "description": "User email address to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_sms_number_id": {
    ///              "description": "User sms number to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_notification_rules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewUserNotificationRule {
        pub data: NewUserNotificationRuleData,
    }
    impl NewUserNotificationRule {
        pub fn builder() -> builder::NewUserNotificationRule {
            Default::default()
        }
    }
    ///`NewUserNotificationRuleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "enabled_contact_types"
    ///      ],
    ///      "properties": {
    ///        "delay": {
    ///          "description": "Delay after which rule gets triggered",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled_contact_types": {
    ///          "description": "Contact types for which notification needs to be enabled",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "email",
    ///              "sms",
    ///              "call",
    ///              "device",
    ///              "non_critical_device",
    ///              "slack",
    ///              "google_chat"
    ///            ]
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the rule",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_call_number_id": {
    ///          "description": "User phone number to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_device_id": {
    ///          "description": "User device to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_email_address_id": {
    ///          "description": "User email address to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_sms_number_id": {
    ///          "description": "User sms number to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_notification_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewUserNotificationRuleData {
        pub attributes: NewUserNotificationRuleDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewUserNotificationRuleDataType,
    }
    impl NewUserNotificationRuleData {
        pub fn builder() -> builder::NewUserNotificationRuleData {
            Default::default()
        }
    }
    ///`NewUserNotificationRuleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "enabled_contact_types"
    ///  ],
    ///  "properties": {
    ///    "delay": {
    ///      "description": "Delay after which rule gets triggered",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled_contact_types": {
    ///      "description": "Contact types for which notification needs to be enabled",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "email",
    ///          "sms",
    ///          "call",
    ///          "device",
    ///          "non_critical_device",
    ///          "slack",
    ///          "google_chat"
    ///        ]
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the rule",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_call_number_id": {
    ///      "description": "User phone number to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_device_id": {
    ///      "description": "User device to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_email_address_id": {
    ///      "description": "User email address to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_sms_number_id": {
    ///      "description": "User sms number to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewUserNotificationRuleDataAttributes {
        ///Delay after which rule gets triggered
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub delay: ::std::option::Option<i64>,
        ///Contact types for which notification needs to be enabled
        pub enabled_contact_types: ::std::vec::Vec<
            NewUserNotificationRuleDataAttributesEnabledContactTypesItem,
        >,
        ///Position of the rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///User phone number to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_call_number_id: ::std::option::Option<::std::string::String>,
        ///User device to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_device_id: ::std::option::Option<::std::string::String>,
        ///User email address to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_email_address_id: ::std::option::Option<::std::string::String>,
        ///User sms number to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_sms_number_id: ::std::option::Option<::std::string::String>,
    }
    impl NewUserNotificationRuleDataAttributes {
        pub fn builder() -> builder::NewUserNotificationRuleDataAttributes {
            Default::default()
        }
    }
    ///`NewUserNotificationRuleDataAttributesEnabledContactTypesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "email",
    ///    "sms",
    ///    "call",
    ///    "device",
    ///    "non_critical_device",
    ///    "slack",
    ///    "google_chat"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewUserNotificationRuleDataAttributesEnabledContactTypesItem {
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "sms")]
        Sms,
        #[serde(rename = "call")]
        Call,
        #[serde(rename = "device")]
        Device,
        #[serde(rename = "non_critical_device")]
        NonCriticalDevice,
        #[serde(rename = "slack")]
        Slack,
        #[serde(rename = "google_chat")]
        GoogleChat,
    }
    impl ::std::fmt::Display
    for NewUserNotificationRuleDataAttributesEnabledContactTypesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Email => f.write_str("email"),
                Self::Sms => f.write_str("sms"),
                Self::Call => f.write_str("call"),
                Self::Device => f.write_str("device"),
                Self::NonCriticalDevice => f.write_str("non_critical_device"),
                Self::Slack => f.write_str("slack"),
                Self::GoogleChat => f.write_str("google_chat"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email" => Ok(Self::Email),
                "sms" => Ok(Self::Sms),
                "call" => Ok(Self::Call),
                "device" => Ok(Self::Device),
                "non_critical_device" => Ok(Self::NonCriticalDevice),
                "slack" => Ok(Self::Slack),
                "google_chat" => Ok(Self::GoogleChat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewUserNotificationRuleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_notification_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewUserNotificationRuleDataType {
        #[serde(rename = "user_notification_rules")]
        UserNotificationRules,
    }
    impl ::std::fmt::Display for NewUserNotificationRuleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserNotificationRules => f.write_str("user_notification_rules"),
            }
        }
    }
    impl ::std::str::FromStr for NewUserNotificationRuleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_notification_rules" => Ok(Self::UserNotificationRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewUserNotificationRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewUserNotificationRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewUserNotificationRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewUserPhoneNumber`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "phone"
    ///          ],
    ///          "properties": {
    ///            "phone": {
    ///              "description": "Phone number in international format",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_phone_numbers"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewUserPhoneNumber {
        pub data: NewUserPhoneNumberData,
    }
    impl NewUserPhoneNumber {
        pub fn builder() -> builder::NewUserPhoneNumber {
            Default::default()
        }
    }
    ///`NewUserPhoneNumberData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "phone"
    ///      ],
    ///      "properties": {
    ///        "phone": {
    ///          "description": "Phone number in international format",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_phone_numbers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewUserPhoneNumberData {
        pub attributes: NewUserPhoneNumberDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewUserPhoneNumberDataType,
    }
    impl NewUserPhoneNumberData {
        pub fn builder() -> builder::NewUserPhoneNumberData {
            Default::default()
        }
    }
    ///`NewUserPhoneNumberDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "phone"
    ///  ],
    ///  "properties": {
    ///    "phone": {
    ///      "description": "Phone number in international format",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewUserPhoneNumberDataAttributes {
        ///Phone number in international format
        pub phone: ::std::string::String,
    }
    impl NewUserPhoneNumberDataAttributes {
        pub fn builder() -> builder::NewUserPhoneNumberDataAttributes {
            Default::default()
        }
    }
    ///`NewUserPhoneNumberDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_phone_numbers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewUserPhoneNumberDataType {
        #[serde(rename = "user_phone_numbers")]
        UserPhoneNumbers,
    }
    impl ::std::fmt::Display for NewUserPhoneNumberDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserPhoneNumbers => f.write_str("user_phone_numbers"),
            }
        }
    }
    impl ::std::str::FromStr for NewUserPhoneNumberDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_phone_numbers" => Ok(Self::UserPhoneNumbers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewUserPhoneNumberDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewUserPhoneNumberDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewUserPhoneNumberDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWebhooksEndpoint`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name",
    ///            "url"
    ///          ],
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "event_types": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "incident.created",
    ///                  "incident.updated",
    ///                  "incident.in_triage",
    ///                  "incident.mitigated",
    ///                  "incident.resolved",
    ///                  "incident.cancelled",
    ///                  "incident.deleted",
    ///                  "incident.scheduled.created",
    ///                  "incident.scheduled.updated",
    ///                  "incident.scheduled.in_progress",
    ///                  "incident.scheduled.completed",
    ///                  "incident.scheduled.deleted",
    ///                  "incident_post_mortem.created",
    ///                  "incident_post_mortem.updated",
    ///                  "incident_post_mortem.published",
    ///                  "incident_post_mortem.deleted",
    ///                  "incident_status_page_event.created",
    ///                  "incident_status_page_event.updated",
    ///                  "incident_status_page_event.deleted",
    ///                  "incident_event.created",
    ///                  "incident_event.updated",
    ///                  "incident_event.deleted",
    ///                  "alert.created",
    ///                  "pulse.created",
    ///                  "shift.started",
    ///                  "genius_workflow_run.queued",
    ///                  "genius_workflow_run.started",
    ///                  "genius_workflow_run.completed",
    ///                  "genius_workflow_run.failed",
    ///                  "genius_workflow_run.canceled",
    ///                  "audit_log.created"
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the endpoint",
    ///              "type": "string"
    ///            },
    ///            "secret": {
    ///              "description": "The webhook signing secret used to verify webhook requests.",
    ///              "type": "string"
    ///            },
    ///            "url": {
    ///              "description": "The URL of the endpoint.",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "webhooks_endpoints"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWebhooksEndpoint {
        pub data: NewWebhooksEndpointData,
    }
    impl NewWebhooksEndpoint {
        pub fn builder() -> builder::NewWebhooksEndpoint {
            Default::default()
        }
    }
    ///`NewWebhooksEndpointData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name",
    ///        "url"
    ///      ],
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "event_types": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident.created",
    ///              "incident.updated",
    ///              "incident.in_triage",
    ///              "incident.mitigated",
    ///              "incident.resolved",
    ///              "incident.cancelled",
    ///              "incident.deleted",
    ///              "incident.scheduled.created",
    ///              "incident.scheduled.updated",
    ///              "incident.scheduled.in_progress",
    ///              "incident.scheduled.completed",
    ///              "incident.scheduled.deleted",
    ///              "incident_post_mortem.created",
    ///              "incident_post_mortem.updated",
    ///              "incident_post_mortem.published",
    ///              "incident_post_mortem.deleted",
    ///              "incident_status_page_event.created",
    ///              "incident_status_page_event.updated",
    ///              "incident_status_page_event.deleted",
    ///              "incident_event.created",
    ///              "incident_event.updated",
    ///              "incident_event.deleted",
    ///              "alert.created",
    ///              "pulse.created",
    ///              "shift.started",
    ///              "genius_workflow_run.queued",
    ///              "genius_workflow_run.started",
    ///              "genius_workflow_run.completed",
    ///              "genius_workflow_run.failed",
    ///              "genius_workflow_run.canceled",
    ///              "audit_log.created"
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the endpoint",
    ///          "type": "string"
    ///        },
    ///        "secret": {
    ///          "description": "The webhook signing secret used to verify webhook requests.",
    ///          "type": "string"
    ///        },
    ///        "url": {
    ///          "description": "The URL of the endpoint.",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "webhooks_endpoints"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWebhooksEndpointData {
        pub attributes: NewWebhooksEndpointDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWebhooksEndpointDataType,
    }
    impl NewWebhooksEndpointData {
        pub fn builder() -> builder::NewWebhooksEndpointData {
            Default::default()
        }
    }
    ///`NewWebhooksEndpointDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "url"
    ///  ],
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "event_types": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "incident.created",
    ///          "incident.updated",
    ///          "incident.in_triage",
    ///          "incident.mitigated",
    ///          "incident.resolved",
    ///          "incident.cancelled",
    ///          "incident.deleted",
    ///          "incident.scheduled.created",
    ///          "incident.scheduled.updated",
    ///          "incident.scheduled.in_progress",
    ///          "incident.scheduled.completed",
    ///          "incident.scheduled.deleted",
    ///          "incident_post_mortem.created",
    ///          "incident_post_mortem.updated",
    ///          "incident_post_mortem.published",
    ///          "incident_post_mortem.deleted",
    ///          "incident_status_page_event.created",
    ///          "incident_status_page_event.updated",
    ///          "incident_status_page_event.deleted",
    ///          "incident_event.created",
    ///          "incident_event.updated",
    ///          "incident_event.deleted",
    ///          "alert.created",
    ///          "pulse.created",
    ///          "shift.started",
    ///          "genius_workflow_run.queued",
    ///          "genius_workflow_run.started",
    ///          "genius_workflow_run.completed",
    ///          "genius_workflow_run.failed",
    ///          "genius_workflow_run.canceled",
    ///          "audit_log.created"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the endpoint",
    ///      "type": "string"
    ///    },
    ///    "secret": {
    ///      "description": "The webhook signing secret used to verify webhook requests.",
    ///      "type": "string"
    ///    },
    ///    "url": {
    ///      "description": "The URL of the endpoint.",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewWebhooksEndpointDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub event_types: ::std::vec::Vec<
            NewWebhooksEndpointDataAttributesEventTypesItem,
        >,
        ///The name of the endpoint
        pub name: ::std::string::String,
        ///The webhook signing secret used to verify webhook requests.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub secret: ::std::option::Option<::std::string::String>,
        ///The URL of the endpoint.
        pub url: ::std::string::String,
    }
    impl NewWebhooksEndpointDataAttributes {
        pub fn builder() -> builder::NewWebhooksEndpointDataAttributes {
            Default::default()
        }
    }
    ///`NewWebhooksEndpointDataAttributesEventTypesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident.created",
    ///    "incident.updated",
    ///    "incident.in_triage",
    ///    "incident.mitigated",
    ///    "incident.resolved",
    ///    "incident.cancelled",
    ///    "incident.deleted",
    ///    "incident.scheduled.created",
    ///    "incident.scheduled.updated",
    ///    "incident.scheduled.in_progress",
    ///    "incident.scheduled.completed",
    ///    "incident.scheduled.deleted",
    ///    "incident_post_mortem.created",
    ///    "incident_post_mortem.updated",
    ///    "incident_post_mortem.published",
    ///    "incident_post_mortem.deleted",
    ///    "incident_status_page_event.created",
    ///    "incident_status_page_event.updated",
    ///    "incident_status_page_event.deleted",
    ///    "incident_event.created",
    ///    "incident_event.updated",
    ///    "incident_event.deleted",
    ///    "alert.created",
    ///    "pulse.created",
    ///    "shift.started",
    ///    "genius_workflow_run.queued",
    ///    "genius_workflow_run.started",
    ///    "genius_workflow_run.completed",
    ///    "genius_workflow_run.failed",
    ///    "genius_workflow_run.canceled",
    ///    "audit_log.created"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWebhooksEndpointDataAttributesEventTypesItem {
        #[serde(rename = "incident.created")]
        IncidentCreated,
        #[serde(rename = "incident.updated")]
        IncidentUpdated,
        #[serde(rename = "incident.in_triage")]
        IncidentInTriage,
        #[serde(rename = "incident.mitigated")]
        IncidentMitigated,
        #[serde(rename = "incident.resolved")]
        IncidentResolved,
        #[serde(rename = "incident.cancelled")]
        IncidentCancelled,
        #[serde(rename = "incident.deleted")]
        IncidentDeleted,
        #[serde(rename = "incident.scheduled.created")]
        IncidentScheduledCreated,
        #[serde(rename = "incident.scheduled.updated")]
        IncidentScheduledUpdated,
        #[serde(rename = "incident.scheduled.in_progress")]
        IncidentScheduledInProgress,
        #[serde(rename = "incident.scheduled.completed")]
        IncidentScheduledCompleted,
        #[serde(rename = "incident.scheduled.deleted")]
        IncidentScheduledDeleted,
        #[serde(rename = "incident_post_mortem.created")]
        IncidentPostMortemCreated,
        #[serde(rename = "incident_post_mortem.updated")]
        IncidentPostMortemUpdated,
        #[serde(rename = "incident_post_mortem.published")]
        IncidentPostMortemPublished,
        #[serde(rename = "incident_post_mortem.deleted")]
        IncidentPostMortemDeleted,
        #[serde(rename = "incident_status_page_event.created")]
        IncidentStatusPageEventCreated,
        #[serde(rename = "incident_status_page_event.updated")]
        IncidentStatusPageEventUpdated,
        #[serde(rename = "incident_status_page_event.deleted")]
        IncidentStatusPageEventDeleted,
        #[serde(rename = "incident_event.created")]
        IncidentEventCreated,
        #[serde(rename = "incident_event.updated")]
        IncidentEventUpdated,
        #[serde(rename = "incident_event.deleted")]
        IncidentEventDeleted,
        #[serde(rename = "alert.created")]
        AlertCreated,
        #[serde(rename = "pulse.created")]
        PulseCreated,
        #[serde(rename = "shift.started")]
        ShiftStarted,
        #[serde(rename = "genius_workflow_run.queued")]
        GeniusWorkflowRunQueued,
        #[serde(rename = "genius_workflow_run.started")]
        GeniusWorkflowRunStarted,
        #[serde(rename = "genius_workflow_run.completed")]
        GeniusWorkflowRunCompleted,
        #[serde(rename = "genius_workflow_run.failed")]
        GeniusWorkflowRunFailed,
        #[serde(rename = "genius_workflow_run.canceled")]
        GeniusWorkflowRunCanceled,
        #[serde(rename = "audit_log.created")]
        AuditLogCreated,
    }
    impl ::std::fmt::Display for NewWebhooksEndpointDataAttributesEventTypesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCreated => f.write_str("incident.created"),
                Self::IncidentUpdated => f.write_str("incident.updated"),
                Self::IncidentInTriage => f.write_str("incident.in_triage"),
                Self::IncidentMitigated => f.write_str("incident.mitigated"),
                Self::IncidentResolved => f.write_str("incident.resolved"),
                Self::IncidentCancelled => f.write_str("incident.cancelled"),
                Self::IncidentDeleted => f.write_str("incident.deleted"),
                Self::IncidentScheduledCreated => {
                    f.write_str("incident.scheduled.created")
                }
                Self::IncidentScheduledUpdated => {
                    f.write_str("incident.scheduled.updated")
                }
                Self::IncidentScheduledInProgress => {
                    f.write_str("incident.scheduled.in_progress")
                }
                Self::IncidentScheduledCompleted => {
                    f.write_str("incident.scheduled.completed")
                }
                Self::IncidentScheduledDeleted => {
                    f.write_str("incident.scheduled.deleted")
                }
                Self::IncidentPostMortemCreated => {
                    f.write_str("incident_post_mortem.created")
                }
                Self::IncidentPostMortemUpdated => {
                    f.write_str("incident_post_mortem.updated")
                }
                Self::IncidentPostMortemPublished => {
                    f.write_str("incident_post_mortem.published")
                }
                Self::IncidentPostMortemDeleted => {
                    f.write_str("incident_post_mortem.deleted")
                }
                Self::IncidentStatusPageEventCreated => {
                    f.write_str("incident_status_page_event.created")
                }
                Self::IncidentStatusPageEventUpdated => {
                    f.write_str("incident_status_page_event.updated")
                }
                Self::IncidentStatusPageEventDeleted => {
                    f.write_str("incident_status_page_event.deleted")
                }
                Self::IncidentEventCreated => f.write_str("incident_event.created"),
                Self::IncidentEventUpdated => f.write_str("incident_event.updated"),
                Self::IncidentEventDeleted => f.write_str("incident_event.deleted"),
                Self::AlertCreated => f.write_str("alert.created"),
                Self::PulseCreated => f.write_str("pulse.created"),
                Self::ShiftStarted => f.write_str("shift.started"),
                Self::GeniusWorkflowRunQueued => {
                    f.write_str("genius_workflow_run.queued")
                }
                Self::GeniusWorkflowRunStarted => {
                    f.write_str("genius_workflow_run.started")
                }
                Self::GeniusWorkflowRunCompleted => {
                    f.write_str("genius_workflow_run.completed")
                }
                Self::GeniusWorkflowRunFailed => {
                    f.write_str("genius_workflow_run.failed")
                }
                Self::GeniusWorkflowRunCanceled => {
                    f.write_str("genius_workflow_run.canceled")
                }
                Self::AuditLogCreated => f.write_str("audit_log.created"),
            }
        }
    }
    impl ::std::str::FromStr for NewWebhooksEndpointDataAttributesEventTypesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident.created" => Ok(Self::IncidentCreated),
                "incident.updated" => Ok(Self::IncidentUpdated),
                "incident.in_triage" => Ok(Self::IncidentInTriage),
                "incident.mitigated" => Ok(Self::IncidentMitigated),
                "incident.resolved" => Ok(Self::IncidentResolved),
                "incident.cancelled" => Ok(Self::IncidentCancelled),
                "incident.deleted" => Ok(Self::IncidentDeleted),
                "incident.scheduled.created" => Ok(Self::IncidentScheduledCreated),
                "incident.scheduled.updated" => Ok(Self::IncidentScheduledUpdated),
                "incident.scheduled.in_progress" => Ok(Self::IncidentScheduledInProgress),
                "incident.scheduled.completed" => Ok(Self::IncidentScheduledCompleted),
                "incident.scheduled.deleted" => Ok(Self::IncidentScheduledDeleted),
                "incident_post_mortem.created" => Ok(Self::IncidentPostMortemCreated),
                "incident_post_mortem.updated" => Ok(Self::IncidentPostMortemUpdated),
                "incident_post_mortem.published" => Ok(Self::IncidentPostMortemPublished),
                "incident_post_mortem.deleted" => Ok(Self::IncidentPostMortemDeleted),
                "incident_status_page_event.created" => {
                    Ok(Self::IncidentStatusPageEventCreated)
                }
                "incident_status_page_event.updated" => {
                    Ok(Self::IncidentStatusPageEventUpdated)
                }
                "incident_status_page_event.deleted" => {
                    Ok(Self::IncidentStatusPageEventDeleted)
                }
                "incident_event.created" => Ok(Self::IncidentEventCreated),
                "incident_event.updated" => Ok(Self::IncidentEventUpdated),
                "incident_event.deleted" => Ok(Self::IncidentEventDeleted),
                "alert.created" => Ok(Self::AlertCreated),
                "pulse.created" => Ok(Self::PulseCreated),
                "shift.started" => Ok(Self::ShiftStarted),
                "genius_workflow_run.queued" => Ok(Self::GeniusWorkflowRunQueued),
                "genius_workflow_run.started" => Ok(Self::GeniusWorkflowRunStarted),
                "genius_workflow_run.completed" => Ok(Self::GeniusWorkflowRunCompleted),
                "genius_workflow_run.failed" => Ok(Self::GeniusWorkflowRunFailed),
                "genius_workflow_run.canceled" => Ok(Self::GeniusWorkflowRunCanceled),
                "audit_log.created" => Ok(Self::AuditLogCreated),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewWebhooksEndpointDataAttributesEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWebhooksEndpointDataAttributesEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWebhooksEndpointDataAttributesEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWebhooksEndpointDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "webhooks_endpoints"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWebhooksEndpointDataType {
        #[serde(rename = "webhooks_endpoints")]
        WebhooksEndpoints,
    }
    impl ::std::fmt::Display for NewWebhooksEndpointDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebhooksEndpoints => f.write_str("webhooks_endpoints"),
            }
        }
    }
    impl ::std::str::FromStr for NewWebhooksEndpointDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "webhooks_endpoints" => Ok(Self::WebhooksEndpoints),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWebhooksEndpointDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWebhooksEndpointDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewWebhooksEndpointDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "cause_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "command": {
    ///              "description": "Workflow command",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "command_feedback_enabled": {
    ///              "description": "This will notify you back when the workflow is starting",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "continuously_repeat": {
    ///              "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///              "type": "boolean"
    ///            },
    ///            "description": {
    ///              "description": "The description of the workflow",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "environment_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "functionality_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_role_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_type_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "locked": {
    ///              "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The title of the workflow",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The order which the workflow should run with other workflows.",
    ///              "type": "integer"
    ///            },
    ///            "priority": {
    ///              "description": "Priority",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "low",
    ///                "normal",
    ///                "high"
    ///              ]
    ///            },
    ///            "repeat_condition_duration_since_first_run": {
    ///              "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "repeat_condition_number_of_repeats": {
    ///              "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///              "type": "integer"
    ///            },
    ///            "repeat_every_duration": {
    ///              "description": "Repeat workflow every duration",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "repeat_on": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Repeat on weekdays",
    ///                "type": "string",
    ///                "enum": [
    ///                  "S",
    ///                  "M",
    ///                  "T",
    ///                  "W",
    ///                  "R",
    ///                  "F",
    ///                  "U"
    ///                ]
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "sub_status_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "trigger_params": {
    ///              "oneOf": [
    ///                {
    ///                  "$ref": "#/components/schemas/incident_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/action_item_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/alert_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/pulse_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/simple_trigger_params"
    ///                }
    ///              ]
    ///            },
    ///            "wait": {
    ///              "description": "Wait this duration before executing",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "workflow_group_id": {
    ///              "description": "The group this workflow belongs to.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflows"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflow {
        pub data: NewWorkflowData,
    }
    impl NewWorkflow {
        pub fn builder() -> builder::NewWorkflow {
            Default::default()
        }
    }
    ///`NewWorkflowCustomFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "custom_field_id",
    ///            "incident_condition"
    ///          ],
    ///          "properties": {
    ///            "custom_field_id": {
    ///              "description": "The custom field for this selection",
    ///              "type": "integer"
    ///            },
    ///            "incident_condition": {
    ///              "description": "The trigger condition",
    ///              "default": "ANY",
    ///              "type": "string",
    ///              "enum": [
    ///                "IS",
    ///                "IS NOT",
    ///                "ANY",
    ///                "CONTAINS",
    ///                "CONTAINS_ALL",
    ///                "CONTAINS_NONE",
    ///                "NONE",
    ///                "SET",
    ///                "UNSET"
    ///              ]
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected option id for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "values": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value to associate with the custom field trigger",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "workflow_id": {
    ///              "description": "The workflow for this selection",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_custom_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowCustomFieldSelection {
        pub data: NewWorkflowCustomFieldSelectionData,
    }
    impl NewWorkflowCustomFieldSelection {
        pub fn builder() -> builder::NewWorkflowCustomFieldSelection {
            Default::default()
        }
    }
    ///`NewWorkflowCustomFieldSelectionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "custom_field_id",
    ///        "incident_condition"
    ///      ],
    ///      "properties": {
    ///        "custom_field_id": {
    ///          "description": "The custom field for this selection",
    ///          "type": "integer"
    ///        },
    ///        "incident_condition": {
    ///          "description": "The trigger condition",
    ///          "default": "ANY",
    ///          "type": "string",
    ///          "enum": [
    ///            "IS",
    ///            "IS NOT",
    ///            "ANY",
    ///            "CONTAINS",
    ///            "CONTAINS_ALL",
    ///            "CONTAINS_NONE",
    ///            "NONE",
    ///            "SET",
    ///            "UNSET"
    ///          ]
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected option id for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "values": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value to associate with the custom field trigger",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "workflow_id": {
    ///          "description": "The workflow for this selection",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowCustomFieldSelectionData {
        pub attributes: NewWorkflowCustomFieldSelectionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWorkflowCustomFieldSelectionDataType,
    }
    impl NewWorkflowCustomFieldSelectionData {
        pub fn builder() -> builder::NewWorkflowCustomFieldSelectionData {
            Default::default()
        }
    }
    ///`NewWorkflowCustomFieldSelectionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "custom_field_id",
    ///    "incident_condition"
    ///  ],
    ///  "properties": {
    ///    "custom_field_id": {
    ///      "description": "The custom field for this selection",
    ///      "type": "integer"
    ///    },
    ///    "incident_condition": {
    ///      "description": "The trigger condition",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value to associate with the custom field trigger",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "workflow_id": {
    ///      "description": "The workflow for this selection",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewWorkflowCustomFieldSelectionDataAttributes {
        ///The custom field for this selection
        pub custom_field_id: i64,
        ///The trigger condition
        pub incident_condition: NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<i64>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
        ///The workflow for this selection
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub workflow_id: ::std::option::Option<::std::string::String>,
    }
    impl NewWorkflowCustomFieldSelectionDataAttributes {
        pub fn builder() -> builder::NewWorkflowCustomFieldSelectionDataAttributes {
            Default::default()
        }
    }
    ///The trigger condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The trigger condition",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        fn default() -> Self {
            NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition::Any
        }
    }
    ///`NewWorkflowCustomFieldSelectionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowCustomFieldSelectionDataType {
        #[serde(rename = "workflow_custom_field_selections")]
        WorkflowCustomFieldSelections,
    }
    impl ::std::fmt::Display for NewWorkflowCustomFieldSelectionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowCustomFieldSelections => {
                    f.write_str("workflow_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowCustomFieldSelectionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_custom_field_selections" => {
                    Ok(Self::WorkflowCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "cause_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "command": {
    ///          "description": "Workflow command",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "command_feedback_enabled": {
    ///          "description": "This will notify you back when the workflow is starting",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "continuously_repeat": {
    ///          "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///          "type": "boolean"
    ///        },
    ///        "description": {
    ///          "description": "The description of the workflow",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "environment_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "functionality_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_role_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_type_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "locked": {
    ///          "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The title of the workflow",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The order which the workflow should run with other workflows.",
    ///          "type": "integer"
    ///        },
    ///        "priority": {
    ///          "description": "Priority",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "low",
    ///            "normal",
    ///            "high"
    ///          ]
    ///        },
    ///        "repeat_condition_duration_since_first_run": {
    ///          "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "repeat_condition_number_of_repeats": {
    ///          "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///          "type": "integer"
    ///        },
    ///        "repeat_every_duration": {
    ///          "description": "Repeat workflow every duration",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "repeat_on": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Repeat on weekdays",
    ///            "type": "string",
    ///            "enum": [
    ///              "S",
    ///              "M",
    ///              "T",
    ///              "W",
    ///              "R",
    ///              "F",
    ///              "U"
    ///            ]
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "sub_status_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "trigger_params": {
    ///          "oneOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/action_item_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/alert_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/pulse_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/simple_trigger_params"
    ///            }
    ///          ]
    ///        },
    ///        "wait": {
    ///          "description": "Wait this duration before executing",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "workflow_group_id": {
    ///          "description": "The group this workflow belongs to.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowData {
        pub attributes: NewWorkflowDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWorkflowDataType,
    }
    impl NewWorkflowData {
        pub fn builder() -> builder::NewWorkflowData {
            Default::default()
        }
    }
    ///`NewWorkflowDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "command": {
    ///      "description": "Workflow command",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "command_feedback_enabled": {
    ///      "description": "This will notify you back when the workflow is starting",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "continuously_repeat": {
    ///      "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///      "type": "boolean"
    ///    },
    ///    "description": {
    ///      "description": "The description of the workflow",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_role_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "locked": {
    ///      "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The title of the workflow",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The order which the workflow should run with other workflows.",
    ///      "type": "integer"
    ///    },
    ///    "priority": {
    ///      "description": "Priority",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "low",
    ///        "normal",
    ///        "high"
    ///      ]
    ///    },
    ///    "repeat_condition_duration_since_first_run": {
    ///      "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_condition_number_of_repeats": {
    ///      "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///      "type": "integer"
    ///    },
    ///    "repeat_every_duration": {
    ///      "description": "Repeat workflow every duration",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_on": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Repeat on weekdays",
    ///        "type": "string",
    ///        "enum": [
    ///          "S",
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U"
    ///        ]
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "sub_status_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "trigger_params": {
    ///      "oneOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/action_item_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/alert_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/pulse_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/simple_trigger_params"
    ///        }
    ///      ]
    ///    },
    ///    "wait": {
    ///      "description": "Wait this duration before executing",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "workflow_group_id": {
    ///      "description": "The group this workflow belongs to.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewWorkflowDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub cause_ids: ::std::vec::Vec<::std::string::String>,
        ///Workflow command
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command: ::std::option::Option<::std::string::String>,
        ///This will notify you back when the workflow is starting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command_feedback_enabled: ::std::option::Option<bool>,
        ///When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub continuously_repeat: ::std::option::Option<bool>,
        ///The description of the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_role_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_type_ids: ::std::vec::Vec<::std::string::String>,
        ///Restricts workflow edits to admins when turned on. Only admins can set this field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub locked: ::std::option::Option<bool>,
        ///The title of the workflow
        pub name: ::std::string::String,
        ///The order which the workflow should run with other workflows.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Priority
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<NewWorkflowDataAttributesPriority>,
        ///The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_condition_duration_since_first_run: ::std::option::Option<
            ::std::string::String,
        >,
        ///The workflow will stop repeating if the number of repeats exceeds the value set in this field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_condition_number_of_repeats: ::std::option::Option<i64>,
        ///Repeat workflow every duration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_every_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub repeat_on: ::std::vec::Vec<NewWorkflowDataAttributesRepeatOnItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub severity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sub_status_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub trigger_params: ::std::option::Option<
            NewWorkflowDataAttributesTriggerParams,
        >,
        ///Wait this duration before executing
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub wait: ::std::option::Option<::std::string::String>,
        ///The group this workflow belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub workflow_group_id: ::std::option::Option<::std::string::String>,
    }
    impl NewWorkflowDataAttributes {
        pub fn builder() -> builder::NewWorkflowDataAttributes {
            Default::default()
        }
    }
    ///Priority
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Priority",
    ///  "type": "string",
    ///  "enum": [
    ///    "low",
    ///    "normal",
    ///    "high"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowDataAttributesPriority {
        #[serde(rename = "low")]
        Low,
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "high")]
        High,
    }
    impl ::std::fmt::Display for NewWorkflowDataAttributesPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Low => f.write_str("low"),
                Self::Normal => f.write_str("normal"),
                Self::High => f.write_str("high"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowDataAttributesPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "low" => Ok(Self::Low),
                "normal" => Ok(Self::Normal),
                "high" => Ok(Self::High),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Repeat on weekdays
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Repeat on weekdays",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowDataAttributesRepeatOnItem {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for NewWorkflowDataAttributesRepeatOnItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowDataAttributesRepeatOnItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowDataAttributesRepeatOnItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowDataAttributesRepeatOnItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowDataAttributesRepeatOnItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowDataAttributesTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "$ref": "#/components/schemas/incident_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/action_item_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/alert_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/pulse_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/simple_trigger_params"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum NewWorkflowDataAttributesTriggerParams {
        IncidentTriggerParams(IncidentTriggerParams),
        ActionItemTriggerParams(ActionItemTriggerParams),
        AlertTriggerParams(AlertTriggerParams),
        PulseTriggerParams(PulseTriggerParams),
        SimpleTriggerParams(SimpleTriggerParams),
    }
    impl ::std::convert::From<IncidentTriggerParams>
    for NewWorkflowDataAttributesTriggerParams {
        fn from(value: IncidentTriggerParams) -> Self {
            Self::IncidentTriggerParams(value)
        }
    }
    impl ::std::convert::From<ActionItemTriggerParams>
    for NewWorkflowDataAttributesTriggerParams {
        fn from(value: ActionItemTriggerParams) -> Self {
            Self::ActionItemTriggerParams(value)
        }
    }
    impl ::std::convert::From<AlertTriggerParams>
    for NewWorkflowDataAttributesTriggerParams {
        fn from(value: AlertTriggerParams) -> Self {
            Self::AlertTriggerParams(value)
        }
    }
    impl ::std::convert::From<PulseTriggerParams>
    for NewWorkflowDataAttributesTriggerParams {
        fn from(value: PulseTriggerParams) -> Self {
            Self::PulseTriggerParams(value)
        }
    }
    impl ::std::convert::From<SimpleTriggerParams>
    for NewWorkflowDataAttributesTriggerParams {
        fn from(value: SimpleTriggerParams) -> Self {
            Self::SimpleTriggerParams(value)
        }
    }
    ///`NewWorkflowDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowDataType {
        #[serde(rename = "workflows")]
        Workflows,
    }
    impl ::std::fmt::Display for NewWorkflowDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Workflows => f.write_str("workflows"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflows" => Ok(Self::Workflows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewWorkflowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewWorkflowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowFormFieldCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "form_field_id",
    ///            "incident_condition"
    ///          ],
    ///          "properties": {
    ///            "form_field_id": {
    ///              "description": "The custom field for this condition",
    ///              "type": "string"
    ///            },
    ///            "incident_condition": {
    ///              "description": "The trigger condition",
    ///              "default": "ANY",
    ///              "type": "string",
    ///              "enum": [
    ///                "IS",
    ///                "IS NOT",
    ///                "ANY",
    ///                "CONTAINS",
    ///                "CONTAINS_ALL",
    ///                "CONTAINS_NONE",
    ///                "NONE",
    ///                "SET",
    ///                "UNSET"
    ///              ]
    ///            },
    ///            "selected_catalog_entity_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected catalog entities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_cause_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected causes for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_environment_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected environments for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_functionality_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected functionalities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_group_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected groups (teams) for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_incident_type_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected incident types for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected option id for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_service_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected services for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_user_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected user id for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "values": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value to associate with the custom field trigger",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "workflow_id": {
    ///              "description": "The workflow for this condition",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_form_field_conditions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowFormFieldCondition {
        pub data: NewWorkflowFormFieldConditionData,
    }
    impl NewWorkflowFormFieldCondition {
        pub fn builder() -> builder::NewWorkflowFormFieldCondition {
            Default::default()
        }
    }
    ///`NewWorkflowFormFieldConditionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "form_field_id",
    ///        "incident_condition"
    ///      ],
    ///      "properties": {
    ///        "form_field_id": {
    ///          "description": "The custom field for this condition",
    ///          "type": "string"
    ///        },
    ///        "incident_condition": {
    ///          "description": "The trigger condition",
    ///          "default": "ANY",
    ///          "type": "string",
    ///          "enum": [
    ///            "IS",
    ///            "IS NOT",
    ///            "ANY",
    ///            "CONTAINS",
    ///            "CONTAINS_ALL",
    ///            "CONTAINS_NONE",
    ///            "NONE",
    ///            "SET",
    ///            "UNSET"
    ///          ]
    ///        },
    ///        "selected_catalog_entity_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected catalog entities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_cause_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected causes for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_environment_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected environments for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_functionality_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected functionalities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_group_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected groups (teams) for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_incident_type_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected incident types for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected option id for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected services for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_user_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected user id for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "values": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value to associate with the custom field trigger",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "workflow_id": {
    ///          "description": "The workflow for this condition",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_form_field_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowFormFieldConditionData {
        pub attributes: NewWorkflowFormFieldConditionDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWorkflowFormFieldConditionDataType,
    }
    impl NewWorkflowFormFieldConditionData {
        pub fn builder() -> builder::NewWorkflowFormFieldConditionData {
            Default::default()
        }
    }
    ///`NewWorkflowFormFieldConditionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id",
    ///    "incident_condition"
    ///  ],
    ///  "properties": {
    ///    "form_field_id": {
    ///      "description": "The custom field for this condition",
    ///      "type": "string"
    ///    },
    ///    "incident_condition": {
    ///      "description": "The trigger condition",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected catalog entities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected causes for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected environments for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected functionalities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected groups (teams) for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected incident types for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected services for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected user id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value to associate with the custom field trigger",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "workflow_id": {
    ///      "description": "The workflow for this condition",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewWorkflowFormFieldConditionDataAttributes {
        ///The custom field for this condition
        pub form_field_id: ::std::string::String,
        ///The trigger condition
        pub incident_condition: NewWorkflowFormFieldConditionDataAttributesIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
        ///The workflow for this condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub workflow_id: ::std::option::Option<::std::string::String>,
    }
    impl NewWorkflowFormFieldConditionDataAttributes {
        pub fn builder() -> builder::NewWorkflowFormFieldConditionDataAttributes {
            Default::default()
        }
    }
    ///The trigger condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The trigger condition",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for NewWorkflowFormFieldConditionDataAttributesIncidentCondition {
        fn default() -> Self {
            NewWorkflowFormFieldConditionDataAttributesIncidentCondition::Any
        }
    }
    ///`NewWorkflowFormFieldConditionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_form_field_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowFormFieldConditionDataType {
        #[serde(rename = "workflow_form_field_conditions")]
        WorkflowFormFieldConditions,
    }
    impl ::std::fmt::Display for NewWorkflowFormFieldConditionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowFormFieldConditions => {
                    f.write_str("workflow_form_field_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowFormFieldConditionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_form_field_conditions" => Ok(Self::WorkflowFormFieldConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowFormFieldConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowFormFieldConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowFormFieldConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "A description of the workflow group.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "expanded": {
    ///              "description": "Whether the group is expanded or collapsed.",
    ///              "type": "boolean"
    ///            },
    ///            "icon": {
    ///              "description": "An emoji icon displayed next to the workflow group.",
    ///              "type": "string"
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the workflow group",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "simple",
    ///                "incident",
    ///                "post_mortem",
    ///                "action_item",
    ///                "pulse",
    ///                "alert"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the workflow group.",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the workflow group",
    ///              "type": "integer"
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowGroup {
        pub data: NewWorkflowGroupData,
    }
    impl NewWorkflowGroup {
        pub fn builder() -> builder::NewWorkflowGroup {
            Default::default()
        }
    }
    ///`NewWorkflowGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "A description of the workflow group.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "expanded": {
    ///          "description": "Whether the group is expanded or collapsed.",
    ///          "type": "boolean"
    ///        },
    ///        "icon": {
    ///          "description": "An emoji icon displayed next to the workflow group.",
    ///          "type": "string"
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the workflow group",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "simple",
    ///            "incident",
    ///            "post_mortem",
    ///            "action_item",
    ///            "pulse",
    ///            "alert"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the workflow group.",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the workflow group",
    ///          "type": "integer"
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowGroupData {
        pub attributes: NewWorkflowGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWorkflowGroupDataType,
    }
    impl NewWorkflowGroupData {
        pub fn builder() -> builder::NewWorkflowGroupData {
            Default::default()
        }
    }
    ///`NewWorkflowGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "A description of the workflow group.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "expanded": {
    ///      "description": "Whether the group is expanded or collapsed.",
    ///      "type": "boolean"
    ///    },
    ///    "icon": {
    ///      "description": "An emoji icon displayed next to the workflow group.",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the workflow group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "simple",
    ///        "incident",
    ///        "post_mortem",
    ///        "action_item",
    ///        "pulse",
    ///        "alert"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the workflow group.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the workflow group",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowGroupDataAttributes {
        ///A description of the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the group is expanded or collapsed.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expanded: ::std::option::Option<bool>,
        ///An emoji icon displayed next to the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<::std::string::String>,
        ///The kind of the workflow group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<NewWorkflowGroupDataAttributesKind>,
        ///The name of the workflow group.
        pub name: ::std::string::String,
        ///The position of the workflow group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl NewWorkflowGroupDataAttributes {
        pub fn builder() -> builder::NewWorkflowGroupDataAttributes {
            Default::default()
        }
    }
    ///The kind of the workflow group
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the workflow group",
    ///  "type": "string",
    ///  "enum": [
    ///    "simple",
    ///    "incident",
    ///    "post_mortem",
    ///    "action_item",
    ///    "pulse",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowGroupDataAttributesKind {
        #[serde(rename = "simple")]
        Simple,
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "post_mortem")]
        PostMortem,
        #[serde(rename = "action_item")]
        ActionItem,
        #[serde(rename = "pulse")]
        Pulse,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display for NewWorkflowGroupDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Simple => f.write_str("simple"),
                Self::Incident => f.write_str("incident"),
                Self::PostMortem => f.write_str("post_mortem"),
                Self::ActionItem => f.write_str("action_item"),
                Self::Pulse => f.write_str("pulse"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowGroupDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "simple" => Ok(Self::Simple),
                "incident" => Ok(Self::Incident),
                "post_mortem" => Ok(Self::PostMortem),
                "action_item" => Ok(Self::ActionItem),
                "pulse" => Ok(Self::Pulse),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowGroupDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for NewWorkflowGroupDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for NewWorkflowGroupDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowGroupDataType {
        #[serde(rename = "workflow_groups")]
        WorkflowGroups,
    }
    impl ::std::fmt::Display for NewWorkflowGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowGroups => f.write_str("workflow_groups"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_groups" => Ok(Self::WorkflowGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewWorkflowGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewWorkflowGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowRun`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "anyOf": [
    ///            {
    ///              "properties": {
    ///                "check_conditions": {
    ///                  "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created.",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "context": {
    ///                  "type": "object",
    ///                  "additionalProperties": true
    ///                },
    ///                "immediate": {
    ///                  "description": "If false, this will respect wait time configured on the workflow.",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            {
    ///              "required": [
    ///                "incident_id"
    ///              ],
    ///              "properties": {
    ///                "check_conditions": {
    ///                  "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "context": {
    ///                  "type": "object",
    ///                  "additionalProperties": true
    ///                },
    ///                "immediate": {
    ///                  "description": "If false, this will respect wait time configured on the workflow",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "incident_id": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            {
    ///              "required": [
    ///                "post_mortem_id"
    ///              ],
    ///              "properties": {
    ///                "check_conditions": {
    ///                  "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "context": {
    ///                  "type": "object",
    ///                  "additionalProperties": true
    ///                },
    ///                "immediate": {
    ///                  "description": "If false, this will respect wait time configured on the workflow",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "post_mortem_id": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            {
    ///              "required": [
    ///                "action_item_id"
    ///              ],
    ///              "properties": {
    ///                "action_item_id": {
    ///                  "type": "string"
    ///                },
    ///                "check_conditions": {
    ///                  "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "context": {
    ///                  "type": "object",
    ///                  "additionalProperties": true
    ///                },
    ///                "immediate": {
    ///                  "description": "If false, this will respect wait time configured on the workflow",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            {
    ///              "required": [
    ///                "alert_id"
    ///              ],
    ///              "properties": {
    ///                "alert_id": {
    ///                  "type": "string"
    ///                },
    ///                "check_conditions": {
    ///                  "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "context": {
    ///                  "type": "object",
    ///                  "additionalProperties": true
    ///                },
    ///                "immediate": {
    ///                  "description": "If false, this will respect wait time configured on the workflow",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            {
    ///              "required": [
    ///                "pulse_id"
    ///              ],
    ///              "properties": {
    ///                "check_conditions": {
    ///                  "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "context": {
    ///                  "type": "object",
    ///                  "additionalProperties": true
    ///                },
    ///                "immediate": {
    ///                  "description": "If false, this will respect wait time configured on the workflow",
    ///                  "type": [
    ///                    "boolean",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "pulse_id": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          ]
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_runs"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRun {
        pub data: NewWorkflowRunData,
    }
    impl NewWorkflowRun {
        pub fn builder() -> builder::NewWorkflowRun {
            Default::default()
        }
    }
    ///`NewWorkflowRunData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "anyOf": [
    ///        {
    ///          "properties": {
    ///            "check_conditions": {
    ///              "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "context": {
    ///              "type": "object",
    ///              "additionalProperties": true
    ///            },
    ///            "immediate": {
    ///              "description": "If false, this will respect wait time configured on the workflow.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        {
    ///          "required": [
    ///            "incident_id"
    ///          ],
    ///          "properties": {
    ///            "check_conditions": {
    ///              "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "context": {
    ///              "type": "object",
    ///              "additionalProperties": true
    ///            },
    ///            "immediate": {
    ///              "description": "If false, this will respect wait time configured on the workflow",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_id": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        {
    ///          "required": [
    ///            "post_mortem_id"
    ///          ],
    ///          "properties": {
    ///            "check_conditions": {
    ///              "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "context": {
    ///              "type": "object",
    ///              "additionalProperties": true
    ///            },
    ///            "immediate": {
    ///              "description": "If false, this will respect wait time configured on the workflow",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "post_mortem_id": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        {
    ///          "required": [
    ///            "action_item_id"
    ///          ],
    ///          "properties": {
    ///            "action_item_id": {
    ///              "type": "string"
    ///            },
    ///            "check_conditions": {
    ///              "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "context": {
    ///              "type": "object",
    ///              "additionalProperties": true
    ///            },
    ///            "immediate": {
    ///              "description": "If false, this will respect wait time configured on the workflow",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        {
    ///          "required": [
    ///            "alert_id"
    ///          ],
    ///          "properties": {
    ///            "alert_id": {
    ///              "type": "string"
    ///            },
    ///            "check_conditions": {
    ///              "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "context": {
    ///              "type": "object",
    ///              "additionalProperties": true
    ///            },
    ///            "immediate": {
    ///              "description": "If false, this will respect wait time configured on the workflow",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        {
    ///          "required": [
    ///            "pulse_id"
    ///          ],
    ///          "properties": {
    ///            "check_conditions": {
    ///              "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "context": {
    ///              "type": "object",
    ///              "additionalProperties": true
    ///            },
    ///            "immediate": {
    ///              "description": "If false, this will respect wait time configured on the workflow",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "pulse_id": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      ]
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_runs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunData {
        pub attributes: NewWorkflowRunDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWorkflowRunDataType,
    }
    impl NewWorkflowRunData {
        pub fn builder() -> builder::NewWorkflowRunData {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "properties": {
    ///        "check_conditions": {
    ///          "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "context": {
    ///          "type": "object",
    ///          "additionalProperties": true
    ///        },
    ///        "immediate": {
    ///          "description": "If false, this will respect wait time configured on the workflow.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "incident_id"
    ///      ],
    ///      "properties": {
    ///        "check_conditions": {
    ///          "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "context": {
    ///          "type": "object",
    ///          "additionalProperties": true
    ///        },
    ///        "immediate": {
    ///          "description": "If false, this will respect wait time configured on the workflow",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_id": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "post_mortem_id"
    ///      ],
    ///      "properties": {
    ///        "check_conditions": {
    ///          "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "context": {
    ///          "type": "object",
    ///          "additionalProperties": true
    ///        },
    ///        "immediate": {
    ///          "description": "If false, this will respect wait time configured on the workflow",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "post_mortem_id": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "action_item_id"
    ///      ],
    ///      "properties": {
    ///        "action_item_id": {
    ///          "type": "string"
    ///        },
    ///        "check_conditions": {
    ///          "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "context": {
    ///          "type": "object",
    ///          "additionalProperties": true
    ///        },
    ///        "immediate": {
    ///          "description": "If false, this will respect wait time configured on the workflow",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "alert_id"
    ///      ],
    ///      "properties": {
    ///        "alert_id": {
    ///          "type": "string"
    ///        },
    ///        "check_conditions": {
    ///          "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "context": {
    ///          "type": "object",
    ///          "additionalProperties": true
    ///        },
    ///        "immediate": {
    ///          "description": "If false, this will respect wait time configured on the workflow",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "pulse_id"
    ///      ],
    ///      "properties": {
    ///        "check_conditions": {
    ///          "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "context": {
    ///          "type": "object",
    ///          "additionalProperties": true
    ///        },
    ///        "immediate": {
    ///          "description": "If false, this will respect wait time configured on the workflow",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "pulse_id": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributes {
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_0: ::std::option::Option<NewWorkflowRunDataAttributesSubtype0>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_1: ::std::option::Option<NewWorkflowRunDataAttributesSubtype1>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_2: ::std::option::Option<NewWorkflowRunDataAttributesSubtype2>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_3: ::std::option::Option<NewWorkflowRunDataAttributesSubtype3>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_4: ::std::option::Option<NewWorkflowRunDataAttributesSubtype4>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_5: ::std::option::Option<NewWorkflowRunDataAttributesSubtype5>,
    }
    impl ::std::default::Default for NewWorkflowRunDataAttributes {
        fn default() -> Self {
            Self {
                subtype_0: Default::default(),
                subtype_1: Default::default(),
                subtype_2: Default::default(),
                subtype_3: Default::default(),
                subtype_4: Default::default(),
                subtype_5: Default::default(),
            }
        }
    }
    impl NewWorkflowRunDataAttributes {
        pub fn builder() -> builder::NewWorkflowRunDataAttributes {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributesSubtype0`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "properties": {
    ///    "check_conditions": {
    ///      "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "immediate": {
    ///      "description": "If false, this will respect wait time configured on the workflow.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributesSubtype0 {
        ///If true, this will check conditions. If conditions are not satisfied the run will not be created.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_conditions: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        ///If false, this will respect wait time configured on the workflow.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub immediate: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype0 {
        fn default() -> Self {
            Self {
                check_conditions: Default::default(),
                context: Default::default(),
                immediate: Default::default(),
            }
        }
    }
    impl NewWorkflowRunDataAttributesSubtype0 {
        pub fn builder() -> builder::NewWorkflowRunDataAttributesSubtype0 {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributesSubtype1`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "required": [
    ///    "incident_id"
    ///  ],
    ///  "properties": {
    ///    "check_conditions": {
    ///      "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "immediate": {
    ///      "description": "If false, this will respect wait time configured on the workflow",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_id": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributesSubtype1 {
        ///If true, this will check conditions. If conditions are not satisfied the run will not be created
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_conditions: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        ///If false, this will respect wait time configured on the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub immediate: ::std::option::Option<bool>,
        pub incident_id: ::std::string::String,
    }
    impl NewWorkflowRunDataAttributesSubtype1 {
        pub fn builder() -> builder::NewWorkflowRunDataAttributesSubtype1 {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributesSubtype2`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "required": [
    ///    "post_mortem_id"
    ///  ],
    ///  "properties": {
    ///    "check_conditions": {
    ///      "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "immediate": {
    ///      "description": "If false, this will respect wait time configured on the workflow",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "post_mortem_id": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributesSubtype2 {
        ///If true, this will check conditions. If conditions are not satisfied the run will not be created
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_conditions: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        ///If false, this will respect wait time configured on the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub immediate: ::std::option::Option<bool>,
        pub post_mortem_id: ::std::string::String,
    }
    impl NewWorkflowRunDataAttributesSubtype2 {
        pub fn builder() -> builder::NewWorkflowRunDataAttributesSubtype2 {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributesSubtype3`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "required": [
    ///    "action_item_id"
    ///  ],
    ///  "properties": {
    ///    "action_item_id": {
    ///      "type": "string"
    ///    },
    ///    "check_conditions": {
    ///      "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "immediate": {
    ///      "description": "If false, this will respect wait time configured on the workflow",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributesSubtype3 {
        pub action_item_id: ::std::string::String,
        ///If true, this will check conditions. If conditions are not satisfied the run will not be created
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_conditions: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        ///If false, this will respect wait time configured on the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub immediate: ::std::option::Option<bool>,
    }
    impl NewWorkflowRunDataAttributesSubtype3 {
        pub fn builder() -> builder::NewWorkflowRunDataAttributesSubtype3 {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributesSubtype4`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "required": [
    ///    "alert_id"
    ///  ],
    ///  "properties": {
    ///    "alert_id": {
    ///      "type": "string"
    ///    },
    ///    "check_conditions": {
    ///      "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "immediate": {
    ///      "description": "If false, this will respect wait time configured on the workflow",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributesSubtype4 {
        pub alert_id: ::std::string::String,
        ///If true, this will check conditions. If conditions are not satisfied the run will not be created
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_conditions: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        ///If false, this will respect wait time configured on the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub immediate: ::std::option::Option<bool>,
    }
    impl NewWorkflowRunDataAttributesSubtype4 {
        pub fn builder() -> builder::NewWorkflowRunDataAttributesSubtype4 {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataAttributesSubtype5`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "required": [
    ///    "pulse_id"
    ///  ],
    ///  "properties": {
    ///    "check_conditions": {
    ///      "description": "If true, this will check conditions. If conditions are not satisfied the run will not be created",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "immediate": {
    ///      "description": "If false, this will respect wait time configured on the workflow",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "pulse_id": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowRunDataAttributesSubtype5 {
        ///If true, this will check conditions. If conditions are not satisfied the run will not be created
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_conditions: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        ///If false, this will respect wait time configured on the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub immediate: ::std::option::Option<bool>,
        pub pulse_id: ::std::string::String,
    }
    impl NewWorkflowRunDataAttributesSubtype5 {
        pub fn builder() -> builder::NewWorkflowRunDataAttributesSubtype5 {
            Default::default()
        }
    }
    ///`NewWorkflowRunDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_runs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowRunDataType {
        #[serde(rename = "workflow_runs")]
        WorkflowRuns,
    }
    impl ::std::fmt::Display for NewWorkflowRunDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowRuns => f.write_str("workflow_runs"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowRunDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_runs" => Ok(Self::WorkflowRuns),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowRunDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewWorkflowRunDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewWorkflowRunDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`NewWorkflowTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "task_params"
    ///          ],
    ///          "properties": {
    ///            "enabled": {
    ///              "description": "Enable/disable workflow task",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "Name of the workflow task",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the workflow task",
    ///              "type": "integer"
    ///            },
    ///            "skip_on_failure": {
    ///              "description": "Skip workflow task if any failures",
    ///              "type": "boolean"
    ///            },
    ///            "task_params": {
    ///              "oneOf": [
    ///                {
    ///                  "$ref": "#/components/schemas/add_action_item_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_action_item_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_role_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_team_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/call_people_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_asana_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_coda_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_github_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_coda_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_quip_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_notion_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_notion_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_quip_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_trello_card_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_motion_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_github_commits_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_pulses_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_alerts_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/http_client_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/print_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/publish_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/redis_client_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_email_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_slack_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_sms_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_asana_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_github_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_status_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_trello_card_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_motion_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///                }
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_tasks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowTask {
        pub data: NewWorkflowTaskData,
    }
    impl NewWorkflowTask {
        pub fn builder() -> builder::NewWorkflowTask {
            Default::default()
        }
    }
    ///`NewWorkflowTaskData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "task_params"
    ///      ],
    ///      "properties": {
    ///        "enabled": {
    ///          "description": "Enable/disable workflow task",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "Name of the workflow task",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the workflow task",
    ///          "type": "integer"
    ///        },
    ///        "skip_on_failure": {
    ///          "description": "Skip workflow task if any failures",
    ///          "type": "boolean"
    ///        },
    ///        "task_params": {
    ///          "oneOf": [
    ///            {
    ///              "$ref": "#/components/schemas/add_action_item_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_action_item_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_role_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_team_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/call_people_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_asana_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_coda_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_github_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_coda_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_quip_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_notion_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_notion_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_quip_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_trello_card_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_motion_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_github_commits_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_pulses_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_alerts_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/http_client_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/print_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/publish_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/redis_client_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_email_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_slack_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_sms_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_asana_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_github_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_status_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_trello_card_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_motion_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///            }
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct NewWorkflowTaskData {
        pub attributes: NewWorkflowTaskDataAttributes,
        #[serde(rename = "type")]
        pub type_: NewWorkflowTaskDataType,
    }
    impl NewWorkflowTaskData {
        pub fn builder() -> builder::NewWorkflowTaskData {
            Default::default()
        }
    }
    ///`NewWorkflowTaskDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "task_params"
    ///  ],
    ///  "properties": {
    ///    "enabled": {
    ///      "description": "Enable/disable workflow task",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "Name of the workflow task",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the workflow task",
    ///      "type": "integer"
    ///    },
    ///    "skip_on_failure": {
    ///      "description": "Skip workflow task if any failures",
    ///      "type": "boolean"
    ///    },
    ///    "task_params": {
    ///      "oneOf": [
    ///        {
    ///          "$ref": "#/components/schemas/add_action_item_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_action_item_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_role_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_team_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/call_people_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_asana_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_coda_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_github_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_coda_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_quip_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_notion_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_notion_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_quip_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_trello_card_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_motion_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_github_commits_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_pulses_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_alerts_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/http_client_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/print_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/publish_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/redis_client_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_email_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_slack_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_sms_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_asana_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_github_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_status_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_trello_card_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_motion_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///        }
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct NewWorkflowTaskDataAttributes {
        ///Enable/disable workflow task
        #[serde(default = "defaults::default_bool::<true>")]
        pub enabled: bool,
        ///Name of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The position of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Skip workflow task if any failures
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skip_on_failure: ::std::option::Option<bool>,
        pub task_params: NewWorkflowTaskDataAttributesTaskParams,
    }
    impl NewWorkflowTaskDataAttributes {
        pub fn builder() -> builder::NewWorkflowTaskDataAttributes {
            Default::default()
        }
    }
    ///`NewWorkflowTaskDataAttributesTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "$ref": "#/components/schemas/add_action_item_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_action_item_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_role_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_team_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/call_people_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_asana_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_coda_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_github_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_coda_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_quip_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_notion_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_notion_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_quip_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_trello_card_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_motion_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_github_commits_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_pulses_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_alerts_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/http_client_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/print_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/publish_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/redis_client_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_email_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_slack_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_sms_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_asana_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_github_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_status_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_trello_card_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_motion_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum NewWorkflowTaskDataAttributesTaskParams {
        AddActionItemTaskParams(AddActionItemTaskParams),
        UpdateActionItemTaskParams(UpdateActionItemTaskParams),
        AddRoleTaskParams(AddRoleTaskParams),
        AddSlackBookmarkTaskParams(AddSlackBookmarkTaskParams),
        AddTeamTaskParams(AddTeamTaskParams),
        AddToTimelineTaskParams(AddToTimelineTaskParams),
        ArchiveSlackChannelsTaskParams(ArchiveSlackChannelsTaskParams),
        AttachDatadogDashboardsTaskParams(AttachDatadogDashboardsTaskParams),
        AutoAssignRoleOpsgenieTaskParams(AutoAssignRoleOpsgenieTaskParams),
        AutoAssignRoleRootlyTaskParams(AutoAssignRoleRootlyTaskParams),
        AutoAssignRolePagerdutyTaskParams(AutoAssignRolePagerdutyTaskParams),
        UpdatePagerdutyIncidentTaskParams(UpdatePagerdutyIncidentTaskParams),
        CreatePagerdutyStatusUpdateTaskParams(CreatePagerdutyStatusUpdateTaskParams),
        CreatePagertreeAlertTaskParams(CreatePagertreeAlertTaskParams),
        UpdatePagertreeAlertTaskParams(UpdatePagertreeAlertTaskParams),
        AutoAssignRoleVictorOpsTaskParams(AutoAssignRoleVictorOpsTaskParams),
        CallPeopleTaskParams(CallPeopleTaskParams),
        CreateAirtableTableRecordTaskParams(CreateAirtableTableRecordTaskParams),
        CreateAsanaSubtaskTaskParams(CreateAsanaSubtaskTaskParams),
        CreateAsanaTaskTaskParams(CreateAsanaTaskTaskParams),
        CreateConfluencePageTaskParams(CreateConfluencePageTaskParams),
        CreateDatadogNotebookTaskParams(CreateDatadogNotebookTaskParams),
        CreateCodaPageTaskParams(CreateCodaPageTaskParams),
        CreateDropboxPaperPageTaskParams(CreateDropboxPaperPageTaskParams),
        CreateGithubIssueTaskParams(CreateGithubIssueTaskParams),
        CreateGitlabIssueTaskParams(CreateGitlabIssueTaskParams),
        CreateOutlookEventTaskParams(CreateOutlookEventTaskParams),
        CreateGoogleCalendarEventTaskParams(CreateGoogleCalendarEventTaskParams),
        UpdateGoogleDocsPageTaskParams(UpdateGoogleDocsPageTaskParams),
        UpdateCodaPageTaskParams(UpdateCodaPageTaskParams),
        UpdateGoogleCalendarEventTaskParams(UpdateGoogleCalendarEventTaskParams),
        CreateSharepointPageTaskParams(CreateSharepointPageTaskParams),
        CreateGoogleDocsPageTaskParams(CreateGoogleDocsPageTaskParams),
        CreateGoogleDocsPermissionsTaskParams(CreateGoogleDocsPermissionsTaskParams),
        RemoveGoogleDocsPermissionsTaskParams(RemoveGoogleDocsPermissionsTaskParams),
        CreateQuipPageTaskParams(CreateQuipPageTaskParams),
        CreateGoogleMeetingTaskParams(CreateGoogleMeetingTaskParams),
        CreateGoToMeetingTaskParams(CreateGoToMeetingTaskParams),
        CreateIncidentTaskParams(CreateIncidentTaskParams),
        CreateSubIncidentTaskParams(CreateSubIncidentTaskParams),
        CreateIncidentPostmortemTaskParams(CreateIncidentPostmortemTaskParams),
        CreateJiraIssueTaskParams(CreateJiraIssueTaskParams),
        CreateJiraSubtaskTaskParams(CreateJiraSubtaskTaskParams),
        CreateLinearIssueTaskParams(CreateLinearIssueTaskParams),
        CreateLinearSubtaskIssueTaskParams(CreateLinearSubtaskIssueTaskParams),
        CreateLinearIssueCommentTaskParams(CreateLinearIssueCommentTaskParams),
        CreateMicrosoftTeamsMeetingTaskParams(CreateMicrosoftTeamsMeetingTaskParams),
        CreateMicrosoftTeamsChannelTaskParams(CreateMicrosoftTeamsChannelTaskParams),
        CreateMicrosoftTeamsChatTaskParams(CreateMicrosoftTeamsChatTaskParams),
        AddMicrosoftTeamsTabTaskParams(AddMicrosoftTeamsTabTaskParams),
        AddMicrosoftTeamsChatTabTaskParams(AddMicrosoftTeamsChatTabTaskParams),
        CreateGoogleChatSpaceTaskParams(CreateGoogleChatSpaceTaskParams),
        SendGoogleChatMessageTaskParams(SendGoogleChatMessageTaskParams),
        SendGoogleChatAttachmentsTaskParams(SendGoogleChatAttachmentsTaskParams),
        InviteToGoogleChatSpaceTaskParams(InviteToGoogleChatSpaceTaskParams),
        ArchiveGoogleChatSpacesTaskParams(ArchiveGoogleChatSpacesTaskParams),
        RenameGoogleChatSpaceTaskParams(RenameGoogleChatSpaceTaskParams),
        UpdateGoogleChatSpaceDescriptionTaskParams(
            UpdateGoogleChatSpaceDescriptionTaskParams,
        ),
        ChangeGoogleChatSpacePrivacyTaskParams(ChangeGoogleChatSpacePrivacyTaskParams),
        ArchiveMicrosoftTeamsChannelsTaskParams(ArchiveMicrosoftTeamsChannelsTaskParams),
        RenameMicrosoftTeamsChannelTaskParams(RenameMicrosoftTeamsChannelTaskParams),
        InviteToMicrosoftTeamsChannelTaskParams(InviteToMicrosoftTeamsChannelTaskParams),
        CreateNotionPageTaskParams(CreateNotionPageTaskParams),
        SendMicrosoftTeamsMessageTaskParams(SendMicrosoftTeamsMessageTaskParams),
        SendMicrosoftTeamsChatMessageTaskParams(SendMicrosoftTeamsChatMessageTaskParams),
        SendMicrosoftTeamsBlocksTaskParams(SendMicrosoftTeamsBlocksTaskParams),
        UpdateNotionPageTaskParams(UpdateNotionPageTaskParams),
        UpdateQuipPageTaskParams(UpdateQuipPageTaskParams),
        UpdateConfluencePageTaskParams(UpdateConfluencePageTaskParams),
        UpdateSharepointPageTaskParams(UpdateSharepointPageTaskParams),
        UpdateDropboxPaperPageTaskParams(UpdateDropboxPaperPageTaskParams),
        UpdateDatadogNotebookTaskParams(UpdateDatadogNotebookTaskParams),
        CreateServiceNowIncidentTaskParams(CreateServiceNowIncidentTaskParams),
        CreateShortcutStoryTaskParams(CreateShortcutStoryTaskParams),
        CreateShortcutTaskTaskParams(CreateShortcutTaskTaskParams),
        CreateTrelloCardTaskParams(CreateTrelloCardTaskParams),
        CreateWebexMeetingTaskParams(CreateWebexMeetingTaskParams),
        CreateZendeskTicketTaskParams(CreateZendeskTicketTaskParams),
        CreateZendeskJiraLinkTaskParams(CreateZendeskJiraLinkTaskParams),
        CreateClickupTaskTaskParams(CreateClickupTaskTaskParams),
        CreateMotionTaskTaskParams(CreateMotionTaskTaskParams),
        CreateZoomMeetingTaskParams(CreateZoomMeetingTaskParams),
        GetGithubCommitsTaskParams(GetGithubCommitsTaskParams),
        GetGitlabCommitsTaskParams(GetGitlabCommitsTaskParams),
        GetPulsesTaskParams(GetPulsesTaskParams),
        GetAlertsTaskParams(GetAlertsTaskParams),
        HttpClientTaskParams(HttpClientTaskParams),
        InviteToSlackChannelOpsgenieTaskParams(InviteToSlackChannelOpsgenieTaskParams),
        InviteToSlackChannelRootlyTaskParams(InviteToSlackChannelRootlyTaskParams),
        InviteToSlackChannelPagerdutyTaskParams(InviteToSlackChannelPagerdutyTaskParams),
        InviteToSlackChannelTaskParams(InviteToSlackChannelTaskParams),
        InviteToSlackChannelVictorOpsTaskParams(InviteToSlackChannelVictorOpsTaskParams),
        PageOpsgenieOnCallRespondersTaskParams(PageOpsgenieOnCallRespondersTaskParams),
        CreateOpsgenieAlertTaskParams(CreateOpsgenieAlertTaskParams),
        CreateJsmopsAlertTaskParams(CreateJsmopsAlertTaskParams),
        PageJsmopsOnCallRespondersTaskParams(PageJsmopsOnCallRespondersTaskParams),
        UpdateOpsgenieAlertTaskParams(UpdateOpsgenieAlertTaskParams),
        UpdateOpsgenieIncidentTaskParams(UpdateOpsgenieIncidentTaskParams),
        PageRootlyOnCallRespondersTaskParams(PageRootlyOnCallRespondersTaskParams),
        PagePagerdutyOnCallRespondersTaskParams(PagePagerdutyOnCallRespondersTaskParams),
        PageVictorOpsOnCallRespondersTaskParams(PageVictorOpsOnCallRespondersTaskParams),
        UpdateVictorOpsIncidentTaskParams(UpdateVictorOpsIncidentTaskParams),
        PrintTaskParams(PrintTaskParams),
        PublishIncidentTaskParams(PublishIncidentTaskParams),
        RedisClientTaskParams(RedisClientTaskParams),
        RenameSlackChannelTaskParams(RenameSlackChannelTaskParams),
        ChangeSlackChannelPrivacyTaskParams(ChangeSlackChannelPrivacyTaskParams),
        RunCommandHerokuTaskParams(RunCommandHerokuTaskParams),
        SendEmailTaskParams(SendEmailTaskParams),
        SendDashboardReportTaskParams(SendDashboardReportTaskParams),
        CreateSlackChannelTaskParams(CreateSlackChannelTaskParams),
        SendSlackMessageTaskParams(SendSlackMessageTaskParams),
        SendSmsTaskParams(SendSmsTaskParams),
        SendWhatsappMessageTaskParams(SendWhatsappMessageTaskParams),
        SnapshotDatadogGraphTaskParams(SnapshotDatadogGraphTaskParams),
        SnapshotGrafanaDashboardTaskParams(SnapshotGrafanaDashboardTaskParams),
        SnapshotLookerLookTaskParams(SnapshotLookerLookTaskParams),
        SnapshotNewRelicGraphTaskParams(SnapshotNewRelicGraphTaskParams),
        TweetTwitterMessageTaskParams(TweetTwitterMessageTaskParams),
        UpdateAirtableTableRecordTaskParams(UpdateAirtableTableRecordTaskParams),
        UpdateAsanaTaskTaskParams(UpdateAsanaTaskTaskParams),
        UpdateGithubIssueTaskParams(UpdateGithubIssueTaskParams),
        UpdateGitlabIssueTaskParams(UpdateGitlabIssueTaskParams),
        UpdateIncidentTaskParams(UpdateIncidentTaskParams),
        UpdateIncidentPostmortemTaskParams(UpdateIncidentPostmortemTaskParams),
        UpdateJiraIssueTaskParams(UpdateJiraIssueTaskParams),
        UpdateLinearIssueTaskParams(UpdateLinearIssueTaskParams),
        UpdateServiceNowIncidentTaskParams(UpdateServiceNowIncidentTaskParams),
        UpdateShortcutStoryTaskParams(UpdateShortcutStoryTaskParams),
        UpdateShortcutTaskTaskParams(UpdateShortcutTaskTaskParams),
        UpdateSlackChannelTopicTaskParams(UpdateSlackChannelTopicTaskParams),
        UpdateStatusTaskParams(UpdateStatusTaskParams),
        UpdateIncidentStatusTimestampTaskParams(UpdateIncidentStatusTimestampTaskParams),
        UpdateTrelloCardTaskParams(UpdateTrelloCardTaskParams),
        UpdateClickupTaskTaskParams(UpdateClickupTaskTaskParams),
        UpdateMotionTaskTaskParams(UpdateMotionTaskTaskParams),
        UpdateZendeskTicketTaskParams(UpdateZendeskTicketTaskParams),
        UpdateAttachedAlertsTaskParams(UpdateAttachedAlertsTaskParams),
        TriggerWorkflowTaskParams(TriggerWorkflowTaskParams),
        SendSlackBlocksTaskParams(SendSlackBlocksTaskParams),
        CreateOpenaiChatCompletionTaskParams(CreateOpenaiChatCompletionTaskParams),
        CreateWatsonxChatCompletionTaskParams(CreateWatsonxChatCompletionTaskParams),
        CreateGoogleGeminiChatCompletionTaskParams(
            CreateGoogleGeminiChatCompletionTaskParams,
        ),
        CreateMistralChatCompletionTaskParams(CreateMistralChatCompletionTaskParams),
        CreateAnthropicChatCompletionTaskParams(CreateAnthropicChatCompletionTaskParams),
    }
    impl ::std::convert::From<AddActionItemTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddActionItemTaskParams) -> Self {
            Self::AddActionItemTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateActionItemTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateActionItemTaskParams) -> Self {
            Self::UpdateActionItemTaskParams(value)
        }
    }
    impl ::std::convert::From<AddRoleTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddRoleTaskParams) -> Self {
            Self::AddRoleTaskParams(value)
        }
    }
    impl ::std::convert::From<AddSlackBookmarkTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddSlackBookmarkTaskParams) -> Self {
            Self::AddSlackBookmarkTaskParams(value)
        }
    }
    impl ::std::convert::From<AddTeamTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddTeamTaskParams) -> Self {
            Self::AddTeamTaskParams(value)
        }
    }
    impl ::std::convert::From<AddToTimelineTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddToTimelineTaskParams) -> Self {
            Self::AddToTimelineTaskParams(value)
        }
    }
    impl ::std::convert::From<ArchiveSlackChannelsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: ArchiveSlackChannelsTaskParams) -> Self {
            Self::ArchiveSlackChannelsTaskParams(value)
        }
    }
    impl ::std::convert::From<AttachDatadogDashboardsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AttachDatadogDashboardsTaskParams) -> Self {
            Self::AttachDatadogDashboardsTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRoleOpsgenieTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AutoAssignRoleOpsgenieTaskParams) -> Self {
            Self::AutoAssignRoleOpsgenieTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRoleRootlyTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AutoAssignRoleRootlyTaskParams) -> Self {
            Self::AutoAssignRoleRootlyTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRolePagerdutyTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AutoAssignRolePagerdutyTaskParams) -> Self {
            Self::AutoAssignRolePagerdutyTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdatePagerdutyIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdatePagerdutyIncidentTaskParams) -> Self {
            Self::UpdatePagerdutyIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreatePagerdutyStatusUpdateTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreatePagerdutyStatusUpdateTaskParams) -> Self {
            Self::CreatePagerdutyStatusUpdateTaskParams(value)
        }
    }
    impl ::std::convert::From<CreatePagertreeAlertTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreatePagertreeAlertTaskParams) -> Self {
            Self::CreatePagertreeAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdatePagertreeAlertTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdatePagertreeAlertTaskParams) -> Self {
            Self::UpdatePagertreeAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRoleVictorOpsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AutoAssignRoleVictorOpsTaskParams) -> Self {
            Self::AutoAssignRoleVictorOpsTaskParams(value)
        }
    }
    impl ::std::convert::From<CallPeopleTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CallPeopleTaskParams) -> Self {
            Self::CallPeopleTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAirtableTableRecordTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateAirtableTableRecordTaskParams) -> Self {
            Self::CreateAirtableTableRecordTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAsanaSubtaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateAsanaSubtaskTaskParams) -> Self {
            Self::CreateAsanaSubtaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAsanaTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateAsanaTaskTaskParams) -> Self {
            Self::CreateAsanaTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateConfluencePageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateConfluencePageTaskParams) -> Self {
            Self::CreateConfluencePageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateDatadogNotebookTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateDatadogNotebookTaskParams) -> Self {
            Self::CreateDatadogNotebookTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateCodaPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateCodaPageTaskParams) -> Self {
            Self::CreateCodaPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateDropboxPaperPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateDropboxPaperPageTaskParams) -> Self {
            Self::CreateDropboxPaperPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGithubIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGithubIssueTaskParams) -> Self {
            Self::CreateGithubIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGitlabIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGitlabIssueTaskParams) -> Self {
            Self::CreateGitlabIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateOutlookEventTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateOutlookEventTaskParams) -> Self {
            Self::CreateOutlookEventTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleCalendarEventTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoogleCalendarEventTaskParams) -> Self {
            Self::CreateGoogleCalendarEventTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGoogleDocsPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateGoogleDocsPageTaskParams) -> Self {
            Self::UpdateGoogleDocsPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateCodaPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateCodaPageTaskParams) -> Self {
            Self::UpdateCodaPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGoogleCalendarEventTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateGoogleCalendarEventTaskParams) -> Self {
            Self::UpdateGoogleCalendarEventTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateSharepointPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateSharepointPageTaskParams) -> Self {
            Self::CreateSharepointPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleDocsPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoogleDocsPageTaskParams) -> Self {
            Self::CreateGoogleDocsPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleDocsPermissionsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoogleDocsPermissionsTaskParams) -> Self {
            Self::CreateGoogleDocsPermissionsTaskParams(value)
        }
    }
    impl ::std::convert::From<RemoveGoogleDocsPermissionsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: RemoveGoogleDocsPermissionsTaskParams) -> Self {
            Self::RemoveGoogleDocsPermissionsTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateQuipPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateQuipPageTaskParams) -> Self {
            Self::CreateQuipPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleMeetingTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoogleMeetingTaskParams) -> Self {
            Self::CreateGoogleMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoToMeetingTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoToMeetingTaskParams) -> Self {
            Self::CreateGoToMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateIncidentTaskParams) -> Self {
            Self::CreateIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateSubIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateSubIncidentTaskParams) -> Self {
            Self::CreateSubIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateIncidentPostmortemTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateIncidentPostmortemTaskParams) -> Self {
            Self::CreateIncidentPostmortemTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateJiraIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateJiraIssueTaskParams) -> Self {
            Self::CreateJiraIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateJiraSubtaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateJiraSubtaskTaskParams) -> Self {
            Self::CreateJiraSubtaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateLinearIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateLinearIssueTaskParams) -> Self {
            Self::CreateLinearIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateLinearSubtaskIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateLinearSubtaskIssueTaskParams) -> Self {
            Self::CreateLinearSubtaskIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateLinearIssueCommentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateLinearIssueCommentTaskParams) -> Self {
            Self::CreateLinearIssueCommentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMicrosoftTeamsMeetingTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateMicrosoftTeamsMeetingTaskParams) -> Self {
            Self::CreateMicrosoftTeamsMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMicrosoftTeamsChannelTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateMicrosoftTeamsChannelTaskParams) -> Self {
            Self::CreateMicrosoftTeamsChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMicrosoftTeamsChatTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateMicrosoftTeamsChatTaskParams) -> Self {
            Self::CreateMicrosoftTeamsChatTaskParams(value)
        }
    }
    impl ::std::convert::From<AddMicrosoftTeamsTabTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddMicrosoftTeamsTabTaskParams) -> Self {
            Self::AddMicrosoftTeamsTabTaskParams(value)
        }
    }
    impl ::std::convert::From<AddMicrosoftTeamsChatTabTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: AddMicrosoftTeamsChatTabTaskParams) -> Self {
            Self::AddMicrosoftTeamsChatTabTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleChatSpaceTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoogleChatSpaceTaskParams) -> Self {
            Self::CreateGoogleChatSpaceTaskParams(value)
        }
    }
    impl ::std::convert::From<SendGoogleChatMessageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendGoogleChatMessageTaskParams) -> Self {
            Self::SendGoogleChatMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendGoogleChatAttachmentsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendGoogleChatAttachmentsTaskParams) -> Self {
            Self::SendGoogleChatAttachmentsTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToGoogleChatSpaceTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToGoogleChatSpaceTaskParams) -> Self {
            Self::InviteToGoogleChatSpaceTaskParams(value)
        }
    }
    impl ::std::convert::From<ArchiveGoogleChatSpacesTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: ArchiveGoogleChatSpacesTaskParams) -> Self {
            Self::ArchiveGoogleChatSpacesTaskParams(value)
        }
    }
    impl ::std::convert::From<RenameGoogleChatSpaceTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: RenameGoogleChatSpaceTaskParams) -> Self {
            Self::RenameGoogleChatSpaceTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGoogleChatSpaceDescriptionTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateGoogleChatSpaceDescriptionTaskParams) -> Self {
            Self::UpdateGoogleChatSpaceDescriptionTaskParams(value)
        }
    }
    impl ::std::convert::From<ChangeGoogleChatSpacePrivacyTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: ChangeGoogleChatSpacePrivacyTaskParams) -> Self {
            Self::ChangeGoogleChatSpacePrivacyTaskParams(value)
        }
    }
    impl ::std::convert::From<ArchiveMicrosoftTeamsChannelsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: ArchiveMicrosoftTeamsChannelsTaskParams) -> Self {
            Self::ArchiveMicrosoftTeamsChannelsTaskParams(value)
        }
    }
    impl ::std::convert::From<RenameMicrosoftTeamsChannelTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: RenameMicrosoftTeamsChannelTaskParams) -> Self {
            Self::RenameMicrosoftTeamsChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToMicrosoftTeamsChannelTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToMicrosoftTeamsChannelTaskParams) -> Self {
            Self::InviteToMicrosoftTeamsChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateNotionPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateNotionPageTaskParams) -> Self {
            Self::CreateNotionPageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendMicrosoftTeamsMessageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendMicrosoftTeamsMessageTaskParams) -> Self {
            Self::SendMicrosoftTeamsMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendMicrosoftTeamsChatMessageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendMicrosoftTeamsChatMessageTaskParams) -> Self {
            Self::SendMicrosoftTeamsChatMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendMicrosoftTeamsBlocksTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendMicrosoftTeamsBlocksTaskParams) -> Self {
            Self::SendMicrosoftTeamsBlocksTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateNotionPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateNotionPageTaskParams) -> Self {
            Self::UpdateNotionPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateQuipPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateQuipPageTaskParams) -> Self {
            Self::UpdateQuipPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateConfluencePageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateConfluencePageTaskParams) -> Self {
            Self::UpdateConfluencePageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateSharepointPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateSharepointPageTaskParams) -> Self {
            Self::UpdateSharepointPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateDropboxPaperPageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateDropboxPaperPageTaskParams) -> Self {
            Self::UpdateDropboxPaperPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateDatadogNotebookTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateDatadogNotebookTaskParams) -> Self {
            Self::UpdateDatadogNotebookTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateServiceNowIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateServiceNowIncidentTaskParams) -> Self {
            Self::CreateServiceNowIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateShortcutStoryTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateShortcutStoryTaskParams) -> Self {
            Self::CreateShortcutStoryTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateShortcutTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateShortcutTaskTaskParams) -> Self {
            Self::CreateShortcutTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateTrelloCardTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateTrelloCardTaskParams) -> Self {
            Self::CreateTrelloCardTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateWebexMeetingTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateWebexMeetingTaskParams) -> Self {
            Self::CreateWebexMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateZendeskTicketTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateZendeskTicketTaskParams) -> Self {
            Self::CreateZendeskTicketTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateZendeskJiraLinkTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateZendeskJiraLinkTaskParams) -> Self {
            Self::CreateZendeskJiraLinkTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateClickupTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateClickupTaskTaskParams) -> Self {
            Self::CreateClickupTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMotionTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateMotionTaskTaskParams) -> Self {
            Self::CreateMotionTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateZoomMeetingTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateZoomMeetingTaskParams) -> Self {
            Self::CreateZoomMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<GetGithubCommitsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: GetGithubCommitsTaskParams) -> Self {
            Self::GetGithubCommitsTaskParams(value)
        }
    }
    impl ::std::convert::From<GetGitlabCommitsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: GetGitlabCommitsTaskParams) -> Self {
            Self::GetGitlabCommitsTaskParams(value)
        }
    }
    impl ::std::convert::From<GetPulsesTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: GetPulsesTaskParams) -> Self {
            Self::GetPulsesTaskParams(value)
        }
    }
    impl ::std::convert::From<GetAlertsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: GetAlertsTaskParams) -> Self {
            Self::GetAlertsTaskParams(value)
        }
    }
    impl ::std::convert::From<HttpClientTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: HttpClientTaskParams) -> Self {
            Self::HttpClientTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelOpsgenieTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToSlackChannelOpsgenieTaskParams) -> Self {
            Self::InviteToSlackChannelOpsgenieTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelRootlyTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToSlackChannelRootlyTaskParams) -> Self {
            Self::InviteToSlackChannelRootlyTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelPagerdutyTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToSlackChannelPagerdutyTaskParams) -> Self {
            Self::InviteToSlackChannelPagerdutyTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToSlackChannelTaskParams) -> Self {
            Self::InviteToSlackChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelVictorOpsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: InviteToSlackChannelVictorOpsTaskParams) -> Self {
            Self::InviteToSlackChannelVictorOpsTaskParams(value)
        }
    }
    impl ::std::convert::From<PageOpsgenieOnCallRespondersTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PageOpsgenieOnCallRespondersTaskParams) -> Self {
            Self::PageOpsgenieOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateOpsgenieAlertTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateOpsgenieAlertTaskParams) -> Self {
            Self::CreateOpsgenieAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateJsmopsAlertTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateJsmopsAlertTaskParams) -> Self {
            Self::CreateJsmopsAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<PageJsmopsOnCallRespondersTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PageJsmopsOnCallRespondersTaskParams) -> Self {
            Self::PageJsmopsOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateOpsgenieAlertTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateOpsgenieAlertTaskParams) -> Self {
            Self::UpdateOpsgenieAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateOpsgenieIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateOpsgenieIncidentTaskParams) -> Self {
            Self::UpdateOpsgenieIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<PageRootlyOnCallRespondersTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PageRootlyOnCallRespondersTaskParams) -> Self {
            Self::PageRootlyOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<PagePagerdutyOnCallRespondersTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PagePagerdutyOnCallRespondersTaskParams) -> Self {
            Self::PagePagerdutyOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<PageVictorOpsOnCallRespondersTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PageVictorOpsOnCallRespondersTaskParams) -> Self {
            Self::PageVictorOpsOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateVictorOpsIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateVictorOpsIncidentTaskParams) -> Self {
            Self::UpdateVictorOpsIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<PrintTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PrintTaskParams) -> Self {
            Self::PrintTaskParams(value)
        }
    }
    impl ::std::convert::From<PublishIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: PublishIncidentTaskParams) -> Self {
            Self::PublishIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<RedisClientTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: RedisClientTaskParams) -> Self {
            Self::RedisClientTaskParams(value)
        }
    }
    impl ::std::convert::From<RenameSlackChannelTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: RenameSlackChannelTaskParams) -> Self {
            Self::RenameSlackChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<ChangeSlackChannelPrivacyTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: ChangeSlackChannelPrivacyTaskParams) -> Self {
            Self::ChangeSlackChannelPrivacyTaskParams(value)
        }
    }
    impl ::std::convert::From<RunCommandHerokuTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: RunCommandHerokuTaskParams) -> Self {
            Self::RunCommandHerokuTaskParams(value)
        }
    }
    impl ::std::convert::From<SendEmailTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendEmailTaskParams) -> Self {
            Self::SendEmailTaskParams(value)
        }
    }
    impl ::std::convert::From<SendDashboardReportTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendDashboardReportTaskParams) -> Self {
            Self::SendDashboardReportTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateSlackChannelTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateSlackChannelTaskParams) -> Self {
            Self::CreateSlackChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<SendSlackMessageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendSlackMessageTaskParams) -> Self {
            Self::SendSlackMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendSmsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendSmsTaskParams) -> Self {
            Self::SendSmsTaskParams(value)
        }
    }
    impl ::std::convert::From<SendWhatsappMessageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendWhatsappMessageTaskParams) -> Self {
            Self::SendWhatsappMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotDatadogGraphTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SnapshotDatadogGraphTaskParams) -> Self {
            Self::SnapshotDatadogGraphTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotGrafanaDashboardTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SnapshotGrafanaDashboardTaskParams) -> Self {
            Self::SnapshotGrafanaDashboardTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotLookerLookTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SnapshotLookerLookTaskParams) -> Self {
            Self::SnapshotLookerLookTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotNewRelicGraphTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SnapshotNewRelicGraphTaskParams) -> Self {
            Self::SnapshotNewRelicGraphTaskParams(value)
        }
    }
    impl ::std::convert::From<TweetTwitterMessageTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: TweetTwitterMessageTaskParams) -> Self {
            Self::TweetTwitterMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateAirtableTableRecordTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateAirtableTableRecordTaskParams) -> Self {
            Self::UpdateAirtableTableRecordTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateAsanaTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateAsanaTaskTaskParams) -> Self {
            Self::UpdateAsanaTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGithubIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateGithubIssueTaskParams) -> Self {
            Self::UpdateGithubIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGitlabIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateGitlabIssueTaskParams) -> Self {
            Self::UpdateGitlabIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateIncidentTaskParams) -> Self {
            Self::UpdateIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateIncidentPostmortemTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateIncidentPostmortemTaskParams) -> Self {
            Self::UpdateIncidentPostmortemTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateJiraIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateJiraIssueTaskParams) -> Self {
            Self::UpdateJiraIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateLinearIssueTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateLinearIssueTaskParams) -> Self {
            Self::UpdateLinearIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateServiceNowIncidentTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateServiceNowIncidentTaskParams) -> Self {
            Self::UpdateServiceNowIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateShortcutStoryTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateShortcutStoryTaskParams) -> Self {
            Self::UpdateShortcutStoryTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateShortcutTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateShortcutTaskTaskParams) -> Self {
            Self::UpdateShortcutTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateSlackChannelTopicTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateSlackChannelTopicTaskParams) -> Self {
            Self::UpdateSlackChannelTopicTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateStatusTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateStatusTaskParams) -> Self {
            Self::UpdateStatusTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateIncidentStatusTimestampTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateIncidentStatusTimestampTaskParams) -> Self {
            Self::UpdateIncidentStatusTimestampTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateTrelloCardTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateTrelloCardTaskParams) -> Self {
            Self::UpdateTrelloCardTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateClickupTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateClickupTaskTaskParams) -> Self {
            Self::UpdateClickupTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateMotionTaskTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateMotionTaskTaskParams) -> Self {
            Self::UpdateMotionTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateZendeskTicketTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateZendeskTicketTaskParams) -> Self {
            Self::UpdateZendeskTicketTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateAttachedAlertsTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: UpdateAttachedAlertsTaskParams) -> Self {
            Self::UpdateAttachedAlertsTaskParams(value)
        }
    }
    impl ::std::convert::From<TriggerWorkflowTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: TriggerWorkflowTaskParams) -> Self {
            Self::TriggerWorkflowTaskParams(value)
        }
    }
    impl ::std::convert::From<SendSlackBlocksTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: SendSlackBlocksTaskParams) -> Self {
            Self::SendSlackBlocksTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateOpenaiChatCompletionTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateOpenaiChatCompletionTaskParams) -> Self {
            Self::CreateOpenaiChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateWatsonxChatCompletionTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateWatsonxChatCompletionTaskParams) -> Self {
            Self::CreateWatsonxChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleGeminiChatCompletionTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateGoogleGeminiChatCompletionTaskParams) -> Self {
            Self::CreateGoogleGeminiChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMistralChatCompletionTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateMistralChatCompletionTaskParams) -> Self {
            Self::CreateMistralChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAnthropicChatCompletionTaskParams>
    for NewWorkflowTaskDataAttributesTaskParams {
        fn from(value: CreateAnthropicChatCompletionTaskParams) -> Self {
            Self::CreateAnthropicChatCompletionTaskParams(value)
        }
    }
    ///`NewWorkflowTaskDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum NewWorkflowTaskDataType {
        #[serde(rename = "workflow_tasks")]
        WorkflowTasks,
    }
    impl ::std::fmt::Display for NewWorkflowTaskDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowTasks => f.write_str("workflow_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for NewWorkflowTaskDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_tasks" => Ok(Self::WorkflowTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for NewWorkflowTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for NewWorkflowTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for NewWorkflowTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallPayReport`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "end_date",
    ///    "start_date",
    ///    "status",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "csv_file_url": {
    ///      "description": "Download URL for the generated CSV report. Null until the report is generated.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uri"
    ///    },
    ///    "currency": {
    ///      "description": "The currency code for monetary values.",
    ///      "type": "string"
    ///    },
    ///    "daily_rate_cents": {
    ///      "description": "Daily pay rate in cents.",
    ///      "type": "integer"
    ///    },
    ///    "enabled_granular_time_breakdown": {
    ///      "description": "Whether granular time breakdown is enabled.",
    ///      "type": "boolean"
    ///    },
    ///    "end_date": {
    ///      "description": "The end date of the report period.",
    ///      "type": "string",
    ///      "format": "date"
    ///    },
    ///    "has_single_rate": {
    ///      "description": "Whether a single rate is applied to all users.",
    ///      "type": "boolean"
    ///    },
    ///    "hourly_rate_cents": {
    ///      "description": "Hourly pay rate in cents.",
    ///      "type": "integer"
    ///    },
    ///    "include_shadow": {
    ///      "description": "Whether shadow shifts are included.",
    ///      "type": "boolean"
    ///    },
    ///    "last_generated_at": {
    ///      "description": "When the report was last generated.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "pay_type": {
    ///      "description": "The pay calculation type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "hourly",
    ///        "daily"
    ///      ]
    ///    },
    ///    "show_individual_shift_data": {
    ///      "description": "Whether individual shift data is shown.",
    ///      "type": "boolean"
    ///    },
    ///    "start_date": {
    ///      "description": "The start date of the report period.",
    ///      "type": "string",
    ///      "format": "date"
    ///    },
    ///    "status": {
    ///      "description": "The current status of the report.",
    ///      "type": "string",
    ///      "enum": [
    ///        "processing",
    ///        "generated",
    ///        "downloaded"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "The IANA timezone used to compute day and weekend boundaries for this report. Defaults to the team's timezone.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "total_duration": {
    ///      "description": "Total on-call duration in seconds.",
    ///      "type": "integer"
    ///    },
    ///    "total_pay_cents": {
    ///      "description": "Total pay amount in cents.",
    ///      "type": "integer"
    ///    },
    ///    "updated_at": {
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "use_responders_time_zone": {
    ///      "description": "When true, each responder's personal timezone is used for their pay calculation; otherwise the report-wide time_zone is used.",
    ///      "type": "boolean"
    ///    },
    ///    "users_count": {
    ///      "description": "Number of users included in the report.",
    ///      "type": "integer"
    ///    },
    ///    "xlsx_file_url": {
    ///      "description": "Download URL for the generated XLSX report. Null until the report is generated.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uri"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallPayReport {
        pub created_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Download URL for the generated CSV report. Null until the report is generated.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub csv_file_url: ::std::option::Option<::std::string::String>,
        ///The currency code for monetary values.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub currency: ::std::option::Option<::std::string::String>,
        ///Daily pay rate in cents.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub daily_rate_cents: ::std::option::Option<i64>,
        ///Whether granular time breakdown is enabled.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled_granular_time_breakdown: ::std::option::Option<bool>,
        ///The end date of the report period.
        pub end_date: ::chrono::naive::NaiveDate,
        ///Whether a single rate is applied to all users.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub has_single_rate: ::std::option::Option<bool>,
        ///Hourly pay rate in cents.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hourly_rate_cents: ::std::option::Option<i64>,
        ///Whether shadow shifts are included.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub include_shadow: ::std::option::Option<bool>,
        ///When the report was last generated.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_generated_at: ::std::option::Option<
            ::chrono::DateTime<::chrono::offset::Utc>,
        >,
        ///The pay calculation type.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pay_type: ::std::option::Option<OnCallPayReportPayType>,
        ///Whether individual shift data is shown.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_individual_shift_data: ::std::option::Option<bool>,
        ///The start date of the report period.
        pub start_date: ::chrono::naive::NaiveDate,
        ///The current status of the report.
        pub status: OnCallPayReportStatus,
        ///The IANA timezone used to compute day and weekend boundaries for this report. Defaults to the team's timezone.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///Total on-call duration in seconds.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub total_duration: ::std::option::Option<i64>,
        ///Total pay amount in cents.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub total_pay_cents: ::std::option::Option<i64>,
        pub updated_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///When true, each responder's personal timezone is used for their pay calculation; otherwise the report-wide time_zone is used.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub use_responders_time_zone: ::std::option::Option<bool>,
        ///Number of users included in the report.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub users_count: ::std::option::Option<i64>,
        ///Download URL for the generated XLSX report. Null until the report is generated.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub xlsx_file_url: ::std::option::Option<::std::string::String>,
    }
    impl OnCallPayReport {
        pub fn builder() -> builder::OnCallPayReport {
            Default::default()
        }
    }
    ///`OnCallPayReportList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/on_call_pay_report"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the on_call_pay_report",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "on_call_pay_reports"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallPayReportList {
        pub data: ::std::vec::Vec<OnCallPayReportListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl OnCallPayReportList {
        pub fn builder() -> builder::OnCallPayReportList {
            Default::default()
        }
    }
    ///`OnCallPayReportListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/on_call_pay_report"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the on_call_pay_report",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_pay_reports"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallPayReportListDataItem {
        pub attributes: OnCallPayReport,
        ///Unique ID of the on_call_pay_report
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OnCallPayReportListDataItemType,
    }
    impl OnCallPayReportListDataItem {
        pub fn builder() -> builder::OnCallPayReportListDataItem {
            Default::default()
        }
    }
    ///`OnCallPayReportListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_pay_reports"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallPayReportListDataItemType {
        #[serde(rename = "on_call_pay_reports")]
        OnCallPayReports,
    }
    impl ::std::fmt::Display for OnCallPayReportListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallPayReports => f.write_str("on_call_pay_reports"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallPayReportListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_pay_reports" => Ok(Self::OnCallPayReports),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallPayReportListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallPayReportListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallPayReportListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The pay calculation type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The pay calculation type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "hourly",
    ///    "daily"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallPayReportPayType {
        #[serde(rename = "hourly")]
        Hourly,
        #[serde(rename = "daily")]
        Daily,
    }
    impl ::std::fmt::Display for OnCallPayReportPayType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Hourly => f.write_str("hourly"),
                Self::Daily => f.write_str("daily"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallPayReportPayType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "hourly" => Ok(Self::Hourly),
                "daily" => Ok(Self::Daily),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallPayReportPayType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OnCallPayReportPayType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OnCallPayReportPayType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallPayReportResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/on_call_pay_report"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the on_call_pay_report",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_pay_reports"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallPayReportResponse {
        pub data: OnCallPayReportResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl OnCallPayReportResponse {
        pub fn builder() -> builder::OnCallPayReportResponse {
            Default::default()
        }
    }
    ///`OnCallPayReportResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/on_call_pay_report"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the on_call_pay_report",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_pay_reports"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallPayReportResponseData {
        pub attributes: OnCallPayReport,
        ///Unique ID of the on_call_pay_report
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OnCallPayReportResponseDataType,
    }
    impl OnCallPayReportResponseData {
        pub fn builder() -> builder::OnCallPayReportResponseData {
            Default::default()
        }
    }
    ///`OnCallPayReportResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_pay_reports"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallPayReportResponseDataType {
        #[serde(rename = "on_call_pay_reports")]
        OnCallPayReports,
    }
    impl ::std::fmt::Display for OnCallPayReportResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallPayReports => f.write_str("on_call_pay_reports"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallPayReportResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_pay_reports" => Ok(Self::OnCallPayReports),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallPayReportResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallPayReportResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallPayReportResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The current status of the report.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The current status of the report.",
    ///  "type": "string",
    ///  "enum": [
    ///    "processing",
    ///    "generated",
    ///    "downloaded"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallPayReportStatus {
        #[serde(rename = "processing")]
        Processing,
        #[serde(rename = "generated")]
        Generated,
        #[serde(rename = "downloaded")]
        Downloaded,
    }
    impl ::std::fmt::Display for OnCallPayReportStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Processing => f.write_str("processing"),
                Self::Generated => f.write_str("generated"),
                Self::Downloaded => f.write_str("downloaded"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallPayReportStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "processing" => Ok(Self::Processing),
                "generated" => Ok(Self::Generated),
                "downloaded" => Ok(Self::Downloaded),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallPayReportStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OnCallPayReportStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OnCallPayReportStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alert_fields_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_routing_rules_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_sources_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_urgency_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alerts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update",
    ///          "read",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "api_keys_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "audits_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "catalogs_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "contacts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "escalation_policies_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "heartbeats_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "integrations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "invitations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "live_call_routing_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The role name.",
    ///      "type": "string"
    ///    },
    ///    "on_call_readiness_report_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "on_call_roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "schedule_override_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update"
    ///        ]
    ///      }
    ///    },
    ///    "schedules_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "services_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The role slug.",
    ///      "type": "string"
    ///    },
    ///    "system_role": {
    ///      "description": "The kind of role",
    ///      "default": "custom",
    ///      "type": "string",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "admin",
    ///          "user",
    ///          "custom",
    ///          "observer",
    ///          "no_access"
    ///        ]
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    },
    ///    "webhooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "workflows_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRole {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_fields_permissions: ::std::vec::Vec<
            OnCallRoleAlertFieldsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_groups_permissions: ::std::vec::Vec<
            OnCallRoleAlertGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_routing_rules_permissions: ::std::vec::Vec<
            OnCallRoleAlertRoutingRulesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_sources_permissions: ::std::vec::Vec<
            OnCallRoleAlertSourcesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_urgency_permissions: ::std::vec::Vec<
            OnCallRoleAlertUrgencyPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_permissions: ::std::vec::Vec<OnCallRoleAlertsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub api_keys_permissions: ::std::vec::Vec<OnCallRoleApiKeysPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub audits_permissions: ::std::vec::Vec<OnCallRoleAuditsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub catalogs_permissions: ::std::vec::Vec<OnCallRoleCatalogsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub contacts_permissions: ::std::vec::Vec<OnCallRoleContactsPermissionsItem>,
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub escalation_policies_permissions: ::std::vec::Vec<
            OnCallRoleEscalationPoliciesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups_permissions: ::std::vec::Vec<OnCallRoleGroupsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub heartbeats_permissions: ::std::vec::Vec<OnCallRoleHeartbeatsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub integrations_permissions: ::std::vec::Vec<
            OnCallRoleIntegrationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub invitations_permissions: ::std::vec::Vec<
            OnCallRoleInvitationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub live_call_routing_permissions: ::std::vec::Vec<
            OnCallRoleLiveCallRoutingPermissionsItem,
        >,
        ///The role name.
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub on_call_readiness_report_permissions: ::std::vec::Vec<
            OnCallRoleOnCallReadinessReportPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub on_call_roles_permissions: ::std::vec::Vec<
            OnCallRoleOnCallRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedule_override_permissions: ::std::vec::Vec<
            OnCallRoleScheduleOverridePermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedules_permissions: ::std::vec::Vec<OnCallRoleSchedulesPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services_permissions: ::std::vec::Vec<OnCallRoleServicesPermissionsItem>,
        ///The role slug.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///The kind of role
        #[serde(default = "defaults::on_call_role_system_role")]
        pub system_role: ::std::string::String,
        pub updated_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub webhooks_permissions: ::std::vec::Vec<OnCallRoleWebhooksPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub workflows_permissions: ::std::vec::Vec<OnCallRoleWorkflowsPermissionsItem>,
    }
    impl OnCallRole {
        pub fn builder() -> builder::OnCallRole {
            Default::default()
        }
    }
    ///`OnCallRoleAlertFieldsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAlertFieldsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAlertFieldsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAlertFieldsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleAlertGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAlertGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAlertGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAlertGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleAlertRoutingRulesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAlertRoutingRulesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAlertRoutingRulesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAlertRoutingRulesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleAlertSourcesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAlertSourcesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAlertSourcesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAlertSourcesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleAlertUrgencyPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAlertUrgencyPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAlertUrgencyPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAlertUrgencyPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleAlertsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update",
    ///    "read",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAlertsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAlertsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
                Self::Read => f.write_str("read"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAlertsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                "read" => Ok(Self::Read),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleApiKeysPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleApiKeysPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleApiKeysPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleApiKeysPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleAuditsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleAuditsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleAuditsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleAuditsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleCatalogsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleCatalogsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleCatalogsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleCatalogsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleContactsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleContactsPermissionsItem {
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for OnCallRoleContactsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleContactsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleEscalationPoliciesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleEscalationPoliciesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleEscalationPoliciesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleEscalationPoliciesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleHeartbeatsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleHeartbeatsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleHeartbeatsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleHeartbeatsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleIntegrationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleIntegrationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleIntegrationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleIntegrationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleInvitationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleInvitationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleInvitationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleInvitationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/on_call_role"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the on_call_role",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "on_call_roles"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRoleList {
        pub data: ::std::vec::Vec<OnCallRoleListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl OnCallRoleList {
        pub fn builder() -> builder::OnCallRoleList {
            Default::default()
        }
    }
    ///`OnCallRoleListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/on_call_role"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the on_call_role",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRoleListDataItem {
        pub attributes: OnCallRole,
        ///Unique ID of the on_call_role
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OnCallRoleListDataItemType,
    }
    impl OnCallRoleListDataItem {
        pub fn builder() -> builder::OnCallRoleListDataItem {
            Default::default()
        }
    }
    ///`OnCallRoleListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleListDataItemType {
        #[serde(rename = "on_call_roles")]
        OnCallRoles,
    }
    impl ::std::fmt::Display for OnCallRoleListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallRoles => f.write_str("on_call_roles"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_roles" => Ok(Self::OnCallRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OnCallRoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OnCallRoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleLiveCallRoutingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleLiveCallRoutingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleLiveCallRoutingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleLiveCallRoutingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleOnCallReadinessReportPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleOnCallReadinessReportPermissionsItem {
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for OnCallRoleOnCallReadinessReportPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleOnCallReadinessReportPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for OnCallRoleOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleOnCallRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleOnCallRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleOnCallRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleOnCallRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleRelationship`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRoleRelationship {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<OnCallRoleRelationshipData>,
    }
    impl ::std::default::Default for OnCallRoleRelationship {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl OnCallRoleRelationship {
        pub fn builder() -> builder::OnCallRoleRelationship {
            Default::default()
        }
    }
    ///`OnCallRoleRelationshipData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRoleRelationshipData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<OnCallRoleRelationshipDataType>,
    }
    impl ::std::default::Default for OnCallRoleRelationshipData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl OnCallRoleRelationshipData {
        pub fn builder() -> builder::OnCallRoleRelationshipData {
            Default::default()
        }
    }
    ///`OnCallRoleRelationshipDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleRelationshipDataType {
        #[serde(rename = "on_call_roles")]
        OnCallRoles,
    }
    impl ::std::fmt::Display for OnCallRoleRelationshipDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallRoles => f.write_str("on_call_roles"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleRelationshipDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_roles" => Ok(Self::OnCallRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleRelationshipDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleRelationshipDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleRelationshipDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/on_call_role"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the on_call_role",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_roles"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRoleResponse {
        pub data: OnCallRoleResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl OnCallRoleResponse {
        pub fn builder() -> builder::OnCallRoleResponse {
            Default::default()
        }
    }
    ///`OnCallRoleResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/on_call_role"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the on_call_role",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallRoleResponseData {
        pub attributes: OnCallRole,
        ///Unique ID of the on_call_role
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OnCallRoleResponseDataType,
    }
    impl OnCallRoleResponseData {
        pub fn builder() -> builder::OnCallRoleResponseData {
            Default::default()
        }
    }
    ///`OnCallRoleResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleResponseDataType {
        #[serde(rename = "on_call_roles")]
        OnCallRoles,
    }
    impl ::std::fmt::Display for OnCallRoleResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallRoles => f.write_str("on_call_roles"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_roles" => Ok(Self::OnCallRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OnCallRoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OnCallRoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleScheduleOverridePermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleScheduleOverridePermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
    }
    impl ::std::fmt::Display for OnCallRoleScheduleOverridePermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleScheduleOverridePermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleSchedulesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleSchedulesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleSchedulesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleSchedulesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleServicesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleServicesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleServicesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleServicesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleWebhooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleWebhooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleWebhooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleWebhooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallRoleWorkflowsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallRoleWorkflowsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for OnCallRoleWorkflowsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallRoleWorkflowsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallRoleWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallRoleWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallRoleWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallShadow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ends_at",
    ///    "schedule_id",
    ///    "shadow_user_id",
    ///    "shadowable_id",
    ///    "shadowable_type",
    ///    "starts_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "ends_at": {
    ///      "description": "End datetime for shadow shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "schedule_id": {
    ///      "description": "ID of schedule the shadow shift belongs to",
    ///      "type": "string"
    ///    },
    ///    "shadow_user_id": {
    ///      "description": "Which user the shadow shift belongs to.",
    ///      "type": "integer"
    ///    },
    ///    "shadowable_id": {
    ///      "description": "ID of schedule or user the shadow user is shadowing",
    ///      "type": "string"
    ///    },
    ///    "shadowable_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Schedule"
    ///      ]
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of shadow shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallShadow {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///End datetime for shadow shift
        pub ends_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///ID of schedule the shadow shift belongs to
        pub schedule_id: ::std::string::String,
        ///Which user the shadow shift belongs to.
        pub shadow_user_id: i64,
        ///ID of schedule or user the shadow user is shadowing
        pub shadowable_id: ::std::string::String,
        pub shadowable_type: OnCallShadowShadowableType,
        ///Start datetime of shadow shift
        pub starts_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl OnCallShadow {
        pub fn builder() -> builder::OnCallShadow {
            Default::default()
        }
    }
    ///`OnCallShadowResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/on_call_shadow"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of shadow shift",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_shadows"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallShadowResponse {
        pub data: OnCallShadowResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl OnCallShadowResponse {
        pub fn builder() -> builder::OnCallShadowResponse {
            Default::default()
        }
    }
    ///`OnCallShadowResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/on_call_shadow"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of shadow shift",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_shadows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallShadowResponseData {
        pub attributes: OnCallShadow,
        ///Unique ID of shadow shift
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OnCallShadowResponseDataType,
    }
    impl OnCallShadowResponseData {
        pub fn builder() -> builder::OnCallShadowResponseData {
            Default::default()
        }
    }
    ///`OnCallShadowResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_shadows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallShadowResponseDataType {
        #[serde(rename = "on_call_shadows")]
        OnCallShadows,
    }
    impl ::std::fmt::Display for OnCallShadowResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallShadows => f.write_str("on_call_shadows"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallShadowResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_shadows" => Ok(Self::OnCallShadows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallShadowResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallShadowResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallShadowResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallShadowShadowableType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Schedule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallShadowShadowableType {
        User,
        Schedule,
    }
    impl ::std::fmt::Display for OnCallShadowShadowableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Schedule => f.write_str("Schedule"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallShadowShadowableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Schedule" => Ok(Self::Schedule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallShadowShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OnCallShadowShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OnCallShadowShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OnCallShadowsList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/on_call_shadow"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique id of the on-call shadow shift",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "on_call_shadows"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallShadowsList {
        pub data: ::std::vec::Vec<OnCallShadowsListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl OnCallShadowsList {
        pub fn builder() -> builder::OnCallShadowsList {
            Default::default()
        }
    }
    ///`OnCallShadowsListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/on_call_shadow"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique id of the on-call shadow shift",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_shadows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OnCallShadowsListDataItem {
        pub attributes: OnCallShadow,
        ///Unique id of the on-call shadow shift
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OnCallShadowsListDataItemType,
    }
    impl OnCallShadowsListDataItem {
        pub fn builder() -> builder::OnCallShadowsListDataItem {
            Default::default()
        }
    }
    ///`OnCallShadowsListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_shadows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OnCallShadowsListDataItemType {
        #[serde(rename = "on_call_shadows")]
        OnCallShadows,
    }
    impl ::std::fmt::Display for OnCallShadowsListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallShadows => f.write_str("on_call_shadows"),
            }
        }
    }
    impl ::std::str::FromStr for OnCallShadowsListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_shadows" => Ok(Self::OnCallShadows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OnCallShadowsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OnCallShadowsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OnCallShadowsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Oncall`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ends_at",
    ///    "escalation_policy_id",
    ///    "escalation_policy_name",
    ///    "starts_at",
    ///    "user_id"
    ///  ],
    ///  "properties": {
    ///    "ends_at": {
    ///      "description": "End datetime of the on-call shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "escalation_level": {
    ///      "description": "Level within the escalation policy",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "ID of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "escalation_policy_name": {
    ///      "description": "Name of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "escalation_policy_path_id": {
    ///      "description": "ID of the escalation policy path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "escalation_policy_path_name": {
    ///      "description": "Name of the escalation policy path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "is_default_path": {
    ///      "description": "Whether this is the default escalation path",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "notification_type": {
    ///      "description": "Notification type of the escalation path (audible or quiet)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "audible",
    ///        "quiet"
    ///      ]
    ///    },
    ///    "schedule_id": {
    ///      "description": "ID of the schedule",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "schedule_name": {
    ///      "description": "Name of the schedule",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of the on-call shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "user_id": {
    ///      "description": "ID of the on-call user",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Oncall {
        ///End datetime of the on-call shift
        pub ends_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///Level within the escalation policy
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_level: ::std::option::Option<i64>,
        ///ID of the escalation policy
        pub escalation_policy_id: ::std::string::String,
        ///Name of the escalation policy
        pub escalation_policy_name: ::std::string::String,
        ///ID of the escalation policy path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_path_id: ::std::option::Option<::std::string::String>,
        ///Name of the escalation policy path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_path_name: ::std::option::Option<::std::string::String>,
        ///Whether this is the default escalation path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_default_path: ::std::option::Option<bool>,
        ///Notification type of the escalation path (audible or quiet)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_type: ::std::option::Option<OncallNotificationType>,
        ///ID of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_id: ::std::option::Option<::std::string::String>,
        ///Name of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_name: ::std::option::Option<::std::string::String>,
        ///Start datetime of the on-call shift
        pub starts_at: ::chrono::DateTime<::chrono::offset::Utc>,
        ///ID of the on-call user
        pub user_id: i64,
    }
    impl Oncall {
        pub fn builder() -> builder::Oncall {
            Default::default()
        }
    }
    ///`OncallList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/oncall"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the on-call entry",
    ///            "type": "string"
    ///          },
    ///          "relationships": {
    ///            "$ref": "#/components/schemas/oncall_relationships"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "on_call_resources"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallList {
        pub data: ::std::vec::Vec<OncallListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl OncallList {
        pub fn builder() -> builder::OncallList {
            Default::default()
        }
    }
    ///`OncallListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/oncall"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the on-call entry",
    ///      "type": "string"
    ///    },
    ///    "relationships": {
    ///      "$ref": "#/components/schemas/oncall_relationships"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_resources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallListDataItem {
        pub attributes: Oncall,
        ///Unique ID of the on-call entry
        pub id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub relationships: ::std::option::Option<OncallRelationships>,
        #[serde(rename = "type")]
        pub type_: OncallListDataItemType,
    }
    impl OncallListDataItem {
        pub fn builder() -> builder::OncallListDataItem {
            Default::default()
        }
    }
    ///`OncallListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_resources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OncallListDataItemType {
        #[serde(rename = "on_call_resources")]
        OnCallResources,
    }
    impl ::std::fmt::Display for OncallListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallResources => f.write_str("on_call_resources"),
            }
        }
    }
    impl ::std::str::FromStr for OncallListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_resources" => Ok(Self::OnCallResources),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OncallListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OncallListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OncallListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Notification type of the escalation path (audible or quiet)
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Notification type of the escalation path (audible or quiet)",
    ///  "type": "string",
    ///  "enum": [
    ///    "audible",
    ///    "quiet"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OncallNotificationType {
        #[serde(rename = "audible")]
        Audible,
        #[serde(rename = "quiet")]
        Quiet,
    }
    impl ::std::fmt::Display for OncallNotificationType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Audible => f.write_str("audible"),
                Self::Quiet => f.write_str("quiet"),
            }
        }
    }
    impl ::std::str::FromStr for OncallNotificationType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "audible" => Ok(Self::Audible),
                "quiet" => Ok(Self::Quiet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OncallNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for OncallNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for OncallNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OncallRelationships`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "escalation_policy": {
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "escalation_policies"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "schedule": {
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "schedules"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "user": {
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "users"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationships {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy: ::std::option::Option<
            OncallRelationshipsEscalationPolicy,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule: ::std::option::Option<OncallRelationshipsSchedule>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user: ::std::option::Option<OncallRelationshipsUser>,
    }
    impl ::std::default::Default for OncallRelationships {
        fn default() -> Self {
            Self {
                escalation_policy: Default::default(),
                schedule: Default::default(),
                user: Default::default(),
            }
        }
    }
    impl OncallRelationships {
        pub fn builder() -> builder::OncallRelationships {
            Default::default()
        }
    }
    ///`OncallRelationshipsEscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_policies"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationshipsEscalationPolicy {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<OncallRelationshipsEscalationPolicyData>,
    }
    impl ::std::default::Default for OncallRelationshipsEscalationPolicy {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl OncallRelationshipsEscalationPolicy {
        pub fn builder() -> builder::OncallRelationshipsEscalationPolicy {
            Default::default()
        }
    }
    ///`OncallRelationshipsEscalationPolicyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_policies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationshipsEscalationPolicyData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<OncallRelationshipsEscalationPolicyDataType>,
    }
    impl ::std::default::Default for OncallRelationshipsEscalationPolicyData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl OncallRelationshipsEscalationPolicyData {
        pub fn builder() -> builder::OncallRelationshipsEscalationPolicyData {
            Default::default()
        }
    }
    ///`OncallRelationshipsEscalationPolicyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OncallRelationshipsEscalationPolicyDataType {
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for OncallRelationshipsEscalationPolicyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for OncallRelationshipsEscalationPolicyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OncallRelationshipsEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OncallRelationshipsEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OncallRelationshipsEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OncallRelationshipsSchedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationshipsSchedule {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<OncallRelationshipsScheduleData>,
    }
    impl ::std::default::Default for OncallRelationshipsSchedule {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl OncallRelationshipsSchedule {
        pub fn builder() -> builder::OncallRelationshipsSchedule {
            Default::default()
        }
    }
    ///`OncallRelationshipsScheduleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationshipsScheduleData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<OncallRelationshipsScheduleDataType>,
    }
    impl ::std::default::Default for OncallRelationshipsScheduleData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl OncallRelationshipsScheduleData {
        pub fn builder() -> builder::OncallRelationshipsScheduleData {
            Default::default()
        }
    }
    ///`OncallRelationshipsScheduleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OncallRelationshipsScheduleDataType {
        #[serde(rename = "schedules")]
        Schedules,
    }
    impl ::std::fmt::Display for OncallRelationshipsScheduleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Schedules => f.write_str("schedules"),
            }
        }
    }
    impl ::std::str::FromStr for OncallRelationshipsScheduleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedules" => Ok(Self::Schedules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OncallRelationshipsScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OncallRelationshipsScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OncallRelationshipsScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OncallRelationshipsUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "users"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationshipsUser {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<OncallRelationshipsUserData>,
    }
    impl ::std::default::Default for OncallRelationshipsUser {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl OncallRelationshipsUser {
        pub fn builder() -> builder::OncallRelationshipsUser {
            Default::default()
        }
    }
    ///`OncallRelationshipsUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OncallRelationshipsUserData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<OncallRelationshipsUserDataType>,
    }
    impl ::std::default::Default for OncallRelationshipsUserData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl OncallRelationshipsUserData {
        pub fn builder() -> builder::OncallRelationshipsUserData {
            Default::default()
        }
    }
    ///`OncallRelationshipsUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OncallRelationshipsUserDataType {
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display for OncallRelationshipsUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr for OncallRelationshipsUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OncallRelationshipsUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OncallRelationshipsUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OncallRelationshipsUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OverrideShift`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ends_at",
    ///    "is_override",
    ///    "rotation_id",
    ///    "schedule_id",
    ///    "starts_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "ends_at": {
    ///      "description": "End datetime of shift",
    ///      "type": "string"
    ///    },
    ///    "is_override": {
    ///      "description": "Denotes shift is an override shift",
    ///      "type": "boolean"
    ///    },
    ///    "rotation_id": {
    ///      "description": "ID of rotation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "schedule_id": {
    ///      "description": "ID of schedule",
    ///      "type": "string"
    ///    },
    ///    "shift_override": {
    ///      "description": "Override metadata",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/shift_override_response"
    ///        }
    ///      ]
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of shift",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user": {
    ///      "description": "User metadata",
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_response"
    ///        }
    ///      ]
    ///    },
    ///    "user_id": {
    ///      "description": "Override shift user",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OverrideShift {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///End datetime of shift
        pub ends_at: ::std::string::String,
        ///Denotes shift is an override shift
        pub is_override: bool,
        ///ID of rotation
        pub rotation_id: ::std::option::Option<::std::string::String>,
        ///ID of schedule
        pub schedule_id: ::std::string::String,
        ///Override metadata
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_override: ::std::option::Option<ShiftOverrideResponse>,
        ///Start datetime of shift
        pub starts_at: ::std::string::String,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
        ///User metadata
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user: ::std::option::Option<UserResponse>,
        ///Override shift user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl OverrideShift {
        pub fn builder() -> builder::OverrideShift {
            Default::default()
        }
    }
    ///`OverrideShiftList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/override_shift"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the shift",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "shifts"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OverrideShiftList {
        pub data: ::std::vec::Vec<OverrideShiftListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl OverrideShiftList {
        pub fn builder() -> builder::OverrideShiftList {
            Default::default()
        }
    }
    ///`OverrideShiftListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/override_shift"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the shift",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shifts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OverrideShiftListDataItem {
        pub attributes: OverrideShift,
        ///Unique ID of the shift
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OverrideShiftListDataItemType,
    }
    impl OverrideShiftListDataItem {
        pub fn builder() -> builder::OverrideShiftListDataItem {
            Default::default()
        }
    }
    ///`OverrideShiftListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shifts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OverrideShiftListDataItemType {
        #[serde(rename = "shifts")]
        Shifts,
    }
    impl ::std::fmt::Display for OverrideShiftListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Shifts => f.write_str("shifts"),
            }
        }
    }
    impl ::std::str::FromStr for OverrideShiftListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shifts" => Ok(Self::Shifts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OverrideShiftListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OverrideShiftListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OverrideShiftListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`OverrideShiftResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/override_shift"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the shift",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "shifts"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OverrideShiftResponse {
        pub data: OverrideShiftResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl OverrideShiftResponse {
        pub fn builder() -> builder::OverrideShiftResponse {
            Default::default()
        }
    }
    ///`OverrideShiftResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/override_shift"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the shift",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shifts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct OverrideShiftResponseData {
        pub attributes: OverrideShift,
        ///Unique ID of the shift
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: OverrideShiftResponseDataType,
    }
    impl OverrideShiftResponseData {
        pub fn builder() -> builder::OverrideShiftResponseData {
            Default::default()
        }
    }
    ///`OverrideShiftResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shifts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum OverrideShiftResponseDataType {
        #[serde(rename = "shifts")]
        Shifts,
    }
    impl ::std::fmt::Display for OverrideShiftResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Shifts => f.write_str("shifts"),
            }
        }
    }
    impl ::std::str::FromStr for OverrideShiftResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shifts" => Ok(Self::Shifts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for OverrideShiftResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for OverrideShiftResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for OverrideShiftResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PageJsmopsOnCallRespondersTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description field of the incident that is generally used to provide a detailed information about the incident",
    ///      "type": "string"
    ///    },
    ///    "message": {
    ///      "description": "Message of the incident",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "default": "P3",
    ///      "type": "string",
    ///      "enum": [
    ///        "P3",
    ///        "P1",
    ///        "P2",
    ///        "P4",
    ///        "P5",
    ///        "auto"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "page_jsmops_on_call_responders"
    ///      ]
    ///    },
    ///    "teams": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "Incident title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageJsmopsOnCallRespondersTaskParams {
        ///Description field of the incident that is generally used to provide a detailed information about the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Message of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub message: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::page_jsmops_on_call_responders_task_params_priority"
        )]
        pub priority: PageJsmopsOnCallRespondersTaskParamsPriority,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            PageJsmopsOnCallRespondersTaskParamsTaskType,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub teams: ::std::vec::Vec<PageJsmopsOnCallRespondersTaskParamsTeamsItem>,
        ///Incident title.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<PageJsmopsOnCallRespondersTaskParamsUsersItem>,
    }
    impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParams {
        fn default() -> Self {
            Self {
                description: Default::default(),
                message: Default::default(),
                priority: defaults::page_jsmops_on_call_responders_task_params_priority(),
                task_type: Default::default(),
                teams: Default::default(),
                title: Default::default(),
                users: Default::default(),
            }
        }
    }
    impl PageJsmopsOnCallRespondersTaskParams {
        pub fn builder() -> builder::PageJsmopsOnCallRespondersTaskParams {
            Default::default()
        }
    }
    ///`PageJsmopsOnCallRespondersTaskParamsPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "P3",
    ///  "type": "string",
    ///  "enum": [
    ///    "P3",
    ///    "P1",
    ///    "P2",
    ///    "P4",
    ///    "P5",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageJsmopsOnCallRespondersTaskParamsPriority {
        P3,
        P1,
        P2,
        P4,
        P5,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for PageJsmopsOnCallRespondersTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::P3 => f.write_str("P3"),
                Self::P1 => f.write_str("P1"),
                Self::P2 => f.write_str("P2"),
                Self::P4 => f.write_str("P4"),
                Self::P5 => f.write_str("P5"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for PageJsmopsOnCallRespondersTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "P3" => Ok(Self::P3),
                "P1" => Ok(Self::P1),
                "P2" => Ok(Self::P2),
                "P4" => Ok(Self::P4),
                "P5" => Ok(Self::P5),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PageJsmopsOnCallRespondersTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageJsmopsOnCallRespondersTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageJsmopsOnCallRespondersTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParamsPriority {
        fn default() -> Self {
            PageJsmopsOnCallRespondersTaskParamsPriority::P3
        }
    }
    ///`PageJsmopsOnCallRespondersTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "page_jsmops_on_call_responders"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageJsmopsOnCallRespondersTaskParamsTaskType {
        #[serde(rename = "page_jsmops_on_call_responders")]
        PageJsmopsOnCallResponders,
    }
    impl ::std::fmt::Display for PageJsmopsOnCallRespondersTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PageJsmopsOnCallResponders => {
                    f.write_str("page_jsmops_on_call_responders")
                }
            }
        }
    }
    impl ::std::str::FromStr for PageJsmopsOnCallRespondersTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "page_jsmops_on_call_responders" => Ok(Self::PageJsmopsOnCallResponders),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PageJsmopsOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageJsmopsOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageJsmopsOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PageJsmopsOnCallRespondersTaskParamsTeamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageJsmopsOnCallRespondersTaskParamsTeamsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParamsTeamsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageJsmopsOnCallRespondersTaskParamsTeamsItem {
        pub fn builder() -> builder::PageJsmopsOnCallRespondersTaskParamsTeamsItem {
            Default::default()
        }
    }
    ///`PageJsmopsOnCallRespondersTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageJsmopsOnCallRespondersTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageJsmopsOnCallRespondersTaskParamsUsersItem {
        pub fn builder() -> builder::PageJsmopsOnCallRespondersTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`PageOpsgenieOnCallRespondersTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description field of the incident that is generally used to provide a detailed information about the incident",
    ///      "type": "string"
    ///    },
    ///    "message": {
    ///      "description": "Message of the incident",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "default": "P1",
    ///      "type": "string",
    ///      "enum": [
    ///        "P1",
    ///        "P2",
    ///        "P3",
    ///        "P4",
    ///        "P5",
    ///        "auto"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "page_opsgenie_on_call_responders"
    ///      ]
    ///    },
    ///    "teams": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "Incident title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageOpsgenieOnCallRespondersTaskParams {
        ///Description field of the incident that is generally used to provide a detailed information about the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Message of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub message: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::page_opsgenie_on_call_responders_task_params_priority"
        )]
        pub priority: PageOpsgenieOnCallRespondersTaskParamsPriority,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            PageOpsgenieOnCallRespondersTaskParamsTaskType,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub teams: ::std::vec::Vec<PageOpsgenieOnCallRespondersTaskParamsTeamsItem>,
        ///Incident title.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<PageOpsgenieOnCallRespondersTaskParamsUsersItem>,
    }
    impl ::std::default::Default for PageOpsgenieOnCallRespondersTaskParams {
        fn default() -> Self {
            Self {
                description: Default::default(),
                message: Default::default(),
                priority: defaults::page_opsgenie_on_call_responders_task_params_priority(),
                task_type: Default::default(),
                teams: Default::default(),
                title: Default::default(),
                users: Default::default(),
            }
        }
    }
    impl PageOpsgenieOnCallRespondersTaskParams {
        pub fn builder() -> builder::PageOpsgenieOnCallRespondersTaskParams {
            Default::default()
        }
    }
    ///`PageOpsgenieOnCallRespondersTaskParamsPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "P1",
    ///  "type": "string",
    ///  "enum": [
    ///    "P1",
    ///    "P2",
    ///    "P3",
    ///    "P4",
    ///    "P5",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageOpsgenieOnCallRespondersTaskParamsPriority {
        P1,
        P2,
        P3,
        P4,
        P5,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for PageOpsgenieOnCallRespondersTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::P1 => f.write_str("P1"),
                Self::P2 => f.write_str("P2"),
                Self::P3 => f.write_str("P3"),
                Self::P4 => f.write_str("P4"),
                Self::P5 => f.write_str("P5"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for PageOpsgenieOnCallRespondersTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "P1" => Ok(Self::P1),
                "P2" => Ok(Self::P2),
                "P3" => Ok(Self::P3),
                "P4" => Ok(Self::P4),
                "P5" => Ok(Self::P5),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PageOpsgenieOnCallRespondersTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageOpsgenieOnCallRespondersTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageOpsgenieOnCallRespondersTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PageOpsgenieOnCallRespondersTaskParamsPriority {
        fn default() -> Self {
            PageOpsgenieOnCallRespondersTaskParamsPriority::P1
        }
    }
    ///`PageOpsgenieOnCallRespondersTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "page_opsgenie_on_call_responders"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageOpsgenieOnCallRespondersTaskParamsTaskType {
        #[serde(rename = "page_opsgenie_on_call_responders")]
        PageOpsgenieOnCallResponders,
    }
    impl ::std::fmt::Display for PageOpsgenieOnCallRespondersTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PageOpsgenieOnCallResponders => {
                    f.write_str("page_opsgenie_on_call_responders")
                }
            }
        }
    }
    impl ::std::str::FromStr for PageOpsgenieOnCallRespondersTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "page_opsgenie_on_call_responders" => {
                    Ok(Self::PageOpsgenieOnCallResponders)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PageOpsgenieOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageOpsgenieOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageOpsgenieOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PageOpsgenieOnCallRespondersTaskParamsTeamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
        pub fn builder() -> builder::PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
            Default::default()
        }
    }
    ///`PageOpsgenieOnCallRespondersTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageOpsgenieOnCallRespondersTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageOpsgenieOnCallRespondersTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageOpsgenieOnCallRespondersTaskParamsUsersItem {
        pub fn builder() -> builder::PageOpsgenieOnCallRespondersTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`PagePagerdutyOnCallRespondersTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "service"
    ///  ],
    ///  "properties": {
    ///    "create_new_incident_on_conflict": {
    ///      "description": "Rootly only supports linking to a single PagerDuty incident. If this feature is disabled Rootly will add responders from any additional pages to the existing PagerDuty incident that is linked to the Rootly incident. If enabled, Rootly will create a new PagerDuty incident that is not linked to any Rootly incidents",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "escalation_policies": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "message": {
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "PagerDuty incident priority, selecting auto will let Rootly auto map our incident severity",
    ///      "type": "string"
    ///    },
    ///    "service": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "page_pagerduty_on_call_responders"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "Incident title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "urgency": {
    ///      "default": "high",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "low",
    ///        "auto"
    ///      ]
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PagePagerdutyOnCallRespondersTaskParams {
        ///Rootly only supports linking to a single PagerDuty incident. If this feature is disabled Rootly will add responders from any additional pages to the existing PagerDuty incident that is linked to the Rootly incident. If enabled, Rootly will create a new PagerDuty incident that is not linked to any Rootly incidents
        #[serde(default)]
        pub create_new_incident_on_conflict: bool,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub escalation_policies: ::std::vec::Vec<
            PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub message: ::std::option::Option<::std::string::String>,
        ///PagerDuty incident priority, selecting auto will let Rootly auto map our incident severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<::std::string::String>,
        pub service: PagePagerdutyOnCallRespondersTaskParamsService,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            PagePagerdutyOnCallRespondersTaskParamsTaskType,
        >,
        ///Incident title.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::page_pagerduty_on_call_responders_task_params_urgency"
        )]
        pub urgency: PagePagerdutyOnCallRespondersTaskParamsUrgency,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<PagePagerdutyOnCallRespondersTaskParamsUsersItem>,
    }
    impl PagePagerdutyOnCallRespondersTaskParams {
        pub fn builder() -> builder::PagePagerdutyOnCallRespondersTaskParams {
            Default::default()
        }
    }
    ///`PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
        pub fn builder() -> builder::PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
            Default::default()
        }
    }
    ///`PagePagerdutyOnCallRespondersTaskParamsService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PagePagerdutyOnCallRespondersTaskParamsService {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PagePagerdutyOnCallRespondersTaskParamsService {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PagePagerdutyOnCallRespondersTaskParamsService {
        pub fn builder() -> builder::PagePagerdutyOnCallRespondersTaskParamsService {
            Default::default()
        }
    }
    ///`PagePagerdutyOnCallRespondersTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "page_pagerduty_on_call_responders"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PagePagerdutyOnCallRespondersTaskParamsTaskType {
        #[serde(rename = "page_pagerduty_on_call_responders")]
        PagePagerdutyOnCallResponders,
    }
    impl ::std::fmt::Display for PagePagerdutyOnCallRespondersTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PagePagerdutyOnCallResponders => {
                    f.write_str("page_pagerduty_on_call_responders")
                }
            }
        }
    }
    impl ::std::str::FromStr for PagePagerdutyOnCallRespondersTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "page_pagerduty_on_call_responders" => {
                    Ok(Self::PagePagerdutyOnCallResponders)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PagePagerdutyOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PagePagerdutyOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PagePagerdutyOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PagePagerdutyOnCallRespondersTaskParamsUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "high",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "low",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PagePagerdutyOnCallRespondersTaskParamsUrgency {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "low")]
        Low,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for PagePagerdutyOnCallRespondersTaskParamsUrgency {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Low => f.write_str("low"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for PagePagerdutyOnCallRespondersTaskParamsUrgency {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "low" => Ok(Self::Low),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PagePagerdutyOnCallRespondersTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PagePagerdutyOnCallRespondersTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PagePagerdutyOnCallRespondersTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PagePagerdutyOnCallRespondersTaskParamsUrgency {
        fn default() -> Self {
            PagePagerdutyOnCallRespondersTaskParamsUrgency::High
        }
    }
    ///`PagePagerdutyOnCallRespondersTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PagePagerdutyOnCallRespondersTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PagePagerdutyOnCallRespondersTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PagePagerdutyOnCallRespondersTaskParamsUsersItem {
        pub fn builder() -> builder::PagePagerdutyOnCallRespondersTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_urgency_id",
    ///    "summary"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "Alert urgency ID",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "Alert description",
    ///      "type": "string"
    ///    },
    ///    "escalation_note": {
    ///      "type": "string"
    ///    },
    ///    "escalation_policy_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "functionality_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "group_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "service_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "summary": {
    ///      "description": "Alert title",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "page_rootly_on_call_responders"
    ///      ]
    ///    },
    ///    "user_target": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageRootlyOnCallRespondersTaskParams {
        ///Alert urgency ID
        pub alert_urgency_id: ::std::string::String,
        ///Alert description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_note: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_target: ::std::option::Option<
            PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_target: ::std::option::Option<
            PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_target: ::std::option::Option<
            PageRootlyOnCallRespondersTaskParamsGroupTarget,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_target: ::std::option::Option<
            PageRootlyOnCallRespondersTaskParamsServiceTarget,
        >,
        ///Alert title
        pub summary: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            PageRootlyOnCallRespondersTaskParamsTaskType,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_target: ::std::option::Option<
            PageRootlyOnCallRespondersTaskParamsUserTarget,
        >,
    }
    impl PageRootlyOnCallRespondersTaskParams {
        pub fn builder() -> builder::PageRootlyOnCallRespondersTaskParams {
            Default::default()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
        pub fn builder() -> builder::PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
            Default::default()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParamsFunctionalityTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
        pub fn builder() -> builder::PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
            Default::default()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParamsGroupTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageRootlyOnCallRespondersTaskParamsGroupTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageRootlyOnCallRespondersTaskParamsGroupTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageRootlyOnCallRespondersTaskParamsGroupTarget {
        pub fn builder() -> builder::PageRootlyOnCallRespondersTaskParamsGroupTarget {
            Default::default()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParamsServiceTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageRootlyOnCallRespondersTaskParamsServiceTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageRootlyOnCallRespondersTaskParamsServiceTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageRootlyOnCallRespondersTaskParamsServiceTarget {
        pub fn builder() -> builder::PageRootlyOnCallRespondersTaskParamsServiceTarget {
            Default::default()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "page_rootly_on_call_responders"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageRootlyOnCallRespondersTaskParamsTaskType {
        #[serde(rename = "page_rootly_on_call_responders")]
        PageRootlyOnCallResponders,
    }
    impl ::std::fmt::Display for PageRootlyOnCallRespondersTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PageRootlyOnCallResponders => {
                    f.write_str("page_rootly_on_call_responders")
                }
            }
        }
    }
    impl ::std::str::FromStr for PageRootlyOnCallRespondersTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "page_rootly_on_call_responders" => Ok(Self::PageRootlyOnCallResponders),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PageRootlyOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageRootlyOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageRootlyOnCallRespondersTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PageRootlyOnCallRespondersTaskParamsUserTarget`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageRootlyOnCallRespondersTaskParamsUserTarget {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PageRootlyOnCallRespondersTaskParamsUserTarget {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageRootlyOnCallRespondersTaskParamsUserTarget {
        pub fn builder() -> builder::PageRootlyOnCallRespondersTaskParamsUserTarget {
            Default::default()
        }
    }
    ///`PageVictorOpsOnCallRespondersTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "users"
    ///      ],
    ///      "properties": {
    ///        "users": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "escalation_policies"
    ///      ],
    ///      "properties": {
    ///        "escalation_policies": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "properties": {
    ///    "escalation_policies": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "page_victor_ops_on_call_responders"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "Alert title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum PageVictorOpsOnCallRespondersTaskParams {
        Variant0 {
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            escalation_policies: ::std::vec::Vec<
                PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType,
            >,
            ///Alert title.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            title: ::std::option::Option<::std::string::String>,
            users: ::std::vec::Vec<
                PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem,
            >,
        },
        Variant1 {
            escalation_policies: ::std::vec::Vec<
                PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<
                PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType,
            >,
            ///Alert title.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            title: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            users: ::std::vec::Vec<
                PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem,
            >,
        },
    }
    ///`PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
        pub fn builder() -> builder::PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
            Default::default()
        }
    }
    ///`PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "page_victor_ops_on_call_responders"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType {
        #[serde(rename = "page_victor_ops_on_call_responders")]
        PageVictorOpsOnCallResponders,
    }
    impl ::std::fmt::Display
    for PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PageVictorOpsOnCallResponders => {
                    f.write_str("page_victor_ops_on_call_responders")
                }
            }
        }
    }
    impl ::std::str::FromStr
    for PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "page_victor_ops_on_call_responders" => {
                    Ok(Self::PageVictorOpsOnCallResponders)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageVictorOpsOnCallRespondersTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
        pub fn builder() -> builder::PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
            Default::default()
        }
    }
    ///`PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
        pub fn builder() -> builder::PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
            Default::default()
        }
    }
    ///`PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "page_victor_ops_on_call_responders"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType {
        #[serde(rename = "page_victor_ops_on_call_responders")]
        PageVictorOpsOnCallResponders,
    }
    impl ::std::fmt::Display
    for PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PageVictorOpsOnCallResponders => {
                    f.write_str("page_victor_ops_on_call_responders")
                }
            }
        }
    }
    impl ::std::str::FromStr
    for PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "page_victor_ops_on_call_responders" => {
                    Ok(Self::PageVictorOpsOnCallResponders)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PageVictorOpsOnCallRespondersTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
        pub fn builder() -> builder::PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
            Default::default()
        }
    }
    ///`PatchAlertRoute`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alerts_source_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The ID of the alerts source",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert route is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert route",
    ///              "type": "string"
    ///            },
    ///            "owning_team_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The ID of the owning team",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "rules": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "_destroy": {
    ///                    "description": "Set to true to delete this rule. When true, only the id field is required.",
    ///                    "type": "boolean"
    ///                  },
    ///                  "condition_groups": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "properties": {
    ///                        "_destroy": {
    ///                          "description": "Set to true to delete this condition group",
    ///                          "type": "boolean"
    ///                        },
    ///                        "conditions": {
    ///                          "type": "array",
    ///                          "items": {
    ///                            "type": "object",
    ///                            "properties": {
    ///                              "_destroy": {
    ///                                "description": "Set to true to delete this condition",
    ///                                "type": "boolean"
    ///                              },
    ///                              "alert_urgency_ids": {
    ///                                "description": "The Alert Urgency IDs to check in the condition",
    ///                                "type": [
    ///                                  "array",
    ///                                  "null"
    ///                                ],
    ///                                "items": {
    ///                                  "type": "string"
    ///                                }
    ///                              },
    ///                              "conditionable_id": {
    ///                                "description": "The ID of the conditionable",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ],
    ///                                "format": "uuid"
    ///                              },
    ///                              "conditionable_type": {
    ///                                "description": "The type of the conditionable",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ],
    ///                                "enum": [
    ///                                  "AlertField"
    ///                                ]
    ///                              },
    ///                              "id": {
    ///                                "description": "The ID of the condition. Required for updating or deleting existing conditions.",
    ///                                "type": "string",
    ///                                "format": "uuid"
    ///                              },
    ///                              "property_field_condition_type": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "is_one_of",
    ///                                  "is_not_one_of",
    ///                                  "contains",
    ///                                  "does_not_contain",
    ///                                  "starts_with",
    ///                                  "ends_with",
    ///                                  "matches_regex",
    ///                                  "is_empty"
    ///                                ]
    ///                              },
    ///                              "property_field_name": {
    ///                                "description": "The name of the property field",
    ///                                "type": "string"
    ///                              },
    ///                              "property_field_type": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "attribute",
    ///                                  "payload",
    ///                                  "alert_field"
    ///                                ]
    ///                              },
    ///                              "property_field_value": {
    ///                                "description": "The value of the property field",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ]
    ///                              },
    ///                              "property_field_values": {
    ///                                "type": [
    ///                                  "array",
    ///                                  "null"
    ///                                ],
    ///                                "items": {
    ///                                  "type": "string"
    ///                                }
    ///                              }
    ///                            }
    ///                          }
    ///                        },
    ///                        "id": {
    ///                          "description": "The ID of the condition group. Required for updating or deleting existing condition groups.",
    ///                          "type": "string",
    ///                          "format": "uuid"
    ///                        },
    ///                        "position": {
    ///                          "description": "The position of the condition group",
    ///                          "type": "integer"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "destinations": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "properties": {
    ///                        "_destroy": {
    ///                          "description": "Set to true to delete this destination",
    ///                          "type": "boolean"
    ///                        },
    ///                        "id": {
    ///                          "description": "The ID of the destination. Required for updating or deleting existing destinations.",
    ///                          "type": "string",
    ///                          "format": "uuid"
    ///                        },
    ///                        "target_id": {
    ///                          "description": "The ID of the target",
    ///                          "type": "string",
    ///                          "format": "uuid"
    ///                        },
    ///                        "target_type": {
    ///                          "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                          "type": "string",
    ///                          "enum": [
    ///                            "Service",
    ///                            "Group",
    ///                            "Functionality",
    ///                            "EscalationPolicy"
    ///                          ]
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "fallback_rule": {
    ///                    "description": "Whether this is a fallback rule",
    ///                    "default": false,
    ///                    "type": "boolean"
    ///                  },
    ///                  "id": {
    ///                    "description": "The ID of the alert routing rule. Required for updating or deleting existing rules.",
    ///                    "type": "string",
    ///                    "format": "uuid"
    ///                  },
    ///                  "name": {
    ///                    "description": "The name of the alert routing rule",
    ///                    "type": "string"
    ///                  },
    ///                  "position": {
    ///                    "description": "The position of the alert routing rule for ordering evaluation",
    ///                    "type": "integer"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PatchAlertRoute {
        pub data: PatchAlertRouteData,
    }
    impl PatchAlertRoute {
        pub fn builder() -> builder::PatchAlertRoute {
            Default::default()
        }
    }
    ///`PatchAlertRouteData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alerts_source_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The ID of the alerts source",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert route is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert route",
    ///          "type": "string"
    ///        },
    ///        "owning_team_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The ID of the owning team",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "rules": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "_destroy": {
    ///                "description": "Set to true to delete this rule. When true, only the id field is required.",
    ///                "type": "boolean"
    ///              },
    ///              "condition_groups": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "_destroy": {
    ///                      "description": "Set to true to delete this condition group",
    ///                      "type": "boolean"
    ///                    },
    ///                    "conditions": {
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "object",
    ///                        "properties": {
    ///                          "_destroy": {
    ///                            "description": "Set to true to delete this condition",
    ///                            "type": "boolean"
    ///                          },
    ///                          "alert_urgency_ids": {
    ///                            "description": "The Alert Urgency IDs to check in the condition",
    ///                            "type": [
    ///                              "array",
    ///                              "null"
    ///                            ],
    ///                            "items": {
    ///                              "type": "string"
    ///                            }
    ///                          },
    ///                          "conditionable_id": {
    ///                            "description": "The ID of the conditionable",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ],
    ///                            "format": "uuid"
    ///                          },
    ///                          "conditionable_type": {
    ///                            "description": "The type of the conditionable",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ],
    ///                            "enum": [
    ///                              "AlertField"
    ///                            ]
    ///                          },
    ///                          "id": {
    ///                            "description": "The ID of the condition. Required for updating or deleting existing conditions.",
    ///                            "type": "string",
    ///                            "format": "uuid"
    ///                          },
    ///                          "property_field_condition_type": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "is_one_of",
    ///                              "is_not_one_of",
    ///                              "contains",
    ///                              "does_not_contain",
    ///                              "starts_with",
    ///                              "ends_with",
    ///                              "matches_regex",
    ///                              "is_empty"
    ///                            ]
    ///                          },
    ///                          "property_field_name": {
    ///                            "description": "The name of the property field",
    ///                            "type": "string"
    ///                          },
    ///                          "property_field_type": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "attribute",
    ///                              "payload",
    ///                              "alert_field"
    ///                            ]
    ///                          },
    ///                          "property_field_value": {
    ///                            "description": "The value of the property field",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "property_field_values": {
    ///                            "type": [
    ///                              "array",
    ///                              "null"
    ///                            ],
    ///                            "items": {
    ///                              "type": "string"
    ///                            }
    ///                          }
    ///                        }
    ///                      }
    ///                    },
    ///                    "id": {
    ///                      "description": "The ID of the condition group. Required for updating or deleting existing condition groups.",
    ///                      "type": "string",
    ///                      "format": "uuid"
    ///                    },
    ///                    "position": {
    ///                      "description": "The position of the condition group",
    ///                      "type": "integer"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "destinations": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "_destroy": {
    ///                      "description": "Set to true to delete this destination",
    ///                      "type": "boolean"
    ///                    },
    ///                    "id": {
    ///                      "description": "The ID of the destination. Required for updating or deleting existing destinations.",
    ///                      "type": "string",
    ///                      "format": "uuid"
    ///                    },
    ///                    "target_id": {
    ///                      "description": "The ID of the target",
    ///                      "type": "string",
    ///                      "format": "uuid"
    ///                    },
    ///                    "target_type": {
    ///                      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "Service",
    ///                        "Group",
    ///                        "Functionality",
    ///                        "EscalationPolicy"
    ///                      ]
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "fallback_rule": {
    ///                "description": "Whether this is a fallback rule",
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "id": {
    ///                "description": "The ID of the alert routing rule. Required for updating or deleting existing rules.",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              },
    ///              "name": {
    ///                "description": "The name of the alert routing rule",
    ///                "type": "string"
    ///              },
    ///              "position": {
    ///                "description": "The position of the alert routing rule for ordering evaluation",
    ///                "type": "integer"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PatchAlertRouteData {
        pub attributes: PatchAlertRouteDataAttributes,
        #[serde(rename = "type")]
        pub type_: PatchAlertRouteDataType,
    }
    impl PatchAlertRouteData {
        pub fn builder() -> builder::PatchAlertRouteData {
            Default::default()
        }
    }
    ///`PatchAlertRouteDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alerts_source_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the alerts source",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert route is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert route",
    ///      "type": "string"
    ///    },
    ///    "owning_team_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the owning team",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "_destroy": {
    ///            "description": "Set to true to delete this rule. When true, only the id field is required.",
    ///            "type": "boolean"
    ///          },
    ///          "condition_groups": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "_destroy": {
    ///                  "description": "Set to true to delete this condition group",
    ///                  "type": "boolean"
    ///                },
    ///                "conditions": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "_destroy": {
    ///                        "description": "Set to true to delete this condition",
    ///                        "type": "boolean"
    ///                      },
    ///                      "alert_urgency_ids": {
    ///                        "description": "The Alert Urgency IDs to check in the condition",
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      },
    ///                      "conditionable_id": {
    ///                        "description": "The ID of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "format": "uuid"
    ///                      },
    ///                      "conditionable_type": {
    ///                        "description": "The type of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "enum": [
    ///                          "AlertField"
    ///                        ]
    ///                      },
    ///                      "id": {
    ///                        "description": "The ID of the condition. Required for updating or deleting existing conditions.",
    ///                        "type": "string",
    ///                        "format": "uuid"
    ///                      },
    ///                      "property_field_condition_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "starts_with",
    ///                          "ends_with",
    ///                          "matches_regex",
    ///                          "is_empty"
    ///                        ]
    ///                      },
    ///                      "property_field_name": {
    ///                        "description": "The name of the property field",
    ///                        "type": "string"
    ///                      },
    ///                      "property_field_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "attribute",
    ///                          "payload",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "property_field_value": {
    ///                        "description": "The value of the property field",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "property_field_values": {
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "id": {
    ///                  "description": "The ID of the condition group. Required for updating or deleting existing condition groups.",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "position": {
    ///                  "description": "The position of the condition group",
    ///                  "type": "integer"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "destinations": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "_destroy": {
    ///                  "description": "Set to true to delete this destination",
    ///                  "type": "boolean"
    ///                },
    ///                "id": {
    ///                  "description": "The ID of the destination. Required for updating or deleting existing destinations.",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_id": {
    ///                  "description": "The ID of the target",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_type": {
    ///                  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "Functionality",
    ///                    "EscalationPolicy"
    ///                  ]
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "fallback_rule": {
    ///            "description": "Whether this is a fallback rule",
    ///            "default": false,
    ///            "type": "boolean"
    ///          },
    ///          "id": {
    ///            "description": "The ID of the alert routing rule. Required for updating or deleting existing rules.",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "name": {
    ///            "description": "The name of the alert routing rule",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the alert routing rule for ordering evaluation",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct PatchAlertRouteDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_source_ids: ::std::vec::Vec<::uuid::Uuid>,
        ///Whether the alert route is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert route
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owning_team_ids: ::std::vec::Vec<::uuid::Uuid>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<PatchAlertRouteDataAttributesRulesItem>,
    }
    impl ::std::default::Default for PatchAlertRouteDataAttributes {
        fn default() -> Self {
            Self {
                alerts_source_ids: Default::default(),
                enabled: Default::default(),
                name: Default::default(),
                owning_team_ids: Default::default(),
                rules: Default::default(),
            }
        }
    }
    impl PatchAlertRouteDataAttributes {
        pub fn builder() -> builder::PatchAlertRouteDataAttributes {
            Default::default()
        }
    }
    ///`PatchAlertRouteDataAttributesRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "_destroy": {
    ///      "description": "Set to true to delete this rule. When true, only the id field is required.",
    ///      "type": "boolean"
    ///    },
    ///    "condition_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "_destroy": {
    ///            "description": "Set to true to delete this condition group",
    ///            "type": "boolean"
    ///          },
    ///          "conditions": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "_destroy": {
    ///                  "description": "Set to true to delete this condition",
    ///                  "type": "boolean"
    ///                },
    ///                "alert_urgency_ids": {
    ///                  "description": "The Alert Urgency IDs to check in the condition",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "conditionable_id": {
    ///                  "description": "The ID of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "format": "uuid"
    ///                },
    ///                "conditionable_type": {
    ///                  "description": "The type of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "AlertField"
    ///                  ]
    ///                },
    ///                "id": {
    ///                  "description": "The ID of the condition. Required for updating or deleting existing conditions.",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "property_field_condition_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "is_one_of",
    ///                    "is_not_one_of",
    ///                    "contains",
    ///                    "does_not_contain",
    ///                    "starts_with",
    ///                    "ends_with",
    ///                    "matches_regex",
    ///                    "is_empty"
    ///                  ]
    ///                },
    ///                "property_field_name": {
    ///                  "description": "The name of the property field",
    ///                  "type": "string"
    ///                },
    ///                "property_field_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "attribute",
    ///                    "payload",
    ///                    "alert_field"
    ///                  ]
    ///                },
    ///                "property_field_value": {
    ///                  "description": "The value of the property field",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "property_field_values": {
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "id": {
    ///            "description": "The ID of the condition group. Required for updating or deleting existing condition groups.",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition group",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "destinations": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "_destroy": {
    ///            "description": "Set to true to delete this destination",
    ///            "type": "boolean"
    ///          },
    ///          "id": {
    ///            "description": "The ID of the destination. Required for updating or deleting existing destinations.",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_id": {
    ///            "description": "The ID of the target",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Service",
    ///              "Group",
    ///              "Functionality",
    ///              "EscalationPolicy"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "fallback_rule": {
    ///      "description": "Whether this is a fallback rule",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "id": {
    ///      "description": "The ID of the alert routing rule. Required for updating or deleting existing rules.",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PatchAlertRouteDataAttributesRulesItem {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub condition_groups: ::std::vec::Vec<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub destinations: ::std::vec::Vec<
            PatchAlertRouteDataAttributesRulesItemDestinationsItem,
        >,
        ///Set to true to delete this rule. When true, only the id field is required.
        #[serde(
            rename = "_destroy",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub destroy: ::std::option::Option<bool>,
        ///Whether this is a fallback rule
        #[serde(default)]
        pub fallback_rule: bool,
        ///The ID of the alert routing rule. Required for updating or deleting existing rules.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The name of the alert routing rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The position of the alert routing rule for ordering evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for PatchAlertRouteDataAttributesRulesItem {
        fn default() -> Self {
            Self {
                condition_groups: Default::default(),
                destinations: Default::default(),
                destroy: Default::default(),
                fallback_rule: Default::default(),
                id: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl PatchAlertRouteDataAttributesRulesItem {
        pub fn builder() -> builder::PatchAlertRouteDataAttributesRulesItem {
            Default::default()
        }
    }
    ///`PatchAlertRouteDataAttributesRulesItemConditionGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "_destroy": {
    ///      "description": "Set to true to delete this condition group",
    ///      "type": "boolean"
    ///    },
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "_destroy": {
    ///            "description": "Set to true to delete this condition",
    ///            "type": "boolean"
    ///          },
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "The ID of the condition. Required for updating or deleting existing conditions.",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "property_field_condition_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "description": "The ID of the condition group. Required for updating or deleting existing condition groups.",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition group",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        >,
        ///Set to true to delete this condition group
        #[serde(
            rename = "_destroy",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub destroy: ::std::option::Option<bool>,
        ///The ID of the condition group. Required for updating or deleting existing condition groups.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The position of the condition group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
        fn default() -> Self {
            Self {
                conditions: Default::default(),
                destroy: Default::default(),
                id: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
        pub fn builder() -> builder::PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
            Default::default()
        }
    }
    ///`PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "_destroy": {
    ///      "description": "Set to true to delete this condition",
    ///      "type": "boolean"
    ///    },
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "The ID of the condition. Required for updating or deleting existing conditions.",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "property_field_condition_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        ///The Alert Urgency IDs to check in the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
        >,
        ///Set to true to delete this condition
        #[serde(
            rename = "_destroy",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub destroy: ::std::option::Option<bool>,
        ///The ID of the condition. Required for updating or deleting existing conditions.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_condition_type: ::std::option::Option<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
        >,
        ///The name of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_type: ::std::option::Option<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
        >,
        ///The value of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_values: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
    }
    impl ::std::default::Default
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        fn default() -> Self {
            Self {
                alert_urgency_ids: Default::default(),
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                destroy: Default::default(),
                id: Default::default(),
                property_field_condition_type: Default::default(),
                property_field_name: Default::default(),
                property_field_type: Default::default(),
                property_field_value: Default::default(),
                property_field_values: Default::default(),
            }
        }
    }
    impl PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        pub fn builder() -> builder::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PatchAlertRouteDataAttributesRulesItemDestinationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "_destroy": {
    ///      "description": "Set to true to delete this destination",
    ///      "type": "boolean"
    ///    },
    ///    "id": {
    ///      "description": "The ID of the destination. Required for updating or deleting existing destinations.",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PatchAlertRouteDataAttributesRulesItemDestinationsItem {
        ///Set to true to delete this destination
        #[serde(
            rename = "_destroy",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub destroy: ::std::option::Option<bool>,
        ///The ID of the destination. Required for updating or deleting existing destinations.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The ID of the target
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub target_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub target_type: ::std::option::Option<
            PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
        >,
    }
    impl ::std::default::Default
    for PatchAlertRouteDataAttributesRulesItemDestinationsItem {
        fn default() -> Self {
            Self {
                destroy: Default::default(),
                id: Default::default(),
                target_id: Default::default(),
                target_type: Default::default(),
            }
        }
    }
    impl PatchAlertRouteDataAttributesRulesItemDestinationsItem {
        pub fn builder() -> builder::PatchAlertRouteDataAttributesRulesItemDestinationsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display
    for PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr
    for PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PatchAlertRouteDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PatchAlertRouteDataType {
        #[serde(rename = "alert_routes")]
        AlertRoutes,
    }
    impl ::std::fmt::Display for PatchAlertRouteDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutes => f.write_str("alert_routes"),
            }
        }
    }
    impl ::std::str::FromStr for PatchAlertRouteDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routes" => Ok(Self::AlertRoutes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PatchAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PatchAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PatchAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PhoneVerificationResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "error": {
    ///      "description": "Error message",
    ///      "type": "string"
    ///    },
    ///    "message": {
    ///      "description": "Success message",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PhoneVerificationResponse {
        ///Error message
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub error: ::std::option::Option<::std::string::String>,
        ///Success message
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub message: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PhoneVerificationResponse {
        fn default() -> Self {
            Self {
                error: Default::default(),
                message: Default::default(),
            }
        }
    }
    impl PhoneVerificationResponse {
        pub fn builder() -> builder::PhoneVerificationResponse {
            Default::default()
        }
    }
    ///`Playbook`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_url": {
    ///      "description": "The external url of the playbook",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "The Severity IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the playbook",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the playbook",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Playbook {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The Environment IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The external url of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The Functionality IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Team IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Incident Type IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Service IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Severity IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The summary of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///The title of the playbook
        pub title: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Playbook {
        pub fn builder() -> builder::Playbook {
            Default::default()
        }
    }
    ///`PlaybookList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/playbook"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the playbook",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "playbooks"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookList {
        pub data: ::std::vec::Vec<PlaybookListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl PlaybookList {
        pub fn builder() -> builder::PlaybookList {
            Default::default()
        }
    }
    ///`PlaybookListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/playbook"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the playbook",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbooks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookListDataItem {
        pub attributes: Playbook,
        ///Unique ID of the playbook
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PlaybookListDataItemType,
    }
    impl PlaybookListDataItem {
        pub fn builder() -> builder::PlaybookListDataItem {
            Default::default()
        }
    }
    ///`PlaybookListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbooks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PlaybookListDataItemType {
        #[serde(rename = "playbooks")]
        Playbooks,
    }
    impl ::std::fmt::Display for PlaybookListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Playbooks => f.write_str("playbooks"),
            }
        }
    }
    impl ::std::str::FromStr for PlaybookListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbooks" => Ok(Self::Playbooks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PlaybookListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PlaybookListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PlaybookListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PlaybookResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/playbook"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the playbook",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "playbooks"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookResponse {
        pub data: PlaybookResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl PlaybookResponse {
        pub fn builder() -> builder::PlaybookResponse {
            Default::default()
        }
    }
    ///`PlaybookResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/playbook"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the playbook",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbooks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookResponseData {
        pub attributes: Playbook,
        ///Unique ID of the playbook
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PlaybookResponseDataType,
    }
    impl PlaybookResponseData {
        pub fn builder() -> builder::PlaybookResponseData {
            Default::default()
        }
    }
    ///`PlaybookResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbooks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PlaybookResponseDataType {
        #[serde(rename = "playbooks")]
        Playbooks,
    }
    impl ::std::fmt::Display for PlaybookResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Playbooks => f.write_str("playbooks"),
            }
        }
    }
    impl ::std::str::FromStr for PlaybookResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbooks" => Ok(Self::Playbooks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PlaybookResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PlaybookResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PlaybookResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PlaybookTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "task",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of task",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "playbook_id": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the task",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "task": {
    ///      "description": "The task of the task",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookTask {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub playbook_id: ::std::option::Option<::std::string::String>,
        ///The position of the task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The task of the task
        pub task: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl PlaybookTask {
        pub fn builder() -> builder::PlaybookTask {
            Default::default()
        }
    }
    ///`PlaybookTaskList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/playbook_task"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the task",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "playbook_tasks"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookTaskList {
        pub data: ::std::vec::Vec<PlaybookTaskListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl PlaybookTaskList {
        pub fn builder() -> builder::PlaybookTaskList {
            Default::default()
        }
    }
    ///`PlaybookTaskListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/playbook_task"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the task",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbook_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookTaskListDataItem {
        pub attributes: PlaybookTask,
        ///Unique ID of the task
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PlaybookTaskListDataItemType,
    }
    impl PlaybookTaskListDataItem {
        pub fn builder() -> builder::PlaybookTaskListDataItem {
            Default::default()
        }
    }
    ///`PlaybookTaskListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbook_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PlaybookTaskListDataItemType {
        #[serde(rename = "playbook_tasks")]
        PlaybookTasks,
    }
    impl ::std::fmt::Display for PlaybookTaskListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PlaybookTasks => f.write_str("playbook_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for PlaybookTaskListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbook_tasks" => Ok(Self::PlaybookTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PlaybookTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PlaybookTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PlaybookTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PlaybookTaskResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/playbook_task"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the task",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "playbook_tasks"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookTaskResponse {
        pub data: PlaybookTaskResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl PlaybookTaskResponse {
        pub fn builder() -> builder::PlaybookTaskResponse {
            Default::default()
        }
    }
    ///`PlaybookTaskResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/playbook_task"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the task",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbook_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PlaybookTaskResponseData {
        pub attributes: PlaybookTask,
        ///Unique ID of the task
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PlaybookTaskResponseDataType,
    }
    impl PlaybookTaskResponseData {
        pub fn builder() -> builder::PlaybookTaskResponseData {
            Default::default()
        }
    }
    ///`PlaybookTaskResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbook_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PlaybookTaskResponseDataType {
        #[serde(rename = "playbook_tasks")]
        PlaybookTasks,
    }
    impl ::std::fmt::Display for PlaybookTaskResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PlaybookTasks => f.write_str("playbook_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for PlaybookTaskResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbook_tasks" => Ok(Self::PlaybookTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PlaybookTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PlaybookTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PlaybookTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The postmortem template. Liquid syntax and markdown are supported",
    ///      "type": "string"
    ///    },
    ///    "content_html": {
    ///      "description": "The postmortem template in HTML format with TipTap blocks support. Supports followup and timeline components. Liquid syntax is supported.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "content_json": {
    ///      "description": "The postmortem template in TipTap JSON format",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "description": "Default selected template when editing a postmortem",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "format": {
    ///      "description": "The format of the input",
    ///      "type": "string",
    ///      "enum": [
    ///        "html",
    ///        "markdown"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the postmortem template",
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "description": "The slugified name of the postmortem template",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PostMortemTemplate {
        ///The postmortem template. Liquid syntax and markdown are supported
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The postmortem template in HTML format with TipTap blocks support. Supports followup and timeline components. Liquid syntax is supported.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content_html: ::std::option::Option<::std::string::String>,
        ///The postmortem template in TipTap JSON format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content_json: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Default selected template when editing a postmortem
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The format of the input
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub format: ::std::option::Option<PostMortemTemplateFormat>,
        ///The name of the postmortem template
        pub name: ::std::string::String,
        ///The slugified name of the postmortem template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl PostMortemTemplate {
        pub fn builder() -> builder::PostMortemTemplate {
            Default::default()
        }
    }
    ///The format of the input
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The format of the input",
    ///  "type": "string",
    ///  "enum": [
    ///    "html",
    ///    "markdown"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTemplateFormat {
        #[serde(rename = "html")]
        Html,
        #[serde(rename = "markdown")]
        Markdown,
    }
    impl ::std::fmt::Display for PostMortemTemplateFormat {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Html => f.write_str("html"),
                Self::Markdown => f.write_str("markdown"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTemplateFormat {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "html" => Ok(Self::Html),
                "markdown" => Ok(Self::Markdown),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTemplateFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PostMortemTemplateFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PostMortemTemplateFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTemplateList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/post_mortem_template"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the post_mortem_template",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "post_mortem_templates"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PostMortemTemplateList {
        pub data: ::std::vec::Vec<PostMortemTemplateListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl PostMortemTemplateList {
        pub fn builder() -> builder::PostMortemTemplateList {
            Default::default()
        }
    }
    ///`PostMortemTemplateListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/post_mortem_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the post_mortem_template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "post_mortem_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PostMortemTemplateListDataItem {
        pub attributes: PostMortemTemplate,
        ///Unique ID of the post_mortem_template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PostMortemTemplateListDataItemType,
    }
    impl PostMortemTemplateListDataItem {
        pub fn builder() -> builder::PostMortemTemplateListDataItem {
            Default::default()
        }
    }
    ///`PostMortemTemplateListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "post_mortem_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTemplateListDataItemType {
        #[serde(rename = "post_mortem_templates")]
        PostMortemTemplates,
    }
    impl ::std::fmt::Display for PostMortemTemplateListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PostMortemTemplates => f.write_str("post_mortem_templates"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTemplateListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "post_mortem_templates" => Ok(Self::PostMortemTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTemplateResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/post_mortem_template"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the post_mortem_template",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "post_mortem_templates"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PostMortemTemplateResponse {
        pub data: PostMortemTemplateResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl PostMortemTemplateResponse {
        pub fn builder() -> builder::PostMortemTemplateResponse {
            Default::default()
        }
    }
    ///`PostMortemTemplateResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/post_mortem_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the post_mortem_template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "post_mortem_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PostMortemTemplateResponseData {
        pub attributes: PostMortemTemplate,
        ///Unique ID of the post_mortem_template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PostMortemTemplateResponseDataType,
    }
    impl PostMortemTemplateResponseData {
        pub fn builder() -> builder::PostMortemTemplateResponseData {
            Default::default()
        }
    }
    ///`PostMortemTemplateResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "post_mortem_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTemplateResponseDataType {
        #[serde(rename = "post_mortem_templates")]
        PostMortemTemplates,
    }
    impl ::std::fmt::Display for PostMortemTemplateResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PostMortemTemplates => f.write_str("post_mortem_templates"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTemplateResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "post_mortem_templates" => Ok(Self::PostMortemTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "trigger_type"
    ///  ],
    ///  "properties": {
    ///    "incident_condition": {
    ///      "default": "ALL",
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "incident_condition_acknowledged_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_cause": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_detected_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_environment": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_functionality": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_group": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_incident_roles": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_incident_type": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_kind": {
    ///      "default": "IS",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_mitigated_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_resolved_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_service": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_severity": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_started_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_sub_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_summary": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_condition_visibility": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_conditional_inactivity": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "IS"
    ///      ]
    ///    },
    ///    "incident_inactivity_duration": {
    ///      "description": "ex. 10 min, 1h, 3 days, 2 weeks",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_kinds": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "test",
    ///          "test_sub",
    ///          "example",
    ///          "example_sub",
    ///          "normal",
    ///          "normal_sub",
    ///          "backfilled",
    ///          "scheduled",
    ///          "scheduled_sub"
    ///        ]
    ///      }
    ///    },
    ///    "incident_post_mortem_condition": {
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "incident_post_mortem_condition_cause": {
    ///      "description": "[DEPRECATED] Use incident_condition_cause instead",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_post_mortem_condition_status": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "incident_post_mortem_statuses": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "draft",
    ///          "published"
    ///        ]
    ///      }
    ///    },
    ///    "incident_statuses": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "in_triage",
    ///          "started",
    ///          "detected",
    ///          "acknowledged",
    ///          "mitigated",
    ///          "resolved",
    ///          "closed",
    ///          "cancelled",
    ///          "scheduled",
    ///          "in_progress",
    ///          "completed"
    ///        ]
    ///      }
    ///    },
    ///    "incident_visibilities": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "boolean"
    ///      }
    ///    },
    ///    "trigger_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "post_mortem"
    ///      ]
    ///    },
    ///    "triggers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Actions that trigger the workflow. One of custom_fields.<slug>.updated, post_mortem_created, post_mortem_updated, status_updated, slack_command",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PostMortemTriggerParams {
        #[serde(default = "defaults::post_mortem_trigger_params_incident_condition")]
        pub incident_condition: PostMortemTriggerParamsIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_acknowledged_at: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionAcknowledgedAt,
        >,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_cause"
        )]
        pub incident_condition_cause: PostMortemTriggerParamsIncidentConditionCause,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_detected_at: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionDetectedAt,
        >,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_environment"
        )]
        pub incident_condition_environment: PostMortemTriggerParamsIncidentConditionEnvironment,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_functionality"
        )]
        pub incident_condition_functionality: PostMortemTriggerParamsIncidentConditionFunctionality,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_group"
        )]
        pub incident_condition_group: PostMortemTriggerParamsIncidentConditionGroup,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_incident_roles"
        )]
        pub incident_condition_incident_roles: PostMortemTriggerParamsIncidentConditionIncidentRoles,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_incident_type"
        )]
        pub incident_condition_incident_type: PostMortemTriggerParamsIncidentConditionIncidentType,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_kind"
        )]
        pub incident_condition_kind: PostMortemTriggerParamsIncidentConditionKind,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_mitigated_at: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionMitigatedAt,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_resolved_at: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionResolvedAt,
        >,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_service"
        )]
        pub incident_condition_service: PostMortemTriggerParamsIncidentConditionService,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_severity"
        )]
        pub incident_condition_severity: PostMortemTriggerParamsIncidentConditionSeverity,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_started_at: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionStartedAt,
        >,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_status"
        )]
        pub incident_condition_status: PostMortemTriggerParamsIncidentConditionStatus,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_sub_status"
        )]
        pub incident_condition_sub_status: PostMortemTriggerParamsIncidentConditionSubStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_condition_summary: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionSummary,
        >,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_condition_visibility"
        )]
        pub incident_condition_visibility: PostMortemTriggerParamsIncidentConditionVisibility,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_conditional_inactivity: ::std::option::Option<
            PostMortemTriggerParamsIncidentConditionalInactivity,
        >,
        ///ex. 10 min, 1h, 3 days, 2 weeks
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_inactivity_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_kinds: ::std::vec::Vec<PostMortemTriggerParamsIncidentKindsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_post_mortem_condition: ::std::option::Option<
            PostMortemTriggerParamsIncidentPostMortemCondition,
        >,
        ///[DEPRECATED] Use incident_condition_cause instead
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_post_mortem_condition_cause"
        )]
        pub incident_post_mortem_condition_cause: PostMortemTriggerParamsIncidentPostMortemConditionCause,
        #[serde(
            default = "defaults::post_mortem_trigger_params_incident_post_mortem_condition_status"
        )]
        pub incident_post_mortem_condition_status: PostMortemTriggerParamsIncidentPostMortemConditionStatus,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_post_mortem_statuses: ::std::vec::Vec<
            PostMortemTriggerParamsIncidentPostMortemStatusesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_statuses: ::std::vec::Vec<
            PostMortemTriggerParamsIncidentStatusesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_visibilities: ::std::vec::Vec<bool>,
        pub trigger_type: PostMortemTriggerParamsTriggerType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub triggers: ::std::vec::Vec<::std::string::String>,
    }
    impl PostMortemTriggerParams {
        pub fn builder() -> builder::PostMortemTriggerParams {
            Default::default()
        }
    }
    ///`PostMortemTriggerParamsIncidentCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ALL",
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentCondition {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentCondition::All
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionAcknowledgedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionAcknowledgedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionAcknowledgedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionAcknowledgedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionAcknowledgedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionCause`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionCause {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionCause {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionCause {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionCause {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionCause::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionDetectedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionDetectedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionDetectedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionDetectedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionDetectedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionEnvironment`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionEnvironment {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionEnvironment {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionEnvironment {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionEnvironment {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for PostMortemTriggerParamsIncidentConditionEnvironment {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionEnvironment::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionFunctionality {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionFunctionality {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionFunctionality {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionFunctionality {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for PostMortemTriggerParamsIncidentConditionFunctionality {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionFunctionality::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionGroup {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionGroup {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionGroup {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionGroup {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionGroup {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionGroup::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionIncidentRoles`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionIncidentRoles {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionIncidentRoles {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionIncidentRoles {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionIncidentRoles {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for PostMortemTriggerParamsIncidentConditionIncidentRoles {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionIncidentRoles::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionIncidentType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionIncidentType {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionIncidentType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionIncidentType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionIncidentType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for PostMortemTriggerParamsIncidentConditionIncidentType {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionIncidentType::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "IS",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionKind {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionKind {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionKind::Is
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionMitigatedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionMitigatedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionMitigatedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionMitigatedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionMitigatedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionResolvedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionResolvedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionResolvedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionResolvedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionResolvedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionService {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionService {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionService {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionService {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionService {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionService::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionSeverity {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionSeverity {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionSeverity::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionStartedAt`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionStartedAt {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionStartedAt {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionStartedAt {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionStartedAt {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionStatus {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionStatus::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionSubStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionSubStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionSubStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionSubStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionSubStatus {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionSubStatus::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionSummary`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionSummary {
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionSummary {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionSummary {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionSummary {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionVisibility`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionVisibility {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionVisibility {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionVisibility {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PostMortemTriggerParamsIncidentConditionVisibility {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentConditionVisibility::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentConditionalInactivity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "IS"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentConditionalInactivity {
        #[serde(rename = "IS")]
        Is,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentConditionalInactivity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentConditionalInactivity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentConditionalInactivity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentKindsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "test",
    ///    "test_sub",
    ///    "example",
    ///    "example_sub",
    ///    "normal",
    ///    "normal_sub",
    ///    "backfilled",
    ///    "scheduled",
    ///    "scheduled_sub"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentKindsItem {
        #[serde(rename = "test")]
        Test,
        #[serde(rename = "test_sub")]
        TestSub,
        #[serde(rename = "example")]
        Example,
        #[serde(rename = "example_sub")]
        ExampleSub,
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "normal_sub")]
        NormalSub,
        #[serde(rename = "backfilled")]
        Backfilled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "scheduled_sub")]
        ScheduledSub,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentKindsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Test => f.write_str("test"),
                Self::TestSub => f.write_str("test_sub"),
                Self::Example => f.write_str("example"),
                Self::ExampleSub => f.write_str("example_sub"),
                Self::Normal => f.write_str("normal"),
                Self::NormalSub => f.write_str("normal_sub"),
                Self::Backfilled => f.write_str("backfilled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::ScheduledSub => f.write_str("scheduled_sub"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentKindsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "test" => Ok(Self::Test),
                "test_sub" => Ok(Self::TestSub),
                "example" => Ok(Self::Example),
                "example_sub" => Ok(Self::ExampleSub),
                "normal" => Ok(Self::Normal),
                "normal_sub" => Ok(Self::NormalSub),
                "backfilled" => Ok(Self::Backfilled),
                "scheduled" => Ok(Self::Scheduled),
                "scheduled_sub" => Ok(Self::ScheduledSub),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentKindsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentPostMortemCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentPostMortemCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentPostMortemCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentPostMortemCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentPostMortemCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///[DEPRECATED] Use incident_condition_cause instead
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Use incident_condition_cause instead",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentPostMortemConditionCause {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for PostMortemTriggerParamsIncidentPostMortemConditionCause {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for PostMortemTriggerParamsIncidentPostMortemConditionCause {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentPostMortemConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemConditionCause {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for PostMortemTriggerParamsIncidentPostMortemConditionCause {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentPostMortemConditionCause::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentPostMortemConditionStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for PostMortemTriggerParamsIncidentPostMortemConditionStatus {
        fn default() -> Self {
            PostMortemTriggerParamsIncidentPostMortemConditionStatus::Any
        }
    }
    ///`PostMortemTriggerParamsIncidentPostMortemStatusesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "draft",
    ///    "published"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentPostMortemStatusesItem {
        #[serde(rename = "draft")]
        Draft,
        #[serde(rename = "published")]
        Published,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentPostMortemStatusesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Draft => f.write_str("draft"),
                Self::Published => f.write_str("published"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentPostMortemStatusesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "draft" => Ok(Self::Draft),
                "published" => Ok(Self::Published),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for PostMortemTriggerParamsIncidentPostMortemStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentPostMortemStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsIncidentStatusesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "detected",
    ///    "acknowledged",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsIncidentStatusesItem {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "detected")]
        Detected,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsIncidentStatusesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Detected => f.write_str("detected"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsIncidentStatusesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "detected" => Ok(Self::Detected),
                "acknowledged" => Ok(Self::Acknowledged),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsIncidentStatusesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PostMortemTriggerParamsTriggerType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "post_mortem"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PostMortemTriggerParamsTriggerType {
        #[serde(rename = "post_mortem")]
        PostMortem,
    }
    impl ::std::fmt::Display for PostMortemTriggerParamsTriggerType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PostMortem => f.write_str("post_mortem"),
            }
        }
    }
    impl ::std::str::FromStr for PostMortemTriggerParamsTriggerType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "post_mortem" => Ok(Self::PostMortem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PostMortemTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PostMortemTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PostMortemTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PrintTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "message"
    ///  ],
    ///  "properties": {
    ///    "message": {
    ///      "description": "The message to print",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "print"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PrintTaskParams {
        ///The message to print
        pub message: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<PrintTaskParamsTaskType>,
    }
    impl PrintTaskParams {
        pub fn builder() -> builder::PrintTaskParams {
            Default::default()
        }
    }
    ///`PrintTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "print"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PrintTaskParamsTaskType {
        #[serde(rename = "print")]
        Print,
    }
    impl ::std::fmt::Display for PrintTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Print => f.write_str("print"),
            }
        }
    }
    impl ::std::str::FromStr for PrintTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "print" => Ok(Self::Print),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PrintTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PrintTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PrintTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PublishIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident",
    ///    "public_title",
    ///    "status",
    ///    "status_page_id"
    ///  ],
    ///  "properties": {
    ///    "event": {
    ///      "description": "Incident event description",
    ///      "type": "string"
    ///    },
    ///    "incident": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "integration_payload": {
    ///      "description": "Additional API Payload you can pass to statuspage.io for example. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "notify_subscribers": {
    ///      "description": "When true notifies subscribers of the status page by email/text",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "public_title": {
    ///      "type": "string"
    ///    },
    ///    "should_tweet": {
    ///      "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "status": {
    ///      "default": "resolved",
    ///      "type": "string",
    ///      "enum": [
    ///        "investigating",
    ///        "identified",
    ///        "monitoring",
    ///        "resolved",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "status_page_id": {
    ///      "type": "string"
    ///    },
    ///    "status_page_template": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "publish_incident"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PublishIncidentTaskParams {
        ///Incident event description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event: ::std::option::Option<::std::string::String>,
        pub incident: PublishIncidentTaskParamsIncident,
        ///Additional API Payload you can pass to statuspage.io for example. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub integration_payload: ::std::option::Option<::std::string::String>,
        ///When true notifies subscribers of the status page by email/text
        #[serde(default)]
        pub notify_subscribers: bool,
        pub public_title: ::std::string::String,
        ///For Statuspage.io integrated pages auto publishes a tweet for your update
        #[serde(default)]
        pub should_tweet: bool,
        pub status: PublishIncidentTaskParamsStatus,
        pub status_page_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status_page_template: ::std::option::Option<
            PublishIncidentTaskParamsStatusPageTemplate,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<PublishIncidentTaskParamsTaskType>,
    }
    impl PublishIncidentTaskParams {
        pub fn builder() -> builder::PublishIncidentTaskParams {
            Default::default()
        }
    }
    ///`PublishIncidentTaskParamsIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PublishIncidentTaskParamsIncident {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PublishIncidentTaskParamsIncident {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PublishIncidentTaskParamsIncident {
        pub fn builder() -> builder::PublishIncidentTaskParamsIncident {
            Default::default()
        }
    }
    ///`PublishIncidentTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "resolved",
    ///  "type": "string",
    ///  "enum": [
    ///    "investigating",
    ///    "identified",
    ///    "monitoring",
    ///    "resolved",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PublishIncidentTaskParamsStatus {
        #[serde(rename = "investigating")]
        Investigating,
        #[serde(rename = "identified")]
        Identified,
        #[serde(rename = "monitoring")]
        Monitoring,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for PublishIncidentTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Investigating => f.write_str("investigating"),
                Self::Identified => f.write_str("identified"),
                Self::Monitoring => f.write_str("monitoring"),
                Self::Resolved => f.write_str("resolved"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for PublishIncidentTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "investigating" => Ok(Self::Investigating),
                "identified" => Ok(Self::Identified),
                "monitoring" => Ok(Self::Monitoring),
                "resolved" => Ok(Self::Resolved),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PublishIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PublishIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PublishIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PublishIncidentTaskParamsStatus {
        fn default() -> Self {
            PublishIncidentTaskParamsStatus::Resolved
        }
    }
    ///`PublishIncidentTaskParamsStatusPageTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PublishIncidentTaskParamsStatusPageTemplate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for PublishIncidentTaskParamsStatusPageTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl PublishIncidentTaskParamsStatusPageTemplate {
        pub fn builder() -> builder::PublishIncidentTaskParamsStatusPageTemplate {
            Default::default()
        }
    }
    ///`PublishIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "publish_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PublishIncidentTaskParamsTaskType {
        #[serde(rename = "publish_incident")]
        PublishIncident,
    }
    impl ::std::fmt::Display for PublishIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PublishIncident => f.write_str("publish_incident"),
            }
        }
    }
    impl ::std::str::FromStr for PublishIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "publish_incident" => Ok(Self::PublishIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PublishIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PublishIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PublishIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Pulse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "summary",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "data": {
    ///      "description": "Additional data",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "environments": {
    ///      "description": "Environments attached to the pulse",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/environment"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "external_url": {
    ///      "description": "The external url of the pulse",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the tag",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the tag",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "refs": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the ref",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the ref",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "services": {
    ///      "description": "Services attached to the pulse",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "allOf": [
    ///          {
    ///            "$ref": "#/components/schemas/service"
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "source": {
    ///      "description": "The source of the pulse (eg: k8s)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the pulse",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Pulse {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Additional data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Environments attached to the pulse
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environments: ::std::vec::Vec<Environment>,
        ///The external url of the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<::std::option::Option<PulseLabelsItem>>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub refs: ::std::vec::Vec<::std::option::Option<PulseRefsItem>>,
        ///Services attached to the pulse
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services: ::std::vec::Vec<Service>,
        ///The source of the pulse (eg: k8s)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<::std::string::String>,
        ///The summary of the pulse
        pub summary: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Pulse {
        pub fn builder() -> builder::Pulse {
            Default::default()
        }
    }
    ///`PulseLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the tag",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the tag",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseLabelsItem {
        ///Key of the tag
        pub key: ::std::string::String,
        ///Value of the tag
        pub value: ::std::string::String,
    }
    impl PulseLabelsItem {
        pub fn builder() -> builder::PulseLabelsItem {
            Default::default()
        }
    }
    ///`PulseList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/pulse"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the pulse",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "pulses"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseList {
        pub data: ::std::vec::Vec<PulseListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl PulseList {
        pub fn builder() -> builder::PulseList {
            Default::default()
        }
    }
    ///`PulseListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/pulse"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the pulse",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "pulses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseListDataItem {
        pub attributes: Pulse,
        ///Unique ID of the pulse
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PulseListDataItemType,
    }
    impl PulseListDataItem {
        pub fn builder() -> builder::PulseListDataItem {
            Default::default()
        }
    }
    ///`PulseListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "pulses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseListDataItemType {
        #[serde(rename = "pulses")]
        Pulses,
    }
    impl ::std::fmt::Display for PulseListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Pulses => f.write_str("pulses"),
            }
        }
    }
    impl ::std::str::FromStr for PulseListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pulses" => Ok(Self::Pulses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PulseListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PulseListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PulseRefsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the ref",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the ref",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseRefsItem {
        ///Key of the ref
        pub key: ::std::string::String,
        ///Value of the ref
        pub value: ::std::string::String,
    }
    impl PulseRefsItem {
        pub fn builder() -> builder::PulseRefsItem {
            Default::default()
        }
    }
    ///`PulseResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/pulse"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the pulse",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "pulses"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseResponse {
        pub data: PulseResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl PulseResponse {
        pub fn builder() -> builder::PulseResponse {
            Default::default()
        }
    }
    ///`PulseResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/pulse"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the pulse",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "pulses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseResponseData {
        pub attributes: Pulse,
        ///Unique ID of the pulse
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: PulseResponseDataType,
    }
    impl PulseResponseData {
        pub fn builder() -> builder::PulseResponseData {
            Default::default()
        }
    }
    ///`PulseResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "pulses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseResponseDataType {
        #[serde(rename = "pulses")]
        Pulses,
    }
    impl ::std::fmt::Display for PulseResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Pulses => f.write_str("pulses"),
            }
        }
    }
    impl ::std::str::FromStr for PulseResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pulses" => Ok(Self::Pulses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for PulseResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for PulseResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PulseTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "trigger_type"
    ///  ],
    ///  "properties": {
    ///    "pulse_condition": {
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY",
    ///        "NONE"
    ///      ]
    ///    },
    ///    "pulse_condition_label": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "pulse_condition_label_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "pulse_condition_payload": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "pulse_condition_payload_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "pulse_condition_source": {
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "pulse_condition_source_use_regexp": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "pulse_labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "pulse_payload": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "pulse_query_payload": {
    ///      "description": "You can use jsonpath syntax. eg: $.incident.teams[*]",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pulse_sources": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "trigger_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "pulse"
    ///      ]
    ///    },
    ///    "triggers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Actions that trigger the workflow",
    ///        "type": "string",
    ///        "enum": [
    ///          "pulse_created"
    ///        ]
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct PulseTriggerParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pulse_condition: ::std::option::Option<PulseTriggerParamsPulseCondition>,
        #[serde(default = "defaults::pulse_trigger_params_pulse_condition_label")]
        pub pulse_condition_label: PulseTriggerParamsPulseConditionLabel,
        #[serde(default)]
        pub pulse_condition_label_use_regexp: bool,
        #[serde(default = "defaults::pulse_trigger_params_pulse_condition_payload")]
        pub pulse_condition_payload: PulseTriggerParamsPulseConditionPayload,
        #[serde(default)]
        pub pulse_condition_payload_use_regexp: bool,
        #[serde(default = "defaults::pulse_trigger_params_pulse_condition_source")]
        pub pulse_condition_source: PulseTriggerParamsPulseConditionSource,
        #[serde(default)]
        pub pulse_condition_source_use_regexp: bool,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub pulse_labels: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub pulse_payload: ::std::vec::Vec<::std::string::String>,
        ///You can use jsonpath syntax. eg: $.incident.teams[*]
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pulse_query_payload: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub pulse_sources: ::std::vec::Vec<::std::string::String>,
        pub trigger_type: PulseTriggerParamsTriggerType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub triggers: ::std::vec::Vec<PulseTriggerParamsTriggersItem>,
    }
    impl PulseTriggerParams {
        pub fn builder() -> builder::PulseTriggerParams {
            Default::default()
        }
    }
    ///`PulseTriggerParamsPulseCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY",
    ///    "NONE"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseTriggerParamsPulseCondition {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "NONE")]
        None,
    }
    impl ::std::fmt::Display for PulseTriggerParamsPulseCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
                Self::None => f.write_str("NONE"),
            }
        }
    }
    impl ::std::str::FromStr for PulseTriggerParamsPulseCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                "NONE" => Ok(Self::None),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseTriggerParamsPulseCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PulseTriggerParamsPulseCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PulseTriggerParamsPulseCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`PulseTriggerParamsPulseConditionLabel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseTriggerParamsPulseConditionLabel {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PulseTriggerParamsPulseConditionLabel {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PulseTriggerParamsPulseConditionLabel {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseTriggerParamsPulseConditionLabel {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PulseTriggerParamsPulseConditionLabel {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PulseTriggerParamsPulseConditionLabel {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PulseTriggerParamsPulseConditionLabel {
        fn default() -> Self {
            PulseTriggerParamsPulseConditionLabel::Any
        }
    }
    ///`PulseTriggerParamsPulseConditionPayload`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseTriggerParamsPulseConditionPayload {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PulseTriggerParamsPulseConditionPayload {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PulseTriggerParamsPulseConditionPayload {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseTriggerParamsPulseConditionPayload {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PulseTriggerParamsPulseConditionPayload {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PulseTriggerParamsPulseConditionPayload {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PulseTriggerParamsPulseConditionPayload {
        fn default() -> Self {
            PulseTriggerParamsPulseConditionPayload::Any
        }
    }
    ///`PulseTriggerParamsPulseConditionSource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseTriggerParamsPulseConditionSource {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for PulseTriggerParamsPulseConditionSource {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for PulseTriggerParamsPulseConditionSource {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseTriggerParamsPulseConditionSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PulseTriggerParamsPulseConditionSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PulseTriggerParamsPulseConditionSource {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for PulseTriggerParamsPulseConditionSource {
        fn default() -> Self {
            PulseTriggerParamsPulseConditionSource::Any
        }
    }
    ///`PulseTriggerParamsTriggerType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "pulse"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseTriggerParamsTriggerType {
        #[serde(rename = "pulse")]
        Pulse,
    }
    impl ::std::fmt::Display for PulseTriggerParamsTriggerType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Pulse => f.write_str("pulse"),
            }
        }
    }
    impl ::std::str::FromStr for PulseTriggerParamsTriggerType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pulse" => Ok(Self::Pulse),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PulseTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PulseTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Actions that trigger the workflow
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Actions that trigger the workflow",
    ///  "type": "string",
    ///  "enum": [
    ///    "pulse_created"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum PulseTriggerParamsTriggersItem {
        #[serde(rename = "pulse_created")]
        PulseCreated,
    }
    impl ::std::fmt::Display for PulseTriggerParamsTriggersItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PulseCreated => f.write_str("pulse_created"),
            }
        }
    }
    impl ::std::str::FromStr for PulseTriggerParamsTriggersItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pulse_created" => Ok(Self::PulseCreated),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for PulseTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for PulseTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for PulseTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RedisClientTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "commands",
    ///    "url"
    ///  ],
    ///  "properties": {
    ///    "commands": {
    ///      "type": "string"
    ///    },
    ///    "event_message": {
    ///      "type": "string"
    ///    },
    ///    "event_url": {
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "redis_client"
    ///      ]
    ///    },
    ///    "url": {
    ///      "examples": [
    ///        "redis://redis-12345.c1.us-east-1-2.ec2.cloud.redislabs.com:12345"
    ///      ],
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RedisClientTaskParams {
        pub commands: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event_message: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event_url: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            RedisClientTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<RedisClientTaskParamsTaskType>,
        pub url: ::std::string::String,
    }
    impl RedisClientTaskParams {
        pub fn builder() -> builder::RedisClientTaskParams {
            Default::default()
        }
    }
    ///`RedisClientTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RedisClientTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RedisClientTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl RedisClientTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::RedisClientTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`RedisClientTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "redis_client"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RedisClientTaskParamsTaskType {
        #[serde(rename = "redis_client")]
        RedisClient,
    }
    impl ::std::fmt::Display for RedisClientTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RedisClient => f.write_str("redis_client"),
            }
        }
    }
    impl ::std::str::FromStr for RedisClientTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "redis_client" => Ok(Self::RedisClient),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RedisClientTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RedisClientTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RedisClientTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RemoveGoogleDocsPermissionsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attribute_to_query_by",
    ///    "file_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "attribute_to_query_by": {
    ///      "default": "email_address",
    ///      "type": "string",
    ///      "enum": [
    ///        "type",
    ///        "role",
    ///        "email_address"
    ///      ]
    ///    },
    ///    "file_id": {
    ///      "description": "The Google Doc file ID",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "remove_google_docs_permissions"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RemoveGoogleDocsPermissionsTaskParams {
        pub attribute_to_query_by: RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy,
        ///The Google Doc file ID
        pub file_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            RemoveGoogleDocsPermissionsTaskParamsTaskType,
        >,
        pub value: ::std::string::String,
    }
    impl RemoveGoogleDocsPermissionsTaskParams {
        pub fn builder() -> builder::RemoveGoogleDocsPermissionsTaskParams {
            Default::default()
        }
    }
    ///`RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "email_address",
    ///  "type": "string",
    ///  "enum": [
    ///    "type",
    ///    "role",
    ///    "email_address"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        #[serde(rename = "type")]
        Type,
        #[serde(rename = "role")]
        Role,
        #[serde(rename = "email_address")]
        EmailAddress,
    }
    impl ::std::fmt::Display
    for RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Type => f.write_str("type"),
                Self::Role => f.write_str("role"),
                Self::EmailAddress => f.write_str("email_address"),
            }
        }
    }
    impl ::std::str::FromStr
    for RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "type" => Ok(Self::Type),
                "role" => Ok(Self::Role),
                "email_address" => Ok(Self::EmailAddress),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy {
        fn default() -> Self {
            RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy::EmailAddress
        }
    }
    ///`RemoveGoogleDocsPermissionsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "remove_google_docs_permissions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RemoveGoogleDocsPermissionsTaskParamsTaskType {
        #[serde(rename = "remove_google_docs_permissions")]
        RemoveGoogleDocsPermissions,
    }
    impl ::std::fmt::Display for RemoveGoogleDocsPermissionsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RemoveGoogleDocsPermissions => {
                    f.write_str("remove_google_docs_permissions")
                }
            }
        }
    }
    impl ::std::str::FromStr for RemoveGoogleDocsPermissionsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "remove_google_docs_permissions" => Ok(Self::RemoveGoogleDocsPermissions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for RemoveGoogleDocsPermissionsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RemoveGoogleDocsPermissionsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RemoveGoogleDocsPermissionsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RemoveSubscribers`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "remove_users_with_no_private_incident_access": {
    ///              "description": "Users without read permissions for private incidents will be removed from the subscriber list of this incident",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_ids": {
    ///              "description": "IDs of users you wish to remove from the list of subscribers for this incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RemoveSubscribers {
        pub data: RemoveSubscribersData,
    }
    impl RemoveSubscribers {
        pub fn builder() -> builder::RemoveSubscribers {
            Default::default()
        }
    }
    ///`RemoveSubscribersData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "remove_users_with_no_private_incident_access": {
    ///          "description": "Users without read permissions for private incidents will be removed from the subscriber list of this incident",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_ids": {
    ///          "description": "IDs of users you wish to remove from the list of subscribers for this incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RemoveSubscribersData {
        pub attributes: RemoveSubscribersDataAttributes,
        #[serde(rename = "type")]
        pub type_: RemoveSubscribersDataType,
    }
    impl RemoveSubscribersData {
        pub fn builder() -> builder::RemoveSubscribersData {
            Default::default()
        }
    }
    ///`RemoveSubscribersDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "remove_users_with_no_private_incident_access": {
    ///      "description": "Users without read permissions for private incidents will be removed from the subscriber list of this incident",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_ids": {
    ///      "description": "IDs of users you wish to remove from the list of subscribers for this incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct RemoveSubscribersDataAttributes {
        ///Users without read permissions for private incidents will be removed from the subscriber list of this incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub remove_users_with_no_private_incident_access: ::std::option::Option<bool>,
        ///IDs of users you wish to remove from the list of subscribers for this incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default for RemoveSubscribersDataAttributes {
        fn default() -> Self {
            Self {
                remove_users_with_no_private_incident_access: Default::default(),
                user_ids: Default::default(),
            }
        }
    }
    impl RemoveSubscribersDataAttributes {
        pub fn builder() -> builder::RemoveSubscribersDataAttributes {
            Default::default()
        }
    }
    ///`RemoveSubscribersDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RemoveSubscribersDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for RemoveSubscribersDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for RemoveSubscribersDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RemoveSubscribersDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RemoveSubscribersDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RemoveSubscribersDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RenameGoogleChatSpaceTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "space",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "space": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "rename_google_chat_space"
    ///      ]
    ///    },
    ///    "title": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameGoogleChatSpaceTaskParams {
        pub space: RenameGoogleChatSpaceTaskParamsSpace,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<RenameGoogleChatSpaceTaskParamsTaskType>,
        pub title: ::std::string::String,
    }
    impl RenameGoogleChatSpaceTaskParams {
        pub fn builder() -> builder::RenameGoogleChatSpaceTaskParams {
            Default::default()
        }
    }
    ///`RenameGoogleChatSpaceTaskParamsSpace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameGoogleChatSpaceTaskParamsSpace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RenameGoogleChatSpaceTaskParamsSpace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl RenameGoogleChatSpaceTaskParamsSpace {
        pub fn builder() -> builder::RenameGoogleChatSpaceTaskParamsSpace {
            Default::default()
        }
    }
    ///`RenameGoogleChatSpaceTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "rename_google_chat_space"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RenameGoogleChatSpaceTaskParamsTaskType {
        #[serde(rename = "rename_google_chat_space")]
        RenameGoogleChatSpace,
    }
    impl ::std::fmt::Display for RenameGoogleChatSpaceTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RenameGoogleChatSpace => f.write_str("rename_google_chat_space"),
            }
        }
    }
    impl ::std::str::FromStr for RenameGoogleChatSpaceTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "rename_google_chat_space" => Ok(Self::RenameGoogleChatSpace),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RenameGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RenameGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RenameGoogleChatSpaceTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RenameMicrosoftTeamsChannelTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channel",
    ///    "team",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "rename_microsoft_teams_channel"
    ///      ]
    ///    },
    ///    "team": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameMicrosoftTeamsChannelTaskParams {
        pub channel: RenameMicrosoftTeamsChannelTaskParamsChannel,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            RenameMicrosoftTeamsChannelTaskParamsTaskType,
        >,
        pub team: RenameMicrosoftTeamsChannelTaskParamsTeam,
        pub title: ::std::string::String,
    }
    impl RenameMicrosoftTeamsChannelTaskParams {
        pub fn builder() -> builder::RenameMicrosoftTeamsChannelTaskParams {
            Default::default()
        }
    }
    ///`RenameMicrosoftTeamsChannelTaskParamsChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameMicrosoftTeamsChannelTaskParamsChannel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RenameMicrosoftTeamsChannelTaskParamsChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl RenameMicrosoftTeamsChannelTaskParamsChannel {
        pub fn builder() -> builder::RenameMicrosoftTeamsChannelTaskParamsChannel {
            Default::default()
        }
    }
    ///`RenameMicrosoftTeamsChannelTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "rename_microsoft_teams_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RenameMicrosoftTeamsChannelTaskParamsTaskType {
        #[serde(rename = "rename_microsoft_teams_channel")]
        RenameMicrosoftTeamsChannel,
    }
    impl ::std::fmt::Display for RenameMicrosoftTeamsChannelTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RenameMicrosoftTeamsChannel => {
                    f.write_str("rename_microsoft_teams_channel")
                }
            }
        }
    }
    impl ::std::str::FromStr for RenameMicrosoftTeamsChannelTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "rename_microsoft_teams_channel" => Ok(Self::RenameMicrosoftTeamsChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for RenameMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RenameMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RenameMicrosoftTeamsChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RenameMicrosoftTeamsChannelTaskParamsTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameMicrosoftTeamsChannelTaskParamsTeam {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RenameMicrosoftTeamsChannelTaskParamsTeam {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl RenameMicrosoftTeamsChannelTaskParamsTeam {
        pub fn builder() -> builder::RenameMicrosoftTeamsChannelTaskParamsTeam {
            Default::default()
        }
    }
    ///`RenameSlackChannelTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channel",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "rename_slack_channel"
    ///      ]
    ///    },
    ///    "title": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameSlackChannelTaskParams {
        pub channel: RenameSlackChannelTaskParamsChannel,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<RenameSlackChannelTaskParamsTaskType>,
        pub title: ::std::string::String,
    }
    impl RenameSlackChannelTaskParams {
        pub fn builder() -> builder::RenameSlackChannelTaskParams {
            Default::default()
        }
    }
    ///`RenameSlackChannelTaskParamsChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RenameSlackChannelTaskParamsChannel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RenameSlackChannelTaskParamsChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl RenameSlackChannelTaskParamsChannel {
        pub fn builder() -> builder::RenameSlackChannelTaskParamsChannel {
            Default::default()
        }
    }
    ///`RenameSlackChannelTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "rename_slack_channel"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RenameSlackChannelTaskParamsTaskType {
        #[serde(rename = "rename_slack_channel")]
        RenameSlackChannel,
    }
    impl ::std::fmt::Display for RenameSlackChannelTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RenameSlackChannel => f.write_str("rename_slack_channel"),
            }
        }
    }
    impl ::std::str::FromStr for RenameSlackChannelTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "rename_slack_channel" => Ok(Self::RenameSlackChannel),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RenameSlackChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RenameSlackChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RenameSlackChannelTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ResolveAlert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "resolution_message": {
    ///              "description": "How was the alert resolved?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "resolve_related_incidents": {
    ///              "description": "Resolve all associated incidents",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ResolveAlert {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<ResolveAlertData>,
    }
    impl ::std::default::Default for ResolveAlert {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl ResolveAlert {
        pub fn builder() -> builder::ResolveAlert {
            Default::default()
        }
    }
    ///`ResolveAlertData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "resolution_message": {
    ///          "description": "How was the alert resolved?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "resolve_related_incidents": {
    ///          "description": "Resolve all associated incidents",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ResolveAlertData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<ResolveAlertDataAttributes>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<ResolveAlertDataType>,
    }
    impl ::std::default::Default for ResolveAlertData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl ResolveAlertData {
        pub fn builder() -> builder::ResolveAlertData {
            Default::default()
        }
    }
    ///`ResolveAlertDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "resolution_message": {
    ///      "description": "How was the alert resolved?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolve_related_incidents": {
    ///      "description": "Resolve all associated incidents",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct ResolveAlertDataAttributes {
        ///How was the alert resolved?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_message: ::std::option::Option<::std::string::String>,
        ///Resolve all associated incidents
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolve_related_incidents: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for ResolveAlertDataAttributes {
        fn default() -> Self {
            Self {
                resolution_message: Default::default(),
                resolve_related_incidents: Default::default(),
            }
        }
    }
    impl ResolveAlertDataAttributes {
        pub fn builder() -> builder::ResolveAlertDataAttributes {
            Default::default()
        }
    }
    ///`ResolveAlertDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ResolveAlertDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for ResolveAlertDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for ResolveAlertDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ResolveAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ResolveAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ResolveAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ResolveIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "resolution_message": {
    ///              "description": "How was the incident resolved?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ResolveIncident {
        pub data: ResolveIncidentData,
    }
    impl ResolveIncident {
        pub fn builder() -> builder::ResolveIncident {
            Default::default()
        }
    }
    ///`ResolveIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "resolution_message": {
    ///          "description": "How was the incident resolved?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ResolveIncidentData {
        pub attributes: ResolveIncidentDataAttributes,
        #[serde(rename = "type")]
        pub type_: ResolveIncidentDataType,
    }
    impl ResolveIncidentData {
        pub fn builder() -> builder::ResolveIncidentData {
            Default::default()
        }
    }
    ///`ResolveIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "resolution_message": {
    ///      "description": "How was the incident resolved?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct ResolveIncidentDataAttributes {
        ///How was the incident resolved?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_message: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ResolveIncidentDataAttributes {
        fn default() -> Self {
            Self {
                resolution_message: Default::default(),
            }
        }
    }
    impl ResolveIncidentDataAttributes {
        pub fn builder() -> builder::ResolveIncidentDataAttributes {
            Default::default()
        }
    }
    ///`ResolveIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ResolveIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for ResolveIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for ResolveIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ResolveIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ResolveIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ResolveIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RestartIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RestartIncident {
        pub data: RestartIncidentData,
    }
    impl RestartIncident {
        pub fn builder() -> builder::RestartIncident {
            Default::default()
        }
    }
    ///`RestartIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RestartIncidentData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<RestartIncidentDataAttributes>,
        #[serde(rename = "type")]
        pub type_: RestartIncidentDataType,
    }
    impl RestartIncidentData {
        pub fn builder() -> builder::RestartIncidentData {
            Default::default()
        }
    }
    ///`RestartIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct RestartIncidentDataAttributes {}
    impl ::std::default::Default for RestartIncidentDataAttributes {
        fn default() -> Self {
            Self {}
        }
    }
    impl RestartIncidentDataAttributes {
        pub fn builder() -> builder::RestartIncidentDataAttributes {
            Default::default()
        }
    }
    ///`RestartIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RestartIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for RestartIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for RestartIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RestartIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RestartIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RestartIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveConfiguration`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the retrospective configuration",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the retrospective configuration",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the configuration.",
    ///      "type": "string",
    ///      "enum": [
    ///        "skip",
    ///        "mandatory"
    ///      ]
    ///    },
    ///    "severity_ids": {
    ///      "description": "The Severity IDs to attach to the retrospective configuration",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveConfiguration {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///The Team IDs to attach to the retrospective configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Incident Type IDs to attach to the retrospective configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The kind of the configuration.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<RetrospectiveConfigurationKind>,
        ///The Severity IDs to attach to the retrospective configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RetrospectiveConfiguration {
        fn default() -> Self {
            Self {
                created_at: Default::default(),
                group_ids: Default::default(),
                incident_type_ids: Default::default(),
                kind: Default::default(),
                severity_ids: Default::default(),
                updated_at: Default::default(),
            }
        }
    }
    impl RetrospectiveConfiguration {
        pub fn builder() -> builder::RetrospectiveConfiguration {
            Default::default()
        }
    }
    ///The kind of the configuration.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the configuration.",
    ///  "type": "string",
    ///  "enum": [
    ///    "skip",
    ///    "mandatory"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveConfigurationKind {
        #[serde(rename = "skip")]
        Skip,
        #[serde(rename = "mandatory")]
        Mandatory,
    }
    impl ::std::fmt::Display for RetrospectiveConfigurationKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Skip => f.write_str("skip"),
                Self::Mandatory => f.write_str("mandatory"),
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveConfigurationKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "skip" => Ok(Self::Skip),
                "mandatory" => Ok(Self::Mandatory),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveConfigurationKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveConfigurationKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveConfigurationKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveConfigurationList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/retrospective_configuration"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the configuration",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "retrospective_configurations"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveConfigurationList {
        pub data: ::std::vec::Vec<RetrospectiveConfigurationListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RetrospectiveConfigurationList {
        pub fn builder() -> builder::RetrospectiveConfigurationList {
            Default::default()
        }
    }
    ///`RetrospectiveConfigurationListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_configuration"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the configuration",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_configurations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveConfigurationListDataItem {
        pub attributes: RetrospectiveConfiguration,
        ///Unique ID of the configuration
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveConfigurationListDataItemType,
    }
    impl RetrospectiveConfigurationListDataItem {
        pub fn builder() -> builder::RetrospectiveConfigurationListDataItem {
            Default::default()
        }
    }
    ///`RetrospectiveConfigurationListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_configurations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveConfigurationListDataItemType {
        #[serde(rename = "retrospective_configurations")]
        RetrospectiveConfigurations,
    }
    impl ::std::fmt::Display for RetrospectiveConfigurationListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveConfigurations => {
                    f.write_str("retrospective_configurations")
                }
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveConfigurationListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_configurations" => Ok(Self::RetrospectiveConfigurations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveConfigurationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveConfigurationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveConfigurationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveConfigurationResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/retrospective_configuration"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the retrospective configuration",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_configurations"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveConfigurationResponse {
        pub data: RetrospectiveConfigurationResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RetrospectiveConfigurationResponse {
        pub fn builder() -> builder::RetrospectiveConfigurationResponse {
            Default::default()
        }
    }
    ///`RetrospectiveConfigurationResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_configuration"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the retrospective configuration",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_configurations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveConfigurationResponseData {
        pub attributes: RetrospectiveConfiguration,
        ///Unique ID of the retrospective configuration
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveConfigurationResponseDataType,
    }
    impl RetrospectiveConfigurationResponseData {
        pub fn builder() -> builder::RetrospectiveConfigurationResponseData {
            Default::default()
        }
    }
    ///`RetrospectiveConfigurationResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_configurations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveConfigurationResponseDataType {
        #[serde(rename = "retrospective_configurations")]
        RetrospectiveConfigurations,
    }
    impl ::std::fmt::Display for RetrospectiveConfigurationResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveConfigurations => {
                    f.write_str("retrospective_configurations")
                }
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveConfigurationResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_configurations" => Ok(Self::RetrospectiveConfigurations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveConfigurationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveConfigurationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveConfigurationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcess`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the retrospective process",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "is_default": {
    ///      "description": "Indicates the default process that Rootly created. This will be used as a fallback if no processes match the incident's conditions. The default process cannot have conditions and cannot be changed.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the retrospective process",
    ///      "type": "string"
    ///    },
    ///    "retrospective_process_matching_criteria": {
    ///      "type": "object",
    ///      "oneOf": [
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "severity_ids"
    ///          ],
    ///          "properties": {
    ///            "severity_ids": {
    ///              "description": "Severity IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "group_ids"
    ///          ],
    ///          "properties": {
    ///            "group_ids": {
    ///              "description": "Team IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "incident_type_ids"
    ///          ],
    ///          "properties": {
    ///            "incident_type_ids": {
    ///              "description": "Incident type IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        }
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcess {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///The description of the retrospective process
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Indicates the default process that Rootly created. This will be used as a fallback if no processes match the incident's conditions. The default process cannot have conditions and cannot be changed.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_default: ::std::option::Option<bool>,
        ///The name of the retrospective process
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub retrospective_process_matching_criteria: ::std::option::Option<
            RetrospectiveProcessRetrospectiveProcessMatchingCriteria,
        >,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RetrospectiveProcess {
        fn default() -> Self {
            Self {
                created_at: Default::default(),
                description: Default::default(),
                is_default: Default::default(),
                name: Default::default(),
                retrospective_process_matching_criteria: Default::default(),
                updated_at: Default::default(),
            }
        }
    }
    impl RetrospectiveProcess {
        pub fn builder() -> builder::RetrospectiveProcess {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "position",
    ///    "retrospective_process_id",
    ///    "sub_status_id"
    ///  ],
    ///  "properties": {
    ///    "position": {
    ///      "type": "integer"
    ///    },
    ///    "retrospective_process_id": {
    ///      "type": "string"
    ///    },
    ///    "sub_status_id": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroup {
        pub position: i64,
        pub retrospective_process_id: ::std::string::String,
        pub sub_status_id: ::std::string::String,
    }
    impl RetrospectiveProcessGroup {
        pub fn builder() -> builder::RetrospectiveProcessGroup {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/retrospective_process_group"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the retrospective_process_group",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "retrospective_process_groups"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupList {
        pub data: ::std::vec::Vec<RetrospectiveProcessGroupListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl RetrospectiveProcessGroupList {
        pub fn builder() -> builder::RetrospectiveProcessGroupList {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_process_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the retrospective_process_group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupListDataItem {
        pub attributes: RetrospectiveProcessGroup,
        ///Unique ID of the retrospective_process_group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveProcessGroupListDataItemType,
    }
    impl RetrospectiveProcessGroupListDataItem {
        pub fn builder() -> builder::RetrospectiveProcessGroupListDataItem {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveProcessGroupListDataItemType {
        #[serde(rename = "retrospective_process_groups")]
        RetrospectiveProcessGroups,
    }
    impl ::std::fmt::Display for RetrospectiveProcessGroupListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroups => {
                    f.write_str("retrospective_process_groups")
                }
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveProcessGroupListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_groups" => Ok(Self::RetrospectiveProcessGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveProcessGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveProcessGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveProcessGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcessGroupResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/retrospective_process_group"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the retrospective_process_group",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_process_groups"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupResponse {
        pub data: RetrospectiveProcessGroupResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RetrospectiveProcessGroupResponse {
        pub fn builder() -> builder::RetrospectiveProcessGroupResponse {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_process_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the retrospective_process_group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupResponseData {
        pub attributes: RetrospectiveProcessGroup,
        ///Unique ID of the retrospective_process_group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveProcessGroupResponseDataType,
    }
    impl RetrospectiveProcessGroupResponseData {
        pub fn builder() -> builder::RetrospectiveProcessGroupResponseData {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveProcessGroupResponseDataType {
        #[serde(rename = "retrospective_process_groups")]
        RetrospectiveProcessGroups,
    }
    impl ::std::fmt::Display for RetrospectiveProcessGroupResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroups => {
                    f.write_str("retrospective_process_groups")
                }
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveProcessGroupResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_groups" => Ok(Self::RetrospectiveProcessGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveProcessGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveProcessGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveProcessGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcessGroupStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "position",
    ///    "retrospective_process_group_id",
    ///    "retrospective_step_id"
    ///  ],
    ///  "properties": {
    ///    "position": {
    ///      "type": "integer"
    ///    },
    ///    "retrospective_process_group_id": {
    ///      "type": "string"
    ///    },
    ///    "retrospective_step_id": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupStep {
        pub position: i64,
        pub retrospective_process_group_id: ::std::string::String,
        pub retrospective_step_id: ::std::string::String,
    }
    impl RetrospectiveProcessGroupStep {
        pub fn builder() -> builder::RetrospectiveProcessGroupStep {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupStepList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/retrospective_process_group_step"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the retrospective_process_group_step",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "retrospective_process_group_steps"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupStepList {
        pub data: ::std::vec::Vec<RetrospectiveProcessGroupStepListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl RetrospectiveProcessGroupStepList {
        pub fn builder() -> builder::RetrospectiveProcessGroupStepList {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupStepListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_process_group_step"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the retrospective_process_group_step",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_group_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupStepListDataItem {
        pub attributes: RetrospectiveProcessGroupStep,
        ///Unique ID of the retrospective_process_group_step
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveProcessGroupStepListDataItemType,
    }
    impl RetrospectiveProcessGroupStepListDataItem {
        pub fn builder() -> builder::RetrospectiveProcessGroupStepListDataItem {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupStepListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_group_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveProcessGroupStepListDataItemType {
        #[serde(rename = "retrospective_process_group_steps")]
        RetrospectiveProcessGroupSteps,
    }
    impl ::std::fmt::Display for RetrospectiveProcessGroupStepListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroupSteps => {
                    f.write_str("retrospective_process_group_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveProcessGroupStepListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_group_steps" => {
                    Ok(Self::RetrospectiveProcessGroupSteps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for RetrospectiveProcessGroupStepListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveProcessGroupStepListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveProcessGroupStepListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcessGroupStepResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/retrospective_process_group_step"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the retrospective_process_group_step",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_process_group_steps"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupStepResponse {
        pub data: RetrospectiveProcessGroupStepResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RetrospectiveProcessGroupStepResponse {
        pub fn builder() -> builder::RetrospectiveProcessGroupStepResponse {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupStepResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_process_group_step"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the retrospective_process_group_step",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_group_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessGroupStepResponseData {
        pub attributes: RetrospectiveProcessGroupStep,
        ///Unique ID of the retrospective_process_group_step
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveProcessGroupStepResponseDataType,
    }
    impl RetrospectiveProcessGroupStepResponseData {
        pub fn builder() -> builder::RetrospectiveProcessGroupStepResponseData {
            Default::default()
        }
    }
    ///`RetrospectiveProcessGroupStepResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_group_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveProcessGroupStepResponseDataType {
        #[serde(rename = "retrospective_process_group_steps")]
        RetrospectiveProcessGroupSteps,
    }
    impl ::std::fmt::Display for RetrospectiveProcessGroupStepResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroupSteps => {
                    f.write_str("retrospective_process_group_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveProcessGroupStepResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_group_steps" => {
                    Ok(Self::RetrospectiveProcessGroupSteps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for RetrospectiveProcessGroupStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveProcessGroupStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveProcessGroupStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcessList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/retrospective_process"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the retrospective process",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "retrospective_processes"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessList {
        pub data: ::std::vec::Vec<RetrospectiveProcessListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl RetrospectiveProcessList {
        pub fn builder() -> builder::RetrospectiveProcessList {
            Default::default()
        }
    }
    ///`RetrospectiveProcessListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_process"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the retrospective process",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_processes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessListDataItem {
        pub attributes: RetrospectiveProcess,
        ///Unique ID of the retrospective process
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveProcessListDataItemType,
    }
    impl RetrospectiveProcessListDataItem {
        pub fn builder() -> builder::RetrospectiveProcessListDataItem {
            Default::default()
        }
    }
    ///`RetrospectiveProcessListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_processes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveProcessListDataItemType {
        #[serde(rename = "retrospective_processes")]
        RetrospectiveProcesses,
    }
    impl ::std::fmt::Display for RetrospectiveProcessListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcesses => f.write_str("retrospective_processes"),
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveProcessListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_processes" => Ok(Self::RetrospectiveProcesses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveProcessListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveProcessListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveProcessListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcessResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/retrospective_process"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique id of retrospective process",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_processes"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessResponse {
        pub data: RetrospectiveProcessResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RetrospectiveProcessResponse {
        pub fn builder() -> builder::RetrospectiveProcessResponse {
            Default::default()
        }
    }
    ///`RetrospectiveProcessResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_process"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique id of retrospective process",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_processes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveProcessResponseData {
        pub attributes: RetrospectiveProcess,
        ///Unique id of retrospective process
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveProcessResponseDataType,
    }
    impl RetrospectiveProcessResponseData {
        pub fn builder() -> builder::RetrospectiveProcessResponseData {
            Default::default()
        }
    }
    ///`RetrospectiveProcessResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_processes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveProcessResponseDataType {
        #[serde(rename = "retrospective_processes")]
        RetrospectiveProcesses,
    }
    impl ::std::fmt::Display for RetrospectiveProcessResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcesses => f.write_str("retrospective_processes"),
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveProcessResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_processes" => Ok(Self::RetrospectiveProcesses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveProcessResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveProcessResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveProcessResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveProcessRetrospectiveProcessMatchingCriteria`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "severity_ids"
    ///      ],
    ///      "properties": {
    ///        "severity_ids": {
    ///          "description": "Severity IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "group_ids"
    ///      ],
    ///      "properties": {
    ///        "group_ids": {
    ///          "description": "Team IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "incident_type_ids"
    ///      ],
    ///      "properties": {
    ///        "incident_type_ids": {
    ///          "description": "Incident type IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub enum RetrospectiveProcessRetrospectiveProcessMatchingCriteria {
        #[serde(rename = "severity_ids")]
        SeverityIds(::std::vec::Vec<::std::string::String>),
        #[serde(rename = "group_ids")]
        GroupIds(::std::vec::Vec<::std::string::String>),
        #[serde(rename = "incident_type_ids")]
        IncidentTypeIds(::std::vec::Vec<::std::string::String>),
    }
    ///`RetrospectiveStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "retrospective_process_id",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_after_days": {
    ///      "description": "Due date in days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_role_id": {
    ///      "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the step",
    ///      "type": "integer"
    ///    },
    ///    "retrospective_process_id": {
    ///      "type": "string"
    ///    },
    ///    "skippable": {
    ///      "description": "Is the step skippable?",
    ///      "type": "boolean"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the step",
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "The name of the step",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveStep {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Due date in days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_after_days: ::std::option::Option<i64>,
        ///Users assigned to the selected incident role will be the default owners for this step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///Position of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        pub retrospective_process_id: ::std::string::String,
        ///Is the step skippable?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skippable: ::std::option::Option<bool>,
        ///The slug of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///The name of the step
        pub title: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl RetrospectiveStep {
        pub fn builder() -> builder::RetrospectiveStep {
            Default::default()
        }
    }
    ///`RetrospectiveStepList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/retrospective_step"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the step",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "retrospective_steps"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveStepList {
        pub data: ::std::vec::Vec<RetrospectiveStepListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl RetrospectiveStepList {
        pub fn builder() -> builder::RetrospectiveStepList {
            Default::default()
        }
    }
    ///`RetrospectiveStepListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_step"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the step",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveStepListDataItem {
        pub attributes: RetrospectiveStep,
        ///Unique ID of the step
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveStepListDataItemType,
    }
    impl RetrospectiveStepListDataItem {
        pub fn builder() -> builder::RetrospectiveStepListDataItem {
            Default::default()
        }
    }
    ///`RetrospectiveStepListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveStepListDataItemType {
        #[serde(rename = "retrospective_steps")]
        RetrospectiveSteps,
    }
    impl ::std::fmt::Display for RetrospectiveStepListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveSteps => f.write_str("retrospective_steps"),
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveStepListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_steps" => Ok(Self::RetrospectiveSteps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveStepListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveStepListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveStepListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RetrospectiveStepResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/retrospective_step"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the step",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_steps"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveStepResponse {
        pub data: RetrospectiveStepResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RetrospectiveStepResponse {
        pub fn builder() -> builder::RetrospectiveStepResponse {
            Default::default()
        }
    }
    ///`RetrospectiveStepResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/retrospective_step"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the step",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RetrospectiveStepResponseData {
        pub attributes: RetrospectiveStep,
        ///Unique ID of the step
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RetrospectiveStepResponseDataType,
    }
    impl RetrospectiveStepResponseData {
        pub fn builder() -> builder::RetrospectiveStepResponseData {
            Default::default()
        }
    }
    ///`RetrospectiveStepResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RetrospectiveStepResponseDataType {
        #[serde(rename = "retrospective_steps")]
        RetrospectiveSteps,
    }
    impl ::std::fmt::Display for RetrospectiveStepResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveSteps => f.write_str("retrospective_steps"),
            }
        }
    }
    impl ::std::str::FromStr for RetrospectiveStepResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_steps" => Ok(Self::RetrospectiveSteps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RetrospectiveStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RetrospectiveStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RetrospectiveStepResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Role`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alerts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "api_keys_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "audits_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "billing_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "catalogs_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "communication_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "edge_connector_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "environments_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "form_fields_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "functionalities_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_causes_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_communication_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete",
    ///          "send"
    ///        ]
    ///      }
    ///    },
    ///    "incident_feedbacks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_permission_set_id": {
    ///      "description": "Associated incident permissions set.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_types_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incidents_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "integrations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "invitations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "is_deletable": {
    ///      "description": "Whether the role can be deleted.",
    ///      "type": "boolean"
    ///    },
    ///    "is_editable": {
    ///      "description": "Whether the role can be edited.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The role name.",
    ///      "type": "string"
    ///    },
    ///    "paging_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "playbooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "private_incidents_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "pulses_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update",
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "retrospective_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "secrets_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "services_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "severities_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "slas_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The role slug.",
    ///      "type": "string"
    ///    },
    ///    "status_pages_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "sub_statuses_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    },
    ///    "webhooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "workflows_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Role {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_permissions: ::std::vec::Vec<RoleAlertsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub api_keys_permissions: ::std::vec::Vec<RoleApiKeysPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub audits_permissions: ::std::vec::Vec<RoleAuditsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub billing_permissions: ::std::vec::Vec<RoleBillingPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub catalogs_permissions: ::std::vec::Vec<RoleCatalogsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub communication_permissions: ::std::vec::Vec<RoleCommunicationPermissionsItem>,
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub edge_connector_permissions: ::std::vec::Vec<
            RoleEdgeConnectorPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environments_permissions: ::std::vec::Vec<RoleEnvironmentsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub form_fields_permissions: ::std::vec::Vec<RoleFormFieldsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionalities_permissions: ::std::vec::Vec<
            RoleFunctionalitiesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups_permissions: ::std::vec::Vec<RoleGroupsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_causes_permissions: ::std::vec::Vec<
            RoleIncidentCausesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_communication_permissions: ::std::vec::Vec<
            RoleIncidentCommunicationPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_feedbacks_permissions: ::std::vec::Vec<
            RoleIncidentFeedbacksPermissionsItem,
        >,
        ///Associated incident permissions set.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_permission_set_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_roles_permissions: ::std::vec::Vec<
            RoleIncidentRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_types_permissions: ::std::vec::Vec<
            RoleIncidentTypesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incidents_permissions: ::std::vec::Vec<RoleIncidentsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub integrations_permissions: ::std::vec::Vec<RoleIntegrationsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub invitations_permissions: ::std::vec::Vec<RoleInvitationsPermissionsItem>,
        ///Whether the role can be deleted.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_deletable: ::std::option::Option<bool>,
        ///Whether the role can be edited.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_editable: ::std::option::Option<bool>,
        ///The role name.
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub paging_permissions: ::std::vec::Vec<RolePagingPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub playbooks_permissions: ::std::vec::Vec<RolePlaybooksPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub private_incidents_permissions: ::std::vec::Vec<
            RolePrivateIncidentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub pulses_permissions: ::std::vec::Vec<RolePulsesPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub retrospective_permissions: ::std::vec::Vec<RoleRetrospectivePermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub roles_permissions: ::std::vec::Vec<RoleRolesPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub secrets_permissions: ::std::vec::Vec<RoleSecretsPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services_permissions: ::std::vec::Vec<RoleServicesPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub severities_permissions: ::std::vec::Vec<RoleSeveritiesPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub slas_permissions: ::std::vec::Vec<RoleSlasPermissionsItem>,
        ///The role slug.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub status_pages_permissions: ::std::vec::Vec<RoleStatusPagesPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sub_statuses_permissions: ::std::vec::Vec<RoleSubStatusesPermissionsItem>,
        pub updated_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub webhooks_permissions: ::std::vec::Vec<RoleWebhooksPermissionsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub workflows_permissions: ::std::vec::Vec<RoleWorkflowsPermissionsItem>,
    }
    impl Role {
        pub fn builder() -> builder::Role {
            Default::default()
        }
    }
    ///`RoleAlertsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleAlertsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for RoleAlertsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for RoleAlertsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleApiKeysPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleApiKeysPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleApiKeysPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleApiKeysPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleAuditsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleAuditsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleAuditsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleAuditsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleBillingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleBillingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleBillingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleBillingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleCatalogsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleCatalogsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleCatalogsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleCatalogsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleCommunicationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleCommunicationPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleCommunicationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleCommunicationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleEdgeConnectorPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleEdgeConnectorPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleEdgeConnectorPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleEdgeConnectorPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleEnvironmentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleEnvironmentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleEnvironmentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleEnvironmentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleFormFieldsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleFormFieldsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleFormFieldsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleFormFieldsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleFunctionalitiesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleFunctionalitiesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleFunctionalitiesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleFunctionalitiesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIncidentCausesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIncidentCausesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleIncidentCausesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIncidentCausesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIncidentCommunicationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete",
    ///    "send"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIncidentCommunicationPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
        #[serde(rename = "send")]
        Send,
    }
    impl ::std::fmt::Display for RoleIncidentCommunicationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
                Self::Send => f.write_str("send"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIncidentCommunicationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                "send" => Ok(Self::Send),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIncidentFeedbacksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIncidentFeedbacksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleIncidentFeedbacksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIncidentFeedbacksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIncidentRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIncidentRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleIncidentRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIncidentRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIncidentTypesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIncidentTypesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleIncidentTypesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIncidentTypesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIncidentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIncidentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleIncidentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIncidentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleIntegrationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleIntegrationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleIntegrationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleIntegrationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleInvitationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleInvitationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleInvitationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleInvitationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/role"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the role",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "roles"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RoleList {
        pub data: ::std::vec::Vec<RoleListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl RoleList {
        pub fn builder() -> builder::RoleList {
            Default::default()
        }
    }
    ///`RoleListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/role"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the role",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RoleListDataItem {
        pub attributes: Role,
        ///Unique ID of the role
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RoleListDataItemType,
    }
    impl RoleListDataItem {
        pub fn builder() -> builder::RoleListDataItem {
            Default::default()
        }
    }
    ///`RoleListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleListDataItemType {
        #[serde(rename = "roles")]
        Roles,
    }
    impl ::std::fmt::Display for RoleListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Roles => f.write_str("roles"),
            }
        }
    }
    impl ::std::str::FromStr for RoleListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "roles" => Ok(Self::Roles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RolePagingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RolePagingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RolePagingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RolePagingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RolePagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RolePagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RolePagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RolePlaybooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RolePlaybooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RolePlaybooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RolePlaybooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RolePlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RolePlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RolePlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RolePrivateIncidentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RolePrivateIncidentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RolePrivateIncidentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RolePrivateIncidentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RolePrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RolePrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RolePrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RolePulsesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update",
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RolePulsesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for RolePulsesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for RolePulsesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RolePulsesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RolePulsesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RolePulsesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleRelationship`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RoleRelationship {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<RoleRelationshipData>,
    }
    impl ::std::default::Default for RoleRelationship {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl RoleRelationship {
        pub fn builder() -> builder::RoleRelationship {
            Default::default()
        }
    }
    ///`RoleRelationshipData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RoleRelationshipData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<RoleRelationshipDataType>,
    }
    impl ::std::default::Default for RoleRelationshipData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl RoleRelationshipData {
        pub fn builder() -> builder::RoleRelationshipData {
            Default::default()
        }
    }
    ///`RoleRelationshipDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleRelationshipDataType {
        #[serde(rename = "roles")]
        Roles,
    }
    impl ::std::fmt::Display for RoleRelationshipDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Roles => f.write_str("roles"),
            }
        }
    }
    impl ::std::str::FromStr for RoleRelationshipDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "roles" => Ok(Self::Roles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleRelationshipDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleRelationshipDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleRelationshipDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/role"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the role",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "roles"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RoleResponse {
        pub data: RoleResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl RoleResponse {
        pub fn builder() -> builder::RoleResponse {
            Default::default()
        }
    }
    ///`RoleResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/role"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the role",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RoleResponseData {
        pub attributes: Role,
        ///Unique ID of the role
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: RoleResponseDataType,
    }
    impl RoleResponseData {
        pub fn builder() -> builder::RoleResponseData {
            Default::default()
        }
    }
    ///`RoleResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleResponseDataType {
        #[serde(rename = "roles")]
        Roles,
    }
    impl ::std::fmt::Display for RoleResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Roles => f.write_str("roles"),
            }
        }
    }
    impl ::std::str::FromStr for RoleResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "roles" => Ok(Self::Roles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleRetrospectivePermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleRetrospectivePermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleRetrospectivePermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleRetrospectivePermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleSecretsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleSecretsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleSecretsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleSecretsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleServicesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleServicesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleServicesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleServicesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleSeveritiesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleSeveritiesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleSeveritiesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleSeveritiesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleSlasPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleSlasPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleSlasPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleSlasPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RoleSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleStatusPagesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleStatusPagesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleStatusPagesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleStatusPagesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleSubStatusesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleSubStatusesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleSubStatusesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleSubStatusesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleWebhooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleWebhooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleWebhooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleWebhooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RoleWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RoleWorkflowsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RoleWorkflowsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for RoleWorkflowsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for RoleWorkflowsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RoleWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RoleWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RoleWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RotateApiKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "expires_at": {
    ///              "description": "The new expiration date after rotation (ISO 8601)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "grace_period_minutes": {
    ///              "description": "How many minutes to keep the old token valid. Only applies when the grace period feature is enabled for your organization. Defaults to 30.",
    ///              "default": 30,
    ///              "type": "integer",
    ///              "maximum": 1440.0,
    ///              "minimum": 0.0
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "api_keys"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RotateApiKey {
        pub data: RotateApiKeyData,
    }
    impl RotateApiKey {
        pub fn builder() -> builder::RotateApiKey {
            Default::default()
        }
    }
    ///`RotateApiKeyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "expires_at": {
    ///          "description": "The new expiration date after rotation (ISO 8601)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "grace_period_minutes": {
    ///          "description": "How many minutes to keep the old token valid. Only applies when the grace period feature is enabled for your organization. Defaults to 30.",
    ///          "default": 30,
    ///          "type": "integer",
    ///          "maximum": 1440.0,
    ///          "minimum": 0.0
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "api_keys"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RotateApiKeyData {
        pub attributes: RotateApiKeyDataAttributes,
        #[serde(rename = "type")]
        pub type_: RotateApiKeyDataType,
    }
    impl RotateApiKeyData {
        pub fn builder() -> builder::RotateApiKeyData {
            Default::default()
        }
    }
    ///`RotateApiKeyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "expires_at": {
    ///      "description": "The new expiration date after rotation (ISO 8601)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "grace_period_minutes": {
    ///      "description": "How many minutes to keep the old token valid. Only applies when the grace period feature is enabled for your organization. Defaults to 30.",
    ///      "default": 30,
    ///      "type": "integer",
    ///      "maximum": 1440.0,
    ///      "minimum": 0.0
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct RotateApiKeyDataAttributes {
        ///The new expiration date after rotation (ISO 8601)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expires_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///How many minutes to keep the old token valid. Only applies when the grace period feature is enabled for your organization. Defaults to 30.
        #[serde(default = "defaults::default_u64::<i64, 30>")]
        pub grace_period_minutes: i64,
    }
    impl ::std::default::Default for RotateApiKeyDataAttributes {
        fn default() -> Self {
            Self {
                expires_at: Default::default(),
                grace_period_minutes: defaults::default_u64::<i64, 30>(),
            }
        }
    }
    impl RotateApiKeyDataAttributes {
        pub fn builder() -> builder::RotateApiKeyDataAttributes {
            Default::default()
        }
    }
    ///`RotateApiKeyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "api_keys"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RotateApiKeyDataType {
        #[serde(rename = "api_keys")]
        ApiKeys,
    }
    impl ::std::fmt::Display for RotateApiKeyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ApiKeys => f.write_str("api_keys"),
            }
        }
    }
    impl ::std::str::FromStr for RotateApiKeyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "api_keys" => Ok(Self::ApiKeys),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RotateApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for RotateApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for RotateApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RunCommandHerokuTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "app_name",
    ///    "command",
    ///    "size"
    ///  ],
    ///  "properties": {
    ///    "app_name": {
    ///      "type": "string"
    ///    },
    ///    "command": {
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "size": {
    ///      "type": "string",
    ///      "enum": [
    ///        "standard-1X",
    ///        "standard-2X"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "run_command_heroku"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RunCommandHerokuTaskParams {
        pub app_name: ::std::string::String,
        pub command: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            RunCommandHerokuTaskParamsPostToSlackChannelsItem,
        >,
        pub size: RunCommandHerokuTaskParamsSize,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<RunCommandHerokuTaskParamsTaskType>,
    }
    impl RunCommandHerokuTaskParams {
        pub fn builder() -> builder::RunCommandHerokuTaskParams {
            Default::default()
        }
    }
    ///`RunCommandHerokuTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct RunCommandHerokuTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for RunCommandHerokuTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl RunCommandHerokuTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::RunCommandHerokuTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`RunCommandHerokuTaskParamsSize`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "standard-1X",
    ///    "standard-2X"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RunCommandHerokuTaskParamsSize {
        #[serde(rename = "standard-1X")]
        Standard1x,
        #[serde(rename = "standard-2X")]
        Standard2x,
    }
    impl ::std::fmt::Display for RunCommandHerokuTaskParamsSize {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Standard1x => f.write_str("standard-1X"),
                Self::Standard2x => f.write_str("standard-2X"),
            }
        }
    }
    impl ::std::str::FromStr for RunCommandHerokuTaskParamsSize {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "standard-1X" => Ok(Self::Standard1x),
                "standard-2X" => Ok(Self::Standard2x),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RunCommandHerokuTaskParamsSize {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RunCommandHerokuTaskParamsSize {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RunCommandHerokuTaskParamsSize {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`RunCommandHerokuTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "run_command_heroku"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum RunCommandHerokuTaskParamsTaskType {
        #[serde(rename = "run_command_heroku")]
        RunCommandHeroku,
    }
    impl ::std::fmt::Display for RunCommandHerokuTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RunCommandHeroku => f.write_str("run_command_heroku"),
            }
        }
    }
    impl ::std::str::FromStr for RunCommandHerokuTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "run_command_heroku" => Ok(Self::RunCommandHeroku),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for RunCommandHerokuTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for RunCommandHerokuTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for RunCommandHerokuTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Schedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "owner_user_id",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "all_time_coverage": {
    ///      "description": "24/7 coverage of the schedule",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the schedule",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "include_shadows_in_slack_notifications": {
    ///      "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the schedule",
    ///      "type": "string"
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owning teams.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_id": {
    ///      "description": "ID of user assigned as owner of the schedule",
    ///      "type": "integer"
    ///    },
    ///    "shift_report_day_of_week": {
    ///      "description": "Day of week the weekly shift summary is sent",
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "shift_report_enabled": {
    ///      "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": "boolean"
    ///    },
    ///    "shift_report_time_of_day": {
    ///      "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///      "type": "string"
    ///    },
    ///    "shift_report_time_zone": {
    ///      "description": "IANA time zone used for the weekly shift summary",
    ///      "type": "string"
    ///    },
    ///    "shift_start_notifications_enabled": {
    ///      "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": "boolean"
    ///    },
    ///    "shift_update_notifications_enabled": {
    ///      "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": "boolean"
    ///    },
    ///    "slack_channel": {
    ///      "description": "Synced slack channel of the schedule",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "slack_user_group": {
    ///      "description": "Synced slack group of the schedule",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack user group ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack user group name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "sync_linear_enabled": {
    ///      "description": "Whether the schedule is synced with Linear",
    ///      "type": "boolean"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Schedule {
        ///24/7 coverage of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub all_time_coverage: ::std::option::Option<bool>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub include_shadows_in_slack_notifications: ::std::option::Option<bool>,
        ///The name of the schedule
        pub name: ::std::string::String,
        ///Owning teams.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owner_group_ids: ::std::vec::Vec<::std::string::String>,
        ///ID of user assigned as owner of the schedule
        pub owner_user_id: i64,
        ///Day of week the weekly shift summary is sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_day_of_week: ::std::option::Option<
            ScheduleShiftReportDayOfWeek,
        >,
        ///Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_enabled: ::std::option::Option<bool>,
        ///Time of day the weekly shift summary is sent, in HH:MM 24-hour format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_time_of_day: ::std::option::Option<::std::string::String>,
        ///IANA time zone used for the weekly shift summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_time_zone: ::std::option::Option<::std::string::String>,
        ///Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_start_notifications_enabled: ::std::option::Option<bool>,
        ///Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_update_notifications_enabled: ::std::option::Option<bool>,
        ///Synced slack channel of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel: ::std::option::Option<ScheduleSlackChannel>,
        ///Synced slack group of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_user_group: ::std::option::Option<ScheduleSlackUserGroup>,
        ///Whether the schedule is synced with Linear
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sync_linear_enabled: ::std::option::Option<bool>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Schedule {
        pub fn builder() -> builder::Schedule {
            Default::default()
        }
    }
    ///`ScheduleList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/schedule"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the schedule",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "schedules"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleList {
        pub data: ::std::vec::Vec<ScheduleListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl ScheduleList {
        pub fn builder() -> builder::ScheduleList {
            Default::default()
        }
    }
    ///`ScheduleListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleListDataItem {
        pub attributes: Schedule,
        ///Unique ID of the schedule
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleListDataItemType,
    }
    impl ScheduleListDataItem {
        pub fn builder() -> builder::ScheduleListDataItem {
            Default::default()
        }
    }
    ///`ScheduleListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleListDataItemType {
        #[serde(rename = "schedules")]
        Schedules,
    }
    impl ::std::fmt::Display for ScheduleListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Schedules => f.write_str("schedules"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedules" => Ok(Self::Schedules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ScheduleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ScheduleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/schedule"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique id of schedule",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedules"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleResponse {
        pub data: ScheduleResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ScheduleResponse {
        pub fn builder() -> builder::ScheduleResponse {
            Default::default()
        }
    }
    ///`ScheduleResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique id of schedule",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleResponseData {
        pub attributes: Schedule,
        ///Unique id of schedule
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleResponseDataType,
    }
    impl ScheduleResponseData {
        pub fn builder() -> builder::ScheduleResponseData {
            Default::default()
        }
    }
    ///`ScheduleResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleResponseDataType {
        #[serde(rename = "schedules")]
        Schedules,
    }
    impl ::std::fmt::Display for ScheduleResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Schedules => f.write_str("schedules"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedules" => Ok(Self::Schedules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ScheduleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ScheduleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "schedule_id",
    ///    "schedule_rotationable_attributes",
    ///    "schedule_rotationable_type"
    ///  ],
    ///  "properties": {
    ///    "active_all_week": {
    ///      "description": "Schedule rotation active all week?",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "active_days": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Schedule rotation active days",
    ///        "type": "string",
    ///        "enum": [
    ///          "S",
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U"
    ///        ]
    ///      }
    ///    },
    ///    "active_time_attributes": {
    ///      "description": "Schedule rotation's active times",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "end_time",
    ///          "start_time"
    ///        ],
    ///        "properties": {
    ///          "end_time": {
    ///            "description": "End time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          },
    ///          "start_time": {
    ///            "description": "Start time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "active_time_type": {
    ///      "type": "string",
    ///      "items": {
    ///        "description": "Schedule rotation active time type",
    ///        "default": "all_day",
    ///        "type": "string",
    ///        "enum": [
    ///          "all_day",
    ///          "same_time",
    ///          "custom"
    ///        ]
    ///      }
    ///    },
    ///    "end_time": {
    ///      "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "name": {
    ///      "description": "The name of the schedule rotation",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the schedule rotation",
    ///      "type": "integer"
    ///    },
    ///    "schedule_id": {
    ///      "description": "The ID of parent schedule",
    ///      "type": "string"
    ///    },
    ///    "schedule_rotationable_attributes": {
    ///      "type": "object",
    ///      "oneOf": [
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_time": {
    ///              "description": "Hand off time for daily rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_day",
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_day": {
    ///              "description": "Hand off day for weekly/biweekly rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "S",
    ///                "M",
    ///                "T",
    ///                "W",
    ///                "R",
    ///                "F",
    ///                "U"
    ///              ]
    ///            },
    ///            "handoff_time": {
    ///              "description": "Hand off time for weekly/biweekly rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_day",
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_day": {
    ///              "description": "Hand off day for monthly rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "first_day_of_month",
    ///                "last_day_of_month"
    ///              ]
    ///            },
    ///            "handoff_time": {
    ///              "description": "Hand off time for monthly rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_time",
    ///            "shift_length",
    ///            "shift_length_unit"
    ///          ],
    ///          "properties": {
    ///            "handoff_time": {
    ///              "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///              "type": "string",
    ///              "format": "time"
    ///            },
    ///            "shift_length": {
    ///              "description": "Shift length for custom rotation",
    ///              "type": "integer"
    ///            },
    ///            "shift_length_unit": {
    ///              "description": "Shift length unit for custom rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "hours",
    ///                "days",
    ///                "weeks"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        }
    ///      ]
    ///    },
    ///    "schedule_rotationable_type": {
    ///      "description": "Schedule rotation type",
    ///      "type": "string",
    ///      "enum": [
    ///        "ScheduleDailyRotation",
    ///        "ScheduleWeeklyRotation",
    ///        "ScheduleBiweeklyRotation",
    ///        "ScheduleMonthlyRotation",
    ///        "ScheduleCustomRotation"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "default": "Etc/UTC",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotation {
        ///Schedule rotation active all week?
        #[serde(default = "defaults::default_bool::<true>")]
        pub active_all_week: bool,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_days: ::std::vec::Vec<ScheduleRotationActiveDaysItem>,
        ///Schedule rotation's active times
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_time_attributes: ::std::vec::Vec<
            ScheduleRotationActiveTimeAttributesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub active_time_type: ::std::option::Option<::std::string::String>,
        ///RFC3339 date-time when rotation ends. Shifts will only be created before this time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The name of the schedule rotation
        pub name: ::std::string::String,
        ///Position of the schedule rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The ID of parent schedule
        pub schedule_id: ::std::string::String,
        pub schedule_rotationable_attributes: ScheduleRotationScheduleRotationableAttributes,
        ///Schedule rotation type
        pub schedule_rotationable_type: ScheduleRotationScheduleRotationableType,
        ///RFC3339 date-time when rotation starts. Shifts will only be created after this time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///A valid IANA time zone name.
        #[serde(default = "defaults::schedule_rotation_time_zone")]
        pub time_zone: ::std::string::String,
    }
    impl ScheduleRotation {
        pub fn builder() -> builder::ScheduleRotation {
            Default::default()
        }
    }
    ///`ScheduleRotationActiveDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "required": [
    ///    "active_time_attributes",
    ///    "created_at",
    ///    "day_name",
    ///    "schedule_rotation_id",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "active_time_attributes": {
    ///      "description": "Schedule rotation active times per day",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "end_time": {
    ///            "description": "End time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          },
    ///          "start_time": {
    ///            "description": "Start time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "day_name": {
    ///      "description": "Schedule rotation day name for which active times to be created",
    ///      "type": "string",
    ///      "enum": [
    ///        "S",
    ///        "M",
    ///        "T",
    ///        "W",
    ///        "R",
    ///        "F",
    ///        "U"
    ///      ]
    ///    },
    ///    "schedule_rotation_id": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveDay {
        ///Schedule rotation active times per day
        pub active_time_attributes: ::std::vec::Vec<
            ScheduleRotationActiveDayActiveTimeAttributesItem,
        >,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Schedule rotation day name for which active times to be created
        pub day_name: ScheduleRotationActiveDayDayName,
        pub schedule_rotation_id: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl ScheduleRotationActiveDay {
        pub fn builder() -> builder::ScheduleRotationActiveDay {
            Default::default()
        }
    }
    ///`ScheduleRotationActiveDayActiveTimeAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "end_time": {
    ///      "description": "End time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveDayActiveTimeAttributesItem {
        ///End time for schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        ///Start time for schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ScheduleRotationActiveDayActiveTimeAttributesItem {
        fn default() -> Self {
            Self {
                end_time: Default::default(),
                start_time: Default::default(),
            }
        }
    }
    impl ScheduleRotationActiveDayActiveTimeAttributesItem {
        pub fn builder() -> builder::ScheduleRotationActiveDayActiveTimeAttributesItem {
            Default::default()
        }
    }
    ///Schedule rotation day name for which active times to be created
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation day name for which active times to be created",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationActiveDayDayName {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for ScheduleRotationActiveDayDayName {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationActiveDayDayName {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationActiveDayDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationActiveDayDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationActiveDayDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationActiveDayList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/schedule_rotation_active_day"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the schedule rotation active time",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "schedule_rotation_active_days"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveDayList {
        pub data: ::std::vec::Vec<ScheduleRotationActiveDayListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl ScheduleRotationActiveDayList {
        pub fn builder() -> builder::ScheduleRotationActiveDayList {
            Default::default()
        }
    }
    ///`ScheduleRotationActiveDayListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule_rotation_active_day"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule rotation active time",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_active_days"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveDayListDataItem {
        pub attributes: ScheduleRotationActiveDay,
        ///Unique ID of the schedule rotation active time
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleRotationActiveDayListDataItemType,
    }
    impl ScheduleRotationActiveDayListDataItem {
        pub fn builder() -> builder::ScheduleRotationActiveDayListDataItem {
            Default::default()
        }
    }
    ///`ScheduleRotationActiveDayListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_active_days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationActiveDayListDataItemType {
        #[serde(rename = "schedule_rotation_active_days")]
        ScheduleRotationActiveDays,
    }
    impl ::std::fmt::Display for ScheduleRotationActiveDayListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationActiveDays => {
                    f.write_str("schedule_rotation_active_days")
                }
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationActiveDayListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_active_days" => Ok(Self::ScheduleRotationActiveDays),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationActiveDayListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationActiveDayListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationActiveDayListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationActiveDayResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/schedule_rotation_active_day"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the schedule rotation active time",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotation_active_days"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveDayResponse {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<ScheduleRotationActiveDayResponseData>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ::std::default::Default for ScheduleRotationActiveDayResponse {
        fn default() -> Self {
            Self {
                data: Default::default(),
                included: Default::default(),
            }
        }
    }
    impl ScheduleRotationActiveDayResponse {
        pub fn builder() -> builder::ScheduleRotationActiveDayResponse {
            Default::default()
        }
    }
    ///`ScheduleRotationActiveDayResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule_rotation_active_day"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule rotation active time",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_active_days"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveDayResponseData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<ScheduleRotationActiveDay>,
        ///Unique ID of the schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<ScheduleRotationActiveDayResponseDataType>,
    }
    impl ::std::default::Default for ScheduleRotationActiveDayResponseData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl ScheduleRotationActiveDayResponseData {
        pub fn builder() -> builder::ScheduleRotationActiveDayResponseData {
            Default::default()
        }
    }
    ///`ScheduleRotationActiveDayResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_active_days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationActiveDayResponseDataType {
        #[serde(rename = "schedule_rotation_active_days")]
        ScheduleRotationActiveDays,
    }
    impl ::std::fmt::Display for ScheduleRotationActiveDayResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationActiveDays => {
                    f.write_str("schedule_rotation_active_days")
                }
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationActiveDayResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_active_days" => Ok(Self::ScheduleRotationActiveDays),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationActiveDayResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationActiveDayResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationActiveDayResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Schedule rotation active days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation active days",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationActiveDaysItem {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for ScheduleRotationActiveDaysItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationActiveDaysItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationActiveTimeAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "end_time",
    ///    "start_time"
    ///  ],
    ///  "properties": {
    ///    "end_time": {
    ///      "description": "End time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationActiveTimeAttributesItem {
        ///End time for schedule rotation active time
        pub end_time: ::std::string::String,
        ///Start time for schedule rotation active time
        pub start_time: ::std::string::String,
    }
    impl ScheduleRotationActiveTimeAttributesItem {
        pub fn builder() -> builder::ScheduleRotationActiveTimeAttributesItem {
            Default::default()
        }
    }
    ///`ScheduleRotationList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/schedule_rotation"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the schedule rotation",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "schedule_rotations"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationList {
        pub data: ::std::vec::Vec<ScheduleRotationListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl ScheduleRotationList {
        pub fn builder() -> builder::ScheduleRotationList {
            Default::default()
        }
    }
    ///`ScheduleRotationListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule_rotation"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule rotation",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationListDataItem {
        pub attributes: ScheduleRotation,
        ///Unique ID of the schedule rotation
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleRotationListDataItemType,
    }
    impl ScheduleRotationListDataItem {
        pub fn builder() -> builder::ScheduleRotationListDataItem {
            Default::default()
        }
    }
    ///`ScheduleRotationListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationListDataItemType {
        #[serde(rename = "schedule_rotations")]
        ScheduleRotations,
    }
    impl ::std::fmt::Display for ScheduleRotationListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotations => f.write_str("schedule_rotations"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotations" => Ok(Self::ScheduleRotations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/schedule_rotation"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the schedule rotation",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotations"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationResponse {
        pub data: ScheduleRotationResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ScheduleRotationResponse {
        pub fn builder() -> builder::ScheduleRotationResponse {
            Default::default()
        }
    }
    ///`ScheduleRotationResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule_rotation"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule rotation",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationResponseData {
        pub attributes: ScheduleRotation,
        ///Unique ID of the schedule rotation
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleRotationResponseDataType,
    }
    impl ScheduleRotationResponseData {
        pub fn builder() -> builder::ScheduleRotationResponseData {
            Default::default()
        }
    }
    ///`ScheduleRotationResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationResponseDataType {
        #[serde(rename = "schedule_rotations")]
        ScheduleRotations,
    }
    impl ::std::fmt::Display for ScheduleRotationResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotations => f.write_str("schedule_rotations"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotations" => Ok(Self::ScheduleRotations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationScheduleRotationableAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_time": {
    ///          "description": "Hand off time for daily rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_day",
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_day": {
    ///          "description": "Hand off day for weekly/biweekly rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "S",
    ///            "M",
    ///            "T",
    ///            "W",
    ///            "R",
    ///            "F",
    ///            "U"
    ///          ]
    ///        },
    ///        "handoff_time": {
    ///          "description": "Hand off time for weekly/biweekly rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_day",
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_day": {
    ///          "description": "Hand off day for monthly rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "first_day_of_month",
    ///            "last_day_of_month"
    ///          ]
    ///        },
    ///        "handoff_time": {
    ///          "description": "Hand off time for monthly rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_time",
    ///        "shift_length",
    ///        "shift_length_unit"
    ///      ],
    ///      "properties": {
    ///        "handoff_time": {
    ///          "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///          "type": "string",
    ///          "format": "time"
    ///        },
    ///        "shift_length": {
    ///          "description": "Shift length for custom rotation",
    ///          "type": "integer"
    ///        },
    ///        "shift_length_unit": {
    ///          "description": "Shift length unit for custom rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "hours",
    ///            "days",
    ///            "weeks"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged, deny_unknown_fields)]
    pub enum ScheduleRotationScheduleRotationableAttributes {
        Variant0 {
            ///Hand off time for daily rotation
            handoff_time: ::std::string::String,
        },
        Variant1 {
            ///Hand off day for weekly/biweekly rotation
            handoff_day: ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay,
            ///Hand off time for weekly/biweekly rotation
            handoff_time: ::std::string::String,
        },
        Variant2 {
            ///Hand off day for monthly rotation
            handoff_day: ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay,
            ///Hand off time for monthly rotation
            handoff_time: ::std::string::String,
        },
        Variant3 {
            ///Hand off time for custom rotation. Use minutes for hourly rotation.
            handoff_time: ::std::string::String,
            ///Shift length for custom rotation
            shift_length: i64,
            ///Shift length unit for custom rotation
            shift_length_unit: ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit,
        },
    }
    ///Hand off day for weekly/biweekly rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Hand off day for weekly/biweekly rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display
    for ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr
    for ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Hand off day for monthly rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Hand off day for monthly rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "first_day_of_month",
    ///    "last_day_of_month"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay {
        #[serde(rename = "first_day_of_month")]
        FirstDayOfMonth,
        #[serde(rename = "last_day_of_month")]
        LastDayOfMonth,
    }
    impl ::std::fmt::Display
    for ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FirstDayOfMonth => f.write_str("first_day_of_month"),
                Self::LastDayOfMonth => f.write_str("last_day_of_month"),
            }
        }
    }
    impl ::std::str::FromStr
    for ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "first_day_of_month" => Ok(Self::FirstDayOfMonth),
                "last_day_of_month" => Ok(Self::LastDayOfMonth),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Shift length unit for custom rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Shift length unit for custom rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "hours",
    ///    "days",
    ///    "weeks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit {
        #[serde(rename = "hours")]
        Hours,
        #[serde(rename = "days")]
        Days,
        #[serde(rename = "weeks")]
        Weeks,
    }
    impl ::std::fmt::Display
    for ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Hours => f.write_str("hours"),
                Self::Days => f.write_str("days"),
                Self::Weeks => f.write_str("weeks"),
            }
        }
    }
    impl ::std::str::FromStr
    for ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "hours" => Ok(Self::Hours),
                "days" => Ok(Self::Days),
                "weeks" => Ok(Self::Weeks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Schedule rotation type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation type",
    ///  "type": "string",
    ///  "enum": [
    ///    "ScheduleDailyRotation",
    ///    "ScheduleWeeklyRotation",
    ///    "ScheduleBiweeklyRotation",
    ///    "ScheduleMonthlyRotation",
    ///    "ScheduleCustomRotation"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationScheduleRotationableType {
        ScheduleDailyRotation,
        ScheduleWeeklyRotation,
        ScheduleBiweeklyRotation,
        ScheduleMonthlyRotation,
        ScheduleCustomRotation,
    }
    impl ::std::fmt::Display for ScheduleRotationScheduleRotationableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleDailyRotation => f.write_str("ScheduleDailyRotation"),
                Self::ScheduleWeeklyRotation => f.write_str("ScheduleWeeklyRotation"),
                Self::ScheduleBiweeklyRotation => f.write_str("ScheduleBiweeklyRotation"),
                Self::ScheduleMonthlyRotation => f.write_str("ScheduleMonthlyRotation"),
                Self::ScheduleCustomRotation => f.write_str("ScheduleCustomRotation"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationScheduleRotationableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ScheduleDailyRotation" => Ok(Self::ScheduleDailyRotation),
                "ScheduleWeeklyRotation" => Ok(Self::ScheduleWeeklyRotation),
                "ScheduleBiweeklyRotation" => Ok(Self::ScheduleBiweeklyRotation),
                "ScheduleMonthlyRotation" => Ok(Self::ScheduleMonthlyRotation),
                "ScheduleCustomRotation" => Ok(Self::ScheduleCustomRotation),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "position",
    ///    "schedule_rotation_id",
    ///    "updated_at",
    ///    "user_id"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the user inside rotation",
    ///      "type": "integer"
    ///    },
    ///    "schedule_rotation_id": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "Schedule rotation user",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationUser {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Position of the user inside rotation
        pub position: i64,
        pub schedule_rotation_id: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///Schedule rotation user
        pub user_id: i64,
    }
    impl ScheduleRotationUser {
        pub fn builder() -> builder::ScheduleRotationUser {
            Default::default()
        }
    }
    ///`ScheduleRotationUserList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/schedule_rotation_user"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the schedule rotation user",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "schedule_rotation_users"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationUserList {
        pub data: ::std::vec::Vec<ScheduleRotationUserListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl ScheduleRotationUserList {
        pub fn builder() -> builder::ScheduleRotationUserList {
            Default::default()
        }
    }
    ///`ScheduleRotationUserListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule_rotation_user"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule rotation user",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationUserListDataItem {
        pub attributes: ScheduleRotationUser,
        ///Unique ID of the schedule rotation user
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleRotationUserListDataItemType,
    }
    impl ScheduleRotationUserListDataItem {
        pub fn builder() -> builder::ScheduleRotationUserListDataItem {
            Default::default()
        }
    }
    ///`ScheduleRotationUserListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationUserListDataItemType {
        #[serde(rename = "schedule_rotation_users")]
        ScheduleRotationUsers,
    }
    impl ::std::fmt::Display for ScheduleRotationUserListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationUsers => f.write_str("schedule_rotation_users"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationUserListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_users" => Ok(Self::ScheduleRotationUsers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationUserListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationUserListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationUserListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ScheduleRotationUserResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/schedule_rotation_user"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the schedule rotation user",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotation_users"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationUserResponse {
        pub data: ScheduleRotationUserResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ScheduleRotationUserResponse {
        pub fn builder() -> builder::ScheduleRotationUserResponse {
            Default::default()
        }
    }
    ///`ScheduleRotationUserResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/schedule_rotation_user"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the schedule rotation user",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleRotationUserResponseData {
        pub attributes: ScheduleRotationUser,
        ///Unique ID of the schedule rotation user
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ScheduleRotationUserResponseDataType,
    }
    impl ScheduleRotationUserResponseData {
        pub fn builder() -> builder::ScheduleRotationUserResponseData {
            Default::default()
        }
    }
    ///`ScheduleRotationUserResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleRotationUserResponseDataType {
        #[serde(rename = "schedule_rotation_users")]
        ScheduleRotationUsers,
    }
    impl ::std::fmt::Display for ScheduleRotationUserResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationUsers => f.write_str("schedule_rotation_users"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleRotationUserResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_users" => Ok(Self::ScheduleRotationUsers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleRotationUserResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleRotationUserResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleRotationUserResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Day of week the weekly shift summary is sent
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Day of week the weekly shift summary is sent",
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ScheduleShiftReportDayOfWeek {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display for ScheduleShiftReportDayOfWeek {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr for ScheduleShiftReportDayOfWeek {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ScheduleShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ScheduleShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ScheduleShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Synced slack channel of the schedule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Synced slack channel of the schedule",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleSlackChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ScheduleSlackChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ScheduleSlackChannel {
        pub fn builder() -> builder::ScheduleSlackChannel {
            Default::default()
        }
    }
    ///Synced slack group of the schedule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Synced slack group of the schedule",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack user group ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack user group name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ScheduleSlackUserGroup {
        ///Slack user group ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack user group name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ScheduleSlackUserGroup {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ScheduleSlackUserGroup {
        pub fn builder() -> builder::ScheduleSlackUserGroup {
            Default::default()
        }
    }
    ///`Secret`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "hashicorp_vault_mount": {
    ///      "description": "The HashiCorp Vault secret mount path",
    ///      "type": "string"
    ///    },
    ///    "hashicorp_vault_path": {
    ///      "description": "The HashiCorp Vault secret path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "hashicorp_vault_version": {
    ///      "description": "The HashiCorp Vault secret version",
    ///      "type": "integer"
    ///    },
    ///    "name": {
    ///      "description": "The name of the secret",
    ///      "type": "string"
    ///    },
    ///    "secret": {
    ///      "description": "The redacted secret",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Secret {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The HashiCorp Vault secret mount path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_mount: ::std::option::Option<::std::string::String>,
        ///The HashiCorp Vault secret path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_path: ::std::option::Option<::std::string::String>,
        ///The HashiCorp Vault secret version
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_version: ::std::option::Option<i64>,
        ///The name of the secret
        pub name: ::std::string::String,
        ///The redacted secret
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub secret: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Secret {
        pub fn builder() -> builder::Secret {
            Default::default()
        }
    }
    ///`SecretList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/secret"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the secret",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "secrets"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SecretList {
        pub data: ::std::vec::Vec<SecretListDataItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl SecretList {
        pub fn builder() -> builder::SecretList {
            Default::default()
        }
    }
    ///`SecretListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/secret"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the secret",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "secrets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SecretListDataItem {
        pub attributes: Secret,
        ///Unique ID of the secret
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SecretListDataItemType,
    }
    impl SecretListDataItem {
        pub fn builder() -> builder::SecretListDataItem {
            Default::default()
        }
    }
    ///`SecretListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "secrets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SecretListDataItemType {
        #[serde(rename = "secrets")]
        Secrets,
    }
    impl ::std::fmt::Display for SecretListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Secrets => f.write_str("secrets"),
            }
        }
    }
    impl ::std::str::FromStr for SecretListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "secrets" => Ok(Self::Secrets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SecretListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SecretListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SecretListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SecretResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/secret"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the secret",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "secrets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SecretResponse {
        pub data: SecretResponseData,
    }
    impl SecretResponse {
        pub fn builder() -> builder::SecretResponse {
            Default::default()
        }
    }
    ///`SecretResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/secret"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the secret",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "secrets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SecretResponseData {
        pub attributes: Secret,
        ///Unique ID of the secret
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SecretResponseDataType,
    }
    impl SecretResponseData {
        pub fn builder() -> builder::SecretResponseData {
            Default::default()
        }
    }
    ///`SecretResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "secrets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SecretResponseDataType {
        #[serde(rename = "secrets")]
        Secrets,
    }
    impl ::std::fmt::Display for SecretResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Secrets => f.write_str("secrets"),
            }
        }
    }
    impl ::std::str::FromStr for SecretResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "secrets" => Ok(Self::Secrets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SecretResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SecretResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SecretResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendDashboardReportTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "body",
    ///    "dashboard_ids",
    ///    "subject",
    ///    "to"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "The email body",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "dashboard_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "from": {
    ///      "description": "The from email address. Need to use SMTP integration if different than rootly.com",
    ///      "default": "Rootly <workflows@rootly.com>",
    ///      "type": "string"
    ///    },
    ///    "preheader": {
    ///      "description": "The preheader",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "subject": {
    ///      "description": "The subject",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_dashboard_report"
    ///      ]
    ///    },
    ///    "to": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The recipient",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendDashboardReportTaskParams {
        ///The email body
        pub body: ::std::option::Option<::std::string::String>,
        pub dashboard_ids: ::std::vec::Vec<::std::string::String>,
        ///The from email address. Need to use SMTP integration if different than rootly.com
        #[serde(default = "defaults::send_dashboard_report_task_params_from")]
        pub from: ::std::string::String,
        ///The preheader
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub preheader: ::std::option::Option<::std::string::String>,
        ///The subject
        pub subject: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SendDashboardReportTaskParamsTaskType>,
        pub to: ::std::vec::Vec<::std::string::String>,
    }
    impl SendDashboardReportTaskParams {
        pub fn builder() -> builder::SendDashboardReportTaskParams {
            Default::default()
        }
    }
    ///`SendDashboardReportTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_dashboard_report"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendDashboardReportTaskParamsTaskType {
        #[serde(rename = "send_dashboard_report")]
        SendDashboardReport,
    }
    impl ::std::fmt::Display for SendDashboardReportTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendDashboardReport => f.write_str("send_dashboard_report"),
            }
        }
    }
    impl ::std::str::FromStr for SendDashboardReportTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_dashboard_report" => Ok(Self::SendDashboardReport),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendDashboardReportTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendDashboardReportTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendDashboardReportTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendEmailTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "body",
    ///    "subject",
    ///    "to"
    ///  ],
    ///  "properties": {
    ///    "bcc": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Bcc address email",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "body": {
    ///      "description": "The email body",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cc": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Cc address email",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "custom_logo_url": {
    ///      "description": "URL to your custom email logo",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "from": {
    ///      "description": "The from email address. Need to use SMTP integration if different than rootly.com",
    ///      "default": "Rootly <workflows@rootly.com>",
    ///      "type": "string"
    ///    },
    ///    "include_footer": {
    ///      "type": "boolean"
    ///    },
    ///    "include_header": {
    ///      "type": "boolean"
    ///    },
    ///    "preheader": {
    ///      "description": "The preheader",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "subject": {
    ///      "description": "The subject",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_email"
    ///      ]
    ///    },
    ///    "to": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "To address email",
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendEmailTaskParams {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub bcc: ::std::vec::Vec<::std::string::String>,
        ///The email body
        pub body: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub cc: ::std::vec::Vec<::std::string::String>,
        ///URL to your custom email logo
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_logo_url: ::std::option::Option<::std::string::String>,
        ///The from email address. Need to use SMTP integration if different than rootly.com
        #[serde(default = "defaults::send_email_task_params_from")]
        pub from: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub include_footer: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub include_header: ::std::option::Option<bool>,
        ///The preheader
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub preheader: ::std::option::Option<::std::string::String>,
        ///The subject
        pub subject: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SendEmailTaskParamsTaskType>,
        pub to: ::std::vec::Vec<::std::string::String>,
    }
    impl SendEmailTaskParams {
        pub fn builder() -> builder::SendEmailTaskParams {
            Default::default()
        }
    }
    ///`SendEmailTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_email"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendEmailTaskParamsTaskType {
        #[serde(rename = "send_email")]
        SendEmail,
    }
    impl ::std::fmt::Display for SendEmailTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendEmail => f.write_str("send_email"),
            }
        }
    }
    impl ::std::str::FromStr for SendEmailTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_email" => Ok(Self::SendEmail),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendEmailTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendEmailTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SendEmailTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendGoogleChatAttachmentsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attachments",
    ///    "spaces"
    ///  ],
    ///  "properties": {
    ///    "attachments": {
    ///      "type": "string"
    ///    },
    ///    "spaces": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_google_chat_attachments"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendGoogleChatAttachmentsTaskParams {
        pub attachments: ::std::string::String,
        pub spaces: ::std::vec::Vec<SendGoogleChatAttachmentsTaskParamsSpacesItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            SendGoogleChatAttachmentsTaskParamsTaskType,
        >,
    }
    impl SendGoogleChatAttachmentsTaskParams {
        pub fn builder() -> builder::SendGoogleChatAttachmentsTaskParams {
            Default::default()
        }
    }
    ///`SendGoogleChatAttachmentsTaskParamsSpacesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendGoogleChatAttachmentsTaskParamsSpacesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendGoogleChatAttachmentsTaskParamsSpacesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendGoogleChatAttachmentsTaskParamsSpacesItem {
        pub fn builder() -> builder::SendGoogleChatAttachmentsTaskParamsSpacesItem {
            Default::default()
        }
    }
    ///`SendGoogleChatAttachmentsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_google_chat_attachments"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendGoogleChatAttachmentsTaskParamsTaskType {
        #[serde(rename = "send_google_chat_attachments")]
        SendGoogleChatAttachments,
    }
    impl ::std::fmt::Display for SendGoogleChatAttachmentsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendGoogleChatAttachments => {
                    f.write_str("send_google_chat_attachments")
                }
            }
        }
    }
    impl ::std::str::FromStr for SendGoogleChatAttachmentsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_google_chat_attachments" => Ok(Self::SendGoogleChatAttachments),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendGoogleChatAttachmentsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendGoogleChatAttachmentsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendGoogleChatAttachmentsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendGoogleChatMessageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "spaces",
    ///    "text"
    ///  ],
    ///  "properties": {
    ///    "spaces": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_google_chat_message"
    ///      ]
    ///    },
    ///    "text": {
    ///      "type": "string"
    ///    },
    ///    "thread_key": {
    ///      "description": "Thread key to reply within a thread. Messages with the same thread key are grouped together",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendGoogleChatMessageTaskParams {
        pub spaces: ::std::vec::Vec<SendGoogleChatMessageTaskParamsSpacesItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SendGoogleChatMessageTaskParamsTaskType>,
        pub text: ::std::string::String,
        ///Thread key to reply within a thread. Messages with the same thread key are grouped together
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub thread_key: ::std::option::Option<::std::string::String>,
    }
    impl SendGoogleChatMessageTaskParams {
        pub fn builder() -> builder::SendGoogleChatMessageTaskParams {
            Default::default()
        }
    }
    ///`SendGoogleChatMessageTaskParamsSpacesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendGoogleChatMessageTaskParamsSpacesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendGoogleChatMessageTaskParamsSpacesItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendGoogleChatMessageTaskParamsSpacesItem {
        pub fn builder() -> builder::SendGoogleChatMessageTaskParamsSpacesItem {
            Default::default()
        }
    }
    ///`SendGoogleChatMessageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_google_chat_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendGoogleChatMessageTaskParamsTaskType {
        #[serde(rename = "send_google_chat_message")]
        SendGoogleChatMessage,
    }
    impl ::std::fmt::Display for SendGoogleChatMessageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendGoogleChatMessage => f.write_str("send_google_chat_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendGoogleChatMessageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_google_chat_message" => Ok(Self::SendGoogleChatMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendGoogleChatMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendGoogleChatMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendGoogleChatMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendMicrosoftTeamsBlocksTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "channels"
    ///      ],
    ///      "properties": {
    ///        "channels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "attachments"
    ///  ],
    ///  "properties": {
    ///    "attachments": {
    ///      "description": "Support liquid markup. Needs to be a valid JSON string after liquid is parsed",
    ///      "type": "string"
    ///    },
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_microsoft_teams_blocks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendMicrosoftTeamsBlocksTaskParams {
        ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
        pub attachments: ::std::string::String,
        pub channels: ::std::vec::Vec<SendMicrosoftTeamsBlocksTaskParamsChannelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SendMicrosoftTeamsBlocksTaskParamsTaskType>,
    }
    impl SendMicrosoftTeamsBlocksTaskParams {
        pub fn builder() -> builder::SendMicrosoftTeamsBlocksTaskParams {
            Default::default()
        }
    }
    ///`SendMicrosoftTeamsBlocksTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
        pub fn builder() -> builder::SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`SendMicrosoftTeamsBlocksTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_microsoft_teams_blocks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendMicrosoftTeamsBlocksTaskParamsTaskType {
        #[serde(rename = "send_microsoft_teams_blocks")]
        SendMicrosoftTeamsBlocks,
    }
    impl ::std::fmt::Display for SendMicrosoftTeamsBlocksTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendMicrosoftTeamsBlocks => {
                    f.write_str("send_microsoft_teams_blocks")
                }
            }
        }
    }
    impl ::std::str::FromStr for SendMicrosoftTeamsBlocksTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_microsoft_teams_blocks" => Ok(Self::SendMicrosoftTeamsBlocks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendMicrosoftTeamsBlocksTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendMicrosoftTeamsBlocksTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendMicrosoftTeamsBlocksTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendMicrosoftTeamsChatMessageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "chats",
    ///    "text"
    ///  ],
    ///  "properties": {
    ///    "chats": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_microsoft_teams_chat_message"
    ///      ]
    ///    },
    ///    "text": {
    ///      "description": "The message text",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendMicrosoftTeamsChatMessageTaskParams {
        pub chats: ::std::vec::Vec<SendMicrosoftTeamsChatMessageTaskParamsChatsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            SendMicrosoftTeamsChatMessageTaskParamsTaskType,
        >,
        ///The message text
        pub text: ::std::string::String,
    }
    impl SendMicrosoftTeamsChatMessageTaskParams {
        pub fn builder() -> builder::SendMicrosoftTeamsChatMessageTaskParams {
            Default::default()
        }
    }
    ///`SendMicrosoftTeamsChatMessageTaskParamsChatsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
        pub fn builder() -> builder::SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
            Default::default()
        }
    }
    ///`SendMicrosoftTeamsChatMessageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_microsoft_teams_chat_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendMicrosoftTeamsChatMessageTaskParamsTaskType {
        #[serde(rename = "send_microsoft_teams_chat_message")]
        SendMicrosoftTeamsChatMessage,
    }
    impl ::std::fmt::Display for SendMicrosoftTeamsChatMessageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendMicrosoftTeamsChatMessage => {
                    f.write_str("send_microsoft_teams_chat_message")
                }
            }
        }
    }
    impl ::std::str::FromStr for SendMicrosoftTeamsChatMessageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_microsoft_teams_chat_message" => {
                    Ok(Self::SendMicrosoftTeamsChatMessage)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for SendMicrosoftTeamsChatMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendMicrosoftTeamsChatMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendMicrosoftTeamsChatMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendMicrosoftTeamsMessageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "channels"
    ///      ],
    ///      "properties": {
    ///        "channels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "text"
    ///  ],
    ///  "properties": {
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_microsoft_teams_message"
    ///      ]
    ///    },
    ///    "text": {
    ///      "description": "The message text",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendMicrosoftTeamsMessageTaskParams {
        pub channels: ::std::vec::Vec<SendMicrosoftTeamsMessageTaskParamsChannelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            SendMicrosoftTeamsMessageTaskParamsTaskType,
        >,
        ///The message text
        pub text: ::std::string::String,
    }
    impl SendMicrosoftTeamsMessageTaskParams {
        pub fn builder() -> builder::SendMicrosoftTeamsMessageTaskParams {
            Default::default()
        }
    }
    ///`SendMicrosoftTeamsMessageTaskParamsChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendMicrosoftTeamsMessageTaskParamsChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendMicrosoftTeamsMessageTaskParamsChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendMicrosoftTeamsMessageTaskParamsChannelsItem {
        pub fn builder() -> builder::SendMicrosoftTeamsMessageTaskParamsChannelsItem {
            Default::default()
        }
    }
    ///`SendMicrosoftTeamsMessageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_microsoft_teams_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendMicrosoftTeamsMessageTaskParamsTaskType {
        #[serde(rename = "send_microsoft_teams_message")]
        SendMicrosoftTeamsMessage,
    }
    impl ::std::fmt::Display for SendMicrosoftTeamsMessageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendMicrosoftTeamsMessage => {
                    f.write_str("send_microsoft_teams_message")
                }
            }
        }
    }
    impl ::std::str::FromStr for SendMicrosoftTeamsMessageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_microsoft_teams_message" => Ok(Self::SendMicrosoftTeamsMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendMicrosoftTeamsMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendMicrosoftTeamsMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendMicrosoftTeamsMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackBlocksTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "channels"
    ///      ],
    ///      "properties": {
    ///        "channels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "slack_users"
    ///      ],
    ///      "properties": {
    ///        "slack_users": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "slack_user_groups"
    ///      ],
    ///      "properties": {
    ///        "slack_user_groups": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "blocks"
    ///  ],
    ///  "properties": {
    ///    "attachments": {
    ///      "description": "Support liquid markup. Needs to be a valid JSON string after liquid is parsed",
    ///      "type": "string"
    ///    },
    ///    "blocks": {
    ///      "description": "Support liquid markup. Needs to be a valid JSON string after liquid is parsed",
    ///      "type": "string"
    ///    },
    ///    "broadcast_thread_reply_to_channel": {
    ///      "type": "boolean"
    ///    },
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "message": {
    ///      "type": "string"
    ///    },
    ///    "parent_message_thread_task": {
    ///      "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "pin_to_channel": {
    ///      "type": "boolean"
    ///    },
    ///    "send_as_ephemeral": {
    ///      "type": "boolean"
    ///    },
    ///    "send_only_as_threaded_message": {
    ///      "description": "When set to true, if the parent for this threaded message cannot be found the message will be skipped.",
    ///      "type": "boolean"
    ///    },
    ///    "slack_user_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_slack_blocks"
    ///      ]
    ///    },
    ///    "thread_ts": {
    ///      "description": "The thread to send the message into",
    ///      "type": "string"
    ///    },
    ///    "update_parent_message": {
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum SendSlackBlocksTaskParams {
        Variant0 {
            ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            attachments: ::std::option::Option<::std::string::String>,
            ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
            blocks: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            broadcast_thread_reply_to_channel: ::std::option::Option<bool>,
            channels: ::std::vec::Vec<SendSlackBlocksTaskParamsVariant0ChannelsItem>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            message: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            parent_message_thread_task: ::std::option::Option<
                SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            pin_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_as_ephemeral: ::std::option::Option<bool>,
            ///When set to true, if the parent for this threaded message cannot be found the message will be skipped.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_only_as_threaded_message: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_user_groups: ::std::vec::Vec<
                SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_users: ::std::vec::Vec<
                SendSlackBlocksTaskParamsVariant0SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<SendSlackBlocksTaskParamsVariant0TaskType>,
            ///The thread to send the message into
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            thread_ts: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            update_parent_message: ::std::option::Option<bool>,
        },
        Variant1 {
            ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            attachments: ::std::option::Option<::std::string::String>,
            ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
            blocks: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            broadcast_thread_reply_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            channels: ::std::vec::Vec<SendSlackBlocksTaskParamsVariant1ChannelsItem>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            message: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            parent_message_thread_task: ::std::option::Option<
                SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            pin_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_as_ephemeral: ::std::option::Option<bool>,
            ///When set to true, if the parent for this threaded message cannot be found the message will be skipped.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_only_as_threaded_message: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_user_groups: ::std::vec::Vec<
                SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem,
            >,
            slack_users: ::std::vec::Vec<
                SendSlackBlocksTaskParamsVariant1SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<SendSlackBlocksTaskParamsVariant1TaskType>,
            ///The thread to send the message into
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            thread_ts: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            update_parent_message: ::std::option::Option<bool>,
        },
        Variant2 {
            ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            attachments: ::std::option::Option<::std::string::String>,
            ///Support liquid markup. Needs to be a valid JSON string after liquid is parsed
            blocks: ::std::string::String,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            broadcast_thread_reply_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            channels: ::std::vec::Vec<SendSlackBlocksTaskParamsVariant2ChannelsItem>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            message: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            parent_message_thread_task: ::std::option::Option<
                SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            pin_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_as_ephemeral: ::std::option::Option<bool>,
            ///When set to true, if the parent for this threaded message cannot be found the message will be skipped.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_only_as_threaded_message: ::std::option::Option<bool>,
            slack_user_groups: ::std::vec::Vec<
                SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_users: ::std::vec::Vec<
                SendSlackBlocksTaskParamsVariant2SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<SendSlackBlocksTaskParamsVariant2TaskType>,
            ///The thread to send the message into
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            thread_ts: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            update_parent_message: ::std::option::Option<bool>,
        },
    }
    ///`SendSlackBlocksTaskParamsVariant0ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant0ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackBlocksTaskParamsVariant0ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant0ChannelsItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant0ChannelsItem {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant0SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant0SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackBlocksTaskParamsVariant0SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant0SlackUsersItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant0SlackUsersItem {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_slack_blocks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackBlocksTaskParamsVariant0TaskType {
        #[serde(rename = "send_slack_blocks")]
        SendSlackBlocks,
    }
    impl ::std::fmt::Display for SendSlackBlocksTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSlackBlocks => f.write_str("send_slack_blocks"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackBlocksTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_slack_blocks" => Ok(Self::SendSlackBlocks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSlackBlocksTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackBlocksTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackBlocksTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant1ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant1ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackBlocksTaskParamsVariant1ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant1ChannelsItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant1ChannelsItem {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant1SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant1SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackBlocksTaskParamsVariant1SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant1SlackUsersItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant1SlackUsersItem {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_slack_blocks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackBlocksTaskParamsVariant1TaskType {
        #[serde(rename = "send_slack_blocks")]
        SendSlackBlocks,
    }
    impl ::std::fmt::Display for SendSlackBlocksTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSlackBlocks => f.write_str("send_slack_blocks"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackBlocksTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_slack_blocks" => Ok(Self::SendSlackBlocks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSlackBlocksTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackBlocksTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackBlocksTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant2ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant2ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackBlocksTaskParamsVariant2ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant2ChannelsItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant2ChannelsItem {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant2SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackBlocksTaskParamsVariant2SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackBlocksTaskParamsVariant2SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackBlocksTaskParamsVariant2SlackUsersItem {
        pub fn builder() -> builder::SendSlackBlocksTaskParamsVariant2SlackUsersItem {
            Default::default()
        }
    }
    ///`SendSlackBlocksTaskParamsVariant2TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_slack_blocks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackBlocksTaskParamsVariant2TaskType {
        #[serde(rename = "send_slack_blocks")]
        SendSlackBlocks,
    }
    impl ::std::fmt::Display for SendSlackBlocksTaskParamsVariant2TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSlackBlocks => f.write_str("send_slack_blocks"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackBlocksTaskParamsVariant2TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_slack_blocks" => Ok(Self::SendSlackBlocks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSlackBlocksTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackBlocksTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackBlocksTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackMessageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "anyOf": [
    ///    {
    ///      "required": [
    ///        "channels"
    ///      ],
    ///      "properties": {
    ///        "channels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "slack_users"
    ///      ],
    ///      "properties": {
    ///        "slack_users": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "slack_user_groups"
    ///      ],
    ///      "properties": {
    ///        "slack_user_groups": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  ],
    ///  "required": [
    ///    "text"
    ///  ],
    ///  "properties": {
    ///    "actionables": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "update_summary",
    ///          "update_status",
    ///          "archive_channel",
    ///          "manage_incident_roles",
    ///          "update_incident",
    ///          "all_commands",
    ///          "leave_feedback",
    ///          "manage_form_fields",
    ///          "manage_action_items",
    ///          "view_tasks",
    ///          "add_pagerduty_responders",
    ///          "add_opsgenie_responders",
    ///          "add_victor_ops_responders",
    ///          "update_status_page",
    ///          "pause_reminder",
    ///          "snooze_reminder",
    ///          "restart_reminder",
    ///          "cancel_incident",
    ///          "delete_message"
    ///        ]
    ///      }
    ///    },
    ///    "broadcast_thread_reply_to_channel": {
    ///      "type": "boolean"
    ///    },
    ///    "channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "color": {
    ///      "description": "A hex color ex. #FFFFFF",
    ///      "type": "string"
    ///    },
    ///    "parent_message_thread_task": {
    ///      "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "pin_to_channel": {
    ///      "type": "boolean"
    ///    },
    ///    "send_as_ephemeral": {
    ///      "type": "boolean"
    ///    },
    ///    "send_only_as_threaded_message": {
    ///      "description": "When set to true, if the parent for this threaded message cannot be found the message will be skipped.",
    ///      "type": "boolean"
    ///    },
    ///    "slack_user_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_slack_message"
    ///      ]
    ///    },
    ///    "text": {
    ///      "description": "The message text",
    ///      "type": "string"
    ///    },
    ///    "thread_ts": {
    ///      "description": "The thread to send the message into",
    ///      "type": "string"
    ///    },
    ///    "update_parent_message": {
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum SendSlackMessageTaskParams {
        Variant0 {
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            actionables: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant0ActionablesItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            broadcast_thread_reply_to_channel: ::std::option::Option<bool>,
            channels: ::std::vec::Vec<SendSlackMessageTaskParamsVariant0ChannelsItem>,
            ///A hex color ex. #FFFFFF
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            color: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            parent_message_thread_task: ::std::option::Option<
                SendSlackMessageTaskParamsVariant0ParentMessageThreadTask,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            pin_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_as_ephemeral: ::std::option::Option<bool>,
            ///When set to true, if the parent for this threaded message cannot be found the message will be skipped.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_only_as_threaded_message: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_user_groups: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant0SlackUserGroupsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_users: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant0SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<SendSlackMessageTaskParamsVariant0TaskType>,
            ///The message text
            text: ::std::string::String,
            ///The thread to send the message into
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            thread_ts: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            update_parent_message: ::std::option::Option<bool>,
        },
        Variant1 {
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            actionables: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant1ActionablesItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            broadcast_thread_reply_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            channels: ::std::vec::Vec<SendSlackMessageTaskParamsVariant1ChannelsItem>,
            ///A hex color ex. #FFFFFF
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            color: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            parent_message_thread_task: ::std::option::Option<
                SendSlackMessageTaskParamsVariant1ParentMessageThreadTask,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            pin_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_as_ephemeral: ::std::option::Option<bool>,
            ///When set to true, if the parent for this threaded message cannot be found the message will be skipped.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_only_as_threaded_message: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_user_groups: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant1SlackUserGroupsItem,
            >,
            slack_users: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant1SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<SendSlackMessageTaskParamsVariant1TaskType>,
            ///The message text
            text: ::std::string::String,
            ///The thread to send the message into
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            thread_ts: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            update_parent_message: ::std::option::Option<bool>,
        },
        Variant2 {
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            actionables: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant2ActionablesItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            broadcast_thread_reply_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            channels: ::std::vec::Vec<SendSlackMessageTaskParamsVariant2ChannelsItem>,
            ///A hex color ex. #FFFFFF
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            color: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            parent_message_thread_task: ::std::option::Option<
                SendSlackMessageTaskParamsVariant2ParentMessageThreadTask,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            pin_to_channel: ::std::option::Option<bool>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_as_ephemeral: ::std::option::Option<bool>,
            ///When set to true, if the parent for this threaded message cannot be found the message will be skipped.
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            send_only_as_threaded_message: ::std::option::Option<bool>,
            slack_user_groups: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant2SlackUserGroupsItem,
            >,
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            slack_users: ::std::vec::Vec<
                SendSlackMessageTaskParamsVariant2SlackUsersItem,
            >,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            task_type: ::std::option::Option<SendSlackMessageTaskParamsVariant2TaskType>,
            ///The message text
            text: ::std::string::String,
            ///The thread to send the message into
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            thread_ts: ::std::option::Option<::std::string::String>,
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            update_parent_message: ::std::option::Option<bool>,
        },
    }
    ///`SendSlackMessageTaskParamsVariant0ActionablesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_summary",
    ///    "update_status",
    ///    "archive_channel",
    ///    "manage_incident_roles",
    ///    "update_incident",
    ///    "all_commands",
    ///    "leave_feedback",
    ///    "manage_form_fields",
    ///    "manage_action_items",
    ///    "view_tasks",
    ///    "add_pagerduty_responders",
    ///    "add_opsgenie_responders",
    ///    "add_victor_ops_responders",
    ///    "update_status_page",
    ///    "pause_reminder",
    ///    "snooze_reminder",
    ///    "restart_reminder",
    ///    "cancel_incident",
    ///    "delete_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackMessageTaskParamsVariant0ActionablesItem {
        #[serde(rename = "update_summary")]
        UpdateSummary,
        #[serde(rename = "update_status")]
        UpdateStatus,
        #[serde(rename = "archive_channel")]
        ArchiveChannel,
        #[serde(rename = "manage_incident_roles")]
        ManageIncidentRoles,
        #[serde(rename = "update_incident")]
        UpdateIncident,
        #[serde(rename = "all_commands")]
        AllCommands,
        #[serde(rename = "leave_feedback")]
        LeaveFeedback,
        #[serde(rename = "manage_form_fields")]
        ManageFormFields,
        #[serde(rename = "manage_action_items")]
        ManageActionItems,
        #[serde(rename = "view_tasks")]
        ViewTasks,
        #[serde(rename = "add_pagerduty_responders")]
        AddPagerdutyResponders,
        #[serde(rename = "add_opsgenie_responders")]
        AddOpsgenieResponders,
        #[serde(rename = "add_victor_ops_responders")]
        AddVictorOpsResponders,
        #[serde(rename = "update_status_page")]
        UpdateStatusPage,
        #[serde(rename = "pause_reminder")]
        PauseReminder,
        #[serde(rename = "snooze_reminder")]
        SnoozeReminder,
        #[serde(rename = "restart_reminder")]
        RestartReminder,
        #[serde(rename = "cancel_incident")]
        CancelIncident,
        #[serde(rename = "delete_message")]
        DeleteMessage,
    }
    impl ::std::fmt::Display for SendSlackMessageTaskParamsVariant0ActionablesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateSummary => f.write_str("update_summary"),
                Self::UpdateStatus => f.write_str("update_status"),
                Self::ArchiveChannel => f.write_str("archive_channel"),
                Self::ManageIncidentRoles => f.write_str("manage_incident_roles"),
                Self::UpdateIncident => f.write_str("update_incident"),
                Self::AllCommands => f.write_str("all_commands"),
                Self::LeaveFeedback => f.write_str("leave_feedback"),
                Self::ManageFormFields => f.write_str("manage_form_fields"),
                Self::ManageActionItems => f.write_str("manage_action_items"),
                Self::ViewTasks => f.write_str("view_tasks"),
                Self::AddPagerdutyResponders => f.write_str("add_pagerduty_responders"),
                Self::AddOpsgenieResponders => f.write_str("add_opsgenie_responders"),
                Self::AddVictorOpsResponders => f.write_str("add_victor_ops_responders"),
                Self::UpdateStatusPage => f.write_str("update_status_page"),
                Self::PauseReminder => f.write_str("pause_reminder"),
                Self::SnoozeReminder => f.write_str("snooze_reminder"),
                Self::RestartReminder => f.write_str("restart_reminder"),
                Self::CancelIncident => f.write_str("cancel_incident"),
                Self::DeleteMessage => f.write_str("delete_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackMessageTaskParamsVariant0ActionablesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_summary" => Ok(Self::UpdateSummary),
                "update_status" => Ok(Self::UpdateStatus),
                "archive_channel" => Ok(Self::ArchiveChannel),
                "manage_incident_roles" => Ok(Self::ManageIncidentRoles),
                "update_incident" => Ok(Self::UpdateIncident),
                "all_commands" => Ok(Self::AllCommands),
                "leave_feedback" => Ok(Self::LeaveFeedback),
                "manage_form_fields" => Ok(Self::ManageFormFields),
                "manage_action_items" => Ok(Self::ManageActionItems),
                "view_tasks" => Ok(Self::ViewTasks),
                "add_pagerduty_responders" => Ok(Self::AddPagerdutyResponders),
                "add_opsgenie_responders" => Ok(Self::AddOpsgenieResponders),
                "add_victor_ops_responders" => Ok(Self::AddVictorOpsResponders),
                "update_status_page" => Ok(Self::UpdateStatusPage),
                "pause_reminder" => Ok(Self::PauseReminder),
                "snooze_reminder" => Ok(Self::SnoozeReminder),
                "restart_reminder" => Ok(Self::RestartReminder),
                "cancel_incident" => Ok(Self::CancelIncident),
                "delete_message" => Ok(Self::DeleteMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for SendSlackMessageTaskParamsVariant0ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackMessageTaskParamsVariant0ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackMessageTaskParamsVariant0ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackMessageTaskParamsVariant0ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant0ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackMessageTaskParamsVariant0ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant0ChannelsItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant0ChannelsItem {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant0SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant0SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant0SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackMessageTaskParamsVariant0SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant0SlackUsersItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant0SlackUsersItem {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant0TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_slack_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackMessageTaskParamsVariant0TaskType {
        #[serde(rename = "send_slack_message")]
        SendSlackMessage,
    }
    impl ::std::fmt::Display for SendSlackMessageTaskParamsVariant0TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSlackMessage => f.write_str("send_slack_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackMessageTaskParamsVariant0TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_slack_message" => Ok(Self::SendSlackMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSlackMessageTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackMessageTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackMessageTaskParamsVariant0TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackMessageTaskParamsVariant1ActionablesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_summary",
    ///    "update_status",
    ///    "archive_channel",
    ///    "manage_incident_roles",
    ///    "update_incident",
    ///    "all_commands",
    ///    "leave_feedback",
    ///    "manage_form_fields",
    ///    "manage_action_items",
    ///    "view_tasks",
    ///    "add_pagerduty_responders",
    ///    "add_opsgenie_responders",
    ///    "add_victor_ops_responders",
    ///    "update_status_page",
    ///    "pause_reminder",
    ///    "snooze_reminder",
    ///    "restart_reminder",
    ///    "cancel_incident",
    ///    "delete_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackMessageTaskParamsVariant1ActionablesItem {
        #[serde(rename = "update_summary")]
        UpdateSummary,
        #[serde(rename = "update_status")]
        UpdateStatus,
        #[serde(rename = "archive_channel")]
        ArchiveChannel,
        #[serde(rename = "manage_incident_roles")]
        ManageIncidentRoles,
        #[serde(rename = "update_incident")]
        UpdateIncident,
        #[serde(rename = "all_commands")]
        AllCommands,
        #[serde(rename = "leave_feedback")]
        LeaveFeedback,
        #[serde(rename = "manage_form_fields")]
        ManageFormFields,
        #[serde(rename = "manage_action_items")]
        ManageActionItems,
        #[serde(rename = "view_tasks")]
        ViewTasks,
        #[serde(rename = "add_pagerduty_responders")]
        AddPagerdutyResponders,
        #[serde(rename = "add_opsgenie_responders")]
        AddOpsgenieResponders,
        #[serde(rename = "add_victor_ops_responders")]
        AddVictorOpsResponders,
        #[serde(rename = "update_status_page")]
        UpdateStatusPage,
        #[serde(rename = "pause_reminder")]
        PauseReminder,
        #[serde(rename = "snooze_reminder")]
        SnoozeReminder,
        #[serde(rename = "restart_reminder")]
        RestartReminder,
        #[serde(rename = "cancel_incident")]
        CancelIncident,
        #[serde(rename = "delete_message")]
        DeleteMessage,
    }
    impl ::std::fmt::Display for SendSlackMessageTaskParamsVariant1ActionablesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateSummary => f.write_str("update_summary"),
                Self::UpdateStatus => f.write_str("update_status"),
                Self::ArchiveChannel => f.write_str("archive_channel"),
                Self::ManageIncidentRoles => f.write_str("manage_incident_roles"),
                Self::UpdateIncident => f.write_str("update_incident"),
                Self::AllCommands => f.write_str("all_commands"),
                Self::LeaveFeedback => f.write_str("leave_feedback"),
                Self::ManageFormFields => f.write_str("manage_form_fields"),
                Self::ManageActionItems => f.write_str("manage_action_items"),
                Self::ViewTasks => f.write_str("view_tasks"),
                Self::AddPagerdutyResponders => f.write_str("add_pagerduty_responders"),
                Self::AddOpsgenieResponders => f.write_str("add_opsgenie_responders"),
                Self::AddVictorOpsResponders => f.write_str("add_victor_ops_responders"),
                Self::UpdateStatusPage => f.write_str("update_status_page"),
                Self::PauseReminder => f.write_str("pause_reminder"),
                Self::SnoozeReminder => f.write_str("snooze_reminder"),
                Self::RestartReminder => f.write_str("restart_reminder"),
                Self::CancelIncident => f.write_str("cancel_incident"),
                Self::DeleteMessage => f.write_str("delete_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackMessageTaskParamsVariant1ActionablesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_summary" => Ok(Self::UpdateSummary),
                "update_status" => Ok(Self::UpdateStatus),
                "archive_channel" => Ok(Self::ArchiveChannel),
                "manage_incident_roles" => Ok(Self::ManageIncidentRoles),
                "update_incident" => Ok(Self::UpdateIncident),
                "all_commands" => Ok(Self::AllCommands),
                "leave_feedback" => Ok(Self::LeaveFeedback),
                "manage_form_fields" => Ok(Self::ManageFormFields),
                "manage_action_items" => Ok(Self::ManageActionItems),
                "view_tasks" => Ok(Self::ViewTasks),
                "add_pagerduty_responders" => Ok(Self::AddPagerdutyResponders),
                "add_opsgenie_responders" => Ok(Self::AddOpsgenieResponders),
                "add_victor_ops_responders" => Ok(Self::AddVictorOpsResponders),
                "update_status_page" => Ok(Self::UpdateStatusPage),
                "pause_reminder" => Ok(Self::PauseReminder),
                "snooze_reminder" => Ok(Self::SnoozeReminder),
                "restart_reminder" => Ok(Self::RestartReminder),
                "cancel_incident" => Ok(Self::CancelIncident),
                "delete_message" => Ok(Self::DeleteMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for SendSlackMessageTaskParamsVariant1ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackMessageTaskParamsVariant1ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackMessageTaskParamsVariant1ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackMessageTaskParamsVariant1ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant1ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackMessageTaskParamsVariant1ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant1ChannelsItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant1ChannelsItem {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant1SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant1SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant1SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackMessageTaskParamsVariant1SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant1SlackUsersItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant1SlackUsersItem {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant1TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_slack_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackMessageTaskParamsVariant1TaskType {
        #[serde(rename = "send_slack_message")]
        SendSlackMessage,
    }
    impl ::std::fmt::Display for SendSlackMessageTaskParamsVariant1TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSlackMessage => f.write_str("send_slack_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackMessageTaskParamsVariant1TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_slack_message" => Ok(Self::SendSlackMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSlackMessageTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackMessageTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackMessageTaskParamsVariant1TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackMessageTaskParamsVariant2ActionablesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_summary",
    ///    "update_status",
    ///    "archive_channel",
    ///    "manage_incident_roles",
    ///    "update_incident",
    ///    "all_commands",
    ///    "leave_feedback",
    ///    "manage_form_fields",
    ///    "manage_action_items",
    ///    "view_tasks",
    ///    "add_pagerduty_responders",
    ///    "add_opsgenie_responders",
    ///    "add_victor_ops_responders",
    ///    "update_status_page",
    ///    "pause_reminder",
    ///    "snooze_reminder",
    ///    "restart_reminder",
    ///    "cancel_incident",
    ///    "delete_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackMessageTaskParamsVariant2ActionablesItem {
        #[serde(rename = "update_summary")]
        UpdateSummary,
        #[serde(rename = "update_status")]
        UpdateStatus,
        #[serde(rename = "archive_channel")]
        ArchiveChannel,
        #[serde(rename = "manage_incident_roles")]
        ManageIncidentRoles,
        #[serde(rename = "update_incident")]
        UpdateIncident,
        #[serde(rename = "all_commands")]
        AllCommands,
        #[serde(rename = "leave_feedback")]
        LeaveFeedback,
        #[serde(rename = "manage_form_fields")]
        ManageFormFields,
        #[serde(rename = "manage_action_items")]
        ManageActionItems,
        #[serde(rename = "view_tasks")]
        ViewTasks,
        #[serde(rename = "add_pagerduty_responders")]
        AddPagerdutyResponders,
        #[serde(rename = "add_opsgenie_responders")]
        AddOpsgenieResponders,
        #[serde(rename = "add_victor_ops_responders")]
        AddVictorOpsResponders,
        #[serde(rename = "update_status_page")]
        UpdateStatusPage,
        #[serde(rename = "pause_reminder")]
        PauseReminder,
        #[serde(rename = "snooze_reminder")]
        SnoozeReminder,
        #[serde(rename = "restart_reminder")]
        RestartReminder,
        #[serde(rename = "cancel_incident")]
        CancelIncident,
        #[serde(rename = "delete_message")]
        DeleteMessage,
    }
    impl ::std::fmt::Display for SendSlackMessageTaskParamsVariant2ActionablesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateSummary => f.write_str("update_summary"),
                Self::UpdateStatus => f.write_str("update_status"),
                Self::ArchiveChannel => f.write_str("archive_channel"),
                Self::ManageIncidentRoles => f.write_str("manage_incident_roles"),
                Self::UpdateIncident => f.write_str("update_incident"),
                Self::AllCommands => f.write_str("all_commands"),
                Self::LeaveFeedback => f.write_str("leave_feedback"),
                Self::ManageFormFields => f.write_str("manage_form_fields"),
                Self::ManageActionItems => f.write_str("manage_action_items"),
                Self::ViewTasks => f.write_str("view_tasks"),
                Self::AddPagerdutyResponders => f.write_str("add_pagerduty_responders"),
                Self::AddOpsgenieResponders => f.write_str("add_opsgenie_responders"),
                Self::AddVictorOpsResponders => f.write_str("add_victor_ops_responders"),
                Self::UpdateStatusPage => f.write_str("update_status_page"),
                Self::PauseReminder => f.write_str("pause_reminder"),
                Self::SnoozeReminder => f.write_str("snooze_reminder"),
                Self::RestartReminder => f.write_str("restart_reminder"),
                Self::CancelIncident => f.write_str("cancel_incident"),
                Self::DeleteMessage => f.write_str("delete_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackMessageTaskParamsVariant2ActionablesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_summary" => Ok(Self::UpdateSummary),
                "update_status" => Ok(Self::UpdateStatus),
                "archive_channel" => Ok(Self::ArchiveChannel),
                "manage_incident_roles" => Ok(Self::ManageIncidentRoles),
                "update_incident" => Ok(Self::UpdateIncident),
                "all_commands" => Ok(Self::AllCommands),
                "leave_feedback" => Ok(Self::LeaveFeedback),
                "manage_form_fields" => Ok(Self::ManageFormFields),
                "manage_action_items" => Ok(Self::ManageActionItems),
                "view_tasks" => Ok(Self::ViewTasks),
                "add_pagerduty_responders" => Ok(Self::AddPagerdutyResponders),
                "add_opsgenie_responders" => Ok(Self::AddOpsgenieResponders),
                "add_victor_ops_responders" => Ok(Self::AddVictorOpsResponders),
                "update_status_page" => Ok(Self::UpdateStatusPage),
                "pause_reminder" => Ok(Self::PauseReminder),
                "snooze_reminder" => Ok(Self::SnoozeReminder),
                "restart_reminder" => Ok(Self::RestartReminder),
                "cancel_incident" => Ok(Self::CancelIncident),
                "delete_message" => Ok(Self::DeleteMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for SendSlackMessageTaskParamsVariant2ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackMessageTaskParamsVariant2ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackMessageTaskParamsVariant2ActionablesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSlackMessageTaskParamsVariant2ChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant2ChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackMessageTaskParamsVariant2ChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant2ChannelsItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant2ChannelsItem {
            Default::default()
        }
    }
    ///A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "A hash where [id] is the task id of the parent task that sent a message, and [name] is the name of the parent task",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant2SlackUserGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant2SlackUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSlackMessageTaskParamsVariant2SlackUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SendSlackMessageTaskParamsVariant2SlackUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SendSlackMessageTaskParamsVariant2SlackUsersItem {
        pub fn builder() -> builder::SendSlackMessageTaskParamsVariant2SlackUsersItem {
            Default::default()
        }
    }
    ///`SendSlackMessageTaskParamsVariant2TaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_slack_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSlackMessageTaskParamsVariant2TaskType {
        #[serde(rename = "send_slack_message")]
        SendSlackMessage,
    }
    impl ::std::fmt::Display for SendSlackMessageTaskParamsVariant2TaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSlackMessage => f.write_str("send_slack_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendSlackMessageTaskParamsVariant2TaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_slack_message" => Ok(Self::SendSlackMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSlackMessageTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendSlackMessageTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendSlackMessageTaskParamsVariant2TaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendSmsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "content",
    ///    "name",
    ///    "phone_numbers"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The SMS message",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name",
    ///      "type": "string"
    ///    },
    ///    "phone_numbers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "A recipient phone number",
    ///        "examples": [
    ///          [
    ///            "14150001111"
    ///          ]
    ///        ],
    ///        "type": "string"
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_sms"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendSmsTaskParams {
        ///The SMS message
        pub content: ::std::string::String,
        ///The name
        pub name: ::std::string::String,
        pub phone_numbers: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SendSmsTaskParamsTaskType>,
    }
    impl SendSmsTaskParams {
        pub fn builder() -> builder::SendSmsTaskParams {
            Default::default()
        }
    }
    ///`SendSmsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_sms"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendSmsTaskParamsTaskType {
        #[serde(rename = "send_sms")]
        SendSms,
    }
    impl ::std::fmt::Display for SendSmsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendSms => f.write_str("send_sms"),
            }
        }
    }
    impl ::std::str::FromStr for SendSmsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_sms" => Ok(Self::SendSms),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendSmsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SendSmsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SendSmsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SendWhatsappMessageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "content",
    ///    "name",
    ///    "phone_numbers"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The WhatsApp message",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name",
    ///      "type": "string"
    ///    },
    ///    "phone_numbers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "A recipient phone number",
    ///        "examples": [
    ///          [
    ///            "14150001111"
    ///          ]
    ///        ],
    ///        "type": "string"
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "send_whatsapp_message"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SendWhatsappMessageTaskParams {
        ///The WhatsApp message
        pub content: ::std::string::String,
        ///The name
        pub name: ::std::string::String,
        pub phone_numbers: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SendWhatsappMessageTaskParamsTaskType>,
    }
    impl SendWhatsappMessageTaskParams {
        pub fn builder() -> builder::SendWhatsappMessageTaskParams {
            Default::default()
        }
    }
    ///`SendWhatsappMessageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "send_whatsapp_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SendWhatsappMessageTaskParamsTaskType {
        #[serde(rename = "send_whatsapp_message")]
        SendWhatsappMessage,
    }
    impl ::std::fmt::Display for SendWhatsappMessageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SendWhatsappMessage => f.write_str("send_whatsapp_message"),
            }
        }
    }
    impl ::std::str::FromStr for SendWhatsappMessageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "send_whatsapp_message" => Ok(Self::SendWhatsappMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SendWhatsappMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SendWhatsappMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SendWhatsappMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Service`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "alert_broadcast_channel": {
    ///      "description": "Slack channel to broadcast alerts to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "alert_broadcast_enabled": {
    ///      "description": "Enable alerts to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The alert urgency id of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_address": {
    ///      "description": "Email generated to send alerts to",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_enabled": {
    ///      "description": "Enable alerts through email",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "Environments associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The escalation policy id of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_repository_branch": {
    ///      "description": "The GitHub repository branch associated to this service. eg: main",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_repository_name": {
    ///      "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_repository_branch": {
    ///      "description": "The GitLab repository branch associated to this service. eg: main",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_repository_name": {
    ///      "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_broadcast_channel": {
    ///      "description": "Slack channel to broadcast incidents to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_broadcast_enabled": {
    ///      "description": "Enable incidents to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "kubernetes_deployment_name": {
    ///      "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the service",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails attached to the service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie service id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owner Teams associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_ids": {
    ///      "description": "Owner Users associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty service id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the service",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this service.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Services dependent on this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the service",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Service {
        ///Slack channel to broadcast alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_channel: ::std::option::Option<ServiceAlertBroadcastChannel>,
        ///Enable alerts to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_enabled: ::std::option::Option<bool>,
        ///The alert urgency id of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Email generated to send alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_address: ::std::option::Option<::std::string::String>,
        ///Enable alerts through email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_enabled: ::std::option::Option<bool>,
        ///The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Environments associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The escalation policy id of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The external id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///The GitHub repository branch associated to this service. eg: main
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_repository_branch: ::std::option::Option<::std::string::String>,
        ///The GitHub repository name associated to this service. eg: rootlyhq/my-service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_repository_name: ::std::option::Option<::std::string::String>,
        ///The GitLab repository branch associated to this service. eg: main
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_repository_branch: ::std::option::Option<::std::string::String>,
        ///The GitLab repository name associated to this service. eg: rootlyhq/my-service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_repository_name: ::std::option::Option<::std::string::String>,
        ///Slack channel to broadcast incidents to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_channel: ::std::option::Option<
            ServiceIncidentBroadcastChannel,
        >,
        ///Enable incidents to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_enabled: ::std::option::Option<bool>,
        ///The Kubernetes deployment name associated to this service. eg: namespace/deployment-name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kubernetes_deployment_name: ::std::option::Option<::std::string::String>,
        ///The name of the service
        pub name: ::std::string::String,
        ///Emails attached to the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie service id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///Owner Teams associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Owner Users associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The PagerDuty service id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///Position of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this service.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub properties: ::std::option::Option<::std::vec::Vec<ServicePropertiesItem>>,
        ///The public description of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///Services dependent on this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Service Now CI sys id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<ServiceSlackAliasesItem>,
        >,
        ///Slack Channels associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<ServiceSlackChannelsItem>,
        >,
        ///The slug of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Service {
        pub fn builder() -> builder::Service {
            Default::default()
        }
    }
    ///Slack channel to broadcast alerts to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast alerts to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceAlertBroadcastChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ServiceAlertBroadcastChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ServiceAlertBroadcastChannel {
        pub fn builder() -> builder::ServiceAlertBroadcastChannel {
            Default::default()
        }
    }
    ///Slack channel to broadcast incidents to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast incidents to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceIncidentBroadcastChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ServiceIncidentBroadcastChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl ServiceIncidentBroadcastChannel {
        pub fn builder() -> builder::ServiceIncidentBroadcastChannel {
            Default::default()
        }
    }
    ///`ServiceList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/service"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the service",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "services"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceList {
        pub data: ::std::vec::Vec<ServiceListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl ServiceList {
        pub fn builder() -> builder::ServiceList {
            Default::default()
        }
    }
    ///`ServiceListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/service"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the service",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceListDataItem {
        pub attributes: Service,
        ///Unique ID of the service
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ServiceListDataItemType,
    }
    impl ServiceListDataItem {
        pub fn builder() -> builder::ServiceListDataItem {
            Default::default()
        }
    }
    ///`ServiceListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ServiceListDataItemType {
        #[serde(rename = "services")]
        Services,
    }
    impl ::std::fmt::Display for ServiceListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Services => f.write_str("services"),
            }
        }
    }
    impl ::std::str::FromStr for ServiceListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "services" => Ok(Self::Services),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ServiceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ServiceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ServiceListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServicePropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl ServicePropertiesItem {
        pub fn builder() -> builder::ServicePropertiesItem {
            Default::default()
        }
    }
    ///`ServiceResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/service"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the service",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "services"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceResponse {
        pub data: ServiceResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ServiceResponse {
        pub fn builder() -> builder::ServiceResponse {
            Default::default()
        }
    }
    ///`ServiceResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/service"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the service",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceResponseData {
        pub attributes: Service,
        ///Unique ID of the service
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ServiceResponseDataType,
    }
    impl ServiceResponseData {
        pub fn builder() -> builder::ServiceResponseData {
            Default::default()
        }
    }
    ///`ServiceResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ServiceResponseDataType {
        #[serde(rename = "services")]
        Services,
    }
    impl ::std::fmt::Display for ServiceResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Services => f.write_str("services"),
            }
        }
    }
    impl ::std::str::FromStr for ServiceResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "services" => Ok(Self::Services),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ServiceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ServiceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ServiceResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ServiceSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl ServiceSlackAliasesItem {
        pub fn builder() -> builder::ServiceSlackAliasesItem {
            Default::default()
        }
    }
    ///`ServiceSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ServiceSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl ServiceSlackChannelsItem {
        pub fn builder() -> builder::ServiceSlackChannelsItem {
            Default::default()
        }
    }
    ///`Severity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the severity",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the severity",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the severity",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the severity",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "severity": {
    ///      "description": "The severity of the severity",
    ///      "type": "string",
    ///      "enum": [
    ///        "critical",
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the severity",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Severity {
        ///The hex color of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the severity
        pub name: ::std::string::String,
        ///Emails to attach to the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The severity of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity: ::std::option::Option<SeveritySeverity>,
        ///Slack Aliases associated with this severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<SeveritySlackAliasesItem>,
        >,
        ///Slack Channels associated with this severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<SeveritySlackChannelsItem>,
        >,
        ///The slug of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Severity {
        pub fn builder() -> builder::Severity {
            Default::default()
        }
    }
    ///`SeverityList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/severity"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the severity",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "severities"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SeverityList {
        pub data: ::std::vec::Vec<SeverityListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl SeverityList {
        pub fn builder() -> builder::SeverityList {
            Default::default()
        }
    }
    ///`SeverityListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/severity"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the severity",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SeverityListDataItem {
        pub attributes: Severity,
        ///Unique ID of the severity
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SeverityListDataItemType,
    }
    impl SeverityListDataItem {
        pub fn builder() -> builder::SeverityListDataItem {
            Default::default()
        }
    }
    ///`SeverityListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SeverityListDataItemType {
        #[serde(rename = "severities")]
        Severities,
    }
    impl ::std::fmt::Display for SeverityListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
            }
        }
    }
    impl ::std::str::FromStr for SeverityListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SeverityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SeverityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SeverityListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SeverityResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/severity"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the severity",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "severities"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SeverityResponse {
        pub data: SeverityResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl SeverityResponse {
        pub fn builder() -> builder::SeverityResponse {
            Default::default()
        }
    }
    ///`SeverityResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/severity"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the severity",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SeverityResponseData {
        pub attributes: Severity,
        ///Unique ID of the severity
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SeverityResponseDataType,
    }
    impl SeverityResponseData {
        pub fn builder() -> builder::SeverityResponseData {
            Default::default()
        }
    }
    ///`SeverityResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SeverityResponseDataType {
        #[serde(rename = "severities")]
        Severities,
    }
    impl ::std::fmt::Display for SeverityResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
            }
        }
    }
    impl ::std::str::FromStr for SeverityResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SeverityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SeverityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SeverityResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The severity of the severity
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The severity of the severity",
    ///  "type": "string",
    ///  "enum": [
    ///    "critical",
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SeveritySeverity {
        #[serde(rename = "critical")]
        Critical,
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for SeveritySeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Critical => f.write_str("critical"),
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for SeveritySeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "critical" => Ok(Self::Critical),
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SeveritySeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SeveritySeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SeveritySeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SeveritySlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SeveritySlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl SeveritySlackAliasesItem {
        pub fn builder() -> builder::SeveritySlackAliasesItem {
            Default::default()
        }
    }
    ///`SeveritySlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SeveritySlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl SeveritySlackChannelsItem {
        pub fn builder() -> builder::SeveritySlackChannelsItem {
            Default::default()
        }
    }
    ///`Shift`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ends_at",
    ///    "is_override",
    ///    "is_shadow",
    ///    "rotation_id",
    ///    "schedule_id",
    ///    "starts_at"
    ///  ],
    ///  "properties": {
    ///    "ends_at": {
    ///      "description": "End datetime of shift",
    ///      "type": "string"
    ///    },
    ///    "is_override": {
    ///      "description": "Denotes shift is an override shift",
    ///      "type": "boolean"
    ///    },
    ///    "is_shadow": {
    ///      "description": "Denotes shift is a shadow shift",
    ///      "type": "boolean"
    ///    },
    ///    "rotation_id": {
    ///      "description": "ID of rotation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "schedule_id": {
    ///      "description": "ID of schedule",
    ///      "type": "string"
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of shift",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "ID of user on shift",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Shift {
        ///End datetime of shift
        pub ends_at: ::std::string::String,
        ///Denotes shift is an override shift
        pub is_override: bool,
        ///Denotes shift is a shadow shift
        pub is_shadow: bool,
        ///ID of rotation
        pub rotation_id: ::std::option::Option<::std::string::String>,
        ///ID of schedule
        pub schedule_id: ::std::string::String,
        ///Start datetime of shift
        pub starts_at: ::std::string::String,
        ///ID of user on shift
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl Shift {
        pub fn builder() -> builder::Shift {
            Default::default()
        }
    }
    ///`ShiftList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/shift"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the shift",
    ///            "type": "string"
    ///          },
    ///          "relationships": {
    ///            "$ref": "#/components/schemas/shift_relationships"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "shifts"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftList {
        pub data: ::std::vec::Vec<ShiftListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl ShiftList {
        pub fn builder() -> builder::ShiftList {
            Default::default()
        }
    }
    ///`ShiftListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/shift"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the shift",
    ///      "type": "string"
    ///    },
    ///    "relationships": {
    ///      "$ref": "#/components/schemas/shift_relationships"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shifts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftListDataItem {
        pub attributes: Shift,
        ///Unique ID of the shift
        pub id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub relationships: ::std::option::Option<ShiftRelationships>,
        #[serde(rename = "type")]
        pub type_: ShiftListDataItemType,
    }
    impl ShiftListDataItem {
        pub fn builder() -> builder::ShiftListDataItem {
            Default::default()
        }
    }
    ///`ShiftListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shifts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ShiftListDataItemType {
        #[serde(rename = "shifts")]
        Shifts,
    }
    impl ::std::fmt::Display for ShiftListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Shifts => f.write_str("shifts"),
            }
        }
    }
    impl ::std::str::FromStr for ShiftListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shifts" => Ok(Self::Shifts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ShiftListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for ShiftListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for ShiftListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ShiftOverride`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_by_user_id",
    ///    "shift_id"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "created_by_user_id": {
    ///      "description": "User who created the override",
    ///      "type": "integer"
    ///    },
    ///    "shift_id": {
    ///      "description": "ID of shift",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftOverride {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///User who created the override
        pub created_by_user_id: i64,
        ///ID of shift
        pub shift_id: ::std::string::String,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl ShiftOverride {
        pub fn builder() -> builder::ShiftOverride {
            Default::default()
        }
    }
    ///`ShiftOverrideResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/shift_override"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the shift override",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "shift_override"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftOverrideResponse {
        pub data: ShiftOverrideResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl ShiftOverrideResponse {
        pub fn builder() -> builder::ShiftOverrideResponse {
            Default::default()
        }
    }
    ///`ShiftOverrideResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/shift_override"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the shift override",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shift_override"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftOverrideResponseData {
        pub attributes: ShiftOverride,
        ///Unique ID of the shift override
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: ShiftOverrideResponseDataType,
    }
    impl ShiftOverrideResponseData {
        pub fn builder() -> builder::ShiftOverrideResponseData {
            Default::default()
        }
    }
    ///`ShiftOverrideResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shift_override"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ShiftOverrideResponseDataType {
        #[serde(rename = "shift_override")]
        ShiftOverride,
    }
    impl ::std::fmt::Display for ShiftOverrideResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ShiftOverride => f.write_str("shift_override"),
            }
        }
    }
    impl ::std::str::FromStr for ShiftOverrideResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shift_override" => Ok(Self::ShiftOverride),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ShiftOverrideResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ShiftOverrideResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ShiftOverrideResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ShiftRelationships`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "assignee": {
    ///      "description": "Assignee can be either a User or Schedule",
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "shift_override": {
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "shift_overrides"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "user": {
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "users"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationships {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignee: ::std::option::Option<ShiftRelationshipsAssignee>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_override: ::std::option::Option<ShiftRelationshipsShiftOverride>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user: ::std::option::Option<ShiftRelationshipsUser>,
    }
    impl ::std::default::Default for ShiftRelationships {
        fn default() -> Self {
            Self {
                assignee: Default::default(),
                shift_override: Default::default(),
                user: Default::default(),
            }
        }
    }
    impl ShiftRelationships {
        pub fn builder() -> builder::ShiftRelationships {
            Default::default()
        }
    }
    ///Assignee can be either a User or Schedule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Assignee can be either a User or Schedule",
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationshipsAssignee {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<ShiftRelationshipsAssigneeData>,
    }
    impl ::std::default::Default for ShiftRelationshipsAssignee {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl ShiftRelationshipsAssignee {
        pub fn builder() -> builder::ShiftRelationshipsAssignee {
            Default::default()
        }
    }
    ///`ShiftRelationshipsAssigneeData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationshipsAssigneeData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for ShiftRelationshipsAssigneeData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl ShiftRelationshipsAssigneeData {
        pub fn builder() -> builder::ShiftRelationshipsAssigneeData {
            Default::default()
        }
    }
    ///`ShiftRelationshipsShiftOverride`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "shift_overrides"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationshipsShiftOverride {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<ShiftRelationshipsShiftOverrideData>,
    }
    impl ::std::default::Default for ShiftRelationshipsShiftOverride {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl ShiftRelationshipsShiftOverride {
        pub fn builder() -> builder::ShiftRelationshipsShiftOverride {
            Default::default()
        }
    }
    ///`ShiftRelationshipsShiftOverrideData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shift_overrides"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationshipsShiftOverrideData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<ShiftRelationshipsShiftOverrideDataType>,
    }
    impl ::std::default::Default for ShiftRelationshipsShiftOverrideData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl ShiftRelationshipsShiftOverrideData {
        pub fn builder() -> builder::ShiftRelationshipsShiftOverrideData {
            Default::default()
        }
    }
    ///`ShiftRelationshipsShiftOverrideDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shift_overrides"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ShiftRelationshipsShiftOverrideDataType {
        #[serde(rename = "shift_overrides")]
        ShiftOverrides,
    }
    impl ::std::fmt::Display for ShiftRelationshipsShiftOverrideDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ShiftOverrides => f.write_str("shift_overrides"),
            }
        }
    }
    impl ::std::str::FromStr for ShiftRelationshipsShiftOverrideDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shift_overrides" => Ok(Self::ShiftOverrides),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ShiftRelationshipsShiftOverrideDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ShiftRelationshipsShiftOverrideDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ShiftRelationshipsShiftOverrideDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`ShiftRelationshipsUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "users"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationshipsUser {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<ShiftRelationshipsUserData>,
    }
    impl ::std::default::Default for ShiftRelationshipsUser {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl ShiftRelationshipsUser {
        pub fn builder() -> builder::ShiftRelationshipsUser {
            Default::default()
        }
    }
    ///`ShiftRelationshipsUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct ShiftRelationshipsUserData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<ShiftRelationshipsUserDataType>,
    }
    impl ::std::default::Default for ShiftRelationshipsUserData {
        fn default() -> Self {
            Self {
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl ShiftRelationshipsUserData {
        pub fn builder() -> builder::ShiftRelationshipsUserData {
            Default::default()
        }
    }
    ///`ShiftRelationshipsUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum ShiftRelationshipsUserDataType {
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display for ShiftRelationshipsUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr for ShiftRelationshipsUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for ShiftRelationshipsUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for ShiftRelationshipsUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for ShiftRelationshipsUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SimpleTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "trigger_type"
    ///  ],
    ///  "properties": {
    ///    "trigger_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "simple"
    ///      ]
    ///    },
    ///    "triggers": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Actions that trigger the workflow",
    ///        "type": "string",
    ///        "enum": [
    ///          "slack_command"
    ///        ]
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SimpleTriggerParams {
        pub trigger_type: SimpleTriggerParamsTriggerType,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub triggers: ::std::vec::Vec<SimpleTriggerParamsTriggersItem>,
    }
    impl SimpleTriggerParams {
        pub fn builder() -> builder::SimpleTriggerParams {
            Default::default()
        }
    }
    ///`SimpleTriggerParamsTriggerType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "simple"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SimpleTriggerParamsTriggerType {
        #[serde(rename = "simple")]
        Simple,
    }
    impl ::std::fmt::Display for SimpleTriggerParamsTriggerType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Simple => f.write_str("simple"),
            }
        }
    }
    impl ::std::str::FromStr for SimpleTriggerParamsTriggerType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "simple" => Ok(Self::Simple),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SimpleTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SimpleTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SimpleTriggerParamsTriggerType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Actions that trigger the workflow
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Actions that trigger the workflow",
    ///  "type": "string",
    ///  "enum": [
    ///    "slack_command"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SimpleTriggerParamsTriggersItem {
        #[serde(rename = "slack_command")]
        SlackCommand,
    }
    impl ::std::fmt::Display for SimpleTriggerParamsTriggersItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SlackCommand => f.write_str("slack_command"),
            }
        }
    }
    impl ::std::str::FromStr for SimpleTriggerParamsTriggersItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "slack_command" => Ok(Self::SlackCommand),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SimpleTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SimpleTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SimpleTriggerParamsTriggersItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Sla`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "assignment_deadline_days",
    ///    "assignment_deadline_parent_status",
    ///    "completion_deadline_days",
    ///    "completion_deadline_parent_status",
    ///    "condition_match_type",
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "assignment_deadline_days": {
    ///      "description": "Number of days for the assignment deadline",
    ///      "type": "integer"
    ///    },
    ///    "assignment_deadline_parent_status": {
    ///      "description": "The incident parent status that triggers the assignment deadline",
    ///      "type": "string"
    ///    },
    ///    "assignment_deadline_sub_status_id": {
    ///      "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "assignment_skip_weekends": {
    ///      "description": "Whether to skip weekends when calculating the assignment deadline",
    ///      "type": "boolean"
    ///    },
    ///    "completion_deadline_days": {
    ///      "description": "Number of days for the completion deadline",
    ///      "type": "integer"
    ///    },
    ///    "completion_deadline_parent_status": {
    ///      "description": "The incident parent status that triggers the completion deadline",
    ///      "type": "string"
    ///    },
    ///    "completion_deadline_sub_status_id": {
    ///      "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "completion_skip_weekends": {
    ///      "description": "Whether to skip weekends when calculating the completion deadline",
    ///      "type": "boolean"
    ///    },
    ///    "condition_match_type": {
    ///      "description": "Whether all or any conditions must match",
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "description": "Conditions that determine which incidents this SLA applies to",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "conditionable_type": {
    ///            "description": "The type of condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "SLAs::BuiltInFieldCondition",
    ///              "SLAs::CustomFieldCondition"
    ///            ]
    ///          },
    ///          "form_field_id": {
    ///            "description": "The ID of the form field (for custom field conditions)",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the condition",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "operator": {
    ///            "description": "The comparison operator",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition",
    ///            "type": "integer"
    ///          },
    ///          "property": {
    ///            "description": "The property to evaluate (for built-in field conditions)",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "values": {
    ///            "description": "The values to compare against",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "A description of the SLA",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "entity_type": {
    ///      "description": "The entity type this SLA applies to",
    ///      "type": "string",
    ///      "enum": [
    ///        "follow_up"
    ///      ]
    ///    },
    ///    "manager_role_id": {
    ///      "description": "The ID of the manager incident role. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "manager_user_id": {
    ///      "description": "The ID of the manager user. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the SLA",
    ///      "type": "string"
    ///    },
    ///    "notification_configurations": {
    ///      "description": "Notification timing configurations",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "created_at": {
    ///            "description": "Date of creation",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the notification configuration",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "offset_days": {
    ///            "description": "Number of days offset from the deadline",
    ///            "type": "integer"
    ///          },
    ///          "offset_type": {
    ///            "description": "When to send the notification relative to the deadline",
    ///            "type": "string",
    ///            "enum": [
    ///              "before_due",
    ///              "when_due",
    ///              "after_due"
    ///            ]
    ///          },
    ///          "updated_at": {
    ///            "description": "Date of last update",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the SLA for ordering",
    ///      "type": "integer"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the SLA",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Sla {
        ///Number of days for the assignment deadline
        pub assignment_deadline_days: i64,
        ///The incident parent status that triggers the assignment deadline
        pub assignment_deadline_parent_status: ::std::string::String,
        ///Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_deadline_sub_status_id: ::std::option::Option<::uuid::Uuid>,
        ///Whether to skip weekends when calculating the assignment deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_skip_weekends: ::std::option::Option<bool>,
        ///Number of days for the completion deadline
        pub completion_deadline_days: i64,
        ///The incident parent status that triggers the completion deadline
        pub completion_deadline_parent_status: ::std::string::String,
        ///Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_deadline_sub_status_id: ::std::option::Option<::uuid::Uuid>,
        ///Whether to skip weekends when calculating the completion deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_skip_weekends: ::std::option::Option<bool>,
        ///Whether all or any conditions must match
        pub condition_match_type: SlaConditionMatchType,
        ///Conditions that determine which incidents this SLA applies to
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<SlaConditionsItem>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///A description of the SLA
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The entity type this SLA applies to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub entity_type: ::std::option::Option<SlaEntityType>,
        ///The ID of the manager incident role. Exactly one of `manager_role_id` or `manager_user_id` must be provided.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub manager_role_id: ::std::option::Option<::uuid::Uuid>,
        ///The ID of the manager user. Exactly one of `manager_role_id` or `manager_user_id` must be provided.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub manager_user_id: ::std::option::Option<i64>,
        ///The name of the SLA
        pub name: ::std::string::String,
        ///Notification timing configurations
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub notification_configurations: ::std::vec::Vec<
            SlaNotificationConfigurationsItem,
        >,
        ///Position of the SLA for ordering
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The slug of the SLA
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl Sla {
        pub fn builder() -> builder::Sla {
            Default::default()
        }
    }
    ///Whether all or any conditions must match
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Whether all or any conditions must match",
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SlaConditionMatchType {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
    }
    impl ::std::fmt::Display for SlaConditionMatchType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
            }
        }
    }
    impl ::std::str::FromStr for SlaConditionMatchType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SlaConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SlaConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SlaConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SlaConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "conditionable_type": {
    ///      "description": "The type of condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "SLAs::BuiltInFieldCondition",
    ///        "SLAs::CustomFieldCondition"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field (for custom field conditions)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the condition",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "operator": {
    ///      "description": "The comparison operator",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition",
    ///      "type": "integer"
    ///    },
    ///    "property": {
    ///      "description": "The property to evaluate (for built-in field conditions)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "values": {
    ///      "description": "The values to compare against",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SlaConditionsItem {
        ///The type of condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            SlaConditionsItemConditionableType,
        >,
        ///The ID of the form field (for custom field conditions)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::uuid::Uuid>,
        ///Unique ID of the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The comparison operator
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<::std::string::String>,
        ///The position of the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The property to evaluate (for built-in field conditions)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property: ::std::option::Option<::std::string::String>,
        ///The values to compare against
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub values: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default for SlaConditionsItem {
        fn default() -> Self {
            Self {
                conditionable_type: Default::default(),
                form_field_id: Default::default(),
                id: Default::default(),
                operator: Default::default(),
                position: Default::default(),
                property: Default::default(),
                values: Default::default(),
            }
        }
    }
    impl SlaConditionsItem {
        pub fn builder() -> builder::SlaConditionsItem {
            Default::default()
        }
    }
    ///The type of condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "SLAs::BuiltInFieldCondition",
    ///    "SLAs::CustomFieldCondition"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SlaConditionsItemConditionableType {
        #[serde(rename = "SLAs::BuiltInFieldCondition")]
        SlAsBuiltInFieldCondition,
        #[serde(rename = "SLAs::CustomFieldCondition")]
        SlAsCustomFieldCondition,
    }
    impl ::std::fmt::Display for SlaConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SlAsBuiltInFieldCondition => {
                    f.write_str("SLAs::BuiltInFieldCondition")
                }
                Self::SlAsCustomFieldCondition => {
                    f.write_str("SLAs::CustomFieldCondition")
                }
            }
        }
    }
    impl ::std::str::FromStr for SlaConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SLAs::BuiltInFieldCondition" => Ok(Self::SlAsBuiltInFieldCondition),
                "SLAs::CustomFieldCondition" => Ok(Self::SlAsCustomFieldCondition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SlaConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SlaConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SlaConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The entity type this SLA applies to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The entity type this SLA applies to",
    ///  "type": "string",
    ///  "enum": [
    ///    "follow_up"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SlaEntityType {
        #[serde(rename = "follow_up")]
        FollowUp,
    }
    impl ::std::fmt::Display for SlaEntityType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FollowUp => f.write_str("follow_up"),
            }
        }
    }
    impl ::std::str::FromStr for SlaEntityType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "follow_up" => Ok(Self::FollowUp),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SlaEntityType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SlaEntityType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SlaEntityType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SlaList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/sla"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the SLA",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "slas"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SlaList {
        pub data: ::std::vec::Vec<SlaListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl SlaList {
        pub fn builder() -> builder::SlaList {
            Default::default()
        }
    }
    ///`SlaListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/sla"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the SLA",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "slas"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SlaListDataItem {
        pub attributes: Sla,
        ///Unique ID of the SLA
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SlaListDataItemType,
    }
    impl SlaListDataItem {
        pub fn builder() -> builder::SlaListDataItem {
            Default::default()
        }
    }
    ///`SlaListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "slas"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SlaListDataItemType {
        #[serde(rename = "slas")]
        Slas,
    }
    impl ::std::fmt::Display for SlaListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Slas => f.write_str("slas"),
            }
        }
    }
    impl ::std::str::FromStr for SlaListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "slas" => Ok(Self::Slas),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SlaListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SlaListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SlaListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SlaNotificationConfigurationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the notification configuration",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "offset_days": {
    ///      "description": "Number of days offset from the deadline",
    ///      "type": "integer"
    ///    },
    ///    "offset_type": {
    ///      "description": "When to send the notification relative to the deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "before_due",
    ///        "when_due",
    ///        "after_due"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SlaNotificationConfigurationsItem {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Unique ID of the notification configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///Number of days offset from the deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub offset_days: ::std::option::Option<i64>,
        ///When to send the notification relative to the deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub offset_type: ::std::option::Option<
            SlaNotificationConfigurationsItemOffsetType,
        >,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SlaNotificationConfigurationsItem {
        fn default() -> Self {
            Self {
                created_at: Default::default(),
                id: Default::default(),
                offset_days: Default::default(),
                offset_type: Default::default(),
                updated_at: Default::default(),
            }
        }
    }
    impl SlaNotificationConfigurationsItem {
        pub fn builder() -> builder::SlaNotificationConfigurationsItem {
            Default::default()
        }
    }
    ///When to send the notification relative to the deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "When to send the notification relative to the deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "before_due",
    ///    "when_due",
    ///    "after_due"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SlaNotificationConfigurationsItemOffsetType {
        #[serde(rename = "before_due")]
        BeforeDue,
        #[serde(rename = "when_due")]
        WhenDue,
        #[serde(rename = "after_due")]
        AfterDue,
    }
    impl ::std::fmt::Display for SlaNotificationConfigurationsItemOffsetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::BeforeDue => f.write_str("before_due"),
                Self::WhenDue => f.write_str("when_due"),
                Self::AfterDue => f.write_str("after_due"),
            }
        }
    }
    impl ::std::str::FromStr for SlaNotificationConfigurationsItemOffsetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "before_due" => Ok(Self::BeforeDue),
                "when_due" => Ok(Self::WhenDue),
                "after_due" => Ok(Self::AfterDue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SlaNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SlaNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SlaNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SlaResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/sla"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the SLA",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "slas"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SlaResponse {
        pub data: SlaResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl SlaResponse {
        pub fn builder() -> builder::SlaResponse {
            Default::default()
        }
    }
    ///`SlaResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/sla"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the SLA",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "slas"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SlaResponseData {
        pub attributes: Sla,
        ///Unique ID of the SLA
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SlaResponseDataType,
    }
    impl SlaResponseData {
        pub fn builder() -> builder::SlaResponseData {
            Default::default()
        }
    }
    ///`SlaResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "slas"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SlaResponseDataType {
        #[serde(rename = "slas")]
        Slas,
    }
    impl ::std::fmt::Display for SlaResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Slas => f.write_str("slas"),
            }
        }
    }
    impl ::std::str::FromStr for SlaResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "slas" => Ok(Self::Slas),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SlaResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SlaResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SlaResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SnapshotDatadogGraphTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "past_duration"
    ///  ],
    ///  "properties": {
    ///    "dashboards": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "metric_queries": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "past_duration": {
    ///      "description": "in format '1 minute', '30 days', '3 months', etc",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "snapshot_datadog_graph"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotDatadogGraphTaskParams {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub dashboards: ::std::vec::Vec<SnapshotDatadogGraphTaskParamsDashboardsItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub metric_queries: ::std::vec::Vec<::std::string::String>,
        ///in format '1 minute', '30 days', '3 months', etc
        pub past_duration: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SnapshotDatadogGraphTaskParamsTaskType>,
    }
    impl SnapshotDatadogGraphTaskParams {
        pub fn builder() -> builder::SnapshotDatadogGraphTaskParams {
            Default::default()
        }
    }
    ///`SnapshotDatadogGraphTaskParamsDashboardsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotDatadogGraphTaskParamsDashboardsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SnapshotDatadogGraphTaskParamsDashboardsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotDatadogGraphTaskParamsDashboardsItem {
        pub fn builder() -> builder::SnapshotDatadogGraphTaskParamsDashboardsItem {
            Default::default()
        }
    }
    ///`SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`SnapshotDatadogGraphTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "snapshot_datadog_graph"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SnapshotDatadogGraphTaskParamsTaskType {
        #[serde(rename = "snapshot_datadog_graph")]
        SnapshotDatadogGraph,
    }
    impl ::std::fmt::Display for SnapshotDatadogGraphTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SnapshotDatadogGraph => f.write_str("snapshot_datadog_graph"),
            }
        }
    }
    impl ::std::str::FromStr for SnapshotDatadogGraphTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "snapshot_datadog_graph" => Ok(Self::SnapshotDatadogGraph),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SnapshotDatadogGraphTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SnapshotDatadogGraphTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SnapshotDatadogGraphTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SnapshotGrafanaDashboardTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "dashboards"
    ///  ],
    ///  "properties": {
    ///    "dashboards": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "snapshot_grafana_dashboard"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotGrafanaDashboardTaskParams {
        pub dashboards: ::std::vec::Vec<
            SnapshotGrafanaDashboardTaskParamsDashboardsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SnapshotGrafanaDashboardTaskParamsTaskType>,
    }
    impl SnapshotGrafanaDashboardTaskParams {
        pub fn builder() -> builder::SnapshotGrafanaDashboardTaskParams {
            Default::default()
        }
    }
    ///`SnapshotGrafanaDashboardTaskParamsDashboardsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotGrafanaDashboardTaskParamsDashboardsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SnapshotGrafanaDashboardTaskParamsDashboardsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotGrafanaDashboardTaskParamsDashboardsItem {
        pub fn builder() -> builder::SnapshotGrafanaDashboardTaskParamsDashboardsItem {
            Default::default()
        }
    }
    ///`SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`SnapshotGrafanaDashboardTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "snapshot_grafana_dashboard"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SnapshotGrafanaDashboardTaskParamsTaskType {
        #[serde(rename = "snapshot_grafana_dashboard")]
        SnapshotGrafanaDashboard,
    }
    impl ::std::fmt::Display for SnapshotGrafanaDashboardTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SnapshotGrafanaDashboard => {
                    f.write_str("snapshot_grafana_dashboard")
                }
            }
        }
    }
    impl ::std::str::FromStr for SnapshotGrafanaDashboardTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "snapshot_grafana_dashboard" => Ok(Self::SnapshotGrafanaDashboard),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SnapshotGrafanaDashboardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SnapshotGrafanaDashboardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SnapshotGrafanaDashboardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SnapshotLookerLookTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "dashboards"
    ///  ],
    ///  "properties": {
    ///    "dashboards": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "snapshot_looker_look"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotLookerLookTaskParams {
        pub dashboards: ::std::vec::Vec<SnapshotLookerLookTaskParamsDashboardsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            SnapshotLookerLookTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SnapshotLookerLookTaskParamsTaskType>,
    }
    impl SnapshotLookerLookTaskParams {
        pub fn builder() -> builder::SnapshotLookerLookTaskParams {
            Default::default()
        }
    }
    ///`SnapshotLookerLookTaskParamsDashboardsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotLookerLookTaskParamsDashboardsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for SnapshotLookerLookTaskParamsDashboardsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotLookerLookTaskParamsDashboardsItem {
        pub fn builder() -> builder::SnapshotLookerLookTaskParamsDashboardsItem {
            Default::default()
        }
    }
    ///`SnapshotLookerLookTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`SnapshotLookerLookTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "snapshot_looker_look"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SnapshotLookerLookTaskParamsTaskType {
        #[serde(rename = "snapshot_looker_look")]
        SnapshotLookerLook,
    }
    impl ::std::fmt::Display for SnapshotLookerLookTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SnapshotLookerLook => f.write_str("snapshot_looker_look"),
            }
        }
    }
    impl ::std::str::FromStr for SnapshotLookerLookTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "snapshot_looker_look" => Ok(Self::SnapshotLookerLook),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SnapshotLookerLookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SnapshotLookerLookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SnapshotLookerLookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SnapshotNewRelicGraphTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "metric_query",
    ///    "metric_type"
    ///  ],
    ///  "properties": {
    ///    "metric_query": {
    ///      "type": "string"
    ///    },
    ///    "metric_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "APDEX",
    ///        "AREA",
    ///        "BAR",
    ///        "BASELINE",
    ///        "BILLBOARD",
    ///        "BULLET",
    ///        "EVENT_FEED",
    ///        "FUNNEL",
    ///        "HEATMAP",
    ///        "HISTOGRAM",
    ///        "LINE",
    ///        "PIE",
    ///        "SCATTER",
    ///        "STACKED_HORIZONTAL_BAR",
    ///        "TABLE",
    ///        "VERTICAL_BAR"
    ///      ]
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "snapshot_looker_graph"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotNewRelicGraphTaskParams {
        pub metric_query: ::std::string::String,
        pub metric_type: SnapshotNewRelicGraphTaskParamsMetricType,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<SnapshotNewRelicGraphTaskParamsTaskType>,
    }
    impl SnapshotNewRelicGraphTaskParams {
        pub fn builder() -> builder::SnapshotNewRelicGraphTaskParams {
            Default::default()
        }
    }
    ///`SnapshotNewRelicGraphTaskParamsMetricType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "APDEX",
    ///    "AREA",
    ///    "BAR",
    ///    "BASELINE",
    ///    "BILLBOARD",
    ///    "BULLET",
    ///    "EVENT_FEED",
    ///    "FUNNEL",
    ///    "HEATMAP",
    ///    "HISTOGRAM",
    ///    "LINE",
    ///    "PIE",
    ///    "SCATTER",
    ///    "STACKED_HORIZONTAL_BAR",
    ///    "TABLE",
    ///    "VERTICAL_BAR"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SnapshotNewRelicGraphTaskParamsMetricType {
        #[serde(rename = "APDEX")]
        Apdex,
        #[serde(rename = "AREA")]
        Area,
        #[serde(rename = "BAR")]
        Bar,
        #[serde(rename = "BASELINE")]
        Baseline,
        #[serde(rename = "BILLBOARD")]
        Billboard,
        #[serde(rename = "BULLET")]
        Bullet,
        #[serde(rename = "EVENT_FEED")]
        EventFeed,
        #[serde(rename = "FUNNEL")]
        Funnel,
        #[serde(rename = "HEATMAP")]
        Heatmap,
        #[serde(rename = "HISTOGRAM")]
        Histogram,
        #[serde(rename = "LINE")]
        Line,
        #[serde(rename = "PIE")]
        Pie,
        #[serde(rename = "SCATTER")]
        Scatter,
        #[serde(rename = "STACKED_HORIZONTAL_BAR")]
        StackedHorizontalBar,
        #[serde(rename = "TABLE")]
        Table,
        #[serde(rename = "VERTICAL_BAR")]
        VerticalBar,
    }
    impl ::std::fmt::Display for SnapshotNewRelicGraphTaskParamsMetricType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Apdex => f.write_str("APDEX"),
                Self::Area => f.write_str("AREA"),
                Self::Bar => f.write_str("BAR"),
                Self::Baseline => f.write_str("BASELINE"),
                Self::Billboard => f.write_str("BILLBOARD"),
                Self::Bullet => f.write_str("BULLET"),
                Self::EventFeed => f.write_str("EVENT_FEED"),
                Self::Funnel => f.write_str("FUNNEL"),
                Self::Heatmap => f.write_str("HEATMAP"),
                Self::Histogram => f.write_str("HISTOGRAM"),
                Self::Line => f.write_str("LINE"),
                Self::Pie => f.write_str("PIE"),
                Self::Scatter => f.write_str("SCATTER"),
                Self::StackedHorizontalBar => f.write_str("STACKED_HORIZONTAL_BAR"),
                Self::Table => f.write_str("TABLE"),
                Self::VerticalBar => f.write_str("VERTICAL_BAR"),
            }
        }
    }
    impl ::std::str::FromStr for SnapshotNewRelicGraphTaskParamsMetricType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "APDEX" => Ok(Self::Apdex),
                "AREA" => Ok(Self::Area),
                "BAR" => Ok(Self::Bar),
                "BASELINE" => Ok(Self::Baseline),
                "BILLBOARD" => Ok(Self::Billboard),
                "BULLET" => Ok(Self::Bullet),
                "EVENT_FEED" => Ok(Self::EventFeed),
                "FUNNEL" => Ok(Self::Funnel),
                "HEATMAP" => Ok(Self::Heatmap),
                "HISTOGRAM" => Ok(Self::Histogram),
                "LINE" => Ok(Self::Line),
                "PIE" => Ok(Self::Pie),
                "SCATTER" => Ok(Self::Scatter),
                "STACKED_HORIZONTAL_BAR" => Ok(Self::StackedHorizontalBar),
                "TABLE" => Ok(Self::Table),
                "VERTICAL_BAR" => Ok(Self::VerticalBar),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SnapshotNewRelicGraphTaskParamsMetricType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SnapshotNewRelicGraphTaskParamsMetricType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SnapshotNewRelicGraphTaskParamsMetricType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`SnapshotNewRelicGraphTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "snapshot_looker_graph"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SnapshotNewRelicGraphTaskParamsTaskType {
        #[serde(rename = "snapshot_looker_graph")]
        SnapshotLookerGraph,
    }
    impl ::std::fmt::Display for SnapshotNewRelicGraphTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SnapshotLookerGraph => f.write_str("snapshot_looker_graph"),
            }
        }
    }
    impl ::std::str::FromStr for SnapshotNewRelicGraphTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "snapshot_looker_graph" => Ok(Self::SnapshotLookerGraph),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SnapshotNewRelicGraphTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for SnapshotNewRelicGraphTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for SnapshotNewRelicGraphTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SnoozeAlert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "delay_minutes"
    ///          ],
    ///          "properties": {
    ///            "delay_minutes": {
    ///              "description": "Number of minutes to snooze the alert for",
    ///              "type": "integer",
    ///              "maximum": 10080.0,
    ///              "minimum": 1.0
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnoozeAlert {
        pub data: SnoozeAlertData,
    }
    impl SnoozeAlert {
        pub fn builder() -> builder::SnoozeAlert {
            Default::default()
        }
    }
    ///`SnoozeAlertData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "delay_minutes"
    ///      ],
    ///      "properties": {
    ///        "delay_minutes": {
    ///          "description": "Number of minutes to snooze the alert for",
    ///          "type": "integer",
    ///          "maximum": 10080.0,
    ///          "minimum": 1.0
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SnoozeAlertData {
        pub attributes: SnoozeAlertDataAttributes,
        #[serde(rename = "type")]
        pub type_: SnoozeAlertDataType,
    }
    impl SnoozeAlertData {
        pub fn builder() -> builder::SnoozeAlertData {
            Default::default()
        }
    }
    ///`SnoozeAlertDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "delay_minutes"
    ///  ],
    ///  "properties": {
    ///    "delay_minutes": {
    ///      "description": "Number of minutes to snooze the alert for",
    ///      "type": "integer",
    ///      "maximum": 10080.0,
    ///      "minimum": 1.0
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct SnoozeAlertDataAttributes {
        ///Number of minutes to snooze the alert for
        pub delay_minutes: ::std::num::NonZeroU64,
    }
    impl SnoozeAlertDataAttributes {
        pub fn builder() -> builder::SnoozeAlertDataAttributes {
            Default::default()
        }
    }
    ///`SnoozeAlertDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SnoozeAlertDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for SnoozeAlertDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for SnoozeAlertDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SnoozeAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SnoozeAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SnoozeAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Status`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "color",
    ///    "created_at",
    ///    "enabled",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "color": {
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Status {
        pub color: ::std::string::String,
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub enabled: bool,
        pub name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        pub updated_at: ::std::string::String,
    }
    impl Status {
        pub fn builder() -> builder::Status {
            Default::default()
        }
    }
    ///`StatusList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/status"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the status",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "statuses"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusList {
        pub data: ::std::vec::Vec<StatusListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl StatusList {
        pub fn builder() -> builder::StatusList {
            Default::default()
        }
    }
    ///`StatusListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/status"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the status",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusListDataItem {
        pub attributes: Status,
        ///Unique ID of the status
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: StatusListDataItemType,
    }
    impl StatusListDataItem {
        pub fn builder() -> builder::StatusListDataItem {
            Default::default()
        }
    }
    ///`StatusListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusListDataItemType {
        #[serde(rename = "statuses")]
        Statuses,
    }
    impl ::std::fmt::Display for StatusListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Statuses => f.write_str("statuses"),
            }
        }
    }
    impl ::std::str::FromStr for StatusListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "statuses" => Ok(Self::Statuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for StatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for StatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusPage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "allow_search_engine_index": {
    ///      "description": "Allow search engines to include your public status page in search results",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "authentication_enabled": {
    ///      "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///      "deprecated": true,
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "authentication_method": {
    ///      "description": "Authentication method",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "none",
    ///        "password",
    ///        "saml"
    ///      ]
    ///    },
    ///    "authentication_password": {
    ///      "description": "Authentication password",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cname_records": {
    ///      "description": "CNAME records mapping external domain names to their DNS target values. These are populated asynchronously after setting external_domain_names.",
    ///      "readOnly": true,
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "additionalProperties": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Enabled / Disable the status page",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_domain_names": {
    ///      "description": "External domain names attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "failure_message": {
    ///      "description": "Message showing when at least one component is not operational",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "footer_color": {
    ///      "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "Functionalities attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "ga_tracking_id": {
    ///      "description": "Google Analytics tracking ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "header_color": {
    ///      "description": "The color of the header. Eg. \"#0061F2\"",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public": {
    ///      "description": "Make the status page accessible to the public",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_title": {
    ///      "description": "The public title of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_cert": {
    ///      "description": "SAML IdP certificate",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_cert_fingerprint": {
    ///      "description": "SAML IdP certificate fingerprint",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_slo_service_url": {
    ///      "description": "SAML IdP SLO service URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_sso_service_url": {
    ///      "description": "SAML IdP SSO service URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_name_identifier_format": {
    ///      "description": "SAML name identifier format",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///        "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///        "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///        "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///      ]
    ///    },
    ///    "section_order": {
    ///      "description": "Order of sections on the status page",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "maintenance",
    ///          "system_status",
    ///          "incidents"
    ///        ]
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "Services attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "show_uptime": {
    ///      "description": "Show uptime",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime_last_days": {
    ///      "description": "Show uptime over x days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        30,
    ///        60,
    ///        90
    ///      ]
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the status page",
    ///      "type": "string"
    ///    },
    ///    "success_message": {
    ///      "description": "Message showing when all components are operational",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the status page",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "website_privacy_url": {
    ///      "description": "Website Privacy URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "website_support_url": {
    ///      "description": "Website Support URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "website_url": {
    ///      "description": "Website URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPage {
        ///Allow search engines to include your public status page in search results
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub allow_search_engine_index: ::std::option::Option<bool>,
        ///Enable authentication (deprecated - use authentication_method instead)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_enabled: ::std::option::Option<bool>,
        ///Authentication method
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_method: ::std::option::Option<StatusPageAuthenticationMethod>,
        ///Authentication password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_password: ::std::option::Option<::std::string::String>,
        ///CNAME records mapping external domain names to their DNS target values. These are populated asynchronously after setting external_domain_names.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cname_records: ::std::option::Option<
            ::std::collections::HashMap<::std::string::String, ::std::string::String>,
        >,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Enabled / Disable the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///External domain names attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub external_domain_names: ::std::vec::Vec<::std::string::String>,
        ///Message showing when at least one component is not operational
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub failure_message: ::std::option::Option<::std::string::String>,
        ///The color of the footer. Eg. "#1F2F41"
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub footer_color: ::std::option::Option<::std::string::String>,
        ///Functionalities attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///Google Analytics tracking ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ga_tracking_id: ::std::option::Option<::std::string::String>,
        ///The color of the header. Eg. "#0061F2"
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub header_color: ::std::option::Option<::std::string::String>,
        ///Make the status page accessible to the public
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public: ::std::option::Option<bool>,
        ///The public description of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///The public title of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_title: ::std::option::Option<::std::string::String>,
        ///SAML IdP certificate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_cert: ::std::option::Option<::std::string::String>,
        ///SAML IdP certificate fingerprint
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_cert_fingerprint: ::std::option::Option<::std::string::String>,
        ///SAML IdP SLO service URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_slo_service_url: ::std::option::Option<::std::string::String>,
        ///SAML IdP SSO service URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_sso_service_url: ::std::option::Option<::std::string::String>,
        ///SAML name identifier format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_name_identifier_format: ::std::option::Option<
            StatusPageSamlNameIdentifierFormat,
        >,
        ///Order of sections on the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub section_order: ::std::option::Option<
            ::std::vec::Vec<StatusPageSectionOrderItem>,
        >,
        ///Services attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        ///Show uptime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime: ::std::option::Option<bool>,
        ///Show uptime over x days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime_last_days: ::std::option::Option<StatusPageShowUptimeLastDays>,
        ///The slug of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Message showing when all components are operational
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub success_message: ::std::option::Option<::std::string::String>,
        ///A valid IANA time zone name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///The title of the status page
        pub title: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///Website Privacy URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_privacy_url: ::std::option::Option<::std::string::String>,
        ///Website Support URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_support_url: ::std::option::Option<::std::string::String>,
        ///Website URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_url: ::std::option::Option<::std::string::String>,
    }
    impl StatusPage {
        pub fn builder() -> builder::StatusPage {
            Default::default()
        }
    }
    ///Authentication method
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Authentication method",
    ///  "type": "string",
    ///  "enum": [
    ///    "none",
    ///    "password",
    ///    "saml"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageAuthenticationMethod {
        #[serde(rename = "none")]
        None,
        #[serde(rename = "password")]
        Password,
        #[serde(rename = "saml")]
        Saml,
    }
    impl ::std::fmt::Display for StatusPageAuthenticationMethod {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::None => f.write_str("none"),
                Self::Password => f.write_str("password"),
                Self::Saml => f.write_str("saml"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageAuthenticationMethod {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "none" => Ok(Self::None),
                "password" => Ok(Self::Password),
                "saml" => Ok(Self::Saml),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for StatusPageAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for StatusPageAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusPageList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/status_page"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the status page",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "status_pages"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageList {
        pub data: ::std::vec::Vec<StatusPageListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl StatusPageList {
        pub fn builder() -> builder::StatusPageList {
            Default::default()
        }
    }
    ///`StatusPageListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/status_page"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the status page",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_pages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageListDataItem {
        pub attributes: StatusPage,
        ///Unique ID of the status page
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: StatusPageListDataItemType,
    }
    impl StatusPageListDataItem {
        pub fn builder() -> builder::StatusPageListDataItem {
            Default::default()
        }
    }
    ///`StatusPageListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_pages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageListDataItemType {
        #[serde(rename = "status_pages")]
        StatusPages,
    }
    impl ::std::fmt::Display for StatusPageListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPages => f.write_str("status_pages"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_pages" => Ok(Self::StatusPages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for StatusPageListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for StatusPageListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusPageResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/status_page"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the status page",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "status_pages"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageResponse {
        pub data: StatusPageResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl StatusPageResponse {
        pub fn builder() -> builder::StatusPageResponse {
            Default::default()
        }
    }
    ///`StatusPageResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/status_page"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the status page",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_pages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageResponseData {
        pub attributes: StatusPage,
        ///Unique ID of the status page
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: StatusPageResponseDataType,
    }
    impl StatusPageResponseData {
        pub fn builder() -> builder::StatusPageResponseData {
            Default::default()
        }
    }
    ///`StatusPageResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_pages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageResponseDataType {
        #[serde(rename = "status_pages")]
        StatusPages,
    }
    impl ::std::fmt::Display for StatusPageResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPages => f.write_str("status_pages"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_pages" => Ok(Self::StatusPages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for StatusPageResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for StatusPageResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///SAML name identifier format
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "SAML name identifier format",
    ///  "type": "string",
    ///  "enum": [
    ///    "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///    "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///    "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///    "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageSamlNameIdentifierFormat {
        #[serde(rename = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")]
        UrnOasisNamesTcSaml11NameidFormatEmailAddress,
        #[serde(rename = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")]
        UrnOasisNamesTcSaml20NameidFormatPersistent,
        #[serde(rename = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient")]
        UrnOasisNamesTcSaml20NameidFormatTransient,
        #[serde(rename = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")]
        UrnOasisNamesTcSaml11NameidFormatUnspecified,
    }
    impl ::std::fmt::Display for StatusPageSamlNameIdentifierFormat {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UrnOasisNamesTcSaml11NameidFormatEmailAddress => {
                    f.write_str("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")
                }
                Self::UrnOasisNamesTcSaml20NameidFormatPersistent => {
                    f.write_str("urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")
                }
                Self::UrnOasisNamesTcSaml20NameidFormatTransient => {
                    f.write_str("urn:oasis:names:tc:SAML:2.0:nameid-format:transient")
                }
                Self::UrnOasisNamesTcSaml11NameidFormatUnspecified => {
                    f.write_str("urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")
                }
            }
        }
    }
    impl ::std::str::FromStr for StatusPageSamlNameIdentifierFormat {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" => {
                    Ok(Self::UrnOasisNamesTcSaml11NameidFormatEmailAddress)
                }
                "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" => {
                    Ok(Self::UrnOasisNamesTcSaml20NameidFormatPersistent)
                }
                "urn:oasis:names:tc:SAML:2.0:nameid-format:transient" => {
                    Ok(Self::UrnOasisNamesTcSaml20NameidFormatTransient)
                }
                "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" => {
                    Ok(Self::UrnOasisNamesTcSaml11NameidFormatUnspecified)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for StatusPageSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for StatusPageSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusPageSectionOrderItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "maintenance",
    ///    "system_status",
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageSectionOrderItem {
        #[serde(rename = "maintenance")]
        Maintenance,
        #[serde(rename = "system_status")]
        SystemStatus,
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for StatusPageSectionOrderItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Maintenance => f.write_str("maintenance"),
                Self::SystemStatus => f.write_str("system_status"),
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageSectionOrderItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "maintenance" => Ok(Self::Maintenance),
                "system_status" => Ok(Self::SystemStatus),
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for StatusPageSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for StatusPageSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Show uptime over x days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Show uptime over x days",
    ///  "type": "integer",
    ///  "enum": [
    ///    30,
    ///    60,
    ///    90
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct StatusPageShowUptimeLastDays(i64);
    impl ::std::ops::Deref for StatusPageShowUptimeLastDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<StatusPageShowUptimeLastDays> for i64 {
        fn from(value: StatusPageShowUptimeLastDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for StatusPageShowUptimeLastDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![30_i64, 60_i64, 90_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for StatusPageShowUptimeLastDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`StatusPageTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "body",
    ///    "created_at",
    ///    "status_page_id",
    ///    "title",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "Description of the event the template will populate",
    ///      "type": "string"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "description": "Enable / Disable the status page template",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the status page template",
    ///      "type": "string",
    ///      "enum": [
    ///        "normal",
    ///        "scheduled"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the workflow task",
    ///      "type": "integer"
    ///    },
    ///    "should_notify_subscribers": {
    ///      "description": "Controls if incident subscribers should be notified",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "status_page_id": {
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "Title of the template",
    ///      "type": "string"
    ///    },
    ///    "update_status": {
    ///      "description": "Status of the event the template will populate",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "update_title": {
    ///      "description": "Title that will be used for the status page update",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageTemplate {
        ///Description of the event the template will populate
        pub body: ::std::string::String,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Enable / Disable the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The kind of the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<StatusPageTemplateKind>,
        ///Position of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Controls if incident subscribers should be notified
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_notify_subscribers: ::std::option::Option<bool>,
        pub status_page_id: ::std::string::String,
        ///Title of the template
        pub title: ::std::string::String,
        ///Status of the event the template will populate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_status: ::std::option::Option<::std::string::String>,
        ///Title that will be used for the status page update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_title: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl StatusPageTemplate {
        pub fn builder() -> builder::StatusPageTemplate {
            Default::default()
        }
    }
    ///The kind of the status page template
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the status page template",
    ///  "type": "string",
    ///  "enum": [
    ///    "normal",
    ///    "scheduled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageTemplateKind {
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "scheduled")]
        Scheduled,
    }
    impl ::std::fmt::Display for StatusPageTemplateKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Normal => f.write_str("normal"),
                Self::Scheduled => f.write_str("scheduled"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageTemplateKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "normal" => Ok(Self::Normal),
                "scheduled" => Ok(Self::Scheduled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageTemplateKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for StatusPageTemplateKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for StatusPageTemplateKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusPageTemplateList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/status_page_template"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the template",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "status_page_templates"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageTemplateList {
        pub data: ::std::vec::Vec<StatusPageTemplateListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl StatusPageTemplateList {
        pub fn builder() -> builder::StatusPageTemplateList {
            Default::default()
        }
    }
    ///`StatusPageTemplateListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/status_page_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_page_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageTemplateListDataItem {
        pub attributes: StatusPageTemplate,
        ///Unique ID of the template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: StatusPageTemplateListDataItemType,
    }
    impl StatusPageTemplateListDataItem {
        pub fn builder() -> builder::StatusPageTemplateListDataItem {
            Default::default()
        }
    }
    ///`StatusPageTemplateListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_page_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageTemplateListDataItemType {
        #[serde(rename = "status_page_templates")]
        StatusPageTemplates,
    }
    impl ::std::fmt::Display for StatusPageTemplateListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPageTemplates => f.write_str("status_page_templates"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageTemplateListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_page_templates" => Ok(Self::StatusPageTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for StatusPageTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for StatusPageTemplateListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusPageTemplateResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/status_page_template"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the status page template",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "status_page_templates"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageTemplateResponse {
        pub data: StatusPageTemplateResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl StatusPageTemplateResponse {
        pub fn builder() -> builder::StatusPageTemplateResponse {
            Default::default()
        }
    }
    ///`StatusPageTemplateResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/status_page_template"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the status page template",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_page_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusPageTemplateResponseData {
        pub attributes: StatusPageTemplate,
        ///Unique ID of the status page template
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: StatusPageTemplateResponseDataType,
    }
    impl StatusPageTemplateResponseData {
        pub fn builder() -> builder::StatusPageTemplateResponseData {
            Default::default()
        }
    }
    ///`StatusPageTemplateResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_page_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusPageTemplateResponseDataType {
        #[serde(rename = "status_page_templates")]
        StatusPageTemplates,
    }
    impl ::std::fmt::Display for StatusPageTemplateResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPageTemplates => f.write_str("status_page_templates"),
            }
        }
    }
    impl ::std::str::FromStr for StatusPageTemplateResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_page_templates" => Ok(Self::StatusPageTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusPageTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for StatusPageTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for StatusPageTemplateResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`StatusResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/status"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the status",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "statuses"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusResponse {
        pub data: StatusResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl StatusResponse {
        pub fn builder() -> builder::StatusResponse {
            Default::default()
        }
    }
    ///`StatusResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/status"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the status",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct StatusResponseData {
        pub attributes: Status,
        ///Unique ID of the status
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: StatusResponseDataType,
    }
    impl StatusResponseData {
        pub fn builder() -> builder::StatusResponseData {
            Default::default()
        }
    }
    ///`StatusResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum StatusResponseDataType {
        #[serde(rename = "statuses")]
        Statuses,
    }
    impl ::std::fmt::Display for StatusResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Statuses => f.write_str("statuses"),
            }
        }
    }
    impl ::std::str::FromStr for StatusResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "statuses" => Ok(Self::Statuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for StatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for StatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for StatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "parent_status",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "parent_status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled",
    ///        "planning",
    ///        "scheduled",
    ///        "in_progress",
    ///        "verifying",
    ///        "completed"
    ///      ]
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "slug": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SubStatus {
        pub created_at: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        pub name: ::std::string::String,
        pub parent_status: SubStatusParentStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        pub updated_at: ::std::string::String,
    }
    impl SubStatus {
        pub fn builder() -> builder::SubStatus {
            Default::default()
        }
    }
    ///`SubStatusList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/sub_status"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the sub_status",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "sub_statuses"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SubStatusList {
        pub data: ::std::vec::Vec<SubStatusListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl SubStatusList {
        pub fn builder() -> builder::SubStatusList {
            Default::default()
        }
    }
    ///`SubStatusListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/sub_status"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the sub_status",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SubStatusListDataItem {
        pub attributes: SubStatus,
        ///Unique ID of the sub_status
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SubStatusListDataItemType,
    }
    impl SubStatusListDataItem {
        pub fn builder() -> builder::SubStatusListDataItem {
            Default::default()
        }
    }
    ///`SubStatusListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SubStatusListDataItemType {
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for SubStatusListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for SubStatusListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SubStatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SubStatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SubStatusListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SubStatusParentStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled",
    ///    "planning",
    ///    "scheduled",
    ///    "in_progress",
    ///    "verifying",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SubStatusParentStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "planning")]
        Planning,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "verifying")]
        Verifying,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for SubStatusParentStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Planning => f.write_str("planning"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Verifying => f.write_str("verifying"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for SubStatusParentStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                "planning" => Ok(Self::Planning),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "verifying" => Ok(Self::Verifying),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SubStatusParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SubStatusParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SubStatusParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`SubStatusResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/sub_status"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the sub_status",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "sub_statuses"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SubStatusResponse {
        pub data: SubStatusResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl SubStatusResponse {
        pub fn builder() -> builder::SubStatusResponse {
            Default::default()
        }
    }
    ///`SubStatusResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/sub_status"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the sub_status",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct SubStatusResponseData {
        pub attributes: SubStatus,
        ///Unique ID of the sub_status
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: SubStatusResponseDataType,
    }
    impl SubStatusResponseData {
        pub fn builder() -> builder::SubStatusResponseData {
            Default::default()
        }
    }
    ///`SubStatusResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum SubStatusResponseDataType {
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for SubStatusResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for SubStatusResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for SubStatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for SubStatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for SubStatusResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Team`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "admin_ids": {
    ///      "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "alert_broadcast_channel": {
    ///      "description": "Slack channel to broadcast alerts to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "alert_broadcast_enabled": {
    ///      "description": "Enable alerts to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The alert urgency id of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_address": {
    ///      "description": "Email generated to send alerts to",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_enabled": {
    ///      "description": "Enable alerts through email",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "auto_add_members_scope": {
    ///      "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "off",
    ///        "public_only",
    ///        "public_and_test",
    ///        "all"
    ///      ]
    ///    },
    ///    "auto_add_members_when_attached": {
    ///      "description": "Auto add members to incident channel when team is attached",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_broadcast_channel": {
    ///      "description": "Slack channel to broadcast incidents to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_broadcast_enabled": {
    ///      "description": "Enable incidents to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the team",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_service_id": {
    ///      "description": "The PagerDuty service id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagertree_id": {
    ///      "description": "The PagerTree group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the team",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this team.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slug": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user_ids": {
    ///      "description": "The user ids of the members of this team.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "victor_ops_id": {
    ///      "description": "The VictorOps group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Team {
        ///The user ids of the admins of this team. These users must also be present in user_ids attribute.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub admin_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///Slack channel to broadcast alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_channel: ::std::option::Option<TeamAlertBroadcastChannel>,
        ///Enable alerts to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_enabled: ::std::option::Option<bool>,
        ///The alert urgency id of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Email generated to send alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_address: ::std::option::Option<::std::string::String>,
        ///Enable alerts through email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_enabled: ::std::option::Option<bool>,
        ///Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_add_members_scope: ::std::option::Option<TeamAutoAddMembersScope>,
        ///Auto add members to incident channel when team is attached
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_add_members_when_attached: ::std::option::Option<bool>,
        ///The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The external id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///Slack channel to broadcast incidents to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_channel: ::std::option::Option<
            TeamIncidentBroadcastChannel,
        >,
        ///Enable incidents to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_enabled: ::std::option::Option<bool>,
        ///The name of the team
        pub name: ::std::string::String,
        ///Emails to attach to the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The PagerDuty group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///The PagerDuty service id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_service_id: ::std::option::Option<::std::string::String>,
        ///The PagerTree group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagertree_id: ::std::option::Option<::std::string::String>,
        ///Position of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub properties: ::std::option::Option<::std::vec::Vec<TeamPropertiesItem>>,
        ///The Service Now CI sys id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<::std::vec::Vec<TeamSlackAliasesItem>>,
        ///Slack Channels associated with this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<TeamSlackChannelsItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The user ids of the members of this team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The VictorOps group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub victor_ops_id: ::std::option::Option<::std::string::String>,
    }
    impl Team {
        pub fn builder() -> builder::Team {
            Default::default()
        }
    }
    ///Slack channel to broadcast alerts to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast alerts to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamAlertBroadcastChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for TeamAlertBroadcastChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl TeamAlertBroadcastChannel {
        pub fn builder() -> builder::TeamAlertBroadcastChannel {
            Default::default()
        }
    }
    ///Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///  "type": "string",
    ///  "enum": [
    ///    "off",
    ///    "public_only",
    ///    "public_and_test",
    ///    "all"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TeamAutoAddMembersScope {
        #[serde(rename = "off")]
        Off,
        #[serde(rename = "public_only")]
        PublicOnly,
        #[serde(rename = "public_and_test")]
        PublicAndTest,
        #[serde(rename = "all")]
        All,
    }
    impl ::std::fmt::Display for TeamAutoAddMembersScope {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Off => f.write_str("off"),
                Self::PublicOnly => f.write_str("public_only"),
                Self::PublicAndTest => f.write_str("public_and_test"),
                Self::All => f.write_str("all"),
            }
        }
    }
    impl ::std::str::FromStr for TeamAutoAddMembersScope {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "off" => Ok(Self::Off),
                "public_only" => Ok(Self::PublicOnly),
                "public_and_test" => Ok(Self::PublicAndTest),
                "all" => Ok(Self::All),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TeamAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for TeamAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for TeamAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Slack channel to broadcast incidents to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast incidents to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamIncidentBroadcastChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for TeamIncidentBroadcastChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl TeamIncidentBroadcastChannel {
        pub fn builder() -> builder::TeamIncidentBroadcastChannel {
            Default::default()
        }
    }
    ///`TeamList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/team"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the team",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "groups"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamList {
        pub data: ::std::vec::Vec<TeamListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl TeamList {
        pub fn builder() -> builder::TeamList {
            Default::default()
        }
    }
    ///`TeamListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/team"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the team",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamListDataItem {
        pub attributes: Team,
        ///Unique ID of the team
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: TeamListDataItemType,
    }
    impl TeamListDataItem {
        pub fn builder() -> builder::TeamListDataItem {
            Default::default()
        }
    }
    ///`TeamListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TeamListDataItemType {
        #[serde(rename = "groups")]
        Groups,
    }
    impl ::std::fmt::Display for TeamListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Groups => f.write_str("groups"),
            }
        }
    }
    impl ::std::str::FromStr for TeamListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "groups" => Ok(Self::Groups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TeamListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for TeamListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for TeamListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl TeamPropertiesItem {
        pub fn builder() -> builder::TeamPropertiesItem {
            Default::default()
        }
    }
    ///`TeamResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/team"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the team",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "groups"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamResponse {
        pub data: TeamResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl TeamResponse {
        pub fn builder() -> builder::TeamResponse {
            Default::default()
        }
    }
    ///`TeamResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/team"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the team",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamResponseData {
        pub attributes: Team,
        ///Unique ID of the team
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: TeamResponseDataType,
    }
    impl TeamResponseData {
        pub fn builder() -> builder::TeamResponseData {
            Default::default()
        }
    }
    ///`TeamResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TeamResponseDataType {
        #[serde(rename = "groups")]
        Groups,
    }
    impl ::std::fmt::Display for TeamResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Groups => f.write_str("groups"),
            }
        }
    }
    impl ::std::str::FromStr for TeamResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "groups" => Ok(Self::Groups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TeamResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for TeamResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for TeamResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`TeamSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl TeamSlackAliasesItem {
        pub fn builder() -> builder::TeamSlackAliasesItem {
            Default::default()
        }
    }
    ///`TeamSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TeamSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl TeamSlackChannelsItem {
        pub fn builder() -> builder::TeamSlackChannelsItem {
            Default::default()
        }
    }
    ///TipTap block component schema for post mortem templates
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "TipTap block component schema for post mortem templates",
    ///  "type": "object",
    ///  "properties": {
    ///    "followup_component": {
    ///      "description": "Followup component block",
    ///      "type": "object",
    ///      "required": [
    ///        "html"
    ///      ],
    ///      "properties": {
    ///        "data_sort": {
    ///          "description": "Sort order for followups. Valid values: due_date, status, priority",
    ///          "default": "due_date",
    ///          "type": "string",
    ///          "enum": [
    ///            "due_date",
    ///            "status",
    ///            "priority"
    ///          ]
    ///        },
    ///        "html": {
    ///          "description": "HTML representation: <div data-sort=\"due_date\" data-followup-component=\"true\" class=\"followups-node-placeholder\"></div>",
    ///          "examples": [
    ///            "<div data-sort=\"due_date\" data-followup-component=\"true\" class=\"followups-node-placeholder\"></div>"
    ///          ],
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "timeline_component": {
    ///      "description": "Timeline component block",
    ///      "type": "object",
    ///      "required": [
    ///        "html"
    ///      ],
    ///      "properties": {
    ///        "html": {
    ///          "description": "HTML representation: <div data-timeline-component=\"true\" class=\"timeline-node-placeholder\"></div>",
    ///          "examples": [
    ///            "<div data-timeline-component=\"true\" class=\"timeline-node-placeholder\"></div>"
    ///          ],
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TiptapBlockSchema {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub followup_component: ::std::option::Option<
            TiptapBlockSchemaFollowupComponent,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub timeline_component: ::std::option::Option<
            TiptapBlockSchemaTimelineComponent,
        >,
    }
    impl ::std::default::Default for TiptapBlockSchema {
        fn default() -> Self {
            Self {
                followup_component: Default::default(),
                timeline_component: Default::default(),
            }
        }
    }
    impl TiptapBlockSchema {
        pub fn builder() -> builder::TiptapBlockSchema {
            Default::default()
        }
    }
    ///Followup component block
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Followup component block",
    ///  "type": "object",
    ///  "required": [
    ///    "html"
    ///  ],
    ///  "properties": {
    ///    "data_sort": {
    ///      "description": "Sort order for followups. Valid values: due_date, status, priority",
    ///      "default": "due_date",
    ///      "type": "string",
    ///      "enum": [
    ///        "due_date",
    ///        "status",
    ///        "priority"
    ///      ]
    ///    },
    ///    "html": {
    ///      "description": "HTML representation: <div data-sort=\"due_date\" data-followup-component=\"true\" class=\"followups-node-placeholder\"></div>",
    ///      "examples": [
    ///        "<div data-sort=\"due_date\" data-followup-component=\"true\" class=\"followups-node-placeholder\"></div>"
    ///      ],
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TiptapBlockSchemaFollowupComponent {
        ///Sort order for followups. Valid values: due_date, status, priority
        #[serde(default = "defaults::tiptap_block_schema_followup_component_data_sort")]
        pub data_sort: TiptapBlockSchemaFollowupComponentDataSort,
        ///HTML representation: <div data-sort="due_date" data-followup-component="true" class="followups-node-placeholder"></div>
        pub html: ::std::string::String,
    }
    impl TiptapBlockSchemaFollowupComponent {
        pub fn builder() -> builder::TiptapBlockSchemaFollowupComponent {
            Default::default()
        }
    }
    ///Sort order for followups. Valid values: due_date, status, priority
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Sort order for followups. Valid values: due_date, status, priority",
    ///  "default": "due_date",
    ///  "type": "string",
    ///  "enum": [
    ///    "due_date",
    ///    "status",
    ///    "priority"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TiptapBlockSchemaFollowupComponentDataSort {
        #[serde(rename = "due_date")]
        DueDate,
        #[serde(rename = "status")]
        Status,
        #[serde(rename = "priority")]
        Priority,
    }
    impl ::std::fmt::Display for TiptapBlockSchemaFollowupComponentDataSort {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::DueDate => f.write_str("due_date"),
                Self::Status => f.write_str("status"),
                Self::Priority => f.write_str("priority"),
            }
        }
    }
    impl ::std::str::FromStr for TiptapBlockSchemaFollowupComponentDataSort {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "due_date" => Ok(Self::DueDate),
                "status" => Ok(Self::Status),
                "priority" => Ok(Self::Priority),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TiptapBlockSchemaFollowupComponentDataSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for TiptapBlockSchemaFollowupComponentDataSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for TiptapBlockSchemaFollowupComponentDataSort {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for TiptapBlockSchemaFollowupComponentDataSort {
        fn default() -> Self {
            TiptapBlockSchemaFollowupComponentDataSort::DueDate
        }
    }
    ///Timeline component block
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Timeline component block",
    ///  "type": "object",
    ///  "required": [
    ///    "html"
    ///  ],
    ///  "properties": {
    ///    "html": {
    ///      "description": "HTML representation: <div data-timeline-component=\"true\" class=\"timeline-node-placeholder\"></div>",
    ///      "examples": [
    ///        "<div data-timeline-component=\"true\" class=\"timeline-node-placeholder\"></div>"
    ///      ],
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TiptapBlockSchemaTimelineComponent {
        ///HTML representation: <div data-timeline-component="true" class="timeline-node-placeholder"></div>
        pub html: ::std::string::String,
    }
    impl TiptapBlockSchemaTimelineComponent {
        pub fn builder() -> builder::TiptapBlockSchemaTimelineComponent {
            Default::default()
        }
    }
    ///`TriggerWorkflowTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attribute_to_query_by",
    ///    "kind",
    ///    "resource",
    ///    "workflow"
    ///  ],
    ///  "properties": {
    ///    "attribute_to_query_by": {
    ///      "description": "[\"(incident) kind can only match [:id, :slug, :sequential_id, :pagerduty_incident_id, :opsgenie_incident_id, :victor_ops_incident_id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]\", \"(post_mortem) kind can only match [:id]\", \"(action_item) kind can only match [:id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]\", \"(pulse) kind can only match [:id]\", \"(alert) kind can only match [:id]\"]",
    ///      "default": "id",
    ///      "type": "string",
    ///      "enum": [
    ///        "id",
    ///        "slug",
    ///        "sequential_id",
    ///        "pagerduty_incident_id",
    ///        "opsgenie_incident_id",
    ///        "victor_ops_incident_id",
    ///        "jira_issue_id",
    ///        "asana_task_id",
    ///        "shortcut_task_id",
    ///        "linear_issue_id",
    ///        "zendesk_ticket_id",
    ///        "motion_task_id",
    ///        "trello_card_id",
    ///        "airtable_record_id",
    ///        "shortcut_story_id",
    ///        "github_issue_id",
    ///        "freshservice_ticket_id",
    ///        "freshservice_task_id",
    ///        "clickup_task_id"
    ///      ]
    ///    },
    ///    "check_workflow_conditions": {
    ///      "type": "boolean"
    ///    },
    ///    "kind": {
    ///      "default": "incident",
    ///      "type": "string",
    ///      "enum": [
    ///        "incident",
    ///        "post_mortem",
    ///        "action_item",
    ///        "pulse",
    ///        "alert"
    ///      ]
    ///    },
    ///    "resource": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "trigger_workflow"
    ///      ]
    ///    },
    ///    "workflow": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TriggerWorkflowTaskParams {
        ///["(incident) kind can only match [:id, :slug, :sequential_id, :pagerduty_incident_id, :opsgenie_incident_id, :victor_ops_incident_id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]", "(post_mortem) kind can only match [:id]", "(action_item) kind can only match [:id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]", "(pulse) kind can only match [:id]", "(alert) kind can only match [:id]"]
        pub attribute_to_query_by: TriggerWorkflowTaskParamsAttributeToQueryBy,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub check_workflow_conditions: ::std::option::Option<bool>,
        pub kind: TriggerWorkflowTaskParamsKind,
        pub resource: TriggerWorkflowTaskParamsResource,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<TriggerWorkflowTaskParamsTaskType>,
        pub workflow: TriggerWorkflowTaskParamsWorkflow,
    }
    impl TriggerWorkflowTaskParams {
        pub fn builder() -> builder::TriggerWorkflowTaskParams {
            Default::default()
        }
    }
    ///["(incident) kind can only match [:id, :slug, :sequential_id, :pagerduty_incident_id, :opsgenie_incident_id, :victor_ops_incident_id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]", "(post_mortem) kind can only match [:id]", "(action_item) kind can only match [:id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]", "(pulse) kind can only match [:id]", "(alert) kind can only match [:id]"]
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[\"(incident) kind can only match [:id, :slug, :sequential_id, :pagerduty_incident_id, :opsgenie_incident_id, :victor_ops_incident_id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]\", \"(post_mortem) kind can only match [:id]\", \"(action_item) kind can only match [:id, :jira_issue_id, :asana_task_id, :shortcut_task_id, :linear_issue_id, :zendesk_ticket_id, :motion_task_id, :trello_card_id, :airtable_record_id, :shortcut_story_id, :github_issue_id, :freshservice_ticket_id, :freshservice_task_id, :clickup_task_id]\", \"(pulse) kind can only match [:id]\", \"(alert) kind can only match [:id]\"]",
    ///  "default": "id",
    ///  "type": "string",
    ///  "enum": [
    ///    "id",
    ///    "slug",
    ///    "sequential_id",
    ///    "pagerduty_incident_id",
    ///    "opsgenie_incident_id",
    ///    "victor_ops_incident_id",
    ///    "jira_issue_id",
    ///    "asana_task_id",
    ///    "shortcut_task_id",
    ///    "linear_issue_id",
    ///    "zendesk_ticket_id",
    ///    "motion_task_id",
    ///    "trello_card_id",
    ///    "airtable_record_id",
    ///    "shortcut_story_id",
    ///    "github_issue_id",
    ///    "freshservice_ticket_id",
    ///    "freshservice_task_id",
    ///    "clickup_task_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TriggerWorkflowTaskParamsAttributeToQueryBy {
        #[serde(rename = "id")]
        Id,
        #[serde(rename = "slug")]
        Slug,
        #[serde(rename = "sequential_id")]
        SequentialId,
        #[serde(rename = "pagerduty_incident_id")]
        PagerdutyIncidentId,
        #[serde(rename = "opsgenie_incident_id")]
        OpsgenieIncidentId,
        #[serde(rename = "victor_ops_incident_id")]
        VictorOpsIncidentId,
        #[serde(rename = "jira_issue_id")]
        JiraIssueId,
        #[serde(rename = "asana_task_id")]
        AsanaTaskId,
        #[serde(rename = "shortcut_task_id")]
        ShortcutTaskId,
        #[serde(rename = "linear_issue_id")]
        LinearIssueId,
        #[serde(rename = "zendesk_ticket_id")]
        ZendeskTicketId,
        #[serde(rename = "motion_task_id")]
        MotionTaskId,
        #[serde(rename = "trello_card_id")]
        TrelloCardId,
        #[serde(rename = "airtable_record_id")]
        AirtableRecordId,
        #[serde(rename = "shortcut_story_id")]
        ShortcutStoryId,
        #[serde(rename = "github_issue_id")]
        GithubIssueId,
        #[serde(rename = "freshservice_ticket_id")]
        FreshserviceTicketId,
        #[serde(rename = "freshservice_task_id")]
        FreshserviceTaskId,
        #[serde(rename = "clickup_task_id")]
        ClickupTaskId,
    }
    impl ::std::fmt::Display for TriggerWorkflowTaskParamsAttributeToQueryBy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Id => f.write_str("id"),
                Self::Slug => f.write_str("slug"),
                Self::SequentialId => f.write_str("sequential_id"),
                Self::PagerdutyIncidentId => f.write_str("pagerduty_incident_id"),
                Self::OpsgenieIncidentId => f.write_str("opsgenie_incident_id"),
                Self::VictorOpsIncidentId => f.write_str("victor_ops_incident_id"),
                Self::JiraIssueId => f.write_str("jira_issue_id"),
                Self::AsanaTaskId => f.write_str("asana_task_id"),
                Self::ShortcutTaskId => f.write_str("shortcut_task_id"),
                Self::LinearIssueId => f.write_str("linear_issue_id"),
                Self::ZendeskTicketId => f.write_str("zendesk_ticket_id"),
                Self::MotionTaskId => f.write_str("motion_task_id"),
                Self::TrelloCardId => f.write_str("trello_card_id"),
                Self::AirtableRecordId => f.write_str("airtable_record_id"),
                Self::ShortcutStoryId => f.write_str("shortcut_story_id"),
                Self::GithubIssueId => f.write_str("github_issue_id"),
                Self::FreshserviceTicketId => f.write_str("freshservice_ticket_id"),
                Self::FreshserviceTaskId => f.write_str("freshservice_task_id"),
                Self::ClickupTaskId => f.write_str("clickup_task_id"),
            }
        }
    }
    impl ::std::str::FromStr for TriggerWorkflowTaskParamsAttributeToQueryBy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "id" => Ok(Self::Id),
                "slug" => Ok(Self::Slug),
                "sequential_id" => Ok(Self::SequentialId),
                "pagerduty_incident_id" => Ok(Self::PagerdutyIncidentId),
                "opsgenie_incident_id" => Ok(Self::OpsgenieIncidentId),
                "victor_ops_incident_id" => Ok(Self::VictorOpsIncidentId),
                "jira_issue_id" => Ok(Self::JiraIssueId),
                "asana_task_id" => Ok(Self::AsanaTaskId),
                "shortcut_task_id" => Ok(Self::ShortcutTaskId),
                "linear_issue_id" => Ok(Self::LinearIssueId),
                "zendesk_ticket_id" => Ok(Self::ZendeskTicketId),
                "motion_task_id" => Ok(Self::MotionTaskId),
                "trello_card_id" => Ok(Self::TrelloCardId),
                "airtable_record_id" => Ok(Self::AirtableRecordId),
                "shortcut_story_id" => Ok(Self::ShortcutStoryId),
                "github_issue_id" => Ok(Self::GithubIssueId),
                "freshservice_ticket_id" => Ok(Self::FreshserviceTicketId),
                "freshservice_task_id" => Ok(Self::FreshserviceTaskId),
                "clickup_task_id" => Ok(Self::ClickupTaskId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TriggerWorkflowTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for TriggerWorkflowTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for TriggerWorkflowTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for TriggerWorkflowTaskParamsAttributeToQueryBy {
        fn default() -> Self {
            TriggerWorkflowTaskParamsAttributeToQueryBy::Id
        }
    }
    ///`TriggerWorkflowTaskParamsKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "incident",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident",
    ///    "post_mortem",
    ///    "action_item",
    ///    "pulse",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TriggerWorkflowTaskParamsKind {
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "post_mortem")]
        PostMortem,
        #[serde(rename = "action_item")]
        ActionItem,
        #[serde(rename = "pulse")]
        Pulse,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display for TriggerWorkflowTaskParamsKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incident => f.write_str("incident"),
                Self::PostMortem => f.write_str("post_mortem"),
                Self::ActionItem => f.write_str("action_item"),
                Self::Pulse => f.write_str("pulse"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr for TriggerWorkflowTaskParamsKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident" => Ok(Self::Incident),
                "post_mortem" => Ok(Self::PostMortem),
                "action_item" => Ok(Self::ActionItem),
                "pulse" => Ok(Self::Pulse),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TriggerWorkflowTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for TriggerWorkflowTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for TriggerWorkflowTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for TriggerWorkflowTaskParamsKind {
        fn default() -> Self {
            TriggerWorkflowTaskParamsKind::Incident
        }
    }
    ///`TriggerWorkflowTaskParamsResource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TriggerWorkflowTaskParamsResource {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for TriggerWorkflowTaskParamsResource {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl TriggerWorkflowTaskParamsResource {
        pub fn builder() -> builder::TriggerWorkflowTaskParamsResource {
            Default::default()
        }
    }
    ///`TriggerWorkflowTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "trigger_workflow"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TriggerWorkflowTaskParamsTaskType {
        #[serde(rename = "trigger_workflow")]
        TriggerWorkflow,
    }
    impl ::std::fmt::Display for TriggerWorkflowTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::TriggerWorkflow => f.write_str("trigger_workflow"),
            }
        }
    }
    impl ::std::str::FromStr for TriggerWorkflowTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "trigger_workflow" => Ok(Self::TriggerWorkflow),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TriggerWorkflowTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for TriggerWorkflowTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for TriggerWorkflowTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`TriggerWorkflowTaskParamsWorkflow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TriggerWorkflowTaskParamsWorkflow {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for TriggerWorkflowTaskParamsWorkflow {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl TriggerWorkflowTaskParamsWorkflow {
        pub fn builder() -> builder::TriggerWorkflowTaskParamsWorkflow {
            Default::default()
        }
    }
    ///`TweetTwitterMessageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "message"
    ///  ],
    ///  "properties": {
    ///    "message": {
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "tweet_twitter_message"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct TweetTwitterMessageTaskParams {
        pub message: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<TweetTwitterMessageTaskParamsTaskType>,
    }
    impl TweetTwitterMessageTaskParams {
        pub fn builder() -> builder::TweetTwitterMessageTaskParams {
            Default::default()
        }
    }
    ///`TweetTwitterMessageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "tweet_twitter_message"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum TweetTwitterMessageTaskParamsTaskType {
        #[serde(rename = "tweet_twitter_message")]
        TweetTwitterMessage,
    }
    impl ::std::fmt::Display for TweetTwitterMessageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::TweetTwitterMessage => f.write_str("tweet_twitter_message"),
            }
        }
    }
    impl ::std::str::FromStr for TweetTwitterMessageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "tweet_twitter_message" => Ok(Self::TweetTwitterMessage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for TweetTwitterMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for TweetTwitterMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for TweetTwitterMessageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UnassignRoleFromUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "incident_role_id": {
    ///              "description": "ID of the incident role",
    ///              "type": "string"
    ///            },
    ///            "user_id": {
    ///              "description": "ID of user you wish to remove as assigned user from this incident",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UnassignRoleFromUser {
        pub data: UnassignRoleFromUserData,
    }
    impl UnassignRoleFromUser {
        pub fn builder() -> builder::UnassignRoleFromUser {
            Default::default()
        }
    }
    ///`UnassignRoleFromUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "incident_role_id": {
    ///          "description": "ID of the incident role",
    ///          "type": "string"
    ///        },
    ///        "user_id": {
    ///          "description": "ID of user you wish to remove as assigned user from this incident",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UnassignRoleFromUserData {
        pub attributes: UnassignRoleFromUserDataAttributes,
        #[serde(rename = "type")]
        pub type_: UnassignRoleFromUserDataType,
    }
    impl UnassignRoleFromUserData {
        pub fn builder() -> builder::UnassignRoleFromUserData {
            Default::default()
        }
    }
    ///`UnassignRoleFromUserDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "incident_role_id": {
    ///      "description": "ID of the incident role",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "ID of user you wish to remove as assigned user from this incident",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UnassignRoleFromUserDataAttributes {
        ///ID of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///ID of user you wish to remove as assigned user from this incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UnassignRoleFromUserDataAttributes {
        fn default() -> Self {
            Self {
                incident_role_id: Default::default(),
                user_id: Default::default(),
            }
        }
    }
    impl UnassignRoleFromUserDataAttributes {
        pub fn builder() -> builder::UnassignRoleFromUserDataAttributes {
            Default::default()
        }
    }
    ///`UnassignRoleFromUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UnassignRoleFromUserDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for UnassignRoleFromUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for UnassignRoleFromUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UnassignRoleFromUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UnassignRoleFromUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UnassignRoleFromUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateActionItemTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attribute_to_query_by",
    ///    "query_value"
    ///  ],
    ///  "properties": {
    ///    "assigned_to_user": {
    ///      "description": " The user this action item is assigned to",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "assigned_to_user_id": {
    ///      "description": "[DEPRECATED] Use assigned_to_user attribute instead. The user id this action item is assigned to",
    ///      "type": "string"
    ///    },
    ///    "attribute_to_query_by": {
    ///      "description": "Attribute of the action item to match against",
    ///      "default": "id",
    ///      "type": "string",
    ///      "enum": [
    ///        "id",
    ///        "jira_issue_id",
    ///        "asana_task_id",
    ///        "shortcut_task_id",
    ///        "linear_issue_id",
    ///        "zendesk_ticket_id",
    ///        "motion_task_id",
    ///        "trello_card_id",
    ///        "airtable_record_id",
    ///        "shortcut_story_id",
    ///        "github_issue_id",
    ///        "gitlab_issue_id",
    ///        "freshservice_ticket_id",
    ///        "freshservice_task_id",
    ///        "clickup_task_id"
    ///      ]
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The action item description",
    ///      "type": "string"
    ///    },
    ///    "group_ids": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "priority": {
    ///      "description": "The action item priority",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "query_value": {
    ///      "description": "Value that attribute_to_query_by to uses to match against",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The action item status",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "in_progress",
    ///        "cancelled",
    ///        "done"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "Brief description of the action item",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_action_item"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateActionItemTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user: ::std::option::Option<
            UpdateActionItemTaskParamsAssignedToUser,
        >,
        ///[DEPRECATED] Use assigned_to_user attribute instead. The user id this action item is assigned to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user_id: ::std::option::Option<::std::string::String>,
        ///Attribute of the action item to match against
        pub attribute_to_query_by: UpdateActionItemTaskParamsAttributeToQueryBy,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The action item description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        ///The action item priority
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateActionItemTaskParamsPriority>,
        ///Value that attribute_to_query_by to uses to match against
        pub query_value: ::std::string::String,
        ///The action item status
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateActionItemTaskParamsStatus>,
        ///Brief description of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateActionItemTaskParamsTaskType>,
    }
    impl UpdateActionItemTaskParams {
        pub fn builder() -> builder::UpdateActionItemTaskParams {
            Default::default()
        }
    }
    /// The user this action item is assigned to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": " The user this action item is assigned to",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateActionItemTaskParamsAssignedToUser {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateActionItemTaskParamsAssignedToUser {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateActionItemTaskParamsAssignedToUser {
        pub fn builder() -> builder::UpdateActionItemTaskParamsAssignedToUser {
            Default::default()
        }
    }
    ///Attribute of the action item to match against
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Attribute of the action item to match against",
    ///  "default": "id",
    ///  "type": "string",
    ///  "enum": [
    ///    "id",
    ///    "jira_issue_id",
    ///    "asana_task_id",
    ///    "shortcut_task_id",
    ///    "linear_issue_id",
    ///    "zendesk_ticket_id",
    ///    "motion_task_id",
    ///    "trello_card_id",
    ///    "airtable_record_id",
    ///    "shortcut_story_id",
    ///    "github_issue_id",
    ///    "gitlab_issue_id",
    ///    "freshservice_ticket_id",
    ///    "freshservice_task_id",
    ///    "clickup_task_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateActionItemTaskParamsAttributeToQueryBy {
        #[serde(rename = "id")]
        Id,
        #[serde(rename = "jira_issue_id")]
        JiraIssueId,
        #[serde(rename = "asana_task_id")]
        AsanaTaskId,
        #[serde(rename = "shortcut_task_id")]
        ShortcutTaskId,
        #[serde(rename = "linear_issue_id")]
        LinearIssueId,
        #[serde(rename = "zendesk_ticket_id")]
        ZendeskTicketId,
        #[serde(rename = "motion_task_id")]
        MotionTaskId,
        #[serde(rename = "trello_card_id")]
        TrelloCardId,
        #[serde(rename = "airtable_record_id")]
        AirtableRecordId,
        #[serde(rename = "shortcut_story_id")]
        ShortcutStoryId,
        #[serde(rename = "github_issue_id")]
        GithubIssueId,
        #[serde(rename = "gitlab_issue_id")]
        GitlabIssueId,
        #[serde(rename = "freshservice_ticket_id")]
        FreshserviceTicketId,
        #[serde(rename = "freshservice_task_id")]
        FreshserviceTaskId,
        #[serde(rename = "clickup_task_id")]
        ClickupTaskId,
    }
    impl ::std::fmt::Display for UpdateActionItemTaskParamsAttributeToQueryBy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Id => f.write_str("id"),
                Self::JiraIssueId => f.write_str("jira_issue_id"),
                Self::AsanaTaskId => f.write_str("asana_task_id"),
                Self::ShortcutTaskId => f.write_str("shortcut_task_id"),
                Self::LinearIssueId => f.write_str("linear_issue_id"),
                Self::ZendeskTicketId => f.write_str("zendesk_ticket_id"),
                Self::MotionTaskId => f.write_str("motion_task_id"),
                Self::TrelloCardId => f.write_str("trello_card_id"),
                Self::AirtableRecordId => f.write_str("airtable_record_id"),
                Self::ShortcutStoryId => f.write_str("shortcut_story_id"),
                Self::GithubIssueId => f.write_str("github_issue_id"),
                Self::GitlabIssueId => f.write_str("gitlab_issue_id"),
                Self::FreshserviceTicketId => f.write_str("freshservice_ticket_id"),
                Self::FreshserviceTaskId => f.write_str("freshservice_task_id"),
                Self::ClickupTaskId => f.write_str("clickup_task_id"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateActionItemTaskParamsAttributeToQueryBy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "id" => Ok(Self::Id),
                "jira_issue_id" => Ok(Self::JiraIssueId),
                "asana_task_id" => Ok(Self::AsanaTaskId),
                "shortcut_task_id" => Ok(Self::ShortcutTaskId),
                "linear_issue_id" => Ok(Self::LinearIssueId),
                "zendesk_ticket_id" => Ok(Self::ZendeskTicketId),
                "motion_task_id" => Ok(Self::MotionTaskId),
                "trello_card_id" => Ok(Self::TrelloCardId),
                "airtable_record_id" => Ok(Self::AirtableRecordId),
                "shortcut_story_id" => Ok(Self::ShortcutStoryId),
                "github_issue_id" => Ok(Self::GithubIssueId),
                "gitlab_issue_id" => Ok(Self::GitlabIssueId),
                "freshservice_ticket_id" => Ok(Self::FreshserviceTicketId),
                "freshservice_task_id" => Ok(Self::FreshserviceTaskId),
                "clickup_task_id" => Ok(Self::ClickupTaskId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateActionItemTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateActionItemTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateActionItemTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for UpdateActionItemTaskParamsAttributeToQueryBy {
        fn default() -> Self {
            UpdateActionItemTaskParamsAttributeToQueryBy::Id
        }
    }
    ///The action item priority
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The action item priority",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateActionItemTaskParamsPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for UpdateActionItemTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateActionItemTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateActionItemTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateActionItemTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateActionItemTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The action item status
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The action item status",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "in_progress",
    ///    "cancelled",
    ///    "done"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateActionItemTaskParamsStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "done")]
        Done,
    }
    impl ::std::fmt::Display for UpdateActionItemTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Done => f.write_str("done"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateActionItemTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "in_progress" => Ok(Self::InProgress),
                "cancelled" => Ok(Self::Cancelled),
                "done" => Ok(Self::Done),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateActionItemTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateActionItemTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateActionItemTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateActionItemTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_action_item"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateActionItemTaskParamsTaskType {
        #[serde(rename = "update_action_item")]
        UpdateActionItem,
    }
    impl ::std::fmt::Display for UpdateActionItemTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateActionItem => f.write_str("update_action_item"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateActionItemTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_action_item" => Ok(Self::UpdateActionItem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateActionItemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateActionItemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateActionItemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAirtableTableRecordTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "base_key",
    ///    "record_id",
    ///    "table_name"
    ///  ],
    ///  "properties": {
    ///    "base_key": {
    ///      "description": "The base key",
    ///      "type": "string"
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "record_id": {
    ///      "description": "The record id",
    ///      "type": "string"
    ///    },
    ///    "table_name": {
    ///      "description": "The table name",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_airtable_table_record"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAirtableTableRecordTaskParams {
        ///The base key
        pub base_key: ::std::string::String,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The record id
        pub record_id: ::std::string::String,
        ///The table name
        pub table_name: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            UpdateAirtableTableRecordTaskParamsTaskType,
        >,
    }
    impl UpdateAirtableTableRecordTaskParams {
        pub fn builder() -> builder::UpdateAirtableTableRecordTaskParams {
            Default::default()
        }
    }
    ///`UpdateAirtableTableRecordTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_airtable_table_record"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAirtableTableRecordTaskParamsTaskType {
        #[serde(rename = "update_airtable_table_record")]
        UpdateAirtableTableRecord,
    }
    impl ::std::fmt::Display for UpdateAirtableTableRecordTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateAirtableTableRecord => {
                    f.write_str("update_airtable_table_record")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateAirtableTableRecordTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_airtable_table_record" => Ok(Self::UpdateAirtableTableRecord),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAirtableTableRecordTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAirtableTableRecordTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAirtableTableRecordTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlert`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alert_field_values_attributes": {
    ///              "description": "Custom alert field values to create with the alert",
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "alert_field_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "alert_field_id": {
    ///                    "description": "ID of the custom alert field",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value for the alert field",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "The ID of the alert urgency",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "data": {
    ///              "description": "Additional data",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            },
    ///            "deduplication_key": {
    ///              "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the alert",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "ended_at": {
    ///              "description": "Alert end datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the alert",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "external_id": {
    ///              "description": "External ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_url": {
    ///              "description": "External Url",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "functionality_ids": {
    ///              "description": "The Functionality IDs to attach to the alert",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "description": "The Group IDs to attach to the alert",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "labels": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "description": "Key of the tag",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value of the tag",
    ///                    "oneOf": [
    ///                      {
    ///                        "type": "string"
    ///                      },
    ///                      {
    ///                        "type": "number"
    ///                      },
    ///                      {
    ///                        "type": "boolean"
    ///                      }
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "noise": {
    ///              "description": "Whether the alert is marked as noise",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "noise",
    ///                "not_noise"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the alert",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "source": {
    ///              "description": "Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.",
    ///              "deprecated": true,
    ///              "type": "string"
    ///            },
    ///            "started_at": {
    ///              "description": "Alert start datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the alert",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alerts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlert {
        pub data: UpdateAlertData,
    }
    impl UpdateAlert {
        pub fn builder() -> builder::UpdateAlert {
            Default::default()
        }
    }
    ///`UpdateAlertData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alert_field_values_attributes": {
    ///          "description": "Custom alert field values to create with the alert",
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "alert_field_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "alert_field_id": {
    ///                "description": "ID of the custom alert field",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value for the alert field",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "The ID of the alert urgency",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "data": {
    ///          "description": "Additional data",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        },
    ///        "deduplication_key": {
    ///          "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the alert",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "ended_at": {
    ///          "description": "Alert end datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the alert",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "external_id": {
    ///          "description": "External ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_url": {
    ///          "description": "External Url",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "functionality_ids": {
    ///          "description": "The Functionality IDs to attach to the alert",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "description": "The Group IDs to attach to the alert",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "labels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "key",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "key": {
    ///                "description": "Key of the tag",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value of the tag",
    ///                "oneOf": [
    ///                  {
    ///                    "type": "string"
    ///                  },
    ///                  {
    ///                    "type": "number"
    ///                  },
    ///                  {
    ///                    "type": "boolean"
    ///                  }
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "noise": {
    ///          "description": "Whether the alert is marked as noise",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "noise",
    ///            "not_noise"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the alert",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "source": {
    ///          "description": "Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.",
    ///          "deprecated": true,
    ///          "type": "string"
    ///        },
    ///        "started_at": {
    ///          "description": "Alert start datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the alert",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertData {
        pub attributes: UpdateAlertDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertDataType,
    }
    impl UpdateAlertData {
        pub fn builder() -> builder::UpdateAlertData {
            Default::default()
        }
    }
    ///`UpdateAlertDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_field_values_attributes": {
    ///      "description": "Custom alert field values to create with the alert",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "alert_field_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "description": "ID of the custom alert field",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value for the alert field",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The ID of the alert urgency",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "data": {
    ///      "description": "Additional data",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "deduplication_key": {
    ///      "description": "Alerts sharing the same deduplication key are treated as a single alert.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "ended_at": {
    ///      "description": "Alert end datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_id": {
    ///      "description": "External ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_url": {
    ///      "description": "External Url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "The Group IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the tag",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the tag",
    ///            "oneOf": [
    ///              {
    ///                "type": "string"
    ///              },
    ///              {
    ///                "type": "number"
    ///              },
    ///              {
    ///                "type": "boolean"
    ///              }
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "noise": {
    ///      "description": "Whether the alert is marked as noise",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "noise",
    ///        "not_noise"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the alert",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "source": {
    ///      "description": "Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.",
    ///      "deprecated": true,
    ///      "type": "string"
    ///    },
    ///    "started_at": {
    ///      "description": "Alert start datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the alert",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertDataAttributes {
        ///Custom alert field values to create with the alert
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_field_values_attributes: ::std::vec::Vec<
            ::std::option::Option<
                UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
            >,
        >,
        ///The ID of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Additional data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Alerts sharing the same deduplication key are treated as a single alert.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key: ::std::option::Option<::std::string::String>,
        ///The description of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Alert end datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The Environment IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///External ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///External Url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The Functionality IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Group IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<
            ::std::option::Option<UpdateAlertDataAttributesLabelsItem>,
        >,
        ///Whether the alert is marked as noise
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub noise: ::std::option::Option<UpdateAlertDataAttributesNoise>,
        ///The Service IDs to attach to the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Deprecated. Accepted for backwards compatibility; new clients should omit. Defaults to `api`.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<::std::string::String>,
        ///Alert start datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The summary of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateAlertDataAttributes {
        fn default() -> Self {
            Self {
                alert_field_values_attributes: Default::default(),
                alert_urgency_id: Default::default(),
                data: Default::default(),
                deduplication_key: Default::default(),
                description: Default::default(),
                ended_at: Default::default(),
                environment_ids: Default::default(),
                external_id: Default::default(),
                external_url: Default::default(),
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                labels: Default::default(),
                noise: Default::default(),
                service_ids: Default::default(),
                source: Default::default(),
                started_at: Default::default(),
                summary: Default::default(),
            }
        }
    }
    impl UpdateAlertDataAttributes {
        pub fn builder() -> builder::UpdateAlertDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertDataAttributesAlertFieldValuesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_field_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "description": "ID of the custom alert field",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value for the alert field",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
        ///ID of the custom alert field
        pub alert_field_id: ::std::string::String,
        ///Value for the alert field
        pub value: ::std::string::String,
    }
    impl UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
        pub fn builder() -> builder::UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
            Default::default()
        }
    }
    ///`UpdateAlertDataAttributesLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the tag",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the tag",
    ///      "oneOf": [
    ///        {
    ///          "type": "string"
    ///        },
    ///        {
    ///          "type": "number"
    ///        },
    ///        {
    ///          "type": "boolean"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertDataAttributesLabelsItem {
        ///Key of the tag
        pub key: ::std::string::String,
        ///Value of the tag
        pub value: UpdateAlertDataAttributesLabelsItemValue,
    }
    impl UpdateAlertDataAttributesLabelsItem {
        pub fn builder() -> builder::UpdateAlertDataAttributesLabelsItem {
            Default::default()
        }
    }
    ///Value of the tag
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Value of the tag",
    ///  "oneOf": [
    ///    {
    ///      "type": "string"
    ///    },
    ///    {
    ///      "type": "number"
    ///    },
    ///    {
    ///      "type": "boolean"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum UpdateAlertDataAttributesLabelsItemValue {
        String(::std::string::String),
        Number(f64),
        Boolean(bool),
    }
    impl ::std::fmt::Display for UpdateAlertDataAttributesLabelsItemValue {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match self {
                Self::String(x) => x.fmt(f),
                Self::Number(x) => x.fmt(f),
                Self::Boolean(x) => x.fmt(f),
            }
        }
    }
    impl ::std::convert::From<f64> for UpdateAlertDataAttributesLabelsItemValue {
        fn from(value: f64) -> Self {
            Self::Number(value)
        }
    }
    impl ::std::convert::From<bool> for UpdateAlertDataAttributesLabelsItemValue {
        fn from(value: bool) -> Self {
            Self::Boolean(value)
        }
    }
    ///Whether the alert is marked as noise
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Whether the alert is marked as noise",
    ///  "type": "string",
    ///  "enum": [
    ///    "noise",
    ///    "not_noise"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertDataAttributesNoise {
        #[serde(rename = "noise")]
        Noise,
        #[serde(rename = "not_noise")]
        NotNoise,
    }
    impl ::std::fmt::Display for UpdateAlertDataAttributesNoise {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Noise => f.write_str("noise"),
                Self::NotNoise => f.write_str("not_noise"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertDataAttributesNoise {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "noise" => Ok(Self::Noise),
                "not_noise" => Ok(Self::NotNoise),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertDataAttributesNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertDataAttributesNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertDataAttributesNoise {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertDataType {
        #[serde(rename = "alerts")]
        Alerts,
    }
    impl ::std::fmt::Display for UpdateAlertDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Update an alert event. Note: Only alert events with kind='note' can be updated. You cannot change the kind field.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Update an alert event. Note: Only alert events with kind='note' can be updated. You cannot change the kind field.",
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "details"
    ///          ],
    ///          "properties": {
    ///            "details": {
    ///              "description": "Note message.",
    ///              "type": "string"
    ///            },
    ///            "user_id": {
    ///              "description": "Author of the note.",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_events"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertEvent {
        pub data: UpdateAlertEventData,
    }
    impl UpdateAlertEvent {
        pub fn builder() -> builder::UpdateAlertEvent {
            Default::default()
        }
    }
    ///`UpdateAlertEventData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "details"
    ///      ],
    ///      "properties": {
    ///        "details": {
    ///          "description": "Note message.",
    ///          "type": "string"
    ///        },
    ///        "user_id": {
    ///          "description": "Author of the note.",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertEventData {
        pub attributes: UpdateAlertEventDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertEventDataType,
    }
    impl UpdateAlertEventData {
        pub fn builder() -> builder::UpdateAlertEventData {
            Default::default()
        }
    }
    ///`UpdateAlertEventDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "details"
    ///  ],
    ///  "properties": {
    ///    "details": {
    ///      "description": "Note message.",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "description": "Author of the note.",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertEventDataAttributes {
        ///Note message.
        pub details: ::std::string::String,
        ///Author of the note.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl UpdateAlertEventDataAttributes {
        pub fn builder() -> builder::UpdateAlertEventDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertEventDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertEventDataType {
        #[serde(rename = "alert_events")]
        AlertEvents,
    }
    impl ::std::fmt::Display for UpdateAlertEventDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertEvents => f.write_str("alert_events"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertEventDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_events" => Ok(Self::AlertEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "name": {
    ///              "description": "The name of the alert field",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertField {
        pub data: UpdateAlertFieldData,
    }
    impl UpdateAlertField {
        pub fn builder() -> builder::UpdateAlertField {
            Default::default()
        }
    }
    ///`UpdateAlertFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "name": {
    ///          "description": "The name of the alert field",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertFieldData {
        pub attributes: UpdateAlertFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertFieldDataType,
    }
    impl UpdateAlertFieldData {
        pub fn builder() -> builder::UpdateAlertFieldData {
            Default::default()
        }
    }
    ///`UpdateAlertFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "name": {
    ///      "description": "The name of the alert field",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertFieldDataAttributes {
        ///The name of the alert field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateAlertFieldDataAttributes {
        fn default() -> Self {
            Self { name: Default::default() }
        }
    }
    impl UpdateAlertFieldDataAttributes {
        pub fn builder() -> builder::UpdateAlertFieldDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertFieldDataType {
        #[serde(rename = "alert_fields")]
        AlertFields,
    }
    impl ::std::fmt::Display for UpdateAlertFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertFields => f.write_str("alert_fields"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_fields" => Ok(Self::AlertFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "attributes": {
    ///              "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///              "deprecated": true,
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "json_path": {
    ///                    "description": "The JSON path to the value to group by.",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "condition_type": {
    ///              "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "any"
    ///              ]
    ///            },
    ///            "conditions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "property_field_condition_type",
    ///                  "property_field_type"
    ///                ],
    ///                "properties": {
    ///                  "alert_urgency_ids": {
    ///                    "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "conditionable_id": {
    ///                    "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                    "type": "string"
    ///                  },
    ///                  "conditionable_type": {
    ///                    "description": "The type of the conditionable",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "AlertField"
    ///                    ]
    ///                  },
    ///                  "property_field_condition_type": {
    ///                    "description": "The condition type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "starts_with",
    ///                      "ends_with",
    ///                      "matches_regex",
    ///                      "is_empty",
    ///                      "matches_existing_alert"
    ///                    ]
    ///                  },
    ///                  "property_field_name": {
    ///                    "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_type": {
    ///                    "description": "The type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "attribute",
    ///                      "payload",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "property_field_value": {
    ///                    "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_values": {
    ///                    "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "The description of the alert group",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "group_by_alert_title": {
    ///              "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///              "deprecated": true,
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                0
    ///              ]
    ///            },
    ///            "group_by_alert_urgency": {
    ///              "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///              "deprecated": true,
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                0
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert group",
    ///              "type": "string"
    ///            },
    ///            "targets": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "target_id",
    ///                  "target_type"
    ///                ],
    ///                "properties": {
    ///                  "target_id": {
    ///                    "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///                    "type": "string",
    ///                    "format": "uuid"
    ///                  },
    ///                  "target_type": {
    ///                    "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "Group",
    ///                      "Service",
    ///                      "EscalationPolicy",
    ///                      "Functionality"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "time_window": {
    ///              "description": "The length of time an Alert Group should stay open and accept new alerts",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertGroup {
        pub data: UpdateAlertGroupData,
    }
    impl UpdateAlertGroup {
        pub fn builder() -> builder::UpdateAlertGroup {
            Default::default()
        }
    }
    ///`UpdateAlertGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///          "deprecated": true,
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "json_path": {
    ///                "description": "The JSON path to the value to group by.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "condition_type": {
    ///          "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "property_field_condition_type",
    ///              "property_field_type"
    ///            ],
    ///            "properties": {
    ///              "alert_urgency_ids": {
    ///                "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": "string"
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "property_field_condition_type": {
    ///                "description": "The condition type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with",
    ///                  "matches_regex",
    ///                  "is_empty",
    ///                  "matches_existing_alert"
    ///                ]
    ///              },
    ///              "property_field_name": {
    ///                "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                "type": "string"
    ///              },
    ///              "property_field_type": {
    ///                "description": "The type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "attribute",
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "property_field_value": {
    ///                "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                "type": "string"
    ///              },
    ///              "property_field_values": {
    ///                "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "The description of the alert group",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "group_by_alert_title": {
    ///          "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///          "deprecated": true,
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            0
    ///          ]
    ///        },
    ///        "group_by_alert_urgency": {
    ///          "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///          "deprecated": true,
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            0
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert group",
    ///          "type": "string"
    ///        },
    ///        "targets": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "target_id",
    ///              "target_type"
    ///            ],
    ///            "properties": {
    ///              "target_id": {
    ///                "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              },
    ///              "target_type": {
    ///                "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                "type": "string",
    ///                "enum": [
    ///                  "Group",
    ///                  "Service",
    ///                  "EscalationPolicy",
    ///                  "Functionality"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "time_window": {
    ///          "description": "The length of time an Alert Group should stay open and accept new alerts",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertGroupData {
        pub attributes: UpdateAlertGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertGroupDataType,
    }
    impl UpdateAlertGroupData {
        pub fn builder() -> builder::UpdateAlertGroupData {
            Default::default()
        }
    }
    ///`UpdateAlertGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "description": "This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.",
    ///      "deprecated": true,
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "json_path": {
    ///            "description": "The JSON path to the value to group by.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "condition_type": {
    ///      "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": "string"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty",
    ///              "matches_existing_alert"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": "string"
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the alert group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_by_alert_title": {
    ///      "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///      "deprecated": true,
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        0
    ///      ]
    ///    },
    ///    "group_by_alert_urgency": {
    ///      "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///      "deprecated": true,
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        0
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert group",
    ///      "type": "string"
    ///    },
    ///    "targets": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "target_id",
    ///          "target_type"
    ///        ],
    ///        "properties": {
    ///          "target_id": {
    ///            "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Group",
    ///              "Service",
    ///              "EscalationPolicy",
    ///              "Functionality"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "time_window": {
    ///      "description": "The length of time an Alert Group should stay open and accept new alerts",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertGroupDataAttributes {
        ///This field is deprecated. Please use the `conditions` field instead, `attributes` will be removed in the future.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub attributes: ::std::vec::Vec<UpdateAlertGroupDataAttributesAttributesItem>,
        ///Group alerts when ANY or ALL of the fields are matching.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            UpdateAlertGroupDataAttributesConditionType,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<UpdateAlertGroupDataAttributesConditionsItem>,
        ///The description of the alert group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by_alert_title: ::std::option::Option<
            UpdateAlertGroupDataAttributesGroupByAlertTitle,
        >,
        ///[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by_alert_urgency: ::std::option::Option<
            UpdateAlertGroupDataAttributesGroupByAlertUrgency,
        >,
        ///The name of the alert group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub targets: ::std::vec::Vec<UpdateAlertGroupDataAttributesTargetsItem>,
        ///The length of time an Alert Group should stay open and accept new alerts
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_window: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateAlertGroupDataAttributes {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                condition_type: Default::default(),
                conditions: Default::default(),
                description: Default::default(),
                group_by_alert_title: Default::default(),
                group_by_alert_urgency: Default::default(),
                name: Default::default(),
                targets: Default::default(),
                time_window: Default::default(),
            }
        }
    }
    impl UpdateAlertGroupDataAttributes {
        pub fn builder() -> builder::UpdateAlertGroupDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertGroupDataAttributesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "json_path": {
    ///      "description": "The JSON path to the value to group by.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertGroupDataAttributesAttributesItem {
        ///The JSON path to the value to group by.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateAlertGroupDataAttributesAttributesItem {
        fn default() -> Self {
            Self {
                json_path: Default::default(),
            }
        }
    }
    impl UpdateAlertGroupDataAttributesAttributesItem {
        pub fn builder() -> builder::UpdateAlertGroupDataAttributesAttributesItem {
            Default::default()
        }
    }
    ///Group alerts when ANY or ALL of the fields are matching.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Group alerts when ANY or ALL of the fields are matching.",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertGroupDataAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display for UpdateAlertGroupDataAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertGroupDataAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertGroupDataAttributesConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": "string"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty",
    ///        "matches_existing_alert"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": "string"
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertGroupDataAttributesConditionsItem {
        ///The Alert Urgency IDs to check in the condition. Only need to be set when the property field type is 'attribute', the property field name is 'alert_urgency' and the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            UpdateAlertGroupDataAttributesConditionsItemConditionableType,
        >,
        ///The condition type of the property field
        pub property_field_condition_type: UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType,
        ///The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        ///The type of the property field
        pub property_field_type: UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType,
        ///The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field. Need to be passed if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub property_field_values: ::std::vec::Vec<::std::string::String>,
    }
    impl UpdateAlertGroupDataAttributesConditionsItem {
        pub fn builder() -> builder::UpdateAlertGroupDataAttributesConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertGroupDataAttributesConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertGroupDataAttributesConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertGroupDataAttributesConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertGroupDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertGroupDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertGroupDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty",
    ///    "matches_existing_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
        #[serde(rename = "matches_existing_alert")]
        MatchesExistingAlert,
    }
    impl ::std::fmt::Display
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
                Self::MatchesExistingAlert => f.write_str("matches_existing_alert"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                "matches_existing_alert" => Ok(Self::MatchesExistingAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Whether the alerts should be grouped by titles. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///  "deprecated": true,
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct UpdateAlertGroupDataAttributesGroupByAlertTitle(i64);
    impl ::std::ops::Deref for UpdateAlertGroupDataAttributesGroupByAlertTitle {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<UpdateAlertGroupDataAttributesGroupByAlertTitle> for i64 {
        fn from(value: UpdateAlertGroupDataAttributesGroupByAlertTitle) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64>
    for UpdateAlertGroupDataAttributesGroupByAlertTitle {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for UpdateAlertGroupDataAttributesGroupByAlertTitle {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "[DEPRECATED] Whether the alerts should be grouped by urgencies. This field is deprecated. Please use the `conditions` field with advanced alert grouping instead.",
    ///  "deprecated": true,
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct UpdateAlertGroupDataAttributesGroupByAlertUrgency(i64);
    impl ::std::ops::Deref for UpdateAlertGroupDataAttributesGroupByAlertUrgency {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<UpdateAlertGroupDataAttributesGroupByAlertUrgency>
    for i64 {
        fn from(value: UpdateAlertGroupDataAttributesGroupByAlertUrgency) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64>
    for UpdateAlertGroupDataAttributesGroupByAlertUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for UpdateAlertGroupDataAttributesGroupByAlertUrgency {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`UpdateAlertGroupDataAttributesTargetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "id for the Group, Service, EscalationPolicy or Functionality",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Group",
    ///        "Service",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertGroupDataAttributesTargetsItem {
        ///id for the Group, Service, EscalationPolicy or Functionality
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: UpdateAlertGroupDataAttributesTargetsItemTargetType,
    }
    impl UpdateAlertGroupDataAttributesTargetsItem {
        pub fn builder() -> builder::UpdateAlertGroupDataAttributesTargetsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Group",
    ///    "Service",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertGroupDataAttributesTargetsItemTargetType {
        Group,
        Service,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for UpdateAlertGroupDataAttributesTargetsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Group => f.write_str("Group"),
                Self::Service => f.write_str("Service"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertGroupDataAttributesTargetsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Group" => Ok(Self::Group),
                "Service" => Ok(Self::Service),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertGroupDataAttributesTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertGroupDataAttributesTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertGroupDataAttributesTargetsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertGroupDataType {
        #[serde(rename = "alert_groups")]
        AlertGroups,
    }
    impl ::std::fmt::Display for UpdateAlertGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertGroups => f.write_str("alert_groups"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_groups" => Ok(Self::AlertGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRoute`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alerts_source_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The ID of the alerts source",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert route is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert route",
    ///              "type": "string"
    ///            },
    ///            "owning_team_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The ID of the owning team",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "rules": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "condition_groups",
    ///                  "destinations",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "condition_groups": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "required": [
    ///                        "conditions"
    ///                      ],
    ///                      "properties": {
    ///                        "conditions": {
    ///                          "type": "array",
    ///                          "items": {
    ///                            "type": "object",
    ///                            "required": [
    ///                              "property_field_condition_type",
    ///                              "property_field_type"
    ///                            ],
    ///                            "properties": {
    ///                              "alert_urgency_ids": {
    ///                                "description": "The Alert Urgency IDs to check in the condition",
    ///                                "type": [
    ///                                  "array",
    ///                                  "null"
    ///                                ],
    ///                                "items": {
    ///                                  "type": "string"
    ///                                }
    ///                              },
    ///                              "conditionable_id": {
    ///                                "description": "The ID of the conditionable",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ],
    ///                                "format": "uuid"
    ///                              },
    ///                              "conditionable_type": {
    ///                                "description": "The type of the conditionable",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ],
    ///                                "enum": [
    ///                                  "AlertField"
    ///                                ]
    ///                              },
    ///                              "property_field_condition_type": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "is_one_of",
    ///                                  "is_not_one_of",
    ///                                  "contains",
    ///                                  "does_not_contain",
    ///                                  "starts_with",
    ///                                  "ends_with",
    ///                                  "matches_regex",
    ///                                  "is_empty"
    ///                                ]
    ///                              },
    ///                              "property_field_name": {
    ///                                "description": "The name of the property field",
    ///                                "type": "string"
    ///                              },
    ///                              "property_field_type": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "attribute",
    ///                                  "payload",
    ///                                  "alert_field"
    ///                                ]
    ///                              },
    ///                              "property_field_value": {
    ///                                "description": "The value of the property field",
    ///                                "type": [
    ///                                  "string",
    ///                                  "null"
    ///                                ]
    ///                              },
    ///                              "property_field_values": {
    ///                                "type": [
    ///                                  "array",
    ///                                  "null"
    ///                                ],
    ///                                "items": {
    ///                                  "type": "string"
    ///                                }
    ///                              }
    ///                            }
    ///                          }
    ///                        },
    ///                        "position": {
    ///                          "description": "The position of the condition group",
    ///                          "type": "integer"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "destinations": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "required": [
    ///                        "target_id",
    ///                        "target_type"
    ///                      ],
    ///                      "properties": {
    ///                        "target_id": {
    ///                          "description": "The ID of the target",
    ///                          "type": "string",
    ///                          "format": "uuid"
    ///                        },
    ///                        "target_type": {
    ///                          "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                          "type": "string",
    ///                          "enum": [
    ///                            "Service",
    ///                            "Group",
    ///                            "Functionality",
    ///                            "EscalationPolicy"
    ///                          ]
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "fallback_rule": {
    ///                    "description": "Whether this is a fallback rule",
    ///                    "default": false,
    ///                    "type": "boolean"
    ///                  },
    ///                  "name": {
    ///                    "description": "The name of the alert routing rule",
    ///                    "type": "string"
    ///                  },
    ///                  "position": {
    ///                    "description": "The position of the alert routing rule for ordering evaluation",
    ///                    "type": "integer"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRoute {
        pub data: UpdateAlertRouteData,
    }
    impl UpdateAlertRoute {
        pub fn builder() -> builder::UpdateAlertRoute {
            Default::default()
        }
    }
    ///`UpdateAlertRouteData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alerts_source_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The ID of the alerts source",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert route is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert route",
    ///          "type": "string"
    ///        },
    ///        "owning_team_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The ID of the owning team",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "rules": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "condition_groups",
    ///              "destinations",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "condition_groups": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "conditions"
    ///                  ],
    ///                  "properties": {
    ///                    "conditions": {
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "object",
    ///                        "required": [
    ///                          "property_field_condition_type",
    ///                          "property_field_type"
    ///                        ],
    ///                        "properties": {
    ///                          "alert_urgency_ids": {
    ///                            "description": "The Alert Urgency IDs to check in the condition",
    ///                            "type": [
    ///                              "array",
    ///                              "null"
    ///                            ],
    ///                            "items": {
    ///                              "type": "string"
    ///                            }
    ///                          },
    ///                          "conditionable_id": {
    ///                            "description": "The ID of the conditionable",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ],
    ///                            "format": "uuid"
    ///                          },
    ///                          "conditionable_type": {
    ///                            "description": "The type of the conditionable",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ],
    ///                            "enum": [
    ///                              "AlertField"
    ///                            ]
    ///                          },
    ///                          "property_field_condition_type": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "is_one_of",
    ///                              "is_not_one_of",
    ///                              "contains",
    ///                              "does_not_contain",
    ///                              "starts_with",
    ///                              "ends_with",
    ///                              "matches_regex",
    ///                              "is_empty"
    ///                            ]
    ///                          },
    ///                          "property_field_name": {
    ///                            "description": "The name of the property field",
    ///                            "type": "string"
    ///                          },
    ///                          "property_field_type": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "attribute",
    ///                              "payload",
    ///                              "alert_field"
    ///                            ]
    ///                          },
    ///                          "property_field_value": {
    ///                            "description": "The value of the property field",
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "property_field_values": {
    ///                            "type": [
    ///                              "array",
    ///                              "null"
    ///                            ],
    ///                            "items": {
    ///                              "type": "string"
    ///                            }
    ///                          }
    ///                        }
    ///                      }
    ///                    },
    ///                    "position": {
    ///                      "description": "The position of the condition group",
    ///                      "type": "integer"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "destinations": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "target_id",
    ///                    "target_type"
    ///                  ],
    ///                  "properties": {
    ///                    "target_id": {
    ///                      "description": "The ID of the target",
    ///                      "type": "string",
    ///                      "format": "uuid"
    ///                    },
    ///                    "target_type": {
    ///                      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "Service",
    ///                        "Group",
    ///                        "Functionality",
    ///                        "EscalationPolicy"
    ///                      ]
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "fallback_rule": {
    ///                "description": "Whether this is a fallback rule",
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "name": {
    ///                "description": "The name of the alert routing rule",
    ///                "type": "string"
    ///              },
    ///              "position": {
    ///                "description": "The position of the alert routing rule for ordering evaluation",
    ///                "type": "integer"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRouteData {
        pub attributes: UpdateAlertRouteDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertRouteDataType,
    }
    impl UpdateAlertRouteData {
        pub fn builder() -> builder::UpdateAlertRouteData {
            Default::default()
        }
    }
    ///`UpdateAlertRouteDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alerts_source_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the alerts source",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert route is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert route",
    ///      "type": "string"
    ///    },
    ///    "owning_team_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The ID of the owning team",
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "condition_groups",
    ///          "destinations",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "condition_groups": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "conditions"
    ///              ],
    ///              "properties": {
    ///                "conditions": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "required": [
    ///                      "property_field_condition_type",
    ///                      "property_field_type"
    ///                    ],
    ///                    "properties": {
    ///                      "alert_urgency_ids": {
    ///                        "description": "The Alert Urgency IDs to check in the condition",
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      },
    ///                      "conditionable_id": {
    ///                        "description": "The ID of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "format": "uuid"
    ///                      },
    ///                      "conditionable_type": {
    ///                        "description": "The type of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "enum": [
    ///                          "AlertField"
    ///                        ]
    ///                      },
    ///                      "property_field_condition_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "starts_with",
    ///                          "ends_with",
    ///                          "matches_regex",
    ///                          "is_empty"
    ///                        ]
    ///                      },
    ///                      "property_field_name": {
    ///                        "description": "The name of the property field",
    ///                        "type": "string"
    ///                      },
    ///                      "property_field_type": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "attribute",
    ///                          "payload",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "property_field_value": {
    ///                        "description": "The value of the property field",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "property_field_values": {
    ///                        "type": [
    ///                          "array",
    ///                          "null"
    ///                        ],
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "position": {
    ///                  "description": "The position of the condition group",
    ///                  "type": "integer"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "destinations": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "target_id",
    ///                "target_type"
    ///              ],
    ///              "properties": {
    ///                "target_id": {
    ///                  "description": "The ID of the target",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_type": {
    ///                  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "Functionality",
    ///                    "EscalationPolicy"
    ///                  ]
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "fallback_rule": {
    ///            "description": "Whether this is a fallback rule",
    ///            "default": false,
    ///            "type": "boolean"
    ///          },
    ///          "name": {
    ///            "description": "The name of the alert routing rule",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the alert routing rule for ordering evaluation",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertRouteDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_source_ids: ::std::vec::Vec<::uuid::Uuid>,
        ///Whether the alert route is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert route
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owning_team_ids: ::std::vec::Vec<::uuid::Uuid>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<UpdateAlertRouteDataAttributesRulesItem>,
    }
    impl ::std::default::Default for UpdateAlertRouteDataAttributes {
        fn default() -> Self {
            Self {
                alerts_source_ids: Default::default(),
                enabled: Default::default(),
                name: Default::default(),
                owning_team_ids: Default::default(),
                rules: Default::default(),
            }
        }
    }
    impl UpdateAlertRouteDataAttributes {
        pub fn builder() -> builder::UpdateAlertRouteDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertRouteDataAttributesRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "condition_groups",
    ///    "destinations",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "condition_groups": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "conditions"
    ///        ],
    ///        "properties": {
    ///          "conditions": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "required": [
    ///                "property_field_condition_type",
    ///                "property_field_type"
    ///              ],
    ///              "properties": {
    ///                "alert_urgency_ids": {
    ///                  "description": "The Alert Urgency IDs to check in the condition",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                },
    ///                "conditionable_id": {
    ///                  "description": "The ID of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "format": "uuid"
    ///                },
    ///                "conditionable_type": {
    ///                  "description": "The type of the conditionable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "AlertField"
    ///                  ]
    ///                },
    ///                "property_field_condition_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "is_one_of",
    ///                    "is_not_one_of",
    ///                    "contains",
    ///                    "does_not_contain",
    ///                    "starts_with",
    ///                    "ends_with",
    ///                    "matches_regex",
    ///                    "is_empty"
    ///                  ]
    ///                },
    ///                "property_field_name": {
    ///                  "description": "The name of the property field",
    ///                  "type": "string"
    ///                },
    ///                "property_field_type": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "attribute",
    ///                    "payload",
    ///                    "alert_field"
    ///                  ]
    ///                },
    ///                "property_field_value": {
    ///                  "description": "The value of the property field",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "property_field_values": {
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition group",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "destinations": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "target_id",
    ///          "target_type"
    ///        ],
    ///        "properties": {
    ///          "target_id": {
    ///            "description": "The ID of the target",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "target_type": {
    ///            "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "Service",
    ///              "Group",
    ///              "Functionality",
    ///              "EscalationPolicy"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "fallback_rule": {
    ///      "description": "Whether this is a fallback rule",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRouteDataAttributesRulesItem {
        pub condition_groups: ::std::vec::Vec<
            UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
        >,
        pub destinations: ::std::vec::Vec<
            UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
        >,
        ///Whether this is a fallback rule
        #[serde(default)]
        pub fallback_rule: bool,
        ///The name of the alert routing rule
        pub name: ::std::string::String,
        ///The position of the alert routing rule for ordering evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl UpdateAlertRouteDataAttributesRulesItem {
        pub fn builder() -> builder::UpdateAlertRouteDataAttributesRulesItem {
            Default::default()
        }
    }
    ///`UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "conditions"
    ///  ],
    ///  "properties": {
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "property_field_condition_type",
    ///          "property_field_type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_ids": {
    ///            "description": "The Alert Urgency IDs to check in the condition",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "property_field_condition_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition group",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
        pub conditions: ::std::vec::Vec<
            UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        >,
        ///The position of the condition group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
        pub fn builder() -> builder::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
            Default::default()
        }
    }
    ///`UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "property_field_condition_type",
    ///    "property_field_type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_ids": {
    ///      "description": "The Alert Urgency IDs to check in the condition",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "property_field_condition_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        ///The Alert Urgency IDs to check in the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The ID of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
        >,
        pub property_field_condition_type: UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
        ///The name of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        pub property_field_type: UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
        ///The value of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_values: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
    }
    impl UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
        pub fn builder() -> builder::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRouteDataAttributesRulesItemDestinationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "target_id",
    ///    "target_type"
    ///  ],
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
        ///The ID of the target
        pub target_id: ::uuid::Uuid,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        pub target_type: UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
    }
    impl UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
        pub fn builder() -> builder::UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display
    for UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRouteDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRouteDataType {
        #[serde(rename = "alert_routes")]
        AlertRoutes,
    }
    impl ::std::fmt::Display for UpdateAlertRouteDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutes => f.write_str("alert_routes"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertRouteDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routes" => Ok(Self::AlertRoutes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertRouteDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRoutingRule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alerts_source_id": {
    ///              "description": "The ID of the alerts source",
    ///              "type": "string",
    ///              "format": "uuid"
    ///            },
    ///            "condition_type": {
    ///              "description": "The type of condition for the alert routing rule",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "any"
    ///              ]
    ///            },
    ///            "conditions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "The ID of the alert routing rule condition",
    ///                    "type": "string",
    ///                    "format": "uuid"
    ///                  },
    ///                  "property_field_condition_type": {
    ///                    "description": "The condition type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "starts_with",
    ///                      "ends_with",
    ///                      "matches_regex",
    ///                      "is_empty"
    ///                    ]
    ///                  },
    ///                  "property_field_name": {
    ///                    "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                    "type": "string"
    ///                  },
    ///                  "property_field_type": {
    ///                    "description": "The type of the property field",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "attribute",
    ///                      "payload"
    ///                    ]
    ///                  },
    ///                  "property_field_value": {
    ///                    "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "property_field_values": {
    ///                    "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "destination": {
    ///              "type": "object",
    ///              "properties": {
    ///                "target_id": {
    ///                  "description": "The ID of the target",
    ///                  "type": "string",
    ///                  "format": "uuid"
    ///                },
    ///                "target_type": {
    ///                  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "Functionality",
    ///                    "EscalationPolicy"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert routing rule is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert routing rule",
    ///              "type": "string"
    ///            },
    ///            "owning_team_ids": {
    ///              "description": "The IDs of the teams that own the alert routing rule",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "format": "uuid"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "The position of the alert routing rule for ordering evaluation",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_routing_rules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRoutingRule {
        pub data: UpdateAlertRoutingRuleData,
    }
    impl UpdateAlertRoutingRule {
        pub fn builder() -> builder::UpdateAlertRoutingRule {
            Default::default()
        }
    }
    ///`UpdateAlertRoutingRuleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alerts_source_id": {
    ///          "description": "The ID of the alerts source",
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "condition_type": {
    ///          "description": "The type of condition for the alert routing rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "id": {
    ///                "description": "The ID of the alert routing rule condition",
    ///                "type": "string",
    ///                "format": "uuid"
    ///              },
    ///              "property_field_condition_type": {
    ///                "description": "The condition type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with",
    ///                  "matches_regex",
    ///                  "is_empty"
    ///                ]
    ///              },
    ///              "property_field_name": {
    ///                "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///                "type": "string"
    ///              },
    ///              "property_field_type": {
    ///                "description": "The type of the property field",
    ///                "type": "string",
    ///                "enum": [
    ///                  "attribute",
    ///                  "payload"
    ///                ]
    ///              },
    ///              "property_field_value": {
    ///                "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "property_field_values": {
    ///                "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "destination": {
    ///          "type": "object",
    ///          "properties": {
    ///            "target_id": {
    ///              "description": "The ID of the target",
    ///              "type": "string",
    ///              "format": "uuid"
    ///            },
    ///            "target_type": {
    ///              "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///              "type": "string",
    ///              "enum": [
    ///                "Service",
    ///                "Group",
    ///                "Functionality",
    ///                "EscalationPolicy"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert routing rule is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert routing rule",
    ///          "type": "string"
    ///        },
    ///        "owning_team_ids": {
    ///          "description": "The IDs of the teams that own the alert routing rule",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "format": "uuid"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "The position of the alert routing rule for ordering evaluation",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_routing_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRoutingRuleData {
        pub attributes: UpdateAlertRoutingRuleDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertRoutingRuleDataType,
    }
    impl UpdateAlertRoutingRuleData {
        pub fn builder() -> builder::UpdateAlertRoutingRuleData {
            Default::default()
        }
    }
    ///`UpdateAlertRoutingRuleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alerts_source_id": {
    ///      "description": "The ID of the alerts source",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "condition_type": {
    ///      "description": "The type of condition for the alert routing rule",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "description": "The ID of the alert routing rule condition",
    ///            "type": "string",
    ///            "format": "uuid"
    ///          },
    ///          "property_field_condition_type": {
    ///            "description": "The condition type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "is_one_of",
    ///              "is_not_one_of",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with",
    ///              "matches_regex",
    ///              "is_empty"
    ///            ]
    ///          },
    ///          "property_field_name": {
    ///            "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///            "type": "string"
    ///          },
    ///          "property_field_type": {
    ///            "description": "The type of the property field",
    ///            "type": "string",
    ///            "enum": [
    ///              "attribute",
    ///              "payload"
    ///            ]
    ///          },
    ///          "property_field_value": {
    ///            "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "property_field_values": {
    ///            "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "destination": {
    ///      "type": "object",
    ///      "properties": {
    ///        "target_id": {
    ///          "description": "The ID of the target",
    ///          "type": "string",
    ///          "format": "uuid"
    ///        },
    ///        "target_type": {
    ///          "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "Service",
    ///            "Group",
    ///            "Functionality",
    ///            "EscalationPolicy"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert routing rule is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert routing rule",
    ///      "type": "string"
    ///    },
    ///    "owning_team_ids": {
    ///      "description": "The IDs of the teams that own the alert routing rule",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "format": "uuid"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "The position of the alert routing rule for ordering evaluation",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertRoutingRuleDataAttributes {
        ///The ID of the alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_source_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of condition for the alert routing rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            UpdateAlertRoutingRuleDataAttributesConditionType,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<
            UpdateAlertRoutingRuleDataAttributesConditionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub destination: ::std::option::Option<
            UpdateAlertRoutingRuleDataAttributesDestination,
        >,
        ///Whether the alert routing rule is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert routing rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The IDs of the teams that own the alert routing rule
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owning_team_ids: ::std::vec::Vec<::uuid::Uuid>,
        ///The position of the alert routing rule for ordering evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateAlertRoutingRuleDataAttributes {
        fn default() -> Self {
            Self {
                alerts_source_id: Default::default(),
                condition_type: Default::default(),
                conditions: Default::default(),
                destination: Default::default(),
                enabled: Default::default(),
                name: Default::default(),
                owning_team_ids: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateAlertRoutingRuleDataAttributes {
        pub fn builder() -> builder::UpdateAlertRoutingRuleDataAttributes {
            Default::default()
        }
    }
    ///The type of condition for the alert routing rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition for the alert routing rule",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRoutingRuleDataAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display for UpdateAlertRoutingRuleDataAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertRoutingRuleDataAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRoutingRuleDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRoutingRuleDataAttributesConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of the alert routing rule condition",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "property_field_condition_type": {
    ///      "description": "The condition type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "is_one_of",
    ///        "is_not_one_of",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with",
    ///        "matches_regex",
    ///        "is_empty"
    ///      ]
    ///    },
    ///    "property_field_name": {
    ///      "description": "The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.",
    ///      "type": "string"
    ///    },
    ///    "property_field_type": {
    ///      "description": "The type of the property field",
    ///      "type": "string",
    ///      "enum": [
    ///        "attribute",
    ///        "payload"
    ///      ]
    ///    },
    ///    "property_field_value": {
    ///      "description": "The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "property_field_values": {
    ///      "description": "The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRoutingRuleDataAttributesConditionsItem {
        ///The ID of the alert routing rule condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::uuid::Uuid>,
        ///The condition type of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_condition_type: ::std::option::Option<
            UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType,
        >,
        ///The name of the property field. If the property field type is selected as 'attribute', then the allowed property field names are 'summary' (for Title), 'description', 'alert_urgency' and 'external_url' (for Alert Source URL). If the property field type is selected as 'payload', then the property field name should be supplied in JSON Path syntax.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_name: ::std::option::Option<::std::string::String>,
        ///The type of the property field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_type: ::std::option::Option<
            UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType,
        >,
        ///The value of the property field. Can be null if the property field condition type is 'is_one_of' or 'is_not_one_of'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_field_value: ::std::option::Option<::std::string::String>,
        ///The values of the property field. Used if the property field condition type is 'is_one_of' or 'is_not_one_of' except for when property field name is 'alert_urgency'
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub property_field_values: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateAlertRoutingRuleDataAttributesConditionsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                property_field_condition_type: Default::default(),
                property_field_name: Default::default(),
                property_field_type: Default::default(),
                property_field_value: Default::default(),
                property_field_values: Default::default(),
            }
        }
    }
    impl UpdateAlertRoutingRuleDataAttributesConditionsItem {
        pub fn builder() -> builder::UpdateAlertRoutingRuleDataAttributesConditionsItem {
            Default::default()
        }
    }
    ///The condition type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with",
    ///    "matches_regex",
    ///    "is_empty"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
        #[serde(rename = "matches_regex")]
        MatchesRegex,
        #[serde(rename = "is_empty")]
        IsEmpty,
    }
    impl ::std::fmt::Display
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
                Self::MatchesRegex => f.write_str("matches_regex"),
                Self::IsEmpty => f.write_str("is_empty"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                "matches_regex" => Ok(Self::MatchesRegex),
                "is_empty" => Ok(Self::IsEmpty),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the property field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the property field",
    ///  "type": "string",
    ///  "enum": [
    ///    "attribute",
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        #[serde(rename = "attribute")]
        Attribute,
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Attribute => f.write_str("attribute"),
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "attribute" => Ok(Self::Attribute),
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRoutingRuleDataAttributesDestination`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "target_id": {
    ///      "description": "The ID of the target",
    ///      "type": "string",
    ///      "format": "uuid"
    ///    },
    ///    "target_type": {
    ///      "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "Functionality",
    ///        "EscalationPolicy"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertRoutingRuleDataAttributesDestination {
        ///The ID of the target
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub target_id: ::std::option::Option<::uuid::Uuid>,
        ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub target_type: ::std::option::Option<
            UpdateAlertRoutingRuleDataAttributesDestinationTargetType,
        >,
    }
    impl ::std::default::Default for UpdateAlertRoutingRuleDataAttributesDestination {
        fn default() -> Self {
            Self {
                target_id: Default::default(),
                target_type: Default::default(),
            }
        }
    }
    impl UpdateAlertRoutingRuleDataAttributesDestination {
        pub fn builder() -> builder::UpdateAlertRoutingRuleDataAttributesDestination {
            Default::default()
        }
    }
    ///The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "Functionality",
    ///    "EscalationPolicy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRoutingRuleDataAttributesDestinationTargetType {
        Service,
        Group,
        Functionality,
        EscalationPolicy,
    }
    impl ::std::fmt::Display
    for UpdateAlertRoutingRuleDataAttributesDestinationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::Functionality => f.write_str("Functionality"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertRoutingRuleDataAttributesDestinationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "Functionality" => Ok(Self::Functionality),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertRoutingRuleDataAttributesDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRoutingRuleDataAttributesDestinationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertRoutingRuleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_routing_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertRoutingRuleDataType {
        #[serde(rename = "alert_routing_rules")]
        AlertRoutingRules,
    }
    impl ::std::fmt::Display for UpdateAlertRoutingRuleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertRoutingRules => f.write_str("alert_routing_rules"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertRoutingRuleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_routing_rules" => Ok(Self::AlertRoutingRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertRoutingRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertRoutingRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertRoutingRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the alert urgency",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert urgency",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the alert urgency",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_urgencies"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertUrgency {
        pub data: UpdateAlertUrgencyData,
    }
    impl UpdateAlertUrgency {
        pub fn builder() -> builder::UpdateAlertUrgency {
            Default::default()
        }
    }
    ///`UpdateAlertUrgencyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the alert urgency",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert urgency",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the alert urgency",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_urgencies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertUrgencyData {
        pub attributes: UpdateAlertUrgencyDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertUrgencyDataType,
    }
    impl UpdateAlertUrgencyData {
        pub fn builder() -> builder::UpdateAlertUrgencyData {
            Default::default()
        }
    }
    ///`UpdateAlertUrgencyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the alert urgency",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertUrgencyDataAttributes {
        ///The description of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateAlertUrgencyDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateAlertUrgencyDataAttributes {
        pub fn builder() -> builder::UpdateAlertUrgencyDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertUrgencyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_urgencies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertUrgencyDataType {
        #[serde(rename = "alert_urgencies")]
        AlertUrgencies,
    }
    impl ::std::fmt::Display for UpdateAlertUrgencyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertUrgencies => f.write_str("alert_urgencies"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertUrgencyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_urgencies" => Ok(Self::AlertUrgencies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertUrgencyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertUrgencyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertUrgencyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertsSource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alert_source_fields_attributes": {
    ///              "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "alert_field_id": {
    ///                    "description": "The ID of the alert field",
    ///                    "type": "string"
    ///                  },
    ///                  "template_body": {
    ///                    "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "alert_source_urgency_rules_attributes": {
    ///              "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "alert_urgency_id": {
    ///                    "description": "The ID of the alert urgency",
    ///                    "type": "string"
    ///                  },
    ///                  "conditionable_id": {
    ///                    "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "conditionable_type": {
    ///                    "description": "The type of the conditionable",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "AlertField"
    ///                    ]
    ///                  },
    ///                  "json_path": {
    ///                    "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "kind": {
    ///                    "description": "The kind of the conditionable",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "payload",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "operator": {
    ///                    "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "contains",
    ///                      "does_not_contain"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "alert_template_attributes": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "description": {
    ///                  "description": "The alert description.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "external_url": {
    ///                  "description": "The alert URL.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "title": {
    ///                  "description": "The alert title.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "ID for the default alert urgency assigned to this alert source",
    ///              "type": "string"
    ///            },
    ///            "deduplicate_alerts_by_key": {
    ///              "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///              "type": "boolean"
    ///            },
    ///            "deduplication_key_kind": {
    ///              "description": "Kind of deduplication key.",
    ///              "type": "string",
    ///              "enum": [
    ///                "payload"
    ///              ]
    ///            },
    ///            "deduplication_key_path": {
    ///              "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "deduplication_key_regexp": {
    ///              "description": "Regular expression to extract key from value found at key path.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the alert source",
    ///              "type": "string"
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "List of team IDs that will own the alert source",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "resolution_rule_attributes": {
    ///              "description": "Provide additional attributes for email alerts source",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "condition_type": {
    ///                  "description": "The type of condition to evaluate to apply auto resolution rule",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "all",
    ///                    "any"
    ///                  ]
    ///                },
    ///                "conditions_attributes": {
    ///                  "description": "List of conditions to evaluate for auto resolution",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "conditionable_id": {
    ///                        "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "conditionable_type": {
    ///                        "description": "The type of the conditionable",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ],
    ///                        "enum": [
    ///                          "AlertField"
    ///                        ]
    ///                      },
    ///                      "field": {
    ///                        "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "kind": {
    ///                        "description": "The kind of the conditionable",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "payload",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "operator": {
    ///                        "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "starts_with",
    ///                          "ends_with"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "enabled": {
    ///                  "description": "Set this to true to enable the auto resolution rule",
    ///                  "type": "boolean"
    ///                },
    ///                "identifier_json_path": {
    ///                  "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "identifier_matchable_id": {
    ///                  "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "identifier_matchable_type": {
    ///                  "description": "The type of the identifier matchable",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "AlertField"
    ///                  ]
    ///                },
    ///                "identifier_reference_kind": {
    ///                  "description": "The kind of the identifier reference",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "payload",
    ///                    "alert_field"
    ///                  ]
    ///                },
    ///                "identifier_value_regex": {
    ///                  "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "source_type": {
    ///              "description": "The alert source type",
    ///              "type": "string",
    ///              "enum": [
    ///                "email",
    ///                "app_dynamics",
    ///                "catchpoint",
    ///                "cloudflare",
    ///                "datadog",
    ///                "dynatrace",
    ///                "alertmanager",
    ///                "google_cloud",
    ///                "grafana",
    ///                "sentry",
    ///                "generic_webhook",
    ///                "cloud_watch",
    ///                "aws_sns",
    ///                "checkly",
    ///                "azure",
    ///                "new_relic",
    ///                "splunk",
    ///                "chronosphere",
    ///                "app_optics",
    ///                "bug_snag",
    ///                "honeycomb",
    ///                "monte_carlo",
    ///                "nagios",
    ///                "prtg"
    ///              ]
    ///            },
    ///            "sourceable_attributes": {
    ///              "description": "Provide additional attributes for generic_webhook alerts source",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "accept_threaded_emails": {
    ///                  "description": "Set this to false to reject threaded emails",
    ///                  "type": "boolean"
    ///                },
    ///                "auto_resolve": {
    ///                  "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///                  "type": "boolean"
    ///                },
    ///                "field_mappings_attributes": {
    ///                  "description": "Specify rules to auto resolve alerts",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "field": {
    ///                        "description": "Select the field on which the condition to be evaluated",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "external_id",
    ///                          "state",
    ///                          "alert_title",
    ///                          "alert_description",
    ///                          "alert_external_url",
    ///                          "notification_target_type",
    ///                          "notification_target_id"
    ///                        ]
    ///                      },
    ///                      "json_path": {
    ///                        "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "resolve_state": {
    ///                  "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_sources"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSource {
        pub data: UpdateAlertsSourceData,
    }
    impl UpdateAlertsSource {
        pub fn builder() -> builder::UpdateAlertsSource {
            Default::default()
        }
    }
    ///`UpdateAlertsSourceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alert_source_fields_attributes": {
    ///          "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "alert_field_id": {
    ///                "description": "The ID of the alert field",
    ///                "type": "string"
    ///              },
    ///              "template_body": {
    ///                "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "alert_source_urgency_rules_attributes": {
    ///          "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "alert_urgency_id": {
    ///                "description": "The ID of the alert urgency",
    ///                "type": "string"
    ///              },
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "json_path": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "kind": {
    ///                "description": "The kind of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "operator": {
    ///                "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "alert_template_attributes": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "description": {
    ///              "description": "The alert description.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_url": {
    ///              "description": "The alert URL.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The alert title.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "ID for the default alert urgency assigned to this alert source",
    ///          "type": "string"
    ///        },
    ///        "deduplicate_alerts_by_key": {
    ///          "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///          "type": "boolean"
    ///        },
    ///        "deduplication_key_kind": {
    ///          "description": "Kind of deduplication key.",
    ///          "type": "string",
    ///          "enum": [
    ///            "payload"
    ///          ]
    ///        },
    ///        "deduplication_key_path": {
    ///          "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "deduplication_key_regexp": {
    ///          "description": "Regular expression to extract key from value found at key path.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the alert source",
    ///          "type": "string"
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "List of team IDs that will own the alert source",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "resolution_rule_attributes": {
    ///          "description": "Provide additional attributes for email alerts source",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "condition_type": {
    ///              "description": "The type of condition to evaluate to apply auto resolution rule",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "any"
    ///              ]
    ///            },
    ///            "conditions_attributes": {
    ///              "description": "List of conditions to evaluate for auto resolution",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "conditionable_id": {
    ///                    "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "conditionable_type": {
    ///                    "description": "The type of the conditionable",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "AlertField"
    ///                    ]
    ///                  },
    ///                  "field": {
    ///                    "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "kind": {
    ///                    "description": "The kind of the conditionable",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "payload",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "operator": {
    ///                    "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "starts_with",
    ///                      "ends_with"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "enabled": {
    ///              "description": "Set this to true to enable the auto resolution rule",
    ///              "type": "boolean"
    ///            },
    ///            "identifier_json_path": {
    ///              "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "identifier_matchable_id": {
    ///              "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "identifier_matchable_type": {
    ///              "description": "The type of the identifier matchable",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "AlertField"
    ///              ]
    ///            },
    ///            "identifier_reference_kind": {
    ///              "description": "The kind of the identifier reference",
    ///              "type": "string",
    ///              "enum": [
    ///                "payload",
    ///                "alert_field"
    ///              ]
    ///            },
    ///            "identifier_value_regex": {
    ///              "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "source_type": {
    ///          "description": "The alert source type",
    ///          "type": "string",
    ///          "enum": [
    ///            "email",
    ///            "app_dynamics",
    ///            "catchpoint",
    ///            "cloudflare",
    ///            "datadog",
    ///            "dynatrace",
    ///            "alertmanager",
    ///            "google_cloud",
    ///            "grafana",
    ///            "sentry",
    ///            "generic_webhook",
    ///            "cloud_watch",
    ///            "aws_sns",
    ///            "checkly",
    ///            "azure",
    ///            "new_relic",
    ///            "splunk",
    ///            "chronosphere",
    ///            "app_optics",
    ///            "bug_snag",
    ///            "honeycomb",
    ///            "monte_carlo",
    ///            "nagios",
    ///            "prtg"
    ///          ]
    ///        },
    ///        "sourceable_attributes": {
    ///          "description": "Provide additional attributes for generic_webhook alerts source",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "accept_threaded_emails": {
    ///              "description": "Set this to false to reject threaded emails",
    ///              "type": "boolean"
    ///            },
    ///            "auto_resolve": {
    ///              "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///              "type": "boolean"
    ///            },
    ///            "field_mappings_attributes": {
    ///              "description": "Specify rules to auto resolve alerts",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "field": {
    ///                    "description": "Select the field on which the condition to be evaluated",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "external_id",
    ///                      "state",
    ///                      "alert_title",
    ///                      "alert_description",
    ///                      "alert_external_url",
    ///                      "notification_target_type",
    ///                      "notification_target_id"
    ///                    ]
    ///                  },
    ///                  "json_path": {
    ///                    "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "resolve_state": {
    ///              "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alert_sources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceData {
        pub attributes: UpdateAlertsSourceDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAlertsSourceDataType,
    }
    impl UpdateAlertsSourceData {
        pub fn builder() -> builder::UpdateAlertsSourceData {
            Default::default()
        }
    }
    ///`UpdateAlertsSourceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_source_fields_attributes": {
    ///      "description": "List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "alert_field_id": {
    ///            "description": "The ID of the alert field",
    ///            "type": "string"
    ///          },
    ///          "template_body": {
    ///            "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_source_urgency_rules_attributes": {
    ///      "description": "List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "alert_urgency_id": {
    ///            "description": "The ID of the alert urgency",
    ///            "type": "string"
    ///          },
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "json_path": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "kind": {
    ///            "description": "The kind of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "operator": {
    ///            "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "is",
    ///              "is_not",
    ///              "contains",
    ///              "does_not_contain"
    ///            ]
    ///          },
    ///          "value": {
    ///            "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "alert_template_attributes": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "description": {
    ///          "description": "The alert description.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_url": {
    ///          "description": "The alert URL.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The alert title.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "ID for the default alert urgency assigned to this alert source",
    ///      "type": "string"
    ///    },
    ///    "deduplicate_alerts_by_key": {
    ///      "description": "Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.",
    ///      "type": "boolean"
    ///    },
    ///    "deduplication_key_kind": {
    ///      "description": "Kind of deduplication key.",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload"
    ///      ]
    ///    },
    ///    "deduplication_key_path": {
    ///      "description": "Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "deduplication_key_regexp": {
    ///      "description": "Regular expression to extract key from value found at key path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the alert source",
    ///      "type": "string"
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "List of team IDs that will own the alert source",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "resolution_rule_attributes": {
    ///      "description": "Provide additional attributes for email alerts source",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "condition_type": {
    ///          "description": "The type of condition to evaluate to apply auto resolution rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "any"
    ///          ]
    ///        },
    ///        "conditions_attributes": {
    ///          "description": "List of conditions to evaluate for auto resolution",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "conditionable_id": {
    ///                "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "conditionable_type": {
    ///                "description": "The type of the conditionable",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "AlertField"
    ///                ]
    ///              },
    ///              "field": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "kind": {
    ///                "description": "The kind of the conditionable",
    ///                "type": "string",
    ///                "enum": [
    ///                  "payload",
    ///                  "alert_field"
    ///                ]
    ///              },
    ///              "operator": {
    ///                "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "starts_with",
    ///                  "ends_with"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "enabled": {
    ///          "description": "Set this to true to enable the auto resolution rule",
    ///          "type": "boolean"
    ///        },
    ///        "identifier_json_path": {
    ///          "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "identifier_matchable_id": {
    ///          "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "identifier_matchable_type": {
    ///          "description": "The type of the identifier matchable",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "AlertField"
    ///          ]
    ///        },
    ///        "identifier_reference_kind": {
    ///          "description": "The kind of the identifier reference",
    ///          "type": "string",
    ///          "enum": [
    ///            "payload",
    ///            "alert_field"
    ///          ]
    ///        },
    ///        "identifier_value_regex": {
    ///          "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "source_type": {
    ///      "description": "The alert source type",
    ///      "type": "string",
    ///      "enum": [
    ///        "email",
    ///        "app_dynamics",
    ///        "catchpoint",
    ///        "cloudflare",
    ///        "datadog",
    ///        "dynatrace",
    ///        "alertmanager",
    ///        "google_cloud",
    ///        "grafana",
    ///        "sentry",
    ///        "generic_webhook",
    ///        "cloud_watch",
    ///        "aws_sns",
    ///        "checkly",
    ///        "azure",
    ///        "new_relic",
    ///        "splunk",
    ///        "chronosphere",
    ///        "app_optics",
    ///        "bug_snag",
    ///        "honeycomb",
    ///        "monte_carlo",
    ///        "nagios",
    ///        "prtg"
    ///      ]
    ///    },
    ///    "sourceable_attributes": {
    ///      "description": "Provide additional attributes for generic_webhook alerts source",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "accept_threaded_emails": {
    ///          "description": "Set this to false to reject threaded emails",
    ///          "type": "boolean"
    ///        },
    ///        "auto_resolve": {
    ///          "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///          "type": "boolean"
    ///        },
    ///        "field_mappings_attributes": {
    ///          "description": "Specify rules to auto resolve alerts",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "field": {
    ///                "description": "Select the field on which the condition to be evaluated",
    ///                "type": "string",
    ///                "enum": [
    ///                  "external_id",
    ///                  "state",
    ///                  "alert_title",
    ///                  "alert_description",
    ///                  "alert_external_url",
    ///                  "notification_target_type",
    ///                  "notification_target_id"
    ///                ]
    ///              },
    ///              "json_path": {
    ///                "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "resolve_state": {
    ///          "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAlertsSourceDataAttributes {
        ///List of alert fields to be added to the alert source. Note: This attribute requires the alert field feature to be enabled on your account. Contact Rootly customer support if you need assistance with this feature.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_source_fields_attributes: ::std::vec::Vec<
            UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
        >,
        ///List of rules that define the conditions under which the alert urgency will be set automatically based on the alert payload
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_source_urgency_rules_attributes: ::std::vec::Vec<
            UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_template_attributes: ::std::option::Option<
            UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
        >,
        ///ID for the default alert urgency assigned to this alert source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Toggle alert deduplication using deduplication key. If enabled, deduplication_key_kind and deduplication_key_path are required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplicate_alerts_by_key: ::std::option::Option<bool>,
        ///Kind of deduplication key.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_kind: ::std::option::Option<
            UpdateAlertsSourceDataAttributesDeduplicationKeyKind,
        >,
        ///Path to deduplication key. This is a JSON Path to extract the deduplication key from the request body.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_path: ::std::option::Option<::std::string::String>,
        ///Regular expression to extract key from value found at key path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub deduplication_key_regexp: ::std::option::Option<::std::string::String>,
        ///Whether the alert source is enabled. Disabled sources do not create alerts from incoming events.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the alert source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///List of team IDs that will own the alert source
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owner_group_ids: ::std::vec::Vec<::std::string::String>,
        ///Provide additional attributes for email alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_rule_attributes: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
        >,
        ///The alert source type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source_type: ::std::option::Option<
            UpdateAlertsSourceDataAttributesSourceType,
        >,
        ///Provide additional attributes for generic_webhook alerts source
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sourceable_attributes: ::std::option::Option<
            UpdateAlertsSourceDataAttributesSourceableAttributes,
        >,
    }
    impl ::std::default::Default for UpdateAlertsSourceDataAttributes {
        fn default() -> Self {
            Self {
                alert_source_fields_attributes: Default::default(),
                alert_source_urgency_rules_attributes: Default::default(),
                alert_template_attributes: Default::default(),
                alert_urgency_id: Default::default(),
                deduplicate_alerts_by_key: Default::default(),
                deduplication_key_kind: Default::default(),
                deduplication_key_path: Default::default(),
                deduplication_key_regexp: Default::default(),
                enabled: Default::default(),
                name: Default::default(),
                owner_group_ids: Default::default(),
                resolution_rule_attributes: Default::default(),
                source_type: Default::default(),
                sourceable_attributes: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributes {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_field_id": {
    ///      "description": "The ID of the alert field",
    ///      "type": "string"
    ///    },
    ///    "template_body": {
    ///      "description": "Liquid expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
        ///The ID of the alert field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_field_id: ::std::option::Option<::std::string::String>,
        ///Liquid expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_body: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
        fn default() -> Self {
            Self {
                alert_field_id: Default::default(),
                template_body: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            Default::default()
        }
    }
    ///`UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "The ID of the alert urgency",
    ///      "type": "string"
    ///    },
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "json_path": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "operator": {
    ///      "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "is",
    ///        "is_not",
    ///        "contains",
    ///        "does_not_contain"
    ///      ]
    ///    },
    ///    "value": {
    ///      "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
        ///The ID of the alert urgency
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
        ///The kind of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind,
        >,
        ///Comparison operator used to evaluate the extracted value against the specified condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<
            UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator,
        >,
        ///Value that the extracted payload data is compared to using the specified operator to determine a match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
        fn default() -> Self {
            Self {
                alert_urgency_id: Default::default(),
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                json_path: Default::default(),
                kind: Default::default(),
                operator: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Comparison operator used to evaluate the extracted value against the specified condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertsSourceDataAttributesAlertTemplateAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The alert description.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_url": {
    ///      "description": "The alert URL.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The alert title.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
        ///The alert description.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The alert URL.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The alert title.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                external_url: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
            Default::default()
        }
    }
    ///Kind of deduplication key.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Kind of deduplication key.",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesDeduplicationKeyKind {
        #[serde(rename = "payload")]
        Payload,
    }
    impl ::std::fmt::Display for UpdateAlertsSourceDataAttributesDeduplicationKeyKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertsSourceDataAttributesDeduplicationKeyKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesDeduplicationKeyKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Provide additional attributes for email alerts source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Provide additional attributes for email alerts source",
    ///  "type": "object",
    ///  "properties": {
    ///    "condition_type": {
    ///      "description": "The type of condition to evaluate to apply auto resolution rule",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "any"
    ///      ]
    ///    },
    ///    "conditions_attributes": {
    ///      "description": "List of conditions to evaluate for auto resolution",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "conditionable_id": {
    ///            "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "conditionable_type": {
    ///            "description": "The type of the conditionable",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "AlertField"
    ///            ]
    ///          },
    ///          "field": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "kind": {
    ///            "description": "The kind of the conditionable",
    ///            "type": "string",
    ///            "enum": [
    ///              "payload",
    ///              "alert_field"
    ///            ]
    ///          },
    ///          "operator": {
    ///            "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "is",
    ///              "is_not",
    ///              "contains",
    ///              "does_not_contain",
    ///              "starts_with",
    ///              "ends_with"
    ///            ]
    ///          },
    ///          "value": {
    ///            "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "enabled": {
    ///      "description": "Set this to true to enable the auto resolution rule",
    ///      "type": "boolean"
    ///    },
    ///    "identifier_json_path": {
    ///      "description": "JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "identifier_matchable_id": {
    ///      "description": "The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "identifier_matchable_type": {
    ///      "description": "The type of the identifier matchable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "identifier_reference_kind": {
    ///      "description": "The kind of the identifier reference",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "identifier_value_regex": {
    ///      "description": "Regex group to further specify the part of the string used as a unique identifier",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
        ///The type of condition to evaluate to apply auto resolution rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType,
        >,
        ///List of conditions to evaluate for auto resolution
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions_attributes: ::std::vec::Vec<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
        >,
        ///Set this to true to enable the auto resolution rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///JSON path expression to extract unique alert identifier used to match triggered alerts with resolving alerts
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_json_path: ::std::option::Option<::std::string::String>,
        ///The ID of the identifier matchable. If identifier_matchable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_matchable_id: ::std::option::Option<::std::string::String>,
        ///The type of the identifier matchable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_matchable_type: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType,
        >,
        ///The kind of the identifier reference
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_reference_kind: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind,
        >,
        ///Regex group to further specify the part of the string used as a unique identifier
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub identifier_value_regex: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
        fn default() -> Self {
            Self {
                condition_type: Default::default(),
                conditions_attributes: Default::default(),
                enabled: Default::default(),
                identifier_json_path: Default::default(),
                identifier_matchable_id: Default::default(),
                identifier_matchable_type: Default::default(),
                identifier_reference_kind: Default::default(),
                identifier_value_regex: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
            Default::default()
        }
    }
    ///The type of condition to evaluate to apply auto resolution rule
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition to evaluate to apply auto resolution rule",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "any"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "any")]
        Any,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Any => f.write_str("any"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "any" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "conditionable_id": {
    ///      "description": "The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "conditionable_type": {
    ///      "description": "The type of the conditionable",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "AlertField"
    ///      ]
    ///    },
    ///    "field": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the conditionable",
    ///      "type": "string",
    ///      "enum": [
    ///        "payload",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "operator": {
    ///      "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "is",
    ///        "is_not",
    ///        "contains",
    ///        "does_not_contain",
    ///        "starts_with",
    ///        "ends_with"
    ///      ]
    ///    },
    ///    "value": {
    ///      "description": "Value that the extracted payload data is compared to using the specified operator to determine a match",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
        ///The ID of the conditionable. If conditionable_type is AlertField, this is the ID of the alert field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_id: ::std::option::Option<::std::string::String>,
        ///The type of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditionable_type: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field: ::std::option::Option<::std::string::String>,
        ///The kind of the conditionable
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind,
        >,
        ///Comparison operator used to evaluate the extracted value against the specified condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operator: ::std::option::Option<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator,
        >,
        ///Value that the extracted payload data is compared to using the specified operator to determine a match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
        fn default() -> Self {
            Self {
                conditionable_id: Default::default(),
                conditionable_type: Default::default(),
                field: Default::default(),
                kind: Default::default(),
                operator: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            Default::default()
        }
    }
    ///The type of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the conditionable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the conditionable",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Comparison operator used to evaluate the extracted value against the specified condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Comparison operator used to evaluate the extracted value against the specified condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain",
    ///    "starts_with",
    ///    "ends_with"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "starts_with")]
        StartsWith,
        #[serde(rename = "ends_with")]
        EndsWith,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::StartsWith => f.write_str("starts_with"),
                Self::EndsWith => f.write_str("ends_with"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "starts_with" => Ok(Self::StartsWith),
                "ends_with" => Ok(Self::EndsWith),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the identifier matchable
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the identifier matchable",
    ///  "type": "string",
    ///  "enum": [
    ///    "AlertField"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertField => f.write_str("AlertField"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AlertField" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the identifier reference
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the identifier reference",
    ///  "type": "string",
    ///  "enum": [
    ///    "payload",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        #[serde(rename = "payload")]
        Payload,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Payload => f.write_str("payload"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "payload" => Ok(Self::Payload),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The alert source type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The alert source type",
    ///  "type": "string",
    ///  "enum": [
    ///    "email",
    ///    "app_dynamics",
    ///    "catchpoint",
    ///    "cloudflare",
    ///    "datadog",
    ///    "dynatrace",
    ///    "alertmanager",
    ///    "google_cloud",
    ///    "grafana",
    ///    "sentry",
    ///    "generic_webhook",
    ///    "cloud_watch",
    ///    "aws_sns",
    ///    "checkly",
    ///    "azure",
    ///    "new_relic",
    ///    "splunk",
    ///    "chronosphere",
    ///    "app_optics",
    ///    "bug_snag",
    ///    "honeycomb",
    ///    "monte_carlo",
    ///    "nagios",
    ///    "prtg"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesSourceType {
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "app_dynamics")]
        AppDynamics,
        #[serde(rename = "catchpoint")]
        Catchpoint,
        #[serde(rename = "cloudflare")]
        Cloudflare,
        #[serde(rename = "datadog")]
        Datadog,
        #[serde(rename = "dynatrace")]
        Dynatrace,
        #[serde(rename = "alertmanager")]
        Alertmanager,
        #[serde(rename = "google_cloud")]
        GoogleCloud,
        #[serde(rename = "grafana")]
        Grafana,
        #[serde(rename = "sentry")]
        Sentry,
        #[serde(rename = "generic_webhook")]
        GenericWebhook,
        #[serde(rename = "cloud_watch")]
        CloudWatch,
        #[serde(rename = "aws_sns")]
        AwsSns,
        #[serde(rename = "checkly")]
        Checkly,
        #[serde(rename = "azure")]
        Azure,
        #[serde(rename = "new_relic")]
        NewRelic,
        #[serde(rename = "splunk")]
        Splunk,
        #[serde(rename = "chronosphere")]
        Chronosphere,
        #[serde(rename = "app_optics")]
        AppOptics,
        #[serde(rename = "bug_snag")]
        BugSnag,
        #[serde(rename = "honeycomb")]
        Honeycomb,
        #[serde(rename = "monte_carlo")]
        MonteCarlo,
        #[serde(rename = "nagios")]
        Nagios,
        #[serde(rename = "prtg")]
        Prtg,
    }
    impl ::std::fmt::Display for UpdateAlertsSourceDataAttributesSourceType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Email => f.write_str("email"),
                Self::AppDynamics => f.write_str("app_dynamics"),
                Self::Catchpoint => f.write_str("catchpoint"),
                Self::Cloudflare => f.write_str("cloudflare"),
                Self::Datadog => f.write_str("datadog"),
                Self::Dynatrace => f.write_str("dynatrace"),
                Self::Alertmanager => f.write_str("alertmanager"),
                Self::GoogleCloud => f.write_str("google_cloud"),
                Self::Grafana => f.write_str("grafana"),
                Self::Sentry => f.write_str("sentry"),
                Self::GenericWebhook => f.write_str("generic_webhook"),
                Self::CloudWatch => f.write_str("cloud_watch"),
                Self::AwsSns => f.write_str("aws_sns"),
                Self::Checkly => f.write_str("checkly"),
                Self::Azure => f.write_str("azure"),
                Self::NewRelic => f.write_str("new_relic"),
                Self::Splunk => f.write_str("splunk"),
                Self::Chronosphere => f.write_str("chronosphere"),
                Self::AppOptics => f.write_str("app_optics"),
                Self::BugSnag => f.write_str("bug_snag"),
                Self::Honeycomb => f.write_str("honeycomb"),
                Self::MonteCarlo => f.write_str("monte_carlo"),
                Self::Nagios => f.write_str("nagios"),
                Self::Prtg => f.write_str("prtg"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertsSourceDataAttributesSourceType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email" => Ok(Self::Email),
                "app_dynamics" => Ok(Self::AppDynamics),
                "catchpoint" => Ok(Self::Catchpoint),
                "cloudflare" => Ok(Self::Cloudflare),
                "datadog" => Ok(Self::Datadog),
                "dynatrace" => Ok(Self::Dynatrace),
                "alertmanager" => Ok(Self::Alertmanager),
                "google_cloud" => Ok(Self::GoogleCloud),
                "grafana" => Ok(Self::Grafana),
                "sentry" => Ok(Self::Sentry),
                "generic_webhook" => Ok(Self::GenericWebhook),
                "cloud_watch" => Ok(Self::CloudWatch),
                "aws_sns" => Ok(Self::AwsSns),
                "checkly" => Ok(Self::Checkly),
                "azure" => Ok(Self::Azure),
                "new_relic" => Ok(Self::NewRelic),
                "splunk" => Ok(Self::Splunk),
                "chronosphere" => Ok(Self::Chronosphere),
                "app_optics" => Ok(Self::AppOptics),
                "bug_snag" => Ok(Self::BugSnag),
                "honeycomb" => Ok(Self::Honeycomb),
                "monte_carlo" => Ok(Self::MonteCarlo),
                "nagios" => Ok(Self::Nagios),
                "prtg" => Ok(Self::Prtg),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertsSourceDataAttributesSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesSourceType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Provide additional attributes for generic_webhook alerts source
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Provide additional attributes for generic_webhook alerts source",
    ///  "type": "object",
    ///  "properties": {
    ///    "accept_threaded_emails": {
    ///      "description": "Set this to false to reject threaded emails",
    ///      "type": "boolean"
    ///    },
    ///    "auto_resolve": {
    ///      "description": "Set this to true to auto-resolve alerts based on field_mappings_attributes conditions",
    ///      "type": "boolean"
    ///    },
    ///    "field_mappings_attributes": {
    ///      "description": "Specify rules to auto resolve alerts",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "field": {
    ///            "description": "Select the field on which the condition to be evaluated",
    ///            "type": "string",
    ///            "enum": [
    ///              "external_id",
    ///              "state",
    ///              "alert_title",
    ///              "alert_description",
    ///              "alert_external_url",
    ///              "notification_target_type",
    ///              "notification_target_id"
    ///            ]
    ///          },
    ///          "json_path": {
    ///            "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "resolve_state": {
    ///      "description": "This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesSourceableAttributes {
        ///Set this to false to reject threaded emails
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub accept_threaded_emails: ::std::option::Option<bool>,
        ///Set this to true to auto-resolve alerts based on field_mappings_attributes conditions
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_resolve: ::std::option::Option<bool>,
        ///Specify rules to auto resolve alerts
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub field_mappings_attributes: ::std::vec::Vec<
            UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
        >,
        ///This value is matched with the value extracted from alerts payload using JSON path in field_mappings_attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolve_state: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesSourceableAttributes {
        fn default() -> Self {
            Self {
                accept_threaded_emails: Default::default(),
                auto_resolve: Default::default(),
                field_mappings_attributes: Default::default(),
                resolve_state: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesSourceableAttributes {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesSourceableAttributes {
            Default::default()
        }
    }
    ///`UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "field": {
    ///      "description": "Select the field on which the condition to be evaluated",
    ///      "type": "string",
    ///      "enum": [
    ///        "external_id",
    ///        "state",
    ///        "alert_title",
    ///        "alert_description",
    ///        "alert_external_url",
    ///        "notification_target_type",
    ///        "notification_target_id"
    ///      ]
    ///    },
    ///    "json_path": {
    ///      "description": "JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
        ///Select the field on which the condition to be evaluated
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub field: ::std::option::Option<
            UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField,
        >,
        ///JSON path expression to extract a specific value from the alert's payload for evaluation. For `notification_target_id` only: if your account has opted in to Dynamic Notification Targets, this may also be a Liquid template that resolves to a notification target id at routing time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub json_path: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
        fn default() -> Self {
            Self {
                field: Default::default(),
                json_path: Default::default(),
            }
        }
    }
    impl UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
        pub fn builder() -> builder::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            Default::default()
        }
    }
    ///Select the field on which the condition to be evaluated
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Select the field on which the condition to be evaluated",
    ///  "type": "string",
    ///  "enum": [
    ///    "external_id",
    ///    "state",
    ///    "alert_title",
    ///    "alert_description",
    ///    "alert_external_url",
    ///    "notification_target_type",
    ///    "notification_target_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        #[serde(rename = "external_id")]
        ExternalId,
        #[serde(rename = "state")]
        State,
        #[serde(rename = "alert_title")]
        AlertTitle,
        #[serde(rename = "alert_description")]
        AlertDescription,
        #[serde(rename = "alert_external_url")]
        AlertExternalUrl,
        #[serde(rename = "notification_target_type")]
        NotificationTargetType,
        #[serde(rename = "notification_target_id")]
        NotificationTargetId,
    }
    impl ::std::fmt::Display
    for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ExternalId => f.write_str("external_id"),
                Self::State => f.write_str("state"),
                Self::AlertTitle => f.write_str("alert_title"),
                Self::AlertDescription => f.write_str("alert_description"),
                Self::AlertExternalUrl => f.write_str("alert_external_url"),
                Self::NotificationTargetType => f.write_str("notification_target_type"),
                Self::NotificationTargetId => f.write_str("notification_target_id"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "external_id" => Ok(Self::ExternalId),
                "state" => Ok(Self::State),
                "alert_title" => Ok(Self::AlertTitle),
                "alert_description" => Ok(Self::AlertDescription),
                "alert_external_url" => Ok(Self::AlertExternalUrl),
                "notification_target_type" => Ok(Self::NotificationTargetType),
                "notification_target_id" => Ok(Self::NotificationTargetId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAlertsSourceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alert_sources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAlertsSourceDataType {
        #[serde(rename = "alert_sources")]
        AlertSources,
    }
    impl ::std::fmt::Display for UpdateAlertsSourceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::AlertSources => f.write_str("alert_sources"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAlertsSourceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alert_sources" => Ok(Self::AlertSources),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAlertsSourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateAlertsSourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAlertsSourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateApiKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "A description of the API key",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "expires_at": {
    ///              "description": "The expiration date of the API key (ISO 8601)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "name": {
    ///              "description": "The name of the API key",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "api_keys"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateApiKey {
        pub data: UpdateApiKeyData,
    }
    impl UpdateApiKey {
        pub fn builder() -> builder::UpdateApiKey {
            Default::default()
        }
    }
    ///`UpdateApiKeyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "A description of the API key",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "expires_at": {
    ///          "description": "The expiration date of the API key (ISO 8601)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "name": {
    ///          "description": "The name of the API key",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "api_keys"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateApiKeyData {
        pub attributes: UpdateApiKeyDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateApiKeyDataType,
    }
    impl UpdateApiKeyData {
        pub fn builder() -> builder::UpdateApiKeyData {
            Default::default()
        }
    }
    ///`UpdateApiKeyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "A description of the API key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "expires_at": {
    ///      "description": "The expiration date of the API key (ISO 8601)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "name": {
    ///      "description": "The name of the API key",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateApiKeyDataAttributes {
        ///A description of the API key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The expiration date of the API key (ISO 8601)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expires_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The name of the API key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateApiKeyDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                expires_at: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateApiKeyDataAttributes {
        pub fn builder() -> builder::UpdateApiKeyDataAttributes {
            Default::default()
        }
    }
    ///`UpdateApiKeyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "api_keys"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateApiKeyDataType {
        #[serde(rename = "api_keys")]
        ApiKeys,
    }
    impl ::std::fmt::Display for UpdateApiKeyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ApiKeys => f.write_str("api_keys"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateApiKeyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "api_keys" => Ok(Self::ApiKeys),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateApiKeyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAsanaTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "task_id"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "completion": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "dependency_direction": {
    ///      "default": "blocking",
    ///      "type": "string",
    ///      "enum": [
    ///        "blocking",
    ///        "blocked_by"
    ///      ]
    ///    },
    ///    "dependent_task_ids": {
    ///      "description": "Dependent task ids. Supports liquid syntax",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "notes": {
    ///      "type": "string"
    ///    },
    ///    "task_id": {
    ///      "description": "The task id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_asana_task"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The task title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAsanaTaskTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        pub completion: UpdateAsanaTaskTaskParamsCompletion,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        #[serde(
            default = "defaults::update_asana_task_task_params_dependency_direction"
        )]
        pub dependency_direction: UpdateAsanaTaskTaskParamsDependencyDirection,
        ///Dependent task ids. Supports liquid syntax
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub dependent_task_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notes: ::std::option::Option<::std::string::String>,
        ///The task id
        pub task_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateAsanaTaskTaskParamsTaskType>,
        ///The task title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateAsanaTaskTaskParams {
        pub fn builder() -> builder::UpdateAsanaTaskTaskParams {
            Default::default()
        }
    }
    ///`UpdateAsanaTaskTaskParamsCompletion`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAsanaTaskTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateAsanaTaskTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateAsanaTaskTaskParamsCompletion {
        pub fn builder() -> builder::UpdateAsanaTaskTaskParamsCompletion {
            Default::default()
        }
    }
    ///`UpdateAsanaTaskTaskParamsDependencyDirection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "blocking",
    ///  "type": "string",
    ///  "enum": [
    ///    "blocking",
    ///    "blocked_by"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAsanaTaskTaskParamsDependencyDirection {
        #[serde(rename = "blocking")]
        Blocking,
        #[serde(rename = "blocked_by")]
        BlockedBy,
    }
    impl ::std::fmt::Display for UpdateAsanaTaskTaskParamsDependencyDirection {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Blocking => f.write_str("blocking"),
                Self::BlockedBy => f.write_str("blocked_by"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAsanaTaskTaskParamsDependencyDirection {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "blocking" => Ok(Self::Blocking),
                "blocked_by" => Ok(Self::BlockedBy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAsanaTaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAsanaTaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAsanaTaskTaskParamsDependencyDirection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for UpdateAsanaTaskTaskParamsDependencyDirection {
        fn default() -> Self {
            UpdateAsanaTaskTaskParamsDependencyDirection::Blocking
        }
    }
    ///`UpdateAsanaTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_asana_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAsanaTaskTaskParamsTaskType {
        #[serde(rename = "update_asana_task")]
        UpdateAsanaTask,
    }
    impl ::std::fmt::Display for UpdateAsanaTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateAsanaTask => f.write_str("update_asana_task"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAsanaTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_asana_task" => Ok(Self::UpdateAsanaTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAsanaTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAsanaTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAsanaTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAttachedAlertsTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "acknowledged",
    ///        "resolved"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_attached_alerts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAttachedAlertsTaskParams {
        pub status: UpdateAttachedAlertsTaskParamsStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateAttachedAlertsTaskParamsTaskType>,
    }
    impl UpdateAttachedAlertsTaskParams {
        pub fn builder() -> builder::UpdateAttachedAlertsTaskParams {
            Default::default()
        }
    }
    ///`UpdateAttachedAlertsTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "acknowledged",
    ///    "resolved"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAttachedAlertsTaskParamsStatus {
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "resolved")]
        Resolved,
    }
    impl ::std::fmt::Display for UpdateAttachedAlertsTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Resolved => f.write_str("resolved"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAttachedAlertsTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "acknowledged" => Ok(Self::Acknowledged),
                "resolved" => Ok(Self::Resolved),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAttachedAlertsTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAttachedAlertsTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAttachedAlertsTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAttachedAlertsTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_attached_alerts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAttachedAlertsTaskParamsTaskType {
        #[serde(rename = "update_attached_alerts")]
        UpdateAttachedAlerts,
    }
    impl ::std::fmt::Display for UpdateAttachedAlertsTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateAttachedAlerts => f.write_str("update_attached_alerts"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAttachedAlertsTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_attached_alerts" => Ok(Self::UpdateAttachedAlerts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAttachedAlertsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAttachedAlertsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAttachedAlertsTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAuthorization`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "read",
    ///                  "update",
    ///                  "authorize",
    ///                  "destroy"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "authorizations"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAuthorization {
        pub data: UpdateAuthorizationData,
    }
    impl UpdateAuthorization {
        pub fn builder() -> builder::UpdateAuthorization {
            Default::default()
        }
    }
    ///`UpdateAuthorizationData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "read",
    ///              "update",
    ///              "authorize",
    ///              "destroy"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "authorizations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateAuthorizationData {
        pub attributes: UpdateAuthorizationDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateAuthorizationDataType,
    }
    impl UpdateAuthorizationData {
        pub fn builder() -> builder::UpdateAuthorizationData {
            Default::default()
        }
    }
    ///`UpdateAuthorizationDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read",
    ///          "update",
    ///          "authorize",
    ///          "destroy"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateAuthorizationDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub permissions: ::std::vec::Vec<
            UpdateAuthorizationDataAttributesPermissionsItem,
        >,
    }
    impl ::std::default::Default for UpdateAuthorizationDataAttributes {
        fn default() -> Self {
            Self {
                permissions: Default::default(),
            }
        }
    }
    impl UpdateAuthorizationDataAttributes {
        pub fn builder() -> builder::UpdateAuthorizationDataAttributes {
            Default::default()
        }
    }
    ///`UpdateAuthorizationDataAttributesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read",
    ///    "update",
    ///    "authorize",
    ///    "destroy"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAuthorizationDataAttributesPermissionsItem {
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "authorize")]
        Authorize,
        #[serde(rename = "destroy")]
        Destroy,
    }
    impl ::std::fmt::Display for UpdateAuthorizationDataAttributesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Authorize => f.write_str("authorize"),
                Self::Destroy => f.write_str("destroy"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAuthorizationDataAttributesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "authorize" => Ok(Self::Authorize),
                "destroy" => Ok(Self::Destroy),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateAuthorizationDataAttributesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAuthorizationDataAttributesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateAuthorizationDataAttributesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateAuthorizationDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "authorizations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateAuthorizationDataType {
        #[serde(rename = "authorizations")]
        Authorizations,
    }
    impl ::std::fmt::Display for UpdateAuthorizationDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Authorizations => f.write_str("authorizations"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateAuthorizationDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "authorizations" => Ok(Self::Authorizations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateAuthorizationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateAuthorizationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateAuthorizationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalog`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "icon": {
    ///              "type": "string",
    ///              "enum": [
    ///                "globe-alt",
    ///                "server-stack",
    ///                "users",
    ///                "user-group",
    ///                "chart-bar",
    ///                "shapes",
    ///                "light-bulb",
    ///                "cursor-arrow-ripple"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the catalog when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalogs"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalog {
        pub data: UpdateCatalogData,
    }
    impl UpdateCatalog {
        pub fn builder() -> builder::UpdateCatalog {
            Default::default()
        }
    }
    ///`UpdateCatalogChecklistTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the checklist template",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "fields": {
    ///              "description": "Template fields. Position is determined by array order. Replaces all existing fields.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "oneOf": [
    ///                  {
    ///                    "title": "Builtin field",
    ///                    "required": [
    ///                      "field_key",
    ///                      "field_source"
    ///                    ],
    ///                    "properties": {
    ///                      "field_key": {
    ///                        "description": "Key identifying the builtin field",
    ///                        "type": "string"
    ///                      },
    ///                      "field_source": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "builtin"
    ///                        ]
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "title": "Custom field",
    ///                    "required": [
    ///                      "catalog_property_id",
    ///                      "field_source"
    ///                    ],
    ///                    "properties": {
    ///                      "catalog_property_id": {
    ///                        "description": "ID of the catalog property",
    ///                        "type": "string"
    ///                      },
    ///                      "field_key": {
    ///                        "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///                        "type": "string"
    ///                      },
    ///                      "field_source": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "custom"
    ///                        ]
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the checklist template",
    ///              "type": "string"
    ///            },
    ///            "owners": {
    ///              "description": "Template owners. Replaces all existing owners.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "type"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "User ID for user owners, or field key for field owners",
    ///                    "type": "string"
    ///                  },
    ///                  "type": {
    ///                    "description": "Type of owner",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "field",
    ///                      "user"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_checklist_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogChecklistTemplate {
        pub data: UpdateCatalogChecklistTemplateData,
    }
    impl UpdateCatalogChecklistTemplate {
        pub fn builder() -> builder::UpdateCatalogChecklistTemplate {
            Default::default()
        }
    }
    ///`UpdateCatalogChecklistTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the checklist template",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "fields": {
    ///          "description": "Template fields. Position is determined by array order. Replaces all existing fields.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "oneOf": [
    ///              {
    ///                "title": "Builtin field",
    ///                "required": [
    ///                  "field_key",
    ///                  "field_source"
    ///                ],
    ///                "properties": {
    ///                  "field_key": {
    ///                    "description": "Key identifying the builtin field",
    ///                    "type": "string"
    ///                  },
    ///                  "field_source": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "builtin"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "title": "Custom field",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "field_source"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "ID of the catalog property",
    ///                    "type": "string"
    ///                  },
    ///                  "field_key": {
    ///                    "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///                    "type": "string"
    ///                  },
    ///                  "field_source": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "custom"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the checklist template",
    ///          "type": "string"
    ///        },
    ///        "owners": {
    ///          "description": "Template owners. Replaces all existing owners.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "type"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "User ID for user owners, or field key for field owners",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "description": "Type of owner",
    ///                "type": "string",
    ///                "enum": [
    ///                  "field",
    ///                  "user"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_checklist_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogChecklistTemplateData {
        pub attributes: UpdateCatalogChecklistTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCatalogChecklistTemplateDataType,
    }
    impl UpdateCatalogChecklistTemplateData {
        pub fn builder() -> builder::UpdateCatalogChecklistTemplateData {
            Default::default()
        }
    }
    ///`UpdateCatalogChecklistTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the checklist template",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "fields": {
    ///      "description": "Template fields. Position is determined by array order. Replaces all existing fields.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "oneOf": [
    ///          {
    ///            "title": "Builtin field",
    ///            "required": [
    ///              "field_key",
    ///              "field_source"
    ///            ],
    ///            "properties": {
    ///              "field_key": {
    ///                "description": "Key identifying the builtin field",
    ///                "type": "string"
    ///              },
    ///              "field_source": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "builtin"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "title": "Custom field",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "field_source"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "ID of the catalog property",
    ///                "type": "string"
    ///              },
    ///              "field_key": {
    ///                "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///                "type": "string"
    ///              },
    ///              "field_source": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "custom"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the checklist template",
    ///      "type": "string"
    ///    },
    ///    "owners": {
    ///      "description": "Template owners. Replaces all existing owners.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "User ID for user owners, or field key for field owners",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "description": "Type of owner",
    ///            "type": "string",
    ///            "enum": [
    ///              "field",
    ///              "user"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCatalogChecklistTemplateDataAttributes {
        ///The description of the checklist template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Template fields. Position is determined by array order. Replaces all existing fields.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub fields: ::std::option::Option<
            ::std::vec::Vec<UpdateCatalogChecklistTemplateDataAttributesFieldsItem>,
        >,
        ///The name of the checklist template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Template owners. Replaces all existing owners.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owners: ::std::option::Option<
            ::std::vec::Vec<UpdateCatalogChecklistTemplateDataAttributesOwnersItem>,
        >,
    }
    impl ::std::default::Default for UpdateCatalogChecklistTemplateDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                fields: Default::default(),
                name: Default::default(),
                owners: Default::default(),
            }
        }
    }
    impl UpdateCatalogChecklistTemplateDataAttributes {
        pub fn builder() -> builder::UpdateCatalogChecklistTemplateDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCatalogChecklistTemplateDataAttributesFieldsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "title": "Builtin field",
    ///      "required": [
    ///        "field_key",
    ///        "field_source"
    ///      ],
    ///      "properties": {
    ///        "field_key": {
    ///          "description": "Key identifying the builtin field",
    ///          "type": "string"
    ///        },
    ///        "field_source": {
    ///          "type": "string",
    ///          "enum": [
    ///            "builtin"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "title": "Custom field",
    ///      "required": [
    ///        "catalog_property_id",
    ///        "field_source"
    ///      ],
    ///      "properties": {
    ///        "catalog_property_id": {
    ///          "description": "ID of the catalog property",
    ///          "type": "string"
    ///        },
    ///        "field_key": {
    ///          "description": "Ignored for custom fields (auto-derived from catalog property)",
    ///          "type": "string"
    ///        },
    ///        "field_source": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(tag = "field_source")]
    pub enum UpdateCatalogChecklistTemplateDataAttributesFieldsItem {
        ///Builtin field
        #[serde(rename = "builtin")]
        Builtin {
            ///Key identifying the builtin field
            field_key: ::std::string::String,
        },
        ///Custom field
        #[serde(rename = "custom")]
        Custom {
            ///ID of the catalog property
            catalog_property_id: ::std::string::String,
            ///Ignored for custom fields (auto-derived from catalog property)
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            field_key: ::std::option::Option<::std::string::String>,
        },
    }
    ///`UpdateCatalogChecklistTemplateDataAttributesOwnersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "User ID for user owners, or field key for field owners",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "Type of owner",
    ///      "type": "string",
    ///      "enum": [
    ///        "field",
    ///        "user"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
        ///User ID for user owners, or field key for field owners
        pub id: ::std::string::String,
        ///Type of owner
        #[serde(rename = "type")]
        pub type_: UpdateCatalogChecklistTemplateDataAttributesOwnersItemType,
    }
    impl UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
        pub fn builder() -> builder::UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
            Default::default()
        }
    }
    ///Type of owner
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of owner",
    ///  "type": "string",
    ///  "enum": [
    ///    "field",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogChecklistTemplateDataAttributesOwnersItemType {
        #[serde(rename = "field")]
        Field,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display
    for UpdateCatalogChecklistTemplateDataAttributesOwnersItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Field => f.write_str("field"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "field" => Ok(Self::Field),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogChecklistTemplateDataAttributesOwnersItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogChecklistTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_checklist_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogChecklistTemplateDataType {
        #[serde(rename = "catalog_checklist_templates")]
        CatalogChecklistTemplates,
    }
    impl ::std::fmt::Display for UpdateCatalogChecklistTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogChecklistTemplates => {
                    f.write_str("catalog_checklist_templates")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogChecklistTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_checklist_templates" => Ok(Self::CatalogChecklistTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogChecklistTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogChecklistTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogChecklistTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "icon": {
    ///          "type": "string",
    ///          "enum": [
    ///            "globe-alt",
    ///            "server-stack",
    ///            "users",
    ///            "user-group",
    ///            "chart-bar",
    ///            "shapes",
    ///            "light-bulb",
    ///            "cursor-arrow-ripple"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the catalog when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalogs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogData {
        pub attributes: UpdateCatalogDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCatalogDataType,
    }
    impl UpdateCatalogData {
        pub fn builder() -> builder::UpdateCatalogData {
            Default::default()
        }
    }
    ///`UpdateCatalogDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "type": "string",
    ///      "enum": [
    ///        "globe-alt",
    ///        "server-stack",
    ///        "users",
    ///        "user-group",
    ///        "chart-bar",
    ///        "shapes",
    ///        "light-bulb",
    ///        "cursor-arrow-ripple"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the catalog when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCatalogDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<UpdateCatalogDataAttributesIcon>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Default position of the catalog when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateCatalogDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                icon: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateCatalogDataAttributes {
        pub fn builder() -> builder::UpdateCatalogDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCatalogDataAttributesIcon`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "globe-alt",
    ///    "server-stack",
    ///    "users",
    ///    "user-group",
    ///    "chart-bar",
    ///    "shapes",
    ///    "light-bulb",
    ///    "cursor-arrow-ripple"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogDataAttributesIcon {
        #[serde(rename = "globe-alt")]
        GlobeAlt,
        #[serde(rename = "server-stack")]
        ServerStack,
        #[serde(rename = "users")]
        Users,
        #[serde(rename = "user-group")]
        UserGroup,
        #[serde(rename = "chart-bar")]
        ChartBar,
        #[serde(rename = "shapes")]
        Shapes,
        #[serde(rename = "light-bulb")]
        LightBulb,
        #[serde(rename = "cursor-arrow-ripple")]
        CursorArrowRipple,
    }
    impl ::std::fmt::Display for UpdateCatalogDataAttributesIcon {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::GlobeAlt => f.write_str("globe-alt"),
                Self::ServerStack => f.write_str("server-stack"),
                Self::Users => f.write_str("users"),
                Self::UserGroup => f.write_str("user-group"),
                Self::ChartBar => f.write_str("chart-bar"),
                Self::Shapes => f.write_str("shapes"),
                Self::LightBulb => f.write_str("light-bulb"),
                Self::CursorArrowRipple => f.write_str("cursor-arrow-ripple"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogDataAttributesIcon {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "globe-alt" => Ok(Self::GlobeAlt),
                "server-stack" => Ok(Self::ServerStack),
                "users" => Ok(Self::Users),
                "user-group" => Ok(Self::UserGroup),
                "chart-bar" => Ok(Self::ChartBar),
                "shapes" => Ok(Self::Shapes),
                "light-bulb" => Ok(Self::LightBulb),
                "cursor-arrow-ripple" => Ok(Self::CursorArrowRipple),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogDataAttributesIcon {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalogs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogDataType {
        #[serde(rename = "catalogs")]
        Catalogs,
    }
    impl ::std::fmt::Display for UpdateCatalogDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalogs => f.write_str("catalogs"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalogs" => Ok(Self::Catalogs),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateCatalogDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateCatalogDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogEntity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "backstage_id": {
    ///              "description": "The Backstage entity ID this catalog entity is linked to.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the item when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this catalog entity",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Unique ID of the catalog property",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The value for this property",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogEntity {
        pub data: UpdateCatalogEntityData,
    }
    impl UpdateCatalogEntity {
        pub fn builder() -> builder::UpdateCatalogEntity {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "backstage_id": {
    ///          "description": "The Backstage entity ID this catalog entity is linked to.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the item when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this catalog entity",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Unique ID of the catalog property",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The value for this property",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogEntityData {
        pub attributes: UpdateCatalogEntityDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCatalogEntityDataType,
    }
    impl UpdateCatalogEntityData {
        pub fn builder() -> builder::UpdateCatalogEntityData {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "backstage_id": {
    ///      "description": "The Backstage entity ID this catalog entity is linked to.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this catalog entity",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Unique ID of the catalog property",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The value for this property",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCatalogEntityDataAttributes {
        ///The Backstage entity ID this catalog entity is linked to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Default position of the item when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this catalog entity
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateCatalogEntityDataAttributesPropertiesItem>,
    }
    impl ::std::default::Default for UpdateCatalogEntityDataAttributes {
        fn default() -> Self {
            Self {
                backstage_id: Default::default(),
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
                properties: Default::default(),
            }
        }
    }
    impl UpdateCatalogEntityDataAttributes {
        pub fn builder() -> builder::UpdateCatalogEntityDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityDataAttributesPropertiesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Unique ID of the catalog property",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The value for this property",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogEntityDataAttributesPropertiesItem {
        ///Unique ID of the catalog property
        pub catalog_property_id: ::std::string::String,
        ///The value for this property
        pub value: ::std::string::String,
    }
    impl UpdateCatalogEntityDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateCatalogEntityDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogEntityDataType {
        #[serde(rename = "catalog_entities")]
        CatalogEntities,
    }
    impl ::std::fmt::Display for UpdateCatalogEntityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntities => f.write_str("catalog_entities"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogEntityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entities" => Ok(Self::CatalogEntities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogEntityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogEntityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateCatalogEntityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.",
    ///  "deprecated": true,
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "key": {
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "catalog_entity",
    ///                "slack"
    ///              ]
    ///            },
    ///            "value": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_entity_properties"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogEntityProperty {
        pub data: UpdateCatalogEntityPropertyData,
    }
    impl UpdateCatalogEntityProperty {
        pub fn builder() -> builder::UpdateCatalogEntityProperty {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityPropertyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "key": {
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "catalog_entity",
    ///            "slack"
    ///          ]
    ///        },
    ///        "value": {
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_entity_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogEntityPropertyData {
        pub attributes: UpdateCatalogEntityPropertyDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCatalogEntityPropertyDataType,
    }
    impl UpdateCatalogEntityPropertyData {
        pub fn builder() -> builder::UpdateCatalogEntityPropertyData {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityPropertyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "key": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "catalog_entity",
    ///        "slack"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCatalogEntityPropertyDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<UpdateCatalogEntityPropertyDataAttributesKey>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateCatalogEntityPropertyDataAttributes {
        fn default() -> Self {
            Self {
                key: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateCatalogEntityPropertyDataAttributes {
        pub fn builder() -> builder::UpdateCatalogEntityPropertyDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCatalogEntityPropertyDataAttributesKey`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "catalog_entity",
    ///    "slack"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogEntityPropertyDataAttributesKey {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "slack")]
        Slack,
    }
    impl ::std::fmt::Display for UpdateCatalogEntityPropertyDataAttributesKey {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::Slack => f.write_str("slack"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogEntityPropertyDataAttributesKey {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "catalog_entity" => Ok(Self::CatalogEntity),
                "slack" => Ok(Self::Slack),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogEntityPropertyDataAttributesKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogEntityPropertyDataAttributesKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogEntityPropertyDataAttributesKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogEntityPropertyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_entity_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogEntityPropertyDataType {
        #[serde(rename = "catalog_entity_properties")]
        CatalogEntityProperties,
    }
    impl ::std::fmt::Display for UpdateCatalogEntityPropertyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogEntityProperties => f.write_str("catalog_entity_properties"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogEntityPropertyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_entity_properties" => Ok(Self::CatalogEntityProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogEntityPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogEntityPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogEntityPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "catalog_type": {
    ///              "description": "The type of catalog the field belongs to.",
    ///              "type": "string",
    ///              "enum": [
    ///                "catalog",
    ///                "cause",
    ///                "environment",
    ///                "functionality",
    ///                "incident_type",
    ///                "service",
    ///                "team"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "reference",
    ///                "boolean",
    ///                "service",
    ///                "functionality",
    ///                "environment",
    ///                "group",
    ///                "cause",
    ///                "incident_type",
    ///                "user"
    ///              ]
    ///            },
    ///            "kind_catalog_id": {
    ///              "description": "Restricts values to items of specified catalog.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the item when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "required": {
    ///              "description": "Whether the field is required.",
    ///              "type": "boolean"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_properties"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogField {
        pub data: UpdateCatalogFieldData,
    }
    impl UpdateCatalogField {
        pub fn builder() -> builder::UpdateCatalogField {
            Default::default()
        }
    }
    ///`UpdateCatalogFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "catalog_type": {
    ///          "description": "The type of catalog the field belongs to.",
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog",
    ///            "cause",
    ///            "environment",
    ///            "functionality",
    ///            "incident_type",
    ///            "service",
    ///            "team"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "reference",
    ///            "boolean",
    ///            "service",
    ///            "functionality",
    ///            "environment",
    ///            "group",
    ///            "cause",
    ///            "incident_type",
    ///            "user"
    ///          ]
    ///        },
    ///        "kind_catalog_id": {
    ///          "description": "Restricts values to items of specified catalog.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the item when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "required": {
    ///          "description": "Whether the field is required.",
    ///          "type": "boolean"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogFieldData {
        pub attributes: UpdateCatalogFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCatalogFieldDataType,
    }
    impl UpdateCatalogFieldData {
        pub fn builder() -> builder::UpdateCatalogFieldData {
            Default::default()
        }
    }
    ///`UpdateCatalogFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "catalog_type": {
    ///      "description": "The type of catalog the field belongs to.",
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog",
    ///        "cause",
    ///        "environment",
    ///        "functionality",
    ///        "incident_type",
    ///        "service",
    ///        "team"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "reference",
    ///        "boolean",
    ///        "service",
    ///        "functionality",
    ///        "environment",
    ///        "group",
    ///        "cause",
    ///        "incident_type",
    ///        "user"
    ///      ]
    ///    },
    ///    "kind_catalog_id": {
    ///      "description": "Restricts values to items of specified catalog.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "required": {
    ///      "description": "Whether the field is required.",
    ///      "type": "boolean"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCatalogFieldDataAttributes {
        ///The type of catalog the field belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_type: ::std::option::Option<
            UpdateCatalogFieldDataAttributesCatalogType,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateCatalogFieldDataAttributesKind>,
        ///Restricts values to items of specified catalog.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind_catalog_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Default position of the item when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether the field is required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for UpdateCatalogFieldDataAttributes {
        fn default() -> Self {
            Self {
                catalog_type: Default::default(),
                kind: Default::default(),
                kind_catalog_id: Default::default(),
                name: Default::default(),
                position: Default::default(),
                required: Default::default(),
            }
        }
    }
    impl UpdateCatalogFieldDataAttributes {
        pub fn builder() -> builder::UpdateCatalogFieldDataAttributes {
            Default::default()
        }
    }
    ///The type of catalog the field belongs to.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of catalog the field belongs to.",
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "cause",
    ///    "environment",
    ///    "functionality",
    ///    "incident_type",
    ///    "service",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogFieldDataAttributesCatalogType {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for UpdateCatalogFieldDataAttributesCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Cause => f.write_str("cause"),
                Self::Environment => f.write_str("environment"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogFieldDataAttributesCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "cause" => Ok(Self::Cause),
                "environment" => Ok(Self::Environment),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogFieldDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogFieldDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogFieldDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogFieldDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "reference",
    ///    "boolean",
    ///    "service",
    ///    "functionality",
    ///    "environment",
    ///    "group",
    ///    "cause",
    ///    "incident_type",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogFieldDataAttributesKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "reference")]
        Reference,
        #[serde(rename = "boolean")]
        Boolean,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display for UpdateCatalogFieldDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Reference => f.write_str("reference"),
                Self::Boolean => f.write_str("boolean"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::Environment => f.write_str("environment"),
                Self::Group => f.write_str("group"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogFieldDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "reference" => Ok(Self::Reference),
                "boolean" => Ok(Self::Boolean),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "environment" => Ok(Self::Environment),
                "group" => Ok(Self::Group),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogFieldDataType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for UpdateCatalogFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateCatalogFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateCatalogFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogProperty`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "catalog_type": {
    ///              "description": "The type of catalog the property belongs to.",
    ///              "type": "string",
    ///              "enum": [
    ///                "catalog",
    ///                "cause",
    ///                "environment",
    ///                "functionality",
    ///                "incident_type",
    ///                "service",
    ///                "team"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "reference",
    ///                "boolean",
    ///                "service",
    ///                "functionality",
    ///                "environment",
    ///                "group",
    ///                "cause",
    ///                "incident_type",
    ///                "user"
    ///              ]
    ///            },
    ///            "kind_catalog_id": {
    ///              "description": "Restricts values to items of specified catalog.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Default position of the item when displayed in a list.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "required": {
    ///              "description": "Whether the property is required.",
    ///              "type": "boolean"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog_properties"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogProperty {
        pub data: UpdateCatalogPropertyData,
    }
    impl UpdateCatalogProperty {
        pub fn builder() -> builder::UpdateCatalogProperty {
            Default::default()
        }
    }
    ///`UpdateCatalogPropertyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "catalog_type": {
    ///          "description": "The type of catalog the property belongs to.",
    ///          "type": "string",
    ///          "enum": [
    ///            "catalog",
    ///            "cause",
    ///            "environment",
    ///            "functionality",
    ///            "incident_type",
    ///            "service",
    ///            "team"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "reference",
    ///            "boolean",
    ///            "service",
    ///            "functionality",
    ///            "environment",
    ///            "group",
    ///            "cause",
    ///            "incident_type",
    ///            "user"
    ///          ]
    ///        },
    ///        "kind_catalog_id": {
    ///          "description": "Restricts values to items of specified catalog.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Default position of the item when displayed in a list.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "required": {
    ///          "description": "Whether the property is required.",
    ///          "type": "boolean"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog_properties"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCatalogPropertyData {
        pub attributes: UpdateCatalogPropertyDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCatalogPropertyDataType,
    }
    impl UpdateCatalogPropertyData {
        pub fn builder() -> builder::UpdateCatalogPropertyData {
            Default::default()
        }
    }
    ///`UpdateCatalogPropertyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "catalog_type": {
    ///      "description": "The type of catalog the property belongs to.",
    ///      "type": "string",
    ///      "enum": [
    ///        "catalog",
    ///        "cause",
    ///        "environment",
    ///        "functionality",
    ///        "incident_type",
    ///        "service",
    ///        "team"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "reference",
    ///        "boolean",
    ///        "service",
    ///        "functionality",
    ///        "environment",
    ///        "group",
    ///        "cause",
    ///        "incident_type",
    ///        "user"
    ///      ]
    ///    },
    ///    "kind_catalog_id": {
    ///      "description": "Restricts values to items of specified catalog.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Default position of the item when displayed in a list.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "required": {
    ///      "description": "Whether the property is required.",
    ///      "type": "boolean"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCatalogPropertyDataAttributes {
        ///The type of catalog the property belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub catalog_type: ::std::option::Option<
            UpdateCatalogPropertyDataAttributesCatalogType,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateCatalogPropertyDataAttributesKind>,
        ///Restricts values to items of specified catalog.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind_catalog_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Default position of the item when displayed in a list.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether the property is required.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for UpdateCatalogPropertyDataAttributes {
        fn default() -> Self {
            Self {
                catalog_type: Default::default(),
                kind: Default::default(),
                kind_catalog_id: Default::default(),
                name: Default::default(),
                position: Default::default(),
                required: Default::default(),
            }
        }
    }
    impl UpdateCatalogPropertyDataAttributes {
        pub fn builder() -> builder::UpdateCatalogPropertyDataAttributes {
            Default::default()
        }
    }
    ///The type of catalog the property belongs to.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of catalog the property belongs to.",
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog",
    ///    "cause",
    ///    "environment",
    ///    "functionality",
    ///    "incident_type",
    ///    "service",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogPropertyDataAttributesCatalogType {
        #[serde(rename = "catalog")]
        Catalog,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for UpdateCatalogPropertyDataAttributesCatalogType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Catalog => f.write_str("catalog"),
                Self::Cause => f.write_str("cause"),
                Self::Environment => f.write_str("environment"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogPropertyDataAttributesCatalogType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog" => Ok(Self::Catalog),
                "cause" => Ok(Self::Cause),
                "environment" => Ok(Self::Environment),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateCatalogPropertyDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogPropertyDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogPropertyDataAttributesCatalogType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogPropertyDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "reference",
    ///    "boolean",
    ///    "service",
    ///    "functionality",
    ///    "environment",
    ///    "group",
    ///    "cause",
    ///    "incident_type",
    ///    "user"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogPropertyDataAttributesKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "reference")]
        Reference,
        #[serde(rename = "boolean")]
        Boolean,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "user")]
        User,
    }
    impl ::std::fmt::Display for UpdateCatalogPropertyDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Reference => f.write_str("reference"),
                Self::Boolean => f.write_str("boolean"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::Environment => f.write_str("environment"),
                Self::Group => f.write_str("group"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::User => f.write_str("user"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogPropertyDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "reference" => Ok(Self::Reference),
                "boolean" => Ok(Self::Boolean),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "environment" => Ok(Self::Environment),
                "group" => Ok(Self::Group),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                "user" => Ok(Self::User),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogPropertyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogPropertyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogPropertyDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCatalogPropertyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "catalog_properties"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCatalogPropertyDataType {
        #[serde(rename = "catalog_properties")]
        CatalogProperties,
    }
    impl ::std::fmt::Display for UpdateCatalogPropertyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CatalogProperties => f.write_str("catalog_properties"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCatalogPropertyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "catalog_properties" => Ok(Self::CatalogProperties),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCatalogPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCatalogPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCatalogPropertyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCause`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the cause",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the cause",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the cause",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this cause.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "causes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCause {
        pub data: UpdateCauseData,
    }
    impl UpdateCause {
        pub fn builder() -> builder::UpdateCause {
            Default::default()
        }
    }
    ///`UpdateCauseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the cause",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the cause",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the cause",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this cause.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "causes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCauseData {
        pub attributes: UpdateCauseDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCauseDataType,
    }
    impl UpdateCauseData {
        pub fn builder() -> builder::UpdateCauseData {
            Default::default()
        }
    }
    ///`UpdateCauseDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the cause",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the cause",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the cause",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this cause.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCauseDataAttributes {
        ///The description of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the cause
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this cause.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateCauseDataAttributesPropertiesItem>,
    }
    impl ::std::default::Default for UpdateCauseDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
                properties: Default::default(),
            }
        }
    }
    impl UpdateCauseDataAttributes {
        pub fn builder() -> builder::UpdateCauseDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCauseDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl UpdateCauseDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateCauseDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateCauseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "causes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCauseDataType {
        #[serde(rename = "causes")]
        Causes,
    }
    impl ::std::fmt::Display for UpdateCauseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Causes => f.write_str("causes"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCauseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "causes" => Ok(Self::Causes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCauseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateCauseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateCauseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateClickupTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "task_id"
    ///  ],
    ///  "properties": {
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The task description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "tags": {
    ///      "description": "The task tags",
    ///      "type": "string"
    ///    },
    ///    "task_id": {
    ///      "description": "The task id",
    ///      "type": "string"
    ///    },
    ///    "task_payload": {
    ///      "description": "Additional ClickUp task attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_clickup_task"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The task title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateClickupTaskTaskParams {
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The task description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateClickupTaskTaskParamsPriority>,
        ///The task tags
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub tags: ::std::option::Option<::std::string::String>,
        ///The task id
        pub task_id: ::std::string::String,
        ///Additional ClickUp task attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_payload: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateClickupTaskTaskParamsTaskType>,
        ///The task title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateClickupTaskTaskParams {
        pub fn builder() -> builder::UpdateClickupTaskTaskParams {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateClickupTaskTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateClickupTaskTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateClickupTaskTaskParamsPriority {
        pub fn builder() -> builder::UpdateClickupTaskTaskParamsPriority {
            Default::default()
        }
    }
    ///`UpdateClickupTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_clickup_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateClickupTaskTaskParamsTaskType {
        #[serde(rename = "update_clickup_task")]
        UpdateClickupTask,
    }
    impl ::std::fmt::Display for UpdateClickupTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateClickupTask => f.write_str("update_clickup_task"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateClickupTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_clickup_task" => Ok(Self::UpdateClickupTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateClickupTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateClickupTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateClickupTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCodaPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "page_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Coda page content",
    ///      "type": "string"
    ///    },
    ///    "doc_id": {
    ///      "description": "The Coda doc id",
    ///      "type": "string"
    ///    },
    ///    "page_id": {
    ///      "description": "The Coda page id",
    ///      "type": "string"
    ///    },
    ///    "subtitle": {
    ///      "description": "The Coda page subtitle",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_coda_page"
    ///      ]
    ///    },
    ///    "template": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "Combined doc_id/page_id in format 'doc_id/page_id'",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The Coda page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCodaPageTaskParams {
        ///The Coda page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Coda doc id
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub doc_id: ::std::option::Option<::std::string::String>,
        ///The Coda page id
        pub page_id: ::std::string::String,
        ///The Coda page subtitle
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub subtitle: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateCodaPageTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<UpdateCodaPageTaskParamsTemplate>,
        ///The Coda page title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateCodaPageTaskParams {
        pub fn builder() -> builder::UpdateCodaPageTaskParams {
            Default::default()
        }
    }
    ///`UpdateCodaPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_coda_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCodaPageTaskParamsTaskType {
        #[serde(rename = "update_coda_page")]
        UpdateCodaPage,
    }
    impl ::std::fmt::Display for UpdateCodaPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateCodaPage => f.write_str("update_coda_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCodaPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_coda_page" => Ok(Self::UpdateCodaPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCodaPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCodaPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCodaPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCodaPageTaskParamsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Combined doc_id/page_id in format 'doc_id/page_id'",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCodaPageTaskParamsTemplate {
        ///Combined doc_id/page_id in format 'doc_id/page_id'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateCodaPageTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateCodaPageTaskParamsTemplate {
        pub fn builder() -> builder::UpdateCodaPageTaskParamsTemplate {
            Default::default()
        }
    }
    ///`UpdateCommunicationsGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "communication_external_group_members": {
    ///              "description": "External group members attributes",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "email": {
    ///                    "description": "Email of the external member",
    ///                    "type": "string"
    ///                  },
    ///                  "id": {
    ///                    "description": "ID of the external group member",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "name": {
    ///                    "description": "Name of the external member",
    ///                    "type": "string"
    ///                  },
    ///                  "phone_number": {
    ///                    "description": "Phone number of the external member",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "communication_group_conditions": {
    ///              "description": "Group conditions attributes",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "functionality_ids": {
    ///                    "description": "Array of functionality IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "group_ids": {
    ///                    "description": "Array of group IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "id": {
    ///                    "description": "ID of the condition",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "incident_type_ids": {
    ///                    "description": "Array of incident type IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "property_type": {
    ///                    "description": "Property type",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "service",
    ///                      "severity",
    ///                      "functionality",
    ///                      "group",
    ///                      "incident_type"
    ///                    ]
    ///                  },
    ///                  "service_ids": {
    ///                    "description": "Array of service IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "severity_ids": {
    ///                    "description": "Array of severity IDs",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "communication_type_id": {
    ///              "description": "The communication type ID",
    ///              "type": "string"
    ///            },
    ///            "condition_type": {
    ///              "description": "Condition type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "any",
    ///                "all"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the communications group",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "email_channel": {
    ///              "description": "Email channel enabled",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "is_private": {
    ///              "description": "Whether the group is private",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "member_ids": {
    ///              "description": "Array of member user IDs",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications group",
    ///              "type": "string"
    ///            },
    ///            "slack_channel_ids": {
    ///              "description": "Array of Slack channel IDs",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "sms_channel": {
    ///              "description": "SMS channel enabled",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsGroup {
        pub data: UpdateCommunicationsGroupData,
    }
    impl UpdateCommunicationsGroup {
        pub fn builder() -> builder::UpdateCommunicationsGroup {
            Default::default()
        }
    }
    ///`UpdateCommunicationsGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "communication_external_group_members": {
    ///          "description": "External group members attributes",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "email": {
    ///                "description": "Email of the external member",
    ///                "type": "string"
    ///              },
    ///              "id": {
    ///                "description": "ID of the external group member",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "name": {
    ///                "description": "Name of the external member",
    ///                "type": "string"
    ///              },
    ///              "phone_number": {
    ///                "description": "Phone number of the external member",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "communication_group_conditions": {
    ///          "description": "Group conditions attributes",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "functionality_ids": {
    ///                "description": "Array of functionality IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "group_ids": {
    ///                "description": "Array of group IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "id": {
    ///                "description": "ID of the condition",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "incident_type_ids": {
    ///                "description": "Array of incident type IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "property_type": {
    ///                "description": "Property type",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service",
    ///                  "severity",
    ///                  "functionality",
    ///                  "group",
    ///                  "incident_type"
    ///                ]
    ///              },
    ///              "service_ids": {
    ///                "description": "Array of service IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "severity_ids": {
    ///                "description": "Array of severity IDs",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "communication_type_id": {
    ///          "description": "The communication type ID",
    ///          "type": "string"
    ///        },
    ///        "condition_type": {
    ///          "description": "Condition type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "any",
    ///            "all"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the communications group",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "email_channel": {
    ///          "description": "Email channel enabled",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "is_private": {
    ///          "description": "Whether the group is private",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "member_ids": {
    ///          "description": "Array of member user IDs",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications group",
    ///          "type": "string"
    ///        },
    ///        "slack_channel_ids": {
    ///          "description": "Array of Slack channel IDs",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "sms_channel": {
    ///          "description": "SMS channel enabled",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsGroupData {
        pub attributes: UpdateCommunicationsGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCommunicationsGroupDataType,
    }
    impl UpdateCommunicationsGroupData {
        pub fn builder() -> builder::UpdateCommunicationsGroupData {
            Default::default()
        }
    }
    ///`UpdateCommunicationsGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "communication_external_group_members": {
    ///      "description": "External group members attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "email": {
    ///            "description": "Email of the external member",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "ID of the external group member",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "name": {
    ///            "description": "Name of the external member",
    ///            "type": "string"
    ///          },
    ///          "phone_number": {
    ///            "description": "Phone number of the external member",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_group_conditions": {
    ///      "description": "Group conditions attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "functionality_ids": {
    ///            "description": "Array of functionality IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "group_ids": {
    ///            "description": "Array of group IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "id": {
    ///            "description": "ID of the condition",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "incident_type_ids": {
    ///            "description": "Array of incident type IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "property_type": {
    ///            "description": "Property type",
    ///            "type": "string",
    ///            "enum": [
    ///              "service",
    ///              "severity",
    ///              "functionality",
    ///              "group",
    ///              "incident_type"
    ///            ]
    ///          },
    ///          "service_ids": {
    ///            "description": "Array of service IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "severity_ids": {
    ///            "description": "Array of severity IDs",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_type_id": {
    ///      "description": "The communication type ID",
    ///      "type": "string"
    ///    },
    ///    "condition_type": {
    ///      "description": "Condition type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "any",
    ///        "all"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_channel": {
    ///      "description": "Email channel enabled",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "is_private": {
    ///      "description": "Whether the group is private",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "member_ids": {
    ///      "description": "Array of member user IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications group",
    ///      "type": "string"
    ///    },
    ///    "slack_channel_ids": {
    ///      "description": "Array of Slack channel IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "sms_channel": {
    ///      "description": "SMS channel enabled",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCommunicationsGroupDataAttributes {
        ///External group members attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_external_group_members: ::std::option::Option<
            ::std::vec::Vec<
                UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
            >,
        >,
        ///Group conditions attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_group_conditions: ::std::option::Option<
            ::std::vec::Vec<
                UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
            >,
        >,
        ///The communication type ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_type_id: ::std::option::Option<::std::string::String>,
        ///Condition type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_type: ::std::option::Option<
            UpdateCommunicationsGroupDataAttributesConditionType,
        >,
        ///The description of the communications group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Email channel enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_channel: ::std::option::Option<bool>,
        ///Whether the group is private
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_private: ::std::option::Option<bool>,
        ///Array of member user IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub member_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The name of the communications group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Array of Slack channel IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///SMS channel enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sms_channel: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for UpdateCommunicationsGroupDataAttributes {
        fn default() -> Self {
            Self {
                communication_external_group_members: Default::default(),
                communication_group_conditions: Default::default(),
                communication_type_id: Default::default(),
                condition_type: Default::default(),
                description: Default::default(),
                email_channel: Default::default(),
                is_private: Default::default(),
                member_ids: Default::default(),
                name: Default::default(),
                slack_channel_ids: Default::default(),
                sms_channel: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsGroupDataAttributes {
        pub fn builder() -> builder::UpdateCommunicationsGroupDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "email": {
    ///      "description": "Email of the external member",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "ID of the external group member",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "Name of the external member",
    ///      "type": "string"
    ///    },
    ///    "phone_number": {
    ///      "description": "Phone number of the external member",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
        ///Email of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
        ///ID of the external group member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Name of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Phone number of the external member
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone_number: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
        fn default() -> Self {
            Self {
                email: Default::default(),
                id: Default::default(),
                name: Default::default(),
                phone_number: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
        pub fn builder() -> builder::UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            Default::default()
        }
    }
    ///`UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "functionality_ids": {
    ///      "description": "Array of functionality IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "Array of group IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "id": {
    ///      "description": "ID of the condition",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "Array of incident type IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "property_type": {
    ///      "description": "Property type",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "severity",
    ///        "functionality",
    ///        "group",
    ///        "incident_type"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Array of service IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "Array of severity IDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
        ///Array of functionality IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Array of group IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///ID of the condition
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Array of incident type IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Property type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property_type: ::std::option::Option<
            UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType,
        >,
        ///Array of service IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Array of severity IDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
        fn default() -> Self {
            Self {
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                id: Default::default(),
                incident_type_ids: Default::default(),
                property_type: Default::default(),
                service_ids: Default::default(),
                severity_ids: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
        pub fn builder() -> builder::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            Default::default()
        }
    }
    ///Property type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Property type",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "severity",
    ///    "functionality",
    ///    "group",
    ///    "incident_type"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "incident_type")]
        IncidentType,
    }
    impl ::std::fmt::Display
    for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Severity => f.write_str("severity"),
                Self::Functionality => f.write_str("functionality"),
                Self::Group => f.write_str("group"),
                Self::IncidentType => f.write_str("incident_type"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "severity" => Ok(Self::Severity),
                "functionality" => Ok(Self::Functionality),
                "group" => Ok(Self::Group),
                "incident_type" => Ok(Self::IncidentType),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Condition type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Condition type",
    ///  "type": "string",
    ///  "enum": [
    ///    "any",
    ///    "all"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCommunicationsGroupDataAttributesConditionType {
        #[serde(rename = "any")]
        Any,
        #[serde(rename = "all")]
        All,
    }
    impl ::std::fmt::Display for UpdateCommunicationsGroupDataAttributesConditionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Any => f.write_str("any"),
                Self::All => f.write_str("all"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCommunicationsGroupDataAttributesConditionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "any" => Ok(Self::Any),
                "all" => Ok(Self::All),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateCommunicationsGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCommunicationsGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCommunicationsGroupDataAttributesConditionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCommunicationsGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCommunicationsGroupDataType {
        #[serde(rename = "communications_groups")]
        CommunicationsGroups,
    }
    impl ::std::fmt::Display for UpdateCommunicationsGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsGroups => f.write_str("communications_groups"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCommunicationsGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_groups" => Ok(Self::CommunicationsGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCommunicationsGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCommunicationsGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCommunicationsGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCommunicationsStage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the communications stage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications stage",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the communications stage",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_stages"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsStage {
        pub data: UpdateCommunicationsStageData,
    }
    impl UpdateCommunicationsStage {
        pub fn builder() -> builder::UpdateCommunicationsStage {
            Default::default()
        }
    }
    ///`UpdateCommunicationsStageData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the communications stage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications stage",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the communications stage",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_stages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsStageData {
        pub attributes: UpdateCommunicationsStageDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCommunicationsStageDataType,
    }
    impl UpdateCommunicationsStageData {
        pub fn builder() -> builder::UpdateCommunicationsStageData {
            Default::default()
        }
    }
    ///`UpdateCommunicationsStageDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the communications stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications stage",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications stage",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCommunicationsStageDataAttributes {
        ///The description of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the communications stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateCommunicationsStageDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsStageDataAttributes {
        pub fn builder() -> builder::UpdateCommunicationsStageDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCommunicationsStageDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_stages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCommunicationsStageDataType {
        #[serde(rename = "communications_stages")]
        CommunicationsStages,
    }
    impl ::std::fmt::Display for UpdateCommunicationsStageDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsStages => f.write_str("communications_stages"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCommunicationsStageDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_stages" => Ok(Self::CommunicationsStages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCommunicationsStageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCommunicationsStageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCommunicationsStageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCommunicationsTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "communication_template_stages_attributes": {
    ///              "description": "Template stages attributes",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "email_body": {
    ///                    "description": "Email body for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "email_subject": {
    ///                    "description": "Email subject for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "id": {
    ///                    "description": "ID of the communication template stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "slack_content": {
    ///                    "description": "Slack content for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "sms_content": {
    ///                    "description": "SMS content for the stage",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "communication_type_id": {
    ///              "description": "The communication type ID",
    ///              "type": "string"
    ///            },
    ///            "description": {
    ///              "description": "The description of the communications template",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications template",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the communications template",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsTemplate {
        pub data: UpdateCommunicationsTemplateData,
    }
    impl UpdateCommunicationsTemplate {
        pub fn builder() -> builder::UpdateCommunicationsTemplate {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "communication_template_stages_attributes": {
    ///          "description": "Template stages attributes",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "email_body": {
    ///                "description": "Email body for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "email_subject": {
    ///                "description": "Email subject for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "id": {
    ///                "description": "ID of the communication template stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "slack_content": {
    ///                "description": "Slack content for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "sms_content": {
    ///                "description": "SMS content for the stage",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "communication_type_id": {
    ///          "description": "The communication type ID",
    ///          "type": "string"
    ///        },
    ///        "description": {
    ///          "description": "The description of the communications template",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications template",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the communications template",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsTemplateData {
        pub attributes: UpdateCommunicationsTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCommunicationsTemplateDataType,
    }
    impl UpdateCommunicationsTemplateData {
        pub fn builder() -> builder::UpdateCommunicationsTemplateData {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "communication_template_stages_attributes": {
    ///      "description": "Template stages attributes",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "email_body": {
    ///            "description": "Email body for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "email_subject": {
    ///            "description": "Email subject for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "ID of the communication template stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "slack_content": {
    ///            "description": "Slack content for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          },
    ///          "sms_content": {
    ///            "description": "SMS content for the stage",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "communication_type_id": {
    ///      "description": "The communication type ID",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications template",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications template",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications template",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCommunicationsTemplateDataAttributes {
        ///Template stages attributes
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_template_stages_attributes: ::std::option::Option<
            ::std::vec::Vec<
                UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
            >,
        >,
        ///The communication type ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub communication_type_id: ::std::option::Option<::std::string::String>,
        ///The description of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the communications template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateCommunicationsTemplateDataAttributes {
        fn default() -> Self {
            Self {
                communication_template_stages_attributes: Default::default(),
                communication_type_id: Default::default(),
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsTemplateDataAttributes {
        pub fn builder() -> builder::UpdateCommunicationsTemplateDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "email_body": {
    ///      "description": "Email body for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "email_subject": {
    ///      "description": "Email subject for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "ID of the communication template stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_content": {
    ///      "description": "Slack content for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "sms_content": {
    ///      "description": "SMS content for the stage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
        ///Email body for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_body: ::std::option::Option<::std::string::String>,
        ///Email subject for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email_subject: ::std::option::Option<::std::string::String>,
        ///ID of the communication template stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack content for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_content: ::std::option::Option<::std::string::String>,
        ///SMS content for the stage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sms_content: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
        fn default() -> Self {
            Self {
                email_body: Default::default(),
                email_subject: Default::default(),
                id: Default::default(),
                slack_content: Default::default(),
                sms_content: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
        pub fn builder() -> builder::UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCommunicationsTemplateDataType {
        #[serde(rename = "communications_templates")]
        CommunicationsTemplates,
    }
    impl ::std::fmt::Display for UpdateCommunicationsTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTemplates => f.write_str("communications_templates"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCommunicationsTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_templates" => Ok(Self::CommunicationsTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCommunicationsTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCommunicationsTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCommunicationsTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCommunicationsType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "color": {
    ///              "description": "The color of the communications type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the communications type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the communications type",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the communications type",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "communications_types"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsType {
        pub data: UpdateCommunicationsTypeData,
    }
    impl UpdateCommunicationsType {
        pub fn builder() -> builder::UpdateCommunicationsType {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTypeData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "color": {
    ///          "description": "The color of the communications type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the communications type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the communications type",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the communications type",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "communications_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCommunicationsTypeData {
        pub attributes: UpdateCommunicationsTypeDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCommunicationsTypeDataType,
    }
    impl UpdateCommunicationsTypeData {
        pub fn builder() -> builder::UpdateCommunicationsTypeData {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTypeDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "color": {
    ///      "description": "The color of the communications type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the communications type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the communications type",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the communications type",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCommunicationsTypeDataAttributes {
        ///The color of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the communications type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateCommunicationsTypeDataAttributes {
        fn default() -> Self {
            Self {
                color: Default::default(),
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateCommunicationsTypeDataAttributes {
        pub fn builder() -> builder::UpdateCommunicationsTypeDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCommunicationsTypeDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "communications_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCommunicationsTypeDataType {
        #[serde(rename = "communications_types")]
        CommunicationsTypes,
    }
    impl ::std::fmt::Display for UpdateCommunicationsTypeDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CommunicationsTypes => f.write_str("communications_types"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCommunicationsTypeDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "communications_types" => Ok(Self::CommunicationsTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCommunicationsTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCommunicationsTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCommunicationsTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateConfluencePageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Confluence page content",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The Confluence page ID",
    ///      "type": "string"
    ///    },
    ///    "integration": {
    ///      "description": "Specify integration id if you have more than one Confluence instance",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when updating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_confluence_page"
    ///      ]
    ///    },
    ///    "template": {
    ///      "description": "The Confluence template to use",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The Confluence page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateConfluencePageTaskParams {
        ///The Confluence page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Confluence page ID
        pub file_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub integration: ::std::option::Option<
            UpdateConfluencePageTaskParamsIntegration,
        >,
        ///Retrospective template to use when updating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateConfluencePageTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<UpdateConfluencePageTaskParamsTemplate>,
        ///The Confluence page title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateConfluencePageTaskParams {
        pub fn builder() -> builder::UpdateConfluencePageTaskParams {
            Default::default()
        }
    }
    ///Specify integration id if you have more than one Confluence instance
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Specify integration id if you have more than one Confluence instance",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateConfluencePageTaskParamsIntegration {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateConfluencePageTaskParamsIntegration {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateConfluencePageTaskParamsIntegration {
        pub fn builder() -> builder::UpdateConfluencePageTaskParamsIntegration {
            Default::default()
        }
    }
    ///`UpdateConfluencePageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_confluence_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateConfluencePageTaskParamsTaskType {
        #[serde(rename = "update_confluence_page")]
        UpdateConfluencePage,
    }
    impl ::std::fmt::Display for UpdateConfluencePageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateConfluencePage => f.write_str("update_confluence_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateConfluencePageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_confluence_page" => Ok(Self::UpdateConfluencePage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateConfluencePageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateConfluencePageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateConfluencePageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The Confluence template to use
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The Confluence template to use",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateConfluencePageTaskParamsTemplate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateConfluencePageTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateConfluencePageTaskParamsTemplate {
        pub fn builder() -> builder::UpdateConfluencePageTaskParamsTemplate {
            Default::default()
        }
    }
    ///`UpdateCustomField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "default": {
    ///              "description": "The default value for text field kinds",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the custom_field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "label": {
    ///              "description": "The name of the custom_field",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the custom_field",
    ///              "type": "integer"
    ///            },
    ///            "required": {
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "description": "Where the custom_field is required",
    ///                "type": "string",
    ///                "enum": [
    ///                  "incident_form",
    ///                  "incident_mitigation_form",
    ///                  "incident_resolution_form",
    ///                  "incident_post_mortem_form",
    ///                  "incident_slack_form",
    ///                  "incident_mitigation_slack_form",
    ///                  "incident_resolution_slack_form"
    ///                ]
    ///              }
    ///            },
    ///            "shown": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Where the custom_field is shown",
    ///                "type": "string",
    ///                "enum": [
    ///                  "incident_form",
    ///                  "incident_mitigation_form",
    ///                  "incident_resolution_form",
    ///                  "incident_post_mortem_form",
    ///                  "incident_slack_form",
    ///                  "incident_mitigation_slack_form",
    ///                  "incident_resolution_slack_form",
    ///                  "incident_post_mortem"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCustomField {
        pub data: UpdateCustomFieldData,
    }
    impl UpdateCustomField {
        pub fn builder() -> builder::UpdateCustomField {
            Default::default()
        }
    }
    ///`UpdateCustomFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "default": {
    ///          "description": "The default value for text field kinds",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the custom_field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "label": {
    ///          "description": "The name of the custom_field",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the custom_field",
    ///          "type": "integer"
    ///        },
    ///        "required": {
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "description": "Where the custom_field is required",
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_form",
    ///              "incident_mitigation_form",
    ///              "incident_resolution_form",
    ///              "incident_post_mortem_form",
    ///              "incident_slack_form",
    ///              "incident_mitigation_slack_form",
    ///              "incident_resolution_slack_form"
    ///            ]
    ///          }
    ///        },
    ///        "shown": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Where the custom_field is shown",
    ///            "type": "string",
    ///            "enum": [
    ///              "incident_form",
    ///              "incident_mitigation_form",
    ///              "incident_resolution_form",
    ///              "incident_post_mortem_form",
    ///              "incident_slack_form",
    ///              "incident_mitigation_slack_form",
    ///              "incident_resolution_slack_form",
    ///              "incident_post_mortem"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCustomFieldData {
        pub attributes: UpdateCustomFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCustomFieldDataType,
    }
    impl UpdateCustomFieldData {
        pub fn builder() -> builder::UpdateCustomFieldData {
            Default::default()
        }
    }
    ///`UpdateCustomFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "default": {
    ///      "description": "The default value for text field kinds",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the custom_field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "label": {
    ///      "description": "The name of the custom_field",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the custom_field",
    ///      "type": "integer"
    ///    },
    ///    "required": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Where the custom_field is required",
    ///        "type": "string",
    ///        "enum": [
    ///          "incident_form",
    ///          "incident_mitigation_form",
    ///          "incident_resolution_form",
    ///          "incident_post_mortem_form",
    ///          "incident_slack_form",
    ///          "incident_mitigation_slack_form",
    ///          "incident_resolution_slack_form"
    ///        ]
    ///      }
    ///    },
    ///    "shown": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the custom_field is shown",
    ///        "type": "string",
    ///        "enum": [
    ///          "incident_form",
    ///          "incident_mitigation_form",
    ///          "incident_resolution_form",
    ///          "incident_post_mortem_form",
    ///          "incident_slack_form",
    ///          "incident_mitigation_slack_form",
    ///          "incident_resolution_slack_form",
    ///          "incident_post_mortem"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCustomFieldDataAttributes {
        ///The default value for text field kinds
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<::std::string::String>,
        ///The description of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub label: ::std::option::Option<::std::string::String>,
        ///The position of the custom_field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<
            ::std::vec::Vec<UpdateCustomFieldDataAttributesRequiredItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub shown: ::std::vec::Vec<UpdateCustomFieldDataAttributesShownItem>,
    }
    impl ::std::default::Default for UpdateCustomFieldDataAttributes {
        fn default() -> Self {
            Self {
                default: Default::default(),
                description: Default::default(),
                label: Default::default(),
                position: Default::default(),
                required: Default::default(),
                shown: Default::default(),
            }
        }
    }
    impl UpdateCustomFieldDataAttributes {
        pub fn builder() -> builder::UpdateCustomFieldDataAttributes {
            Default::default()
        }
    }
    ///Where the custom_field is required
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Where the custom_field is required",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form",
    ///    "incident_mitigation_form",
    ///    "incident_resolution_form",
    ///    "incident_post_mortem_form",
    ///    "incident_slack_form",
    ///    "incident_mitigation_slack_form",
    ///    "incident_resolution_slack_form"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCustomFieldDataAttributesRequiredItem {
        #[serde(rename = "incident_form")]
        IncidentForm,
        #[serde(rename = "incident_mitigation_form")]
        IncidentMitigationForm,
        #[serde(rename = "incident_resolution_form")]
        IncidentResolutionForm,
        #[serde(rename = "incident_post_mortem_form")]
        IncidentPostMortemForm,
        #[serde(rename = "incident_slack_form")]
        IncidentSlackForm,
        #[serde(rename = "incident_mitigation_slack_form")]
        IncidentMitigationSlackForm,
        #[serde(rename = "incident_resolution_slack_form")]
        IncidentResolutionSlackForm,
    }
    impl ::std::fmt::Display for UpdateCustomFieldDataAttributesRequiredItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentForm => f.write_str("incident_form"),
                Self::IncidentMitigationForm => f.write_str("incident_mitigation_form"),
                Self::IncidentResolutionForm => f.write_str("incident_resolution_form"),
                Self::IncidentPostMortemForm => f.write_str("incident_post_mortem_form"),
                Self::IncidentSlackForm => f.write_str("incident_slack_form"),
                Self::IncidentMitigationSlackForm => {
                    f.write_str("incident_mitigation_slack_form")
                }
                Self::IncidentResolutionSlackForm => {
                    f.write_str("incident_resolution_slack_form")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateCustomFieldDataAttributesRequiredItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form" => Ok(Self::IncidentForm),
                "incident_mitigation_form" => Ok(Self::IncidentMitigationForm),
                "incident_resolution_form" => Ok(Self::IncidentResolutionForm),
                "incident_post_mortem_form" => Ok(Self::IncidentPostMortemForm),
                "incident_slack_form" => Ok(Self::IncidentSlackForm),
                "incident_mitigation_slack_form" => Ok(Self::IncidentMitigationSlackForm),
                "incident_resolution_slack_form" => Ok(Self::IncidentResolutionSlackForm),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCustomFieldDataAttributesRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCustomFieldDataAttributesRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCustomFieldDataAttributesRequiredItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Where the custom_field is shown
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Where the custom_field is shown",
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form",
    ///    "incident_mitigation_form",
    ///    "incident_resolution_form",
    ///    "incident_post_mortem_form",
    ///    "incident_slack_form",
    ///    "incident_mitigation_slack_form",
    ///    "incident_resolution_slack_form",
    ///    "incident_post_mortem"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCustomFieldDataAttributesShownItem {
        #[serde(rename = "incident_form")]
        IncidentForm,
        #[serde(rename = "incident_mitigation_form")]
        IncidentMitigationForm,
        #[serde(rename = "incident_resolution_form")]
        IncidentResolutionForm,
        #[serde(rename = "incident_post_mortem_form")]
        IncidentPostMortemForm,
        #[serde(rename = "incident_slack_form")]
        IncidentSlackForm,
        #[serde(rename = "incident_mitigation_slack_form")]
        IncidentMitigationSlackForm,
        #[serde(rename = "incident_resolution_slack_form")]
        IncidentResolutionSlackForm,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
    }
    impl ::std::fmt::Display for UpdateCustomFieldDataAttributesShownItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentForm => f.write_str("incident_form"),
                Self::IncidentMitigationForm => f.write_str("incident_mitigation_form"),
                Self::IncidentResolutionForm => f.write_str("incident_resolution_form"),
                Self::IncidentPostMortemForm => f.write_str("incident_post_mortem_form"),
                Self::IncidentSlackForm => f.write_str("incident_slack_form"),
                Self::IncidentMitigationSlackForm => {
                    f.write_str("incident_mitigation_slack_form")
                }
                Self::IncidentResolutionSlackForm => {
                    f.write_str("incident_resolution_slack_form")
                }
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCustomFieldDataAttributesShownItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form" => Ok(Self::IncidentForm),
                "incident_mitigation_form" => Ok(Self::IncidentMitigationForm),
                "incident_resolution_form" => Ok(Self::IncidentResolutionForm),
                "incident_post_mortem_form" => Ok(Self::IncidentPostMortemForm),
                "incident_slack_form" => Ok(Self::IncidentSlackForm),
                "incident_mitigation_slack_form" => Ok(Self::IncidentMitigationSlackForm),
                "incident_resolution_slack_form" => Ok(Self::IncidentResolutionSlackForm),
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCustomFieldDataAttributesShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCustomFieldDataAttributesShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCustomFieldDataAttributesShownItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCustomFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCustomFieldDataType {
        #[serde(rename = "custom_fields")]
        CustomFields,
    }
    impl ::std::fmt::Display for UpdateCustomFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFields => f.write_str("custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCustomFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_fields" => Ok(Self::CustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCustomFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateCustomFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateCustomFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCustomFieldOption`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the custom_field_option",
    ///              "type": "string"
    ///            },
    ///            "default": {
    ///              "type": "boolean"
    ///            },
    ///            "position": {
    ///              "description": "The position of the custom_field_option",
    ///              "type": "integer"
    ///            },
    ///            "value": {
    ///              "description": "The value of the custom_field_option",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_field_options"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCustomFieldOption {
        pub data: UpdateCustomFieldOptionData,
    }
    impl UpdateCustomFieldOption {
        pub fn builder() -> builder::UpdateCustomFieldOption {
            Default::default()
        }
    }
    ///`UpdateCustomFieldOptionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the custom_field_option",
    ///          "type": "string"
    ///        },
    ///        "default": {
    ///          "type": "boolean"
    ///        },
    ///        "position": {
    ///          "description": "The position of the custom_field_option",
    ///          "type": "integer"
    ///        },
    ///        "value": {
    ///          "description": "The value of the custom_field_option",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCustomFieldOptionData {
        pub attributes: UpdateCustomFieldOptionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCustomFieldOptionDataType,
    }
    impl UpdateCustomFieldOptionData {
        pub fn builder() -> builder::UpdateCustomFieldOptionData {
            Default::default()
        }
    }
    ///`UpdateCustomFieldOptionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the custom_field_option",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "The position of the custom_field_option",
    ///      "type": "integer"
    ///    },
    ///    "value": {
    ///      "description": "The value of the custom_field_option",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCustomFieldOptionDataAttributes {
        ///The hex color of the custom_field_option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The position of the custom_field_option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The value of the custom_field_option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateCustomFieldOptionDataAttributes {
        fn default() -> Self {
            Self {
                color: Default::default(),
                default: Default::default(),
                position: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateCustomFieldOptionDataAttributes {
        pub fn builder() -> builder::UpdateCustomFieldOptionDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCustomFieldOptionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCustomFieldOptionDataType {
        #[serde(rename = "custom_field_options")]
        CustomFieldOptions,
    }
    impl ::std::fmt::Display for UpdateCustomFieldOptionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomFieldOptions => f.write_str("custom_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCustomFieldOptionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field_options" => Ok(Self::CustomFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCustomFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateCustomFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateCustomFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateCustomForm`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "command": {
    ///              "description": "The Slack command used to trigger this form.",
    ///              "type": "string"
    ///            },
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the custom form.",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_forms"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCustomForm {
        pub data: UpdateCustomFormData,
    }
    impl UpdateCustomForm {
        pub fn builder() -> builder::UpdateCustomForm {
            Default::default()
        }
    }
    ///`UpdateCustomFormData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "command": {
    ///          "description": "The Slack command used to trigger this form.",
    ///          "type": "string"
    ///        },
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the custom form.",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_forms"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateCustomFormData {
        pub attributes: UpdateCustomFormDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateCustomFormDataType,
    }
    impl UpdateCustomFormData {
        pub fn builder() -> builder::UpdateCustomFormData {
            Default::default()
        }
    }
    ///`UpdateCustomFormDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "command": {
    ///      "description": "The Slack command used to trigger this form.",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the custom form.",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateCustomFormDataAttributes {
        ///The Slack command used to trigger this form.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the custom form.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateCustomFormDataAttributes {
        fn default() -> Self {
            Self {
                command: Default::default(),
                description: Default::default(),
                enabled: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateCustomFormDataAttributes {
        pub fn builder() -> builder::UpdateCustomFormDataAttributes {
            Default::default()
        }
    }
    ///`UpdateCustomFormDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_forms"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateCustomFormDataType {
        #[serde(rename = "custom_forms")]
        CustomForms,
    }
    impl ::std::fmt::Display for UpdateCustomFormDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomForms => f.write_str("custom_forms"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateCustomFormDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_forms" => Ok(Self::CustomForms),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateCustomFormDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateCustomFormDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateCustomFormDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboard`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "auto_refresh": {
    ///              "description": "Whether the dashboard auto-updates the UI with new data.",
    ///              "type": "boolean"
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the dashboard",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "#FCF2CF",
    ///                "#D7F5E1",
    ///                "#E9E2FF",
    ///                "#FAE6E8",
    ///                "#FAEEE6"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the dashboard",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "icon": {
    ///              "description": "The emoji icon of the dashboard",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "The name of the dashboard",
    ///              "type": "string"
    ///            },
    ///            "owner": {
    ///              "description": "The owner type of the dashboard",
    ///              "type": "string",
    ///              "enum": [
    ///                "user",
    ///                "team"
    ///              ]
    ///            },
    ///            "period": {
    ///              "description": "The grouping period for dashboard panel data",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "day",
    ///                "week",
    ///                "month"
    ///              ]
    ///            },
    ///            "public": {
    ///              "description": "Whether the dashboard is public",
    ///              "type": "boolean"
    ///            },
    ///            "range": {
    ///              "description": "The date range for dashboard panel data",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "dashboards"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboard {
        pub data: UpdateDashboardData,
    }
    impl UpdateDashboard {
        pub fn builder() -> builder::UpdateDashboard {
            Default::default()
        }
    }
    ///`UpdateDashboardData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "auto_refresh": {
    ///          "description": "Whether the dashboard auto-updates the UI with new data.",
    ///          "type": "boolean"
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the dashboard",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "#FCF2CF",
    ///            "#D7F5E1",
    ///            "#E9E2FF",
    ///            "#FAE6E8",
    ///            "#FAEEE6"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the dashboard",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "icon": {
    ///          "description": "The emoji icon of the dashboard",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "The name of the dashboard",
    ///          "type": "string"
    ///        },
    ///        "owner": {
    ///          "description": "The owner type of the dashboard",
    ///          "type": "string",
    ///          "enum": [
    ///            "user",
    ///            "team"
    ///          ]
    ///        },
    ///        "period": {
    ///          "description": "The grouping period for dashboard panel data",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "day",
    ///            "week",
    ///            "month"
    ///          ]
    ///        },
    ///        "public": {
    ///          "description": "Whether the dashboard is public",
    ///          "type": "boolean"
    ///        },
    ///        "range": {
    ///          "description": "The date range for dashboard panel data",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboards"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<UpdateDashboardDataAttributes>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<UpdateDashboardDataType>,
    }
    impl ::std::default::Default for UpdateDashboardData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl UpdateDashboardData {
        pub fn builder() -> builder::UpdateDashboardData {
            Default::default()
        }
    }
    ///`UpdateDashboardDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "auto_refresh": {
    ///      "description": "Whether the dashboard auto-updates the UI with new data.",
    ///      "type": "boolean"
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the dashboard",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "#FCF2CF",
    ///        "#D7F5E1",
    ///        "#E9E2FF",
    ///        "#FAE6E8",
    ///        "#FAEEE6"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the dashboard",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "icon": {
    ///      "description": "The emoji icon of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "The name of the dashboard",
    ///      "type": "string"
    ///    },
    ///    "owner": {
    ///      "description": "The owner type of the dashboard",
    ///      "type": "string",
    ///      "enum": [
    ///        "user",
    ///        "team"
    ///      ]
    ///    },
    ///    "period": {
    ///      "description": "The grouping period for dashboard panel data",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "day",
    ///        "week",
    ///        "month"
    ///      ]
    ///    },
    ///    "public": {
    ///      "description": "Whether the dashboard is public",
    ///      "type": "boolean"
    ///    },
    ///    "range": {
    ///      "description": "The date range for dashboard panel data",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateDashboardDataAttributes {
        ///Whether the dashboard auto-updates the UI with new data.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_refresh: ::std::option::Option<bool>,
        ///The hex color of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<UpdateDashboardDataAttributesColor>,
        ///The description of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The emoji icon of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<::std::string::String>,
        ///The name of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The owner type of the dashboard
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner: ::std::option::Option<UpdateDashboardDataAttributesOwner>,
        ///The grouping period for dashboard panel data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub period: ::std::option::Option<UpdateDashboardDataAttributesPeriod>,
        ///Whether the dashboard is public
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public: ::std::option::Option<bool>,
        ///The date range for dashboard panel data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub range: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateDashboardDataAttributes {
        fn default() -> Self {
            Self {
                auto_refresh: Default::default(),
                color: Default::default(),
                description: Default::default(),
                icon: Default::default(),
                name: Default::default(),
                owner: Default::default(),
                period: Default::default(),
                public: Default::default(),
                range: Default::default(),
            }
        }
    }
    impl UpdateDashboardDataAttributes {
        pub fn builder() -> builder::UpdateDashboardDataAttributes {
            Default::default()
        }
    }
    ///The hex color of the dashboard
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The hex color of the dashboard",
    ///  "type": "string",
    ///  "enum": [
    ///    "#FCF2CF",
    ///    "#D7F5E1",
    ///    "#E9E2FF",
    ///    "#FAE6E8",
    ///    "#FAEEE6"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardDataAttributesColor {
        #[serde(rename = "#FCF2CF")]
        Fcf2cf,
        #[serde(rename = "#D7F5E1")]
        D7f5e1,
        #[serde(rename = "#E9E2FF")]
        E9e2ff,
        #[serde(rename = "#FAE6E8")]
        Fae6e8,
        #[serde(rename = "#FAEEE6")]
        Faeee6,
    }
    impl ::std::fmt::Display for UpdateDashboardDataAttributesColor {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Fcf2cf => f.write_str("#FCF2CF"),
                Self::D7f5e1 => f.write_str("#D7F5E1"),
                Self::E9e2ff => f.write_str("#E9E2FF"),
                Self::Fae6e8 => f.write_str("#FAE6E8"),
                Self::Faeee6 => f.write_str("#FAEEE6"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardDataAttributesColor {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "#FCF2CF" => Ok(Self::Fcf2cf),
                "#D7F5E1" => Ok(Self::D7f5e1),
                "#E9E2FF" => Ok(Self::E9e2ff),
                "#FAE6E8" => Ok(Self::Fae6e8),
                "#FAEEE6" => Ok(Self::Faeee6),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDashboardDataAttributesColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardDataAttributesColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardDataAttributesColor {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The owner type of the dashboard
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The owner type of the dashboard",
    ///  "type": "string",
    ///  "enum": [
    ///    "user",
    ///    "team"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardDataAttributesOwner {
        #[serde(rename = "user")]
        User,
        #[serde(rename = "team")]
        Team,
    }
    impl ::std::fmt::Display for UpdateDashboardDataAttributesOwner {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("user"),
                Self::Team => f.write_str("team"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardDataAttributesOwner {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user" => Ok(Self::User),
                "team" => Ok(Self::Team),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDashboardDataAttributesOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardDataAttributesOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardDataAttributesOwner {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The grouping period for dashboard panel data
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The grouping period for dashboard panel data",
    ///  "type": "string",
    ///  "enum": [
    ///    "day",
    ///    "week",
    ///    "month"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardDataAttributesPeriod {
        #[serde(rename = "day")]
        Day,
        #[serde(rename = "week")]
        Week,
        #[serde(rename = "month")]
        Month,
    }
    impl ::std::fmt::Display for UpdateDashboardDataAttributesPeriod {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Day => f.write_str("day"),
                Self::Week => f.write_str("week"),
                Self::Month => f.write_str("month"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardDataAttributesPeriod {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "day" => Ok(Self::Day),
                "week" => Ok(Self::Week),
                "month" => Ok(Self::Month),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDashboardDataAttributesPeriod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardDataAttributesPeriod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardDataAttributesPeriod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboards"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardDataType {
        #[serde(rename = "dashboards")]
        Dashboards,
    }
    impl ::std::fmt::Display for UpdateDashboardDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Dashboards => f.write_str("dashboards"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboards" => Ok(Self::Dashboards),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDashboardDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateDashboardDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateDashboardDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "name": {
    ///              "description": "The name of the dashboard_panel",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "params": {
    ///              "type": "object",
    ///              "properties": {
    ///                "datalabels": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "enabled": {
    ///                      "type": "boolean"
    ///                    }
    ///                  }
    ///                },
    ///                "datasets": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "aggregate": {
    ///                        "type": [
    ///                          "object",
    ///                          "null"
    ///                        ],
    ///                        "properties": {
    ///                          "cumulative": {
    ///                            "type": [
    ///                              "boolean",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "key": {
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          "operation": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "count",
    ///                              "sum",
    ///                              "average"
    ///                            ]
    ///                          }
    ///                        }
    ///                      },
    ///                      "collection": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "alerts",
    ///                          "incidents",
    ///                          "incident_post_mortems",
    ///                          "incident_action_items",
    ///                          "users"
    ///                        ]
    ///                      },
    ///                      "filter": {
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "object",
    ///                          "properties": {
    ///                            "operation": {
    ///                              "type": "string",
    ///                              "enum": [
    ///                                "and",
    ///                                "or"
    ///                              ]
    ///                            },
    ///                            "rules": {
    ///                              "type": "array",
    ///                              "items": {
    ///                                "type": "object",
    ///                                "properties": {
    ///                                  "condition": {
    ///                                    "type": "string"
    ///                                  },
    ///                                  "key": {
    ///                                    "type": "string"
    ///                                  },
    ///                                  "operation": {
    ///                                    "type": "string",
    ///                                    "enum": [
    ///                                      "and",
    ///                                      "or"
    ///                                    ]
    ///                                  },
    ///                                  "value": {
    ///                                    "type": "string"
    ///                                  }
    ///                                }
    ///                              }
    ///                            }
    ///                          }
    ///                        }
    ///                      },
    ///                      "group_by": {
    ///                        "oneOf": [
    ///                          {
    ///                            "type": [
    ///                              "string",
    ///                              "null"
    ///                            ]
    ///                          },
    ///                          {
    ///                            "type": [
    ///                              "object",
    ///                              "null"
    ///                            ],
    ///                            "required": [
    ///                              "key",
    ///                              "value"
    ///                            ],
    ///                            "properties": {
    ///                              "key": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "custom_field",
    ///                                  "incident_role",
    ///                                  "alert_field"
    ///                                ]
    ///                              },
    ///                              "value": {
    ///                                "type": "string"
    ///                              }
    ///                            }
    ///                          }
    ///                        ]
    ///                      },
    ///                      "name": {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      }
    ///                    }
    ///                  }
    ///                },
    ///                "description": {
    ///                  "type": "string"
    ///                },
    ///                "display": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "line_chart",
    ///                    "line_stepped_chart",
    ///                    "column_chart",
    ///                    "stacked_column_chart",
    ///                    "monitoring_chart",
    ///                    "pie_chart",
    ///                    "table",
    ///                    "aggregate_value"
    ///                  ]
    ///                },
    ///                "legend": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "groups": {
    ///                      "default": "all",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "all",
    ///                        "charted"
    ///                      ]
    ///                    }
    ///                  }
    ///                },
    ///                "table_fields": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "position": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "h",
    ///                "w",
    ///                "x",
    ///                "y"
    ///              ],
    ///              "properties": {
    ///                "h": {
    ///                  "type": "number"
    ///                },
    ///                "w": {
    ///                  "type": "number"
    ///                },
    ///                "x": {
    ///                  "type": "number"
    ///                },
    ///                "y": {
    ///                  "type": "number"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "dashboard_panels"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanel {
        pub data: UpdateDashboardPanelData,
    }
    impl UpdateDashboardPanel {
        pub fn builder() -> builder::UpdateDashboardPanel {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "name": {
    ///          "description": "The name of the dashboard_panel",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "params": {
    ///          "type": "object",
    ///          "properties": {
    ///            "datalabels": {
    ///              "type": "object",
    ///              "properties": {
    ///                "enabled": {
    ///                  "type": "boolean"
    ///                }
    ///              }
    ///            },
    ///            "datasets": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "aggregate": {
    ///                    "type": [
    ///                      "object",
    ///                      "null"
    ///                    ],
    ///                    "properties": {
    ///                      "cumulative": {
    ///                        "type": [
    ///                          "boolean",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "key": {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "operation": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "count",
    ///                          "sum",
    ///                          "average"
    ///                        ]
    ///                      }
    ///                    }
    ///                  },
    ///                  "collection": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "alerts",
    ///                      "incidents",
    ///                      "incident_post_mortems",
    ///                      "incident_action_items",
    ///                      "users"
    ///                    ]
    ///                  },
    ///                  "filter": {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "properties": {
    ///                        "operation": {
    ///                          "type": "string",
    ///                          "enum": [
    ///                            "and",
    ///                            "or"
    ///                          ]
    ///                        },
    ///                        "rules": {
    ///                          "type": "array",
    ///                          "items": {
    ///                            "type": "object",
    ///                            "properties": {
    ///                              "condition": {
    ///                                "type": "string"
    ///                              },
    ///                              "key": {
    ///                                "type": "string"
    ///                              },
    ///                              "operation": {
    ///                                "type": "string",
    ///                                "enum": [
    ///                                  "and",
    ///                                  "or"
    ///                                ]
    ///                              },
    ///                              "value": {
    ///                                "type": "string"
    ///                              }
    ///                            }
    ///                          }
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "group_by": {
    ///                    "oneOf": [
    ///                      {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      {
    ///                        "type": [
    ///                          "object",
    ///                          "null"
    ///                        ],
    ///                        "required": [
    ///                          "key",
    ///                          "value"
    ///                        ],
    ///                        "properties": {
    ///                          "key": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "custom_field",
    ///                              "incident_role",
    ///                              "alert_field"
    ///                            ]
    ///                          },
    ///                          "value": {
    ///                            "type": "string"
    ///                          }
    ///                        }
    ///                      }
    ///                    ]
    ///                  },
    ///                  "name": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "type": "string"
    ///            },
    ///            "display": {
    ///              "type": "string",
    ///              "enum": [
    ///                "line_chart",
    ///                "line_stepped_chart",
    ///                "column_chart",
    ///                "stacked_column_chart",
    ///                "monitoring_chart",
    ///                "pie_chart",
    ///                "table",
    ///                "aggregate_value"
    ///              ]
    ///            },
    ///            "legend": {
    ///              "type": "object",
    ///              "properties": {
    ///                "groups": {
    ///                  "default": "all",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "all",
    ///                    "charted"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "table_fields": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "position": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "h",
    ///            "w",
    ///            "x",
    ///            "y"
    ///          ],
    ///          "properties": {
    ///            "h": {
    ///              "type": "number"
    ///            },
    ///            "w": {
    ///              "type": "number"
    ///            },
    ///            "x": {
    ///              "type": "number"
    ///            },
    ///            "y": {
    ///              "type": "number"
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "dashboard_panels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<UpdateDashboardPanelDataAttributes>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<UpdateDashboardPanelDataType>,
    }
    impl ::std::default::Default for UpdateDashboardPanelData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelData {
        pub fn builder() -> builder::UpdateDashboardPanelData {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "name": {
    ///      "description": "The name of the dashboard_panel",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "datalabels": {
    ///          "type": "object",
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            }
    ///          }
    ///        },
    ///        "datasets": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "aggregate": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "properties": {
    ///                  "cumulative": {
    ///                    "type": [
    ///                      "boolean",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "key": {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "operation": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "count",
    ///                      "sum",
    ///                      "average"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              "collection": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "alerts",
    ///                  "incidents",
    ///                  "incident_post_mortems",
    ///                  "incident_action_items",
    ///                  "users"
    ///                ]
    ///              },
    ///              "filter": {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "operation": {
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "and",
    ///                        "or"
    ///                      ]
    ///                    },
    ///                    "rules": {
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "object",
    ///                        "properties": {
    ///                          "condition": {
    ///                            "type": "string"
    ///                          },
    ///                          "key": {
    ///                            "type": "string"
    ///                          },
    ///                          "operation": {
    ///                            "type": "string",
    ///                            "enum": [
    ///                              "and",
    ///                              "or"
    ///                            ]
    ///                          },
    ///                          "value": {
    ///                            "type": "string"
    ///                          }
    ///                        }
    ///                      }
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "group_by": {
    ///                "oneOf": [
    ///                  {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  {
    ///                    "type": [
    ///                      "object",
    ///                      "null"
    ///                    ],
    ///                    "required": [
    ///                      "key",
    ///                      "value"
    ///                    ],
    ///                    "properties": {
    ///                      "key": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "custom_field",
    ///                          "incident_role",
    ///                          "alert_field"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              },
    ///              "name": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "type": "string"
    ///        },
    ///        "display": {
    ///          "type": "string",
    ///          "enum": [
    ///            "line_chart",
    ///            "line_stepped_chart",
    ///            "column_chart",
    ///            "stacked_column_chart",
    ///            "monitoring_chart",
    ///            "pie_chart",
    ///            "table",
    ///            "aggregate_value"
    ///          ]
    ///        },
    ///        "legend": {
    ///          "type": "object",
    ///          "properties": {
    ///            "groups": {
    ///              "default": "all",
    ///              "type": "string",
    ///              "enum": [
    ///                "all",
    ///                "charted"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "table_fields": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "h",
    ///        "w",
    ///        "x",
    ///        "y"
    ///      ],
    ///      "properties": {
    ///        "h": {
    ///          "type": "number"
    ///        },
    ///        "w": {
    ///          "type": "number"
    ///        },
    ///        "x": {
    ///          "type": "number"
    ///        },
    ///        "y": {
    ///          "type": "number"
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateDashboardPanelDataAttributes {
        ///The name of the dashboard_panel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub params: ::std::option::Option<UpdateDashboardPanelDataAttributesParams>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<UpdateDashboardPanelDataAttributesPosition>,
    }
    impl ::std::default::Default for UpdateDashboardPanelDataAttributes {
        fn default() -> Self {
            Self {
                name: Default::default(),
                params: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributes {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributes {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "datalabels": {
    ///      "type": "object",
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    "datasets": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "aggregate": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "properties": {
    ///              "cumulative": {
    ///                "type": [
    ///                  "boolean",
    ///                  "null"
    ///                ]
    ///              },
    ///              "key": {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "operation": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "count",
    ///                  "sum",
    ///                  "average"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "collection": {
    ///            "type": "string",
    ///            "enum": [
    ///              "alerts",
    ///              "incidents",
    ///              "incident_post_mortems",
    ///              "incident_action_items",
    ///              "users"
    ///            ]
    ///          },
    ///          "filter": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "operation": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "and",
    ///                    "or"
    ///                  ]
    ///                },
    ///                "rules": {
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "object",
    ///                    "properties": {
    ///                      "condition": {
    ///                        "type": "string"
    ///                      },
    ///                      "key": {
    ///                        "type": "string"
    ///                      },
    ///                      "operation": {
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "and",
    ///                          "or"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "group_by": {
    ///            "oneOf": [
    ///              {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "custom_field",
    ///                      "incident_role",
    ///                      "alert_field"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          },
    ///          "name": {
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "display": {
    ///      "type": "string",
    ///      "enum": [
    ///        "line_chart",
    ///        "line_stepped_chart",
    ///        "column_chart",
    ///        "stacked_column_chart",
    ///        "monitoring_chart",
    ///        "pie_chart",
    ///        "table",
    ///        "aggregate_value"
    ///      ]
    ///    },
    ///    "legend": {
    ///      "type": "object",
    ///      "properties": {
    ///        "groups": {
    ///          "default": "all",
    ///          "type": "string",
    ///          "enum": [
    ///            "all",
    ///            "charted"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "table_fields": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub datalabels: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatalabels,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub datasets: ::std::vec::Vec<
            UpdateDashboardPanelDataAttributesParamsDatasetsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub display: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDisplay,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub legend: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsLegend,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub table_fields: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateDashboardPanelDataAttributesParams {
        fn default() -> Self {
            Self {
                datalabels: Default::default(),
                datasets: Default::default(),
                description: Default::default(),
                display: Default::default(),
                legend: Default::default(),
                table_fields: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParams {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParams {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatalabels`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsDatalabels {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for UpdateDashboardPanelDataAttributesParamsDatalabels {
        fn default() -> Self {
            Self {
                enabled: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParamsDatalabels {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsDatalabels {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "aggregate": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "cumulative": {
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "key": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "operation": {
    ///          "type": "string",
    ///          "enum": [
    ///            "count",
    ///            "sum",
    ///            "average"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "collection": {
    ///      "type": "string",
    ///      "enum": [
    ///        "alerts",
    ///        "incidents",
    ///        "incident_post_mortems",
    ///        "incident_action_items",
    ///        "users"
    ///      ]
    ///    },
    ///    "filter": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "operation": {
    ///            "type": "string",
    ///            "enum": [
    ///              "and",
    ///              "or"
    ///            ]
    ///          },
    ///          "rules": {
    ///            "type": "array",
    ///            "items": {
    ///              "type": "object",
    ///              "properties": {
    ///                "condition": {
    ///                  "type": "string"
    ///                },
    ///                "key": {
    ///                  "type": "string"
    ///                },
    ///                "operation": {
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "and",
    ///                    "or"
    ///                  ]
    ///                },
    ///                "value": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "group_by": {
    ///      "oneOf": [
    ///        {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "key",
    ///            "value"
    ///          ],
    ///          "properties": {
    ///            "key": {
    ///              "type": "string",
    ///              "enum": [
    ///                "custom_field",
    ///                "incident_role",
    ///                "alert_field"
    ///              ]
    ///            },
    ///            "value": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub aggregate: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub collection: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub filter: ::std::vec::Vec<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_by: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateDashboardPanelDataAttributesParamsDatasetsItem {
        fn default() -> Self {
            Self {
                aggregate: Default::default(),
                collection: Default::default(),
                filter: Default::default(),
                group_by: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParamsDatasetsItem {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsDatasetsItem {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "cumulative": {
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "key": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "count",
    ///        "sum",
    ///        "average"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cumulative: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation,
        >,
    }
    impl ::std::default::Default
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
        fn default() -> Self {
            Self {
                cumulative: Default::default(),
                key: Default::default(),
                operation: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "count",
    ///    "sum",
    ///    "average"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        #[serde(rename = "count")]
        Count,
        #[serde(rename = "sum")]
        Sum,
        #[serde(rename = "average")]
        Average,
    }
    impl ::std::fmt::Display
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Count => f.write_str("count"),
                Self::Sum => f.write_str("sum"),
                Self::Average => f.write_str("average"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "count" => Ok(Self::Count),
                "sum" => Ok(Self::Sum),
                "average" => Ok(Self::Average),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "alerts",
    ///    "incidents",
    ///    "incident_post_mortems",
    ///    "incident_action_items",
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection {
        #[serde(rename = "alerts")]
        Alerts,
        #[serde(rename = "incidents")]
        Incidents,
        #[serde(rename = "incident_post_mortems")]
        IncidentPostMortems,
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Alerts => f.write_str("alerts"),
                Self::Incidents => f.write_str("incidents"),
                Self::IncidentPostMortems => f.write_str("incident_post_mortems"),
                Self::IncidentActionItems => f.write_str("incident_action_items"),
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "alerts" => Ok(Self::Alerts),
                "incidents" => Ok(Self::Incidents),
                "incident_post_mortems" => Ok(Self::IncidentPostMortems),
                "incident_action_items" => Ok(Self::IncidentActionItems),
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "rules": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "condition": {
    ///            "type": "string"
    ///          },
    ///          "key": {
    ///            "type": "string"
    ///          },
    ///          "operation": {
    ///            "type": "string",
    ///            "enum": [
    ///              "and",
    ///              "or"
    ///            ]
    ///          },
    ///          "value": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
        >,
    }
    impl ::std::default::Default
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
        fn default() -> Self {
            Self {
                operation: Default::default(),
                rules: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "condition": {
    ///      "type": "string"
    ///    },
    ///    "key": {
    ///      "type": "string"
    ///    },
    ///    "operation": {
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub key: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub operation: ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
        fn default() -> Self {
            Self {
                condition: Default::default(),
                key: Default::default(),
                operation: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "key",
    ///        "value"
    ///      ],
    ///      "properties": {
    ///        "key": {
    ///          "type": "string",
    ///          "enum": [
    ///            "custom_field",
    ///            "incident_role",
    ///            "alert_field"
    ///          ]
    ///        },
    ///        "value": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy {
        Variant0(::std::option::Option<::std::string::String>),
        Variant1(
            ::std::option::Option<
                UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            >,
        ),
    }
    impl ::std::convert::From<::std::option::Option<::std::string::String>>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy {
        fn from(value: ::std::option::Option<::std::string::String>) -> Self {
            Self::Variant0(value)
        }
    }
    impl ::std::convert::From<
        ::std::option::Option<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
        >,
    > for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy {
        fn from(
            value: ::std::option::Option<
                UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            >,
        ) -> Self {
            Self::Variant1(value)
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "type": "string",
    ///      "enum": [
    ///        "custom_field",
    ///        "incident_role",
    ///        "alert_field"
    ///      ]
    ///    },
    ///    "value": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
        pub key: UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key,
        pub value: ::std::string::String,
    }
    impl UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "custom_field",
    ///    "incident_role",
    ///    "alert_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        #[serde(rename = "custom_field")]
        CustomField,
        #[serde(rename = "incident_role")]
        IncidentRole,
        #[serde(rename = "alert_field")]
        AlertField,
    }
    impl ::std::fmt::Display
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CustomField => f.write_str("custom_field"),
                Self::IncidentRole => f.write_str("incident_role"),
                Self::AlertField => f.write_str("alert_field"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom_field" => Ok(Self::CustomField),
                "incident_role" => Ok(Self::IncidentRole),
                "alert_field" => Ok(Self::AlertField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsDisplay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "line_chart",
    ///    "line_stepped_chart",
    ///    "column_chart",
    ///    "stacked_column_chart",
    ///    "monitoring_chart",
    ///    "pie_chart",
    ///    "table",
    ///    "aggregate_value"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsDisplay {
        #[serde(rename = "line_chart")]
        LineChart,
        #[serde(rename = "line_stepped_chart")]
        LineSteppedChart,
        #[serde(rename = "column_chart")]
        ColumnChart,
        #[serde(rename = "stacked_column_chart")]
        StackedColumnChart,
        #[serde(rename = "monitoring_chart")]
        MonitoringChart,
        #[serde(rename = "pie_chart")]
        PieChart,
        #[serde(rename = "table")]
        Table,
        #[serde(rename = "aggregate_value")]
        AggregateValue,
    }
    impl ::std::fmt::Display for UpdateDashboardPanelDataAttributesParamsDisplay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LineChart => f.write_str("line_chart"),
                Self::LineSteppedChart => f.write_str("line_stepped_chart"),
                Self::ColumnChart => f.write_str("column_chart"),
                Self::StackedColumnChart => f.write_str("stacked_column_chart"),
                Self::MonitoringChart => f.write_str("monitoring_chart"),
                Self::PieChart => f.write_str("pie_chart"),
                Self::Table => f.write_str("table"),
                Self::AggregateValue => f.write_str("aggregate_value"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardPanelDataAttributesParamsDisplay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "line_chart" => Ok(Self::LineChart),
                "line_stepped_chart" => Ok(Self::LineSteppedChart),
                "column_chart" => Ok(Self::ColumnChart),
                "stacked_column_chart" => Ok(Self::StackedColumnChart),
                "monitoring_chart" => Ok(Self::MonitoringChart),
                "pie_chart" => Ok(Self::PieChart),
                "table" => Ok(Self::Table),
                "aggregate_value" => Ok(Self::AggregateValue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsDisplay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsLegend`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "groups": {
    ///      "default": "all",
    ///      "type": "string",
    ///      "enum": [
    ///        "all",
    ///        "charted"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesParamsLegend {
        #[serde(
            default = "defaults::update_dashboard_panel_data_attributes_params_legend_groups"
        )]
        pub groups: UpdateDashboardPanelDataAttributesParamsLegendGroups,
    }
    impl ::std::default::Default for UpdateDashboardPanelDataAttributesParamsLegend {
        fn default() -> Self {
            Self {
                groups: defaults::update_dashboard_panel_data_attributes_params_legend_groups(),
            }
        }
    }
    impl UpdateDashboardPanelDataAttributesParamsLegend {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesParamsLegend {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataAttributesParamsLegendGroups`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "all",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "charted"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataAttributesParamsLegendGroups {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "charted")]
        Charted,
    }
    impl ::std::fmt::Display for UpdateDashboardPanelDataAttributesParamsLegendGroups {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Charted => f.write_str("charted"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardPanelDataAttributesParamsLegendGroups {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "charted" => Ok(Self::Charted),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateDashboardPanelDataAttributesParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataAttributesParamsLegendGroups {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for UpdateDashboardPanelDataAttributesParamsLegendGroups {
        fn default() -> Self {
            UpdateDashboardPanelDataAttributesParamsLegendGroups::All
        }
    }
    ///`UpdateDashboardPanelDataAttributesPosition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "h",
    ///    "w",
    ///    "x",
    ///    "y"
    ///  ],
    ///  "properties": {
    ///    "h": {
    ///      "type": "number"
    ///    },
    ///    "w": {
    ///      "type": "number"
    ///    },
    ///    "x": {
    ///      "type": "number"
    ///    },
    ///    "y": {
    ///      "type": "number"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDashboardPanelDataAttributesPosition {
        pub h: f64,
        pub w: f64,
        pub x: f64,
        pub y: f64,
    }
    impl UpdateDashboardPanelDataAttributesPosition {
        pub fn builder() -> builder::UpdateDashboardPanelDataAttributesPosition {
            Default::default()
        }
    }
    ///`UpdateDashboardPanelDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "dashboard_panels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDashboardPanelDataType {
        #[serde(rename = "dashboard_panels")]
        DashboardPanels,
    }
    impl ::std::fmt::Display for UpdateDashboardPanelDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::DashboardPanels => f.write_str("dashboard_panels"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDashboardPanelDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "dashboard_panels" => Ok(Self::DashboardPanels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDashboardPanelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDashboardPanelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDashboardPanelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDatadogNotebookTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Datadog notebook content",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The Datadog notebook ID",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The notebook type",
    ///      "type": "string",
    ///      "enum": [
    ///        "postmortem",
    ///        "runbook",
    ///        "investigation",
    ///        "documentation",
    ///        "report"
    ///      ]
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when updating notebook, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_datadog_notebook"
    ///      ]
    ///    },
    ///    "template": {
    ///      "description": "The Datadog notebook template to use",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "The Datadog notebook title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDatadogNotebookTaskParams {
        ///The Datadog notebook content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Datadog notebook ID
        pub file_id: ::std::string::String,
        ///The notebook type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateDatadogNotebookTaskParamsKind>,
        ///Retrospective template to use when updating notebook, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateDatadogNotebookTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template: ::std::option::Option<UpdateDatadogNotebookTaskParamsTemplate>,
        ///The Datadog notebook title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateDatadogNotebookTaskParams {
        pub fn builder() -> builder::UpdateDatadogNotebookTaskParams {
            Default::default()
        }
    }
    ///The notebook type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The notebook type",
    ///  "type": "string",
    ///  "enum": [
    ///    "postmortem",
    ///    "runbook",
    ///    "investigation",
    ///    "documentation",
    ///    "report"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDatadogNotebookTaskParamsKind {
        #[serde(rename = "postmortem")]
        Postmortem,
        #[serde(rename = "runbook")]
        Runbook,
        #[serde(rename = "investigation")]
        Investigation,
        #[serde(rename = "documentation")]
        Documentation,
        #[serde(rename = "report")]
        Report,
    }
    impl ::std::fmt::Display for UpdateDatadogNotebookTaskParamsKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Postmortem => f.write_str("postmortem"),
                Self::Runbook => f.write_str("runbook"),
                Self::Investigation => f.write_str("investigation"),
                Self::Documentation => f.write_str("documentation"),
                Self::Report => f.write_str("report"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDatadogNotebookTaskParamsKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "postmortem" => Ok(Self::Postmortem),
                "runbook" => Ok(Self::Runbook),
                "investigation" => Ok(Self::Investigation),
                "documentation" => Ok(Self::Documentation),
                "report" => Ok(Self::Report),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDatadogNotebookTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDatadogNotebookTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDatadogNotebookTaskParamsKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateDatadogNotebookTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_datadog_notebook"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDatadogNotebookTaskParamsTaskType {
        #[serde(rename = "update_datadog_notebook")]
        UpdateDatadogNotebook,
    }
    impl ::std::fmt::Display for UpdateDatadogNotebookTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateDatadogNotebook => f.write_str("update_datadog_notebook"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDatadogNotebookTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_datadog_notebook" => Ok(Self::UpdateDatadogNotebook),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDatadogNotebookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDatadogNotebookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDatadogNotebookTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The Datadog notebook template to use
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The Datadog notebook template to use",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDatadogNotebookTaskParamsTemplate {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateDatadogNotebookTaskParamsTemplate {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateDatadogNotebookTaskParamsTemplate {
        pub fn builder() -> builder::UpdateDatadogNotebookTaskParamsTemplate {
            Default::default()
        }
    }
    ///`UpdateDropboxPaperPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Dropbox Paper document content",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The Dropbox Paper document ID",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when updating document, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_dropbox_paper_page"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The Dropbox Paper document title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateDropboxPaperPageTaskParams {
        ///The Dropbox Paper document content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Dropbox Paper document ID
        pub file_id: ::std::string::String,
        ///Retrospective template to use when updating document, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateDropboxPaperPageTaskParamsTaskType>,
        ///The Dropbox Paper document title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateDropboxPaperPageTaskParams {
        pub fn builder() -> builder::UpdateDropboxPaperPageTaskParams {
            Default::default()
        }
    }
    ///`UpdateDropboxPaperPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_dropbox_paper_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateDropboxPaperPageTaskParamsTaskType {
        #[serde(rename = "update_dropbox_paper_page")]
        UpdateDropboxPaperPage,
    }
    impl ::std::fmt::Display for UpdateDropboxPaperPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateDropboxPaperPage => f.write_str("update_dropbox_paper_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateDropboxPaperPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_dropbox_paper_page" => Ok(Self::UpdateDropboxPaperPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateDropboxPaperPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateDropboxPaperPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateDropboxPaperPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEdgeConnector`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "edge_connector"
    ///  ],
    ///  "properties": {
    ///    "edge_connector": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "status": {
    ///          "type": "string",
    ///          "enum": [
    ///            "active",
    ///            "paused"
    ///          ]
    ///        },
    ///        "subscriptions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnector {
        pub edge_connector: UpdateEdgeConnectorEdgeConnector,
    }
    impl UpdateEdgeConnector {
        pub fn builder() -> builder::UpdateEdgeConnector {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "action"
    ///  ],
    ///  "properties": {
    ///    "action": {
    ///      "type": "object",
    ///      "properties": {
    ///        "action_type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "script",
    ///            "http"
    ///          ]
    ///        },
    ///        "metadata": {
    ///          "type": "object"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorAction {
        pub action: UpdateEdgeConnectorActionAction,
    }
    impl UpdateEdgeConnectorAction {
        pub fn builder() -> builder::UpdateEdgeConnectorAction {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorActionAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "action_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "script",
    ///        "http"
    ///      ]
    ///    },
    ///    "metadata": {
    ///      "type": "object"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorActionAction {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub action_type: ::std::option::Option<
            UpdateEdgeConnectorActionActionActionType,
        >,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub metadata: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorActionAction {
        fn default() -> Self {
            Self {
                action_type: Default::default(),
                metadata: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateEdgeConnectorActionAction {
        pub fn builder() -> builder::UpdateEdgeConnectorActionAction {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorActionActionActionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "script",
    ///    "http"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEdgeConnectorActionActionActionType {
        #[serde(rename = "script")]
        Script,
        #[serde(rename = "http")]
        Http,
    }
    impl ::std::fmt::Display for UpdateEdgeConnectorActionActionActionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Script => f.write_str("script"),
                Self::Http => f.write_str("http"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEdgeConnectorActionActionActionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "script" => Ok(Self::Script),
                "http" => Ok(Self::Http),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEdgeConnectorActionActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEdgeConnectorActionActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEdgeConnectorActionActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEdgeConnectorActionBody`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "action": {
    ///      "type": "object",
    ///      "properties": {
    ///        "action_type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "script",
    ///            "http"
    ///          ]
    ///        },
    ///        "metadata": {
    ///          "type": "object"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorActionBody {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub action: ::std::option::Option<UpdateEdgeConnectorActionBodyAction>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorActionBody {
        fn default() -> Self {
            Self { action: Default::default() }
        }
    }
    impl UpdateEdgeConnectorActionBody {
        pub fn builder() -> builder::UpdateEdgeConnectorActionBody {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorActionBodyAction`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "action_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "script",
    ///        "http"
    ///      ]
    ///    },
    ///    "metadata": {
    ///      "type": "object"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorActionBodyAction {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub action_type: ::std::option::Option<
            UpdateEdgeConnectorActionBodyActionActionType,
        >,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub metadata: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorActionBodyAction {
        fn default() -> Self {
            Self {
                action_type: Default::default(),
                metadata: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateEdgeConnectorActionBodyAction {
        pub fn builder() -> builder::UpdateEdgeConnectorActionBodyAction {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorActionBodyActionActionType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "script",
    ///    "http"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEdgeConnectorActionBodyActionActionType {
        #[serde(rename = "script")]
        Script,
        #[serde(rename = "http")]
        Http,
    }
    impl ::std::fmt::Display for UpdateEdgeConnectorActionBodyActionActionType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Script => f.write_str("script"),
                Self::Http => f.write_str("http"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEdgeConnectorActionBodyActionActionType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "script" => Ok(Self::Script),
                "http" => Ok(Self::Http),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEdgeConnectorActionBodyActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEdgeConnectorActionBodyActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEdgeConnectorActionBodyActionActionType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEdgeConnectorBody`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "type": "string"
    ///            },
    ///            "filters": {
    ///              "description": "Event filters",
    ///              "type": "object"
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "status": {
    ///              "type": "string",
    ///              "enum": [
    ///                "active",
    ///                "paused"
    ///              ]
    ///            },
    ///            "subscriptions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "edge_connectors"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorBody {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<UpdateEdgeConnectorBodyData>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorBody {
        fn default() -> Self {
            Self { data: Default::default() }
        }
    }
    impl UpdateEdgeConnectorBody {
        pub fn builder() -> builder::UpdateEdgeConnectorBody {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorBodyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "type": "string"
    ///        },
    ///        "filters": {
    ///          "description": "Event filters",
    ///          "type": "object"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "status": {
    ///          "type": "string",
    ///          "enum": [
    ///            "active",
    ///            "paused"
    ///          ]
    ///        },
    ///        "subscriptions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "edge_connectors"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorBodyData {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub attributes: ::std::option::Option<UpdateEdgeConnectorBodyDataAttributes>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(
            rename = "type",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub type_: ::std::option::Option<UpdateEdgeConnectorBodyDataType>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorBodyData {
        fn default() -> Self {
            Self {
                attributes: Default::default(),
                id: Default::default(),
                type_: Default::default(),
            }
        }
    }
    impl UpdateEdgeConnectorBodyData {
        pub fn builder() -> builder::UpdateEdgeConnectorBodyData {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorBodyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "filters": {
    ///      "description": "Event filters",
    ///      "type": "object"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "active",
    ///        "paused"
    ///      ]
    ///    },
    ///    "subscriptions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorBodyDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Event filters
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub filters: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateEdgeConnectorBodyDataAttributesStatus>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub subscriptions: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorBodyDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                filters: Default::default(),
                name: Default::default(),
                status: Default::default(),
                subscriptions: Default::default(),
            }
        }
    }
    impl UpdateEdgeConnectorBodyDataAttributes {
        pub fn builder() -> builder::UpdateEdgeConnectorBodyDataAttributes {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorBodyDataAttributesStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "active",
    ///    "paused"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEdgeConnectorBodyDataAttributesStatus {
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "paused")]
        Paused,
    }
    impl ::std::fmt::Display for UpdateEdgeConnectorBodyDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Active => f.write_str("active"),
                Self::Paused => f.write_str("paused"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEdgeConnectorBodyDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "active" => Ok(Self::Active),
                "paused" => Ok(Self::Paused),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEdgeConnectorBodyDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEdgeConnectorBodyDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEdgeConnectorBodyDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEdgeConnectorBodyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "edge_connectors"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEdgeConnectorBodyDataType {
        #[serde(rename = "edge_connectors")]
        EdgeConnectors,
    }
    impl ::std::fmt::Display for UpdateEdgeConnectorBodyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EdgeConnectors => f.write_str("edge_connectors"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEdgeConnectorBodyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "edge_connectors" => Ok(Self::EdgeConnectors),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEdgeConnectorBodyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEdgeConnectorBodyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEdgeConnectorBodyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEdgeConnectorEdgeConnector`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "active",
    ///        "paused"
    ///      ]
    ///    },
    ///    "subscriptions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEdgeConnectorEdgeConnector {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateEdgeConnectorEdgeConnectorStatus>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub subscriptions: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateEdgeConnectorEdgeConnector {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                status: Default::default(),
                subscriptions: Default::default(),
            }
        }
    }
    impl UpdateEdgeConnectorEdgeConnector {
        pub fn builder() -> builder::UpdateEdgeConnectorEdgeConnector {
            Default::default()
        }
    }
    ///`UpdateEdgeConnectorEdgeConnectorStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "active",
    ///    "paused"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEdgeConnectorEdgeConnectorStatus {
        #[serde(rename = "active")]
        Active,
        #[serde(rename = "paused")]
        Paused,
    }
    impl ::std::fmt::Display for UpdateEdgeConnectorEdgeConnectorStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Active => f.write_str("active"),
                Self::Paused => f.write_str("paused"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEdgeConnectorEdgeConnectorStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "active" => Ok(Self::Active),
                "paused" => Ok(Self::Paused),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEdgeConnectorEdgeConnectorStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEdgeConnectorEdgeConnectorStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEdgeConnectorEdgeConnectorStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEnvironment`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the environment",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the environment",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the environment",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the environment",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the environment",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this environment.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this environment",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this environment",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "environments"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEnvironment {
        pub data: UpdateEnvironmentData,
    }
    impl UpdateEnvironment {
        pub fn builder() -> builder::UpdateEnvironment {
            Default::default()
        }
    }
    ///`UpdateEnvironmentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the environment",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the environment",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the environment",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the environment",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the environment",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this environment.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this environment",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this environment",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "environments"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEnvironmentData {
        pub attributes: UpdateEnvironmentDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateEnvironmentDataType,
    }
    impl UpdateEnvironmentData {
        pub fn builder() -> builder::UpdateEnvironmentData {
            Default::default()
        }
    }
    ///`UpdateEnvironmentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the environment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the environment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the environment",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the environment",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this environment.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this environment",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateEnvironmentDataAttributes {
        ///The hex color of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Emails to attach to the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this environment.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateEnvironmentDataAttributesPropertiesItem>,
        ///Slack Aliases associated with this environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<UpdateEnvironmentDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this environment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<UpdateEnvironmentDataAttributesSlackChannelsItem>,
        >,
    }
    impl ::std::default::Default for UpdateEnvironmentDataAttributes {
        fn default() -> Self {
            Self {
                color: Default::default(),
                description: Default::default(),
                name: Default::default(),
                notify_emails: Default::default(),
                position: Default::default(),
                properties: Default::default(),
                slack_aliases: Default::default(),
                slack_channels: Default::default(),
            }
        }
    }
    impl UpdateEnvironmentDataAttributes {
        pub fn builder() -> builder::UpdateEnvironmentDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEnvironmentDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl UpdateEnvironmentDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateEnvironmentDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateEnvironmentDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEnvironmentDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl UpdateEnvironmentDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::UpdateEnvironmentDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`UpdateEnvironmentDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEnvironmentDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl UpdateEnvironmentDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::UpdateEnvironmentDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateEnvironmentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "environments"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEnvironmentDataType {
        #[serde(rename = "environments")]
        Environments,
    }
    impl ::std::fmt::Display for UpdateEnvironmentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Environments => f.write_str("environments"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEnvironmentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "environments" => Ok(Self::Environments),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEnvironmentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateEnvironmentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateEnvironmentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "business_hours": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "days": {
    ///                  "description": "Business days",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "M",
    ///                      "T",
    ///                      "W",
    ///                      "R",
    ///                      "F",
    ///                      "U",
    ///                      "S"
    ///                    ]
    ///                  }
    ///                },
    ///                "end_time": {
    ///                  "description": "End time for business hours (HH:MM)",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "start_time": {
    ///                  "description": "Start time for business hours (HH:MM)",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ]
    ///                },
    ///                "time_zone": {
    ///                  "description": "Time zone for business hours",
    ///                  "type": [
    ///                    "string",
    ///                    "null"
    ///                  ],
    ///                  "enum": [
    ///                    "International Date Line West",
    ///                    "Etc/GMT+12",
    ///                    "American Samoa",
    ///                    "Pacific/Pago_Pago",
    ///                    "Midway Island",
    ///                    "Pacific/Midway",
    ///                    "Hawaii",
    ///                    "Pacific/Honolulu",
    ///                    "Alaska",
    ///                    "America/Juneau",
    ///                    "Pacific Time (US & Canada)",
    ///                    "America/Los_Angeles",
    ///                    "Tijuana",
    ///                    "America/Tijuana",
    ///                    "Arizona",
    ///                    "America/Phoenix",
    ///                    "Mazatlan",
    ///                    "America/Mazatlan",
    ///                    "Mountain Time (US & Canada)",
    ///                    "America/Denver",
    ///                    "Central America",
    ///                    "America/Guatemala",
    ///                    "Central Time (US & Canada)",
    ///                    "America/Chicago",
    ///                    "Chihuahua",
    ///                    "America/Chihuahua",
    ///                    "Guadalajara",
    ///                    "America/Mexico_City",
    ///                    "Mexico City",
    ///                    "Monterrey",
    ///                    "America/Monterrey",
    ///                    "Saskatchewan",
    ///                    "America/Regina",
    ///                    "Bogota",
    ///                    "America/Bogota",
    ///                    "Eastern Time (US & Canada)",
    ///                    "America/New_York",
    ///                    "Indiana (East)",
    ///                    "America/Indiana/Indianapolis",
    ///                    "Lima",
    ///                    "America/Lima",
    ///                    "Quito",
    ///                    "Atlantic Time (Canada)",
    ///                    "America/Halifax",
    ///                    "Caracas",
    ///                    "America/Caracas",
    ///                    "Georgetown",
    ///                    "America/Guyana",
    ///                    "La Paz",
    ///                    "America/La_Paz",
    ///                    "Puerto Rico",
    ///                    "America/Puerto_Rico",
    ///                    "Santiago",
    ///                    "America/Santiago",
    ///                    "Newfoundland",
    ///                    "America/St_Johns",
    ///                    "Asuncion",
    ///                    "America/Asuncion",
    ///                    "Brasilia",
    ///                    "America/Sao_Paulo",
    ///                    "Buenos Aires",
    ///                    "America/Argentina/Buenos_Aires",
    ///                    "Montevideo",
    ///                    "America/Montevideo",
    ///                    "Greenland",
    ///                    "America/Nuuk",
    ///                    "Mid-Atlantic",
    ///                    "Atlantic/South_Georgia",
    ///                    "Azores",
    ///                    "Atlantic/Azores",
    ///                    "Cape Verde Is.",
    ///                    "Atlantic/Cape_Verde",
    ///                    "Edinburgh",
    ///                    "Europe/London",
    ///                    "Lisbon",
    ///                    "Europe/Lisbon",
    ///                    "London",
    ///                    "Monrovia",
    ///                    "Africa/Monrovia",
    ///                    "UTC",
    ///                    "Etc/UTC",
    ///                    "Amsterdam",
    ///                    "Europe/Amsterdam",
    ///                    "Belgrade",
    ///                    "Europe/Belgrade",
    ///                    "Berlin",
    ///                    "Europe/Berlin",
    ///                    "Bern",
    ///                    "Europe/Zurich",
    ///                    "Bratislava",
    ///                    "Europe/Bratislava",
    ///                    "Brussels",
    ///                    "Europe/Brussels",
    ///                    "Budapest",
    ///                    "Europe/Budapest",
    ///                    "Casablanca",
    ///                    "Africa/Casablanca",
    ///                    "Copenhagen",
    ///                    "Europe/Copenhagen",
    ///                    "Dublin",
    ///                    "Europe/Dublin",
    ///                    "Ljubljana",
    ///                    "Europe/Ljubljana",
    ///                    "Madrid",
    ///                    "Europe/Madrid",
    ///                    "Paris",
    ///                    "Europe/Paris",
    ///                    "Prague",
    ///                    "Europe/Prague",
    ///                    "Rome",
    ///                    "Europe/Rome",
    ///                    "Sarajevo",
    ///                    "Europe/Sarajevo",
    ///                    "Skopje",
    ///                    "Europe/Skopje",
    ///                    "Stockholm",
    ///                    "Europe/Stockholm",
    ///                    "Vienna",
    ///                    "Europe/Vienna",
    ///                    "Warsaw",
    ///                    "Europe/Warsaw",
    ///                    "West Central Africa",
    ///                    "Africa/Algiers",
    ///                    "Zagreb",
    ///                    "Europe/Zagreb",
    ///                    "Zurich",
    ///                    "Athens",
    ///                    "Europe/Athens",
    ///                    "Bucharest",
    ///                    "Europe/Bucharest",
    ///                    "Cairo",
    ///                    "Africa/Cairo",
    ///                    "Harare",
    ///                    "Africa/Harare",
    ///                    "Helsinki",
    ///                    "Europe/Helsinki",
    ///                    "Jerusalem",
    ///                    "Asia/Jerusalem",
    ///                    "Kaliningrad",
    ///                    "Europe/Kaliningrad",
    ///                    "Kyiv",
    ///                    "Europe/Kiev",
    ///                    "Pretoria",
    ///                    "Africa/Johannesburg",
    ///                    "Riga",
    ///                    "Europe/Riga",
    ///                    "Sofia",
    ///                    "Europe/Sofia",
    ///                    "Tallinn",
    ///                    "Europe/Tallinn",
    ///                    "Vilnius",
    ///                    "Europe/Vilnius",
    ///                    "Baghdad",
    ///                    "Asia/Baghdad",
    ///                    "Istanbul",
    ///                    "Europe/Istanbul",
    ///                    "Kuwait",
    ///                    "Asia/Kuwait",
    ///                    "Minsk",
    ///                    "Europe/Minsk",
    ///                    "Moscow",
    ///                    "Europe/Moscow",
    ///                    "Nairobi",
    ///                    "Africa/Nairobi",
    ///                    "Riyadh",
    ///                    "Asia/Riyadh",
    ///                    "St. Petersburg",
    ///                    "Volgograd",
    ///                    "Europe/Volgograd",
    ///                    "Tehran",
    ///                    "Asia/Tehran",
    ///                    "Abu Dhabi",
    ///                    "Asia/Muscat",
    ///                    "Baku",
    ///                    "Asia/Baku",
    ///                    "Muscat",
    ///                    "Samara",
    ///                    "Europe/Samara",
    ///                    "Tbilisi",
    ///                    "Asia/Tbilisi",
    ///                    "Yerevan",
    ///                    "Asia/Yerevan",
    ///                    "Kabul",
    ///                    "Asia/Kabul",
    ///                    "Almaty",
    ///                    "Asia/Almaty",
    ///                    "Astana",
    ///                    "Ekaterinburg",
    ///                    "Asia/Yekaterinburg",
    ///                    "Islamabad",
    ///                    "Asia/Karachi",
    ///                    "Karachi",
    ///                    "Tashkent",
    ///                    "Asia/Tashkent",
    ///                    "Chennai",
    ///                    "Asia/Kolkata",
    ///                    "Kolkata",
    ///                    "Mumbai",
    ///                    "New Delhi",
    ///                    "Sri Jayawardenepura",
    ///                    "Asia/Colombo",
    ///                    "Kathmandu",
    ///                    "Asia/Kathmandu",
    ///                    "Dhaka",
    ///                    "Asia/Dhaka",
    ///                    "Urumqi",
    ///                    "Asia/Urumqi",
    ///                    "Rangoon",
    ///                    "Asia/Rangoon",
    ///                    "Bangkok",
    ///                    "Asia/Bangkok",
    ///                    "Hanoi",
    ///                    "Jakarta",
    ///                    "Asia/Jakarta",
    ///                    "Krasnoyarsk",
    ///                    "Asia/Krasnoyarsk",
    ///                    "Novosibirsk",
    ///                    "Asia/Novosibirsk",
    ///                    "Beijing",
    ///                    "Asia/Shanghai",
    ///                    "Chongqing",
    ///                    "Asia/Chongqing",
    ///                    "Hong Kong",
    ///                    "Asia/Hong_Kong",
    ///                    "Irkutsk",
    ///                    "Asia/Irkutsk",
    ///                    "Kuala Lumpur",
    ///                    "Asia/Kuala_Lumpur",
    ///                    "Perth",
    ///                    "Australia/Perth",
    ///                    "Singapore",
    ///                    "Asia/Singapore",
    ///                    "Taipei",
    ///                    "Asia/Taipei",
    ///                    "Ulaanbaatar",
    ///                    "Asia/Ulaanbaatar",
    ///                    "Osaka",
    ///                    "Asia/Tokyo",
    ///                    "Sapporo",
    ///                    "Seoul",
    ///                    "Asia/Seoul",
    ///                    "Tokyo",
    ///                    "Yakutsk",
    ///                    "Asia/Yakutsk",
    ///                    "Adelaide",
    ///                    "Australia/Adelaide",
    ///                    "Darwin",
    ///                    "Australia/Darwin",
    ///                    "Brisbane",
    ///                    "Australia/Brisbane",
    ///                    "Canberra",
    ///                    "Australia/Canberra",
    ///                    "Guam",
    ///                    "Pacific/Guam",
    ///                    "Hobart",
    ///                    "Australia/Hobart",
    ///                    "Melbourne",
    ///                    "Australia/Melbourne",
    ///                    "Port Moresby",
    ///                    "Pacific/Port_Moresby",
    ///                    "Sydney",
    ///                    "Australia/Sydney",
    ///                    "Vladivostok",
    ///                    "Asia/Vladivostok",
    ///                    "Magadan",
    ///                    "Asia/Magadan",
    ///                    "New Caledonia",
    ///                    "Pacific/Noumea",
    ///                    "Solomon Is.",
    ///                    "Pacific/Guadalcanal",
    ///                    "Srednekolymsk",
    ///                    "Asia/Srednekolymsk",
    ///                    "Auckland",
    ///                    "Pacific/Auckland",
    ///                    "Fiji",
    ///                    "Pacific/Fiji",
    ///                    "Kamchatka",
    ///                    "Asia/Kamchatka",
    ///                    "Marshall Is.",
    ///                    "Pacific/Majuro",
    ///                    "Wellington",
    ///                    "Chatham Is.",
    ///                    "Pacific/Chatham",
    ///                    "Nuku'alofa",
    ///                    "Pacific/Tongatapu",
    ///                    "Samoa",
    ///                    "Pacific/Apia",
    ///                    "Tokelau Is.",
    ///                    "Pacific/Fakaofo"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "The description of the escalation policy",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "group_ids": {
    ///              "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the escalation policy",
    ///              "type": "string"
    ///            },
    ///            "repeat_count": {
    ///              "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///              "type": "integer"
    ///            },
    ///            "service_ids": {
    ///              "description": "Associated services (alerting the service will trigger escalation policy)",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_policies"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicy {
        pub data: UpdateEscalationPolicyData,
    }
    impl UpdateEscalationPolicy {
        pub fn builder() -> builder::UpdateEscalationPolicy {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "business_hours": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "days": {
    ///              "description": "Business days",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "M",
    ///                  "T",
    ///                  "W",
    ///                  "R",
    ///                  "F",
    ///                  "U",
    ///                  "S"
    ///                ]
    ///              }
    ///            },
    ///            "end_time": {
    ///              "description": "End time for business hours (HH:MM)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "start_time": {
    ///              "description": "Start time for business hours (HH:MM)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "time_zone": {
    ///              "description": "Time zone for business hours",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "International Date Line West",
    ///                "Etc/GMT+12",
    ///                "American Samoa",
    ///                "Pacific/Pago_Pago",
    ///                "Midway Island",
    ///                "Pacific/Midway",
    ///                "Hawaii",
    ///                "Pacific/Honolulu",
    ///                "Alaska",
    ///                "America/Juneau",
    ///                "Pacific Time (US & Canada)",
    ///                "America/Los_Angeles",
    ///                "Tijuana",
    ///                "America/Tijuana",
    ///                "Arizona",
    ///                "America/Phoenix",
    ///                "Mazatlan",
    ///                "America/Mazatlan",
    ///                "Mountain Time (US & Canada)",
    ///                "America/Denver",
    ///                "Central America",
    ///                "America/Guatemala",
    ///                "Central Time (US & Canada)",
    ///                "America/Chicago",
    ///                "Chihuahua",
    ///                "America/Chihuahua",
    ///                "Guadalajara",
    ///                "America/Mexico_City",
    ///                "Mexico City",
    ///                "Monterrey",
    ///                "America/Monterrey",
    ///                "Saskatchewan",
    ///                "America/Regina",
    ///                "Bogota",
    ///                "America/Bogota",
    ///                "Eastern Time (US & Canada)",
    ///                "America/New_York",
    ///                "Indiana (East)",
    ///                "America/Indiana/Indianapolis",
    ///                "Lima",
    ///                "America/Lima",
    ///                "Quito",
    ///                "Atlantic Time (Canada)",
    ///                "America/Halifax",
    ///                "Caracas",
    ///                "America/Caracas",
    ///                "Georgetown",
    ///                "America/Guyana",
    ///                "La Paz",
    ///                "America/La_Paz",
    ///                "Puerto Rico",
    ///                "America/Puerto_Rico",
    ///                "Santiago",
    ///                "America/Santiago",
    ///                "Newfoundland",
    ///                "America/St_Johns",
    ///                "Asuncion",
    ///                "America/Asuncion",
    ///                "Brasilia",
    ///                "America/Sao_Paulo",
    ///                "Buenos Aires",
    ///                "America/Argentina/Buenos_Aires",
    ///                "Montevideo",
    ///                "America/Montevideo",
    ///                "Greenland",
    ///                "America/Nuuk",
    ///                "Mid-Atlantic",
    ///                "Atlantic/South_Georgia",
    ///                "Azores",
    ///                "Atlantic/Azores",
    ///                "Cape Verde Is.",
    ///                "Atlantic/Cape_Verde",
    ///                "Edinburgh",
    ///                "Europe/London",
    ///                "Lisbon",
    ///                "Europe/Lisbon",
    ///                "London",
    ///                "Monrovia",
    ///                "Africa/Monrovia",
    ///                "UTC",
    ///                "Etc/UTC",
    ///                "Amsterdam",
    ///                "Europe/Amsterdam",
    ///                "Belgrade",
    ///                "Europe/Belgrade",
    ///                "Berlin",
    ///                "Europe/Berlin",
    ///                "Bern",
    ///                "Europe/Zurich",
    ///                "Bratislava",
    ///                "Europe/Bratislava",
    ///                "Brussels",
    ///                "Europe/Brussels",
    ///                "Budapest",
    ///                "Europe/Budapest",
    ///                "Casablanca",
    ///                "Africa/Casablanca",
    ///                "Copenhagen",
    ///                "Europe/Copenhagen",
    ///                "Dublin",
    ///                "Europe/Dublin",
    ///                "Ljubljana",
    ///                "Europe/Ljubljana",
    ///                "Madrid",
    ///                "Europe/Madrid",
    ///                "Paris",
    ///                "Europe/Paris",
    ///                "Prague",
    ///                "Europe/Prague",
    ///                "Rome",
    ///                "Europe/Rome",
    ///                "Sarajevo",
    ///                "Europe/Sarajevo",
    ///                "Skopje",
    ///                "Europe/Skopje",
    ///                "Stockholm",
    ///                "Europe/Stockholm",
    ///                "Vienna",
    ///                "Europe/Vienna",
    ///                "Warsaw",
    ///                "Europe/Warsaw",
    ///                "West Central Africa",
    ///                "Africa/Algiers",
    ///                "Zagreb",
    ///                "Europe/Zagreb",
    ///                "Zurich",
    ///                "Athens",
    ///                "Europe/Athens",
    ///                "Bucharest",
    ///                "Europe/Bucharest",
    ///                "Cairo",
    ///                "Africa/Cairo",
    ///                "Harare",
    ///                "Africa/Harare",
    ///                "Helsinki",
    ///                "Europe/Helsinki",
    ///                "Jerusalem",
    ///                "Asia/Jerusalem",
    ///                "Kaliningrad",
    ///                "Europe/Kaliningrad",
    ///                "Kyiv",
    ///                "Europe/Kiev",
    ///                "Pretoria",
    ///                "Africa/Johannesburg",
    ///                "Riga",
    ///                "Europe/Riga",
    ///                "Sofia",
    ///                "Europe/Sofia",
    ///                "Tallinn",
    ///                "Europe/Tallinn",
    ///                "Vilnius",
    ///                "Europe/Vilnius",
    ///                "Baghdad",
    ///                "Asia/Baghdad",
    ///                "Istanbul",
    ///                "Europe/Istanbul",
    ///                "Kuwait",
    ///                "Asia/Kuwait",
    ///                "Minsk",
    ///                "Europe/Minsk",
    ///                "Moscow",
    ///                "Europe/Moscow",
    ///                "Nairobi",
    ///                "Africa/Nairobi",
    ///                "Riyadh",
    ///                "Asia/Riyadh",
    ///                "St. Petersburg",
    ///                "Volgograd",
    ///                "Europe/Volgograd",
    ///                "Tehran",
    ///                "Asia/Tehran",
    ///                "Abu Dhabi",
    ///                "Asia/Muscat",
    ///                "Baku",
    ///                "Asia/Baku",
    ///                "Muscat",
    ///                "Samara",
    ///                "Europe/Samara",
    ///                "Tbilisi",
    ///                "Asia/Tbilisi",
    ///                "Yerevan",
    ///                "Asia/Yerevan",
    ///                "Kabul",
    ///                "Asia/Kabul",
    ///                "Almaty",
    ///                "Asia/Almaty",
    ///                "Astana",
    ///                "Ekaterinburg",
    ///                "Asia/Yekaterinburg",
    ///                "Islamabad",
    ///                "Asia/Karachi",
    ///                "Karachi",
    ///                "Tashkent",
    ///                "Asia/Tashkent",
    ///                "Chennai",
    ///                "Asia/Kolkata",
    ///                "Kolkata",
    ///                "Mumbai",
    ///                "New Delhi",
    ///                "Sri Jayawardenepura",
    ///                "Asia/Colombo",
    ///                "Kathmandu",
    ///                "Asia/Kathmandu",
    ///                "Dhaka",
    ///                "Asia/Dhaka",
    ///                "Urumqi",
    ///                "Asia/Urumqi",
    ///                "Rangoon",
    ///                "Asia/Rangoon",
    ///                "Bangkok",
    ///                "Asia/Bangkok",
    ///                "Hanoi",
    ///                "Jakarta",
    ///                "Asia/Jakarta",
    ///                "Krasnoyarsk",
    ///                "Asia/Krasnoyarsk",
    ///                "Novosibirsk",
    ///                "Asia/Novosibirsk",
    ///                "Beijing",
    ///                "Asia/Shanghai",
    ///                "Chongqing",
    ///                "Asia/Chongqing",
    ///                "Hong Kong",
    ///                "Asia/Hong_Kong",
    ///                "Irkutsk",
    ///                "Asia/Irkutsk",
    ///                "Kuala Lumpur",
    ///                "Asia/Kuala_Lumpur",
    ///                "Perth",
    ///                "Australia/Perth",
    ///                "Singapore",
    ///                "Asia/Singapore",
    ///                "Taipei",
    ///                "Asia/Taipei",
    ///                "Ulaanbaatar",
    ///                "Asia/Ulaanbaatar",
    ///                "Osaka",
    ///                "Asia/Tokyo",
    ///                "Sapporo",
    ///                "Seoul",
    ///                "Asia/Seoul",
    ///                "Tokyo",
    ///                "Yakutsk",
    ///                "Asia/Yakutsk",
    ///                "Adelaide",
    ///                "Australia/Adelaide",
    ///                "Darwin",
    ///                "Australia/Darwin",
    ///                "Brisbane",
    ///                "Australia/Brisbane",
    ///                "Canberra",
    ///                "Australia/Canberra",
    ///                "Guam",
    ///                "Pacific/Guam",
    ///                "Hobart",
    ///                "Australia/Hobart",
    ///                "Melbourne",
    ///                "Australia/Melbourne",
    ///                "Port Moresby",
    ///                "Pacific/Port_Moresby",
    ///                "Sydney",
    ///                "Australia/Sydney",
    ///                "Vladivostok",
    ///                "Asia/Vladivostok",
    ///                "Magadan",
    ///                "Asia/Magadan",
    ///                "New Caledonia",
    ///                "Pacific/Noumea",
    ///                "Solomon Is.",
    ///                "Pacific/Guadalcanal",
    ///                "Srednekolymsk",
    ///                "Asia/Srednekolymsk",
    ///                "Auckland",
    ///                "Pacific/Auckland",
    ///                "Fiji",
    ///                "Pacific/Fiji",
    ///                "Kamchatka",
    ///                "Asia/Kamchatka",
    ///                "Marshall Is.",
    ///                "Pacific/Majuro",
    ///                "Wellington",
    ///                "Chatham Is.",
    ///                "Pacific/Chatham",
    ///                "Nuku'alofa",
    ///                "Pacific/Tongatapu",
    ///                "Samoa",
    ///                "Pacific/Apia",
    ///                "Tokelau Is.",
    ///                "Pacific/Fakaofo"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "The description of the escalation policy",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "group_ids": {
    ///          "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the escalation policy",
    ///          "type": "string"
    ///        },
    ///        "repeat_count": {
    ///          "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///          "type": "integer"
    ///        },
    ///        "service_ids": {
    ///          "description": "Associated services (alerting the service will trigger escalation policy)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_policies"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyData {
        pub attributes: UpdateEscalationPolicyDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateEscalationPolicyDataType,
    }
    impl UpdateEscalationPolicyData {
        pub fn builder() -> builder::UpdateEscalationPolicyData {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "business_hours": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "days": {
    ///          "description": "Business days",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "M",
    ///              "T",
    ///              "W",
    ///              "R",
    ///              "F",
    ///              "U",
    ///              "S"
    ///            ]
    ///          }
    ///        },
    ///        "end_time": {
    ///          "description": "End time for business hours (HH:MM)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "start_time": {
    ///          "description": "Start time for business hours (HH:MM)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "time_zone": {
    ///          "description": "Time zone for business hours",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the escalation policy",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_ids": {
    ///      "description": "Associated groups (alerting the group will trigger escalation policy)",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the escalation policy",
    ///      "type": "string"
    ///    },
    ///    "repeat_count": {
    ///      "description": "The number of times this policy will be executed until someone acknowledges the alert",
    ///      "type": "integer"
    ///    },
    ///    "service_ids": {
    ///      "description": "Associated services (alerting the service will trigger escalation policy)",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateEscalationPolicyDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub business_hours: ::std::option::Option<
            UpdateEscalationPolicyDataAttributesBusinessHours,
        >,
        ///The description of the escalation policy
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Associated groups (alerting the group will trigger escalation policy)
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        ///The name of the escalation policy
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The number of times this policy will be executed until someone acknowledges the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_count: ::std::option::Option<i64>,
        ///Associated services (alerting the service will trigger escalation policy)
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateEscalationPolicyDataAttributes {
        fn default() -> Self {
            Self {
                business_hours: Default::default(),
                description: Default::default(),
                group_ids: Default::default(),
                name: Default::default(),
                repeat_count: Default::default(),
                service_ids: Default::default(),
            }
        }
    }
    impl UpdateEscalationPolicyDataAttributes {
        pub fn builder() -> builder::UpdateEscalationPolicyDataAttributes {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyDataAttributesBusinessHours`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "days": {
    ///      "description": "Business days",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U",
    ///          "S"
    ///        ]
    ///      }
    ///    },
    ///    "end_time": {
    ///      "description": "End time for business hours (HH:MM)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for business hours (HH:MM)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "Time zone for business hours",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "International Date Line West",
    ///        "Etc/GMT+12",
    ///        "American Samoa",
    ///        "Pacific/Pago_Pago",
    ///        "Midway Island",
    ///        "Pacific/Midway",
    ///        "Hawaii",
    ///        "Pacific/Honolulu",
    ///        "Alaska",
    ///        "America/Juneau",
    ///        "Pacific Time (US & Canada)",
    ///        "America/Los_Angeles",
    ///        "Tijuana",
    ///        "America/Tijuana",
    ///        "Arizona",
    ///        "America/Phoenix",
    ///        "Mazatlan",
    ///        "America/Mazatlan",
    ///        "Mountain Time (US & Canada)",
    ///        "America/Denver",
    ///        "Central America",
    ///        "America/Guatemala",
    ///        "Central Time (US & Canada)",
    ///        "America/Chicago",
    ///        "Chihuahua",
    ///        "America/Chihuahua",
    ///        "Guadalajara",
    ///        "America/Mexico_City",
    ///        "Mexico City",
    ///        "Monterrey",
    ///        "America/Monterrey",
    ///        "Saskatchewan",
    ///        "America/Regina",
    ///        "Bogota",
    ///        "America/Bogota",
    ///        "Eastern Time (US & Canada)",
    ///        "America/New_York",
    ///        "Indiana (East)",
    ///        "America/Indiana/Indianapolis",
    ///        "Lima",
    ///        "America/Lima",
    ///        "Quito",
    ///        "Atlantic Time (Canada)",
    ///        "America/Halifax",
    ///        "Caracas",
    ///        "America/Caracas",
    ///        "Georgetown",
    ///        "America/Guyana",
    ///        "La Paz",
    ///        "America/La_Paz",
    ///        "Puerto Rico",
    ///        "America/Puerto_Rico",
    ///        "Santiago",
    ///        "America/Santiago",
    ///        "Newfoundland",
    ///        "America/St_Johns",
    ///        "Asuncion",
    ///        "America/Asuncion",
    ///        "Brasilia",
    ///        "America/Sao_Paulo",
    ///        "Buenos Aires",
    ///        "America/Argentina/Buenos_Aires",
    ///        "Montevideo",
    ///        "America/Montevideo",
    ///        "Greenland",
    ///        "America/Nuuk",
    ///        "Mid-Atlantic",
    ///        "Atlantic/South_Georgia",
    ///        "Azores",
    ///        "Atlantic/Azores",
    ///        "Cape Verde Is.",
    ///        "Atlantic/Cape_Verde",
    ///        "Edinburgh",
    ///        "Europe/London",
    ///        "Lisbon",
    ///        "Europe/Lisbon",
    ///        "London",
    ///        "Monrovia",
    ///        "Africa/Monrovia",
    ///        "UTC",
    ///        "Etc/UTC",
    ///        "Amsterdam",
    ///        "Europe/Amsterdam",
    ///        "Belgrade",
    ///        "Europe/Belgrade",
    ///        "Berlin",
    ///        "Europe/Berlin",
    ///        "Bern",
    ///        "Europe/Zurich",
    ///        "Bratislava",
    ///        "Europe/Bratislava",
    ///        "Brussels",
    ///        "Europe/Brussels",
    ///        "Budapest",
    ///        "Europe/Budapest",
    ///        "Casablanca",
    ///        "Africa/Casablanca",
    ///        "Copenhagen",
    ///        "Europe/Copenhagen",
    ///        "Dublin",
    ///        "Europe/Dublin",
    ///        "Ljubljana",
    ///        "Europe/Ljubljana",
    ///        "Madrid",
    ///        "Europe/Madrid",
    ///        "Paris",
    ///        "Europe/Paris",
    ///        "Prague",
    ///        "Europe/Prague",
    ///        "Rome",
    ///        "Europe/Rome",
    ///        "Sarajevo",
    ///        "Europe/Sarajevo",
    ///        "Skopje",
    ///        "Europe/Skopje",
    ///        "Stockholm",
    ///        "Europe/Stockholm",
    ///        "Vienna",
    ///        "Europe/Vienna",
    ///        "Warsaw",
    ///        "Europe/Warsaw",
    ///        "West Central Africa",
    ///        "Africa/Algiers",
    ///        "Zagreb",
    ///        "Europe/Zagreb",
    ///        "Zurich",
    ///        "Athens",
    ///        "Europe/Athens",
    ///        "Bucharest",
    ///        "Europe/Bucharest",
    ///        "Cairo",
    ///        "Africa/Cairo",
    ///        "Harare",
    ///        "Africa/Harare",
    ///        "Helsinki",
    ///        "Europe/Helsinki",
    ///        "Jerusalem",
    ///        "Asia/Jerusalem",
    ///        "Kaliningrad",
    ///        "Europe/Kaliningrad",
    ///        "Kyiv",
    ///        "Europe/Kiev",
    ///        "Pretoria",
    ///        "Africa/Johannesburg",
    ///        "Riga",
    ///        "Europe/Riga",
    ///        "Sofia",
    ///        "Europe/Sofia",
    ///        "Tallinn",
    ///        "Europe/Tallinn",
    ///        "Vilnius",
    ///        "Europe/Vilnius",
    ///        "Baghdad",
    ///        "Asia/Baghdad",
    ///        "Istanbul",
    ///        "Europe/Istanbul",
    ///        "Kuwait",
    ///        "Asia/Kuwait",
    ///        "Minsk",
    ///        "Europe/Minsk",
    ///        "Moscow",
    ///        "Europe/Moscow",
    ///        "Nairobi",
    ///        "Africa/Nairobi",
    ///        "Riyadh",
    ///        "Asia/Riyadh",
    ///        "St. Petersburg",
    ///        "Volgograd",
    ///        "Europe/Volgograd",
    ///        "Tehran",
    ///        "Asia/Tehran",
    ///        "Abu Dhabi",
    ///        "Asia/Muscat",
    ///        "Baku",
    ///        "Asia/Baku",
    ///        "Muscat",
    ///        "Samara",
    ///        "Europe/Samara",
    ///        "Tbilisi",
    ///        "Asia/Tbilisi",
    ///        "Yerevan",
    ///        "Asia/Yerevan",
    ///        "Kabul",
    ///        "Asia/Kabul",
    ///        "Almaty",
    ///        "Asia/Almaty",
    ///        "Astana",
    ///        "Ekaterinburg",
    ///        "Asia/Yekaterinburg",
    ///        "Islamabad",
    ///        "Asia/Karachi",
    ///        "Karachi",
    ///        "Tashkent",
    ///        "Asia/Tashkent",
    ///        "Chennai",
    ///        "Asia/Kolkata",
    ///        "Kolkata",
    ///        "Mumbai",
    ///        "New Delhi",
    ///        "Sri Jayawardenepura",
    ///        "Asia/Colombo",
    ///        "Kathmandu",
    ///        "Asia/Kathmandu",
    ///        "Dhaka",
    ///        "Asia/Dhaka",
    ///        "Urumqi",
    ///        "Asia/Urumqi",
    ///        "Rangoon",
    ///        "Asia/Rangoon",
    ///        "Bangkok",
    ///        "Asia/Bangkok",
    ///        "Hanoi",
    ///        "Jakarta",
    ///        "Asia/Jakarta",
    ///        "Krasnoyarsk",
    ///        "Asia/Krasnoyarsk",
    ///        "Novosibirsk",
    ///        "Asia/Novosibirsk",
    ///        "Beijing",
    ///        "Asia/Shanghai",
    ///        "Chongqing",
    ///        "Asia/Chongqing",
    ///        "Hong Kong",
    ///        "Asia/Hong_Kong",
    ///        "Irkutsk",
    ///        "Asia/Irkutsk",
    ///        "Kuala Lumpur",
    ///        "Asia/Kuala_Lumpur",
    ///        "Perth",
    ///        "Australia/Perth",
    ///        "Singapore",
    ///        "Asia/Singapore",
    ///        "Taipei",
    ///        "Asia/Taipei",
    ///        "Ulaanbaatar",
    ///        "Asia/Ulaanbaatar",
    ///        "Osaka",
    ///        "Asia/Tokyo",
    ///        "Sapporo",
    ///        "Seoul",
    ///        "Asia/Seoul",
    ///        "Tokyo",
    ///        "Yakutsk",
    ///        "Asia/Yakutsk",
    ///        "Adelaide",
    ///        "Australia/Adelaide",
    ///        "Darwin",
    ///        "Australia/Darwin",
    ///        "Brisbane",
    ///        "Australia/Brisbane",
    ///        "Canberra",
    ///        "Australia/Canberra",
    ///        "Guam",
    ///        "Pacific/Guam",
    ///        "Hobart",
    ///        "Australia/Hobart",
    ///        "Melbourne",
    ///        "Australia/Melbourne",
    ///        "Port Moresby",
    ///        "Pacific/Port_Moresby",
    ///        "Sydney",
    ///        "Australia/Sydney",
    ///        "Vladivostok",
    ///        "Asia/Vladivostok",
    ///        "Magadan",
    ///        "Asia/Magadan",
    ///        "New Caledonia",
    ///        "Pacific/Noumea",
    ///        "Solomon Is.",
    ///        "Pacific/Guadalcanal",
    ///        "Srednekolymsk",
    ///        "Asia/Srednekolymsk",
    ///        "Auckland",
    ///        "Pacific/Auckland",
    ///        "Fiji",
    ///        "Pacific/Fiji",
    ///        "Kamchatka",
    ///        "Asia/Kamchatka",
    ///        "Marshall Is.",
    ///        "Pacific/Majuro",
    ///        "Wellington",
    ///        "Chatham Is.",
    ///        "Pacific/Chatham",
    ///        "Nuku'alofa",
    ///        "Pacific/Tongatapu",
    ///        "Samoa",
    ///        "Pacific/Apia",
    ///        "Tokelau Is.",
    ///        "Pacific/Fakaofo"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyDataAttributesBusinessHours {
        ///Business days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub days: ::std::option::Option<
            ::std::vec::Vec<UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem>,
        >,
        ///End time for business hours (HH:MM)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        ///Start time for business hours (HH:MM)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
        ///Time zone for business hours
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<
            UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone,
        >,
    }
    impl ::std::default::Default for UpdateEscalationPolicyDataAttributesBusinessHours {
        fn default() -> Self {
            Self {
                days: Default::default(),
                end_time: Default::default(),
                start_time: Default::default(),
                time_zone: Default::default(),
            }
        }
    }
    impl UpdateEscalationPolicyDataAttributesBusinessHours {
        pub fn builder() -> builder::UpdateEscalationPolicyDataAttributesBusinessHours {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U",
    ///    "S"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem {
        M,
        T,
        W,
        R,
        F,
        U,
        S,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
                Self::S => f.write_str("S"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                "S" => Ok(Self::S),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Time zone for business hours
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone for business hours",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_policies"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyDataType {
        #[serde(rename = "escalation_policies")]
        EscalationPolicies,
    }
    impl ::std::fmt::Display for UpdateEscalationPolicyDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPolicies => f.write_str("escalation_policies"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEscalationPolicyDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_policies" => Ok(Self::EscalationPolicies),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyLevel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "delay": {
    ///              "description": "Delay before notifying targets in the next Escalation Level.",
    ///              "type": "integer"
    ///            },
    ///            "escalation_policy_path_id": {
    ///              "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "notification_target_params": {
    ///              "description": "Escalation level's notification targets",
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "id",
    ///                  "type"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "The ID of notification target",
    ///                    "type": "string"
    ///                  },
    ///                  "team_members": {
    ///                    "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "all",
    ///                      "admins",
    ///                      "escalate"
    ///                    ]
    ///                  },
    ///                  "type": {
    ///                    "description": "The type of the notification target",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "team",
    ///                      "user",
    ///                      "schedule",
    ///                      "slack_channel",
    ///                      "service"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "paging_strategy_configuration_schedule_strategy": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "on_call_only",
    ///                "everyone"
    ///              ]
    ///            },
    ///            "paging_strategy_configuration_strategy": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "default",
    ///                "random",
    ///                "cycle",
    ///                "alert"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the escalation policy level",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_levels"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyLevel {
        pub data: UpdateEscalationPolicyLevelData,
    }
    impl UpdateEscalationPolicyLevel {
        pub fn builder() -> builder::UpdateEscalationPolicyLevel {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyLevelData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "delay": {
    ///          "description": "Delay before notifying targets in the next Escalation Level.",
    ///          "type": "integer"
    ///        },
    ///        "escalation_policy_path_id": {
    ///          "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "notification_target_params": {
    ///          "description": "Escalation level's notification targets",
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "id",
    ///              "type"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "The ID of notification target",
    ///                "type": "string"
    ///              },
    ///              "team_members": {
    ///                "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "all",
    ///                  "admins",
    ///                  "escalate"
    ///                ]
    ///              },
    ///              "type": {
    ///                "description": "The type of the notification target",
    ///                "type": "string",
    ///                "enum": [
    ///                  "team",
    ///                  "user",
    ///                  "schedule",
    ///                  "slack_channel",
    ///                  "service"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "paging_strategy_configuration_schedule_strategy": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "on_call_only",
    ///            "everyone"
    ///          ]
    ///        },
    ///        "paging_strategy_configuration_strategy": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "default",
    ///            "random",
    ///            "cycle",
    ///            "alert"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the escalation policy level",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_levels"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyLevelData {
        pub attributes: UpdateEscalationPolicyLevelDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateEscalationPolicyLevelDataType,
    }
    impl UpdateEscalationPolicyLevelData {
        pub fn builder() -> builder::UpdateEscalationPolicyLevelData {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyLevelDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "delay": {
    ///      "description": "Delay before notifying targets in the next Escalation Level.",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_path_id": {
    ///      "description": "The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "notification_target_params": {
    ///      "description": "Escalation level's notification targets",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "The ID of notification target",
    ///            "type": "string"
    ///          },
    ///          "team_members": {
    ///            "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "all",
    ///              "admins",
    ///              "escalate"
    ///            ]
    ///          },
    ///          "type": {
    ///            "description": "The type of the notification target",
    ///            "type": "string",
    ///            "enum": [
    ///              "team",
    ///              "user",
    ///              "schedule",
    ///              "slack_channel",
    ///              "service"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "paging_strategy_configuration_schedule_strategy": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "on_call_only",
    ///        "everyone"
    ///      ]
    ///    },
    ///    "paging_strategy_configuration_strategy": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "default",
    ///        "random",
    ///        "cycle",
    ///        "alert"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the escalation policy level",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateEscalationPolicyLevelDataAttributes {
        ///Delay before notifying targets in the next Escalation Level.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub delay: ::std::option::Option<i64>,
        ///The ID of the dynamic escalation policy path the level will belong to. If nothing is specified it will add the level to your default path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_path_id: ::std::option::Option<::std::string::String>,
        ///Escalation level's notification targets
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub notification_target_params: ::std::vec::Vec<
            ::std::option::Option<
                UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
            >,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub paging_strategy_configuration_schedule_strategy: ::std::option::Option<
            UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub paging_strategy_configuration_strategy: ::std::option::Option<
            UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy,
        >,
        ///Position of the escalation policy level
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateEscalationPolicyLevelDataAttributes {
        fn default() -> Self {
            Self {
                delay: Default::default(),
                escalation_policy_path_id: Default::default(),
                notification_target_params: Default::default(),
                paging_strategy_configuration_schedule_strategy: Default::default(),
                paging_strategy_configuration_strategy: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateEscalationPolicyLevelDataAttributes {
        pub fn builder() -> builder::UpdateEscalationPolicyLevelDataAttributes {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of notification target",
    ///      "type": "string"
    ///    },
    ///    "team_members": {
    ///      "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "all",
    ///        "admins",
    ///        "escalate"
    ///      ]
    ///    },
    ///    "type": {
    ///      "description": "The type of the notification target",
    ///      "type": "string",
    ///      "enum": [
    ///        "team",
    ///        "user",
    ///        "schedule",
    ///        "slack_channel",
    ///        "service"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
        ///The ID of notification target
        pub id: ::std::string::String,
        ///For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub team_members: ::std::option::Option<
            UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers,
        >,
        ///The type of the notification target
        #[serde(rename = "type")]
        pub type_: UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType,
    }
    impl UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
        pub fn builder() -> builder::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            Default::default()
        }
    }
    ///For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "For targets with type=team, controls whether to notify admins, all team members, or escalate to team EP.",
    ///  "type": "string",
    ///  "enum": [
    ///    "all",
    ///    "admins",
    ///    "escalate"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        #[serde(rename = "all")]
        All,
        #[serde(rename = "admins")]
        Admins,
        #[serde(rename = "escalate")]
        Escalate,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("all"),
                Self::Admins => f.write_str("admins"),
                Self::Escalate => f.write_str("escalate"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "all" => Ok(Self::All),
                "admins" => Ok(Self::Admins),
                "escalate" => Ok(Self::Escalate),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the notification target
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target",
    ///  "type": "string",
    ///  "enum": [
    ///    "team",
    ///    "user",
    ///    "schedule",
    ///    "slack_channel",
    ///    "service"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "schedule")]
        Schedule,
        #[serde(rename = "slack_channel")]
        SlackChannel,
        #[serde(rename = "service")]
        Service,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Team => f.write_str("team"),
                Self::User => f.write_str("user"),
                Self::Schedule => f.write_str("schedule"),
                Self::SlackChannel => f.write_str("slack_channel"),
                Self::Service => f.write_str("service"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "team" => Ok(Self::Team),
                "user" => Ok(Self::User),
                "schedule" => Ok(Self::Schedule),
                "slack_channel" => Ok(Self::SlackChannel),
                "service" => Ok(Self::Service),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_only",
    ///    "everyone"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        #[serde(rename = "on_call_only")]
        OnCallOnly,
        #[serde(rename = "everyone")]
        Everyone,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallOnly => f.write_str("on_call_only"),
                Self::Everyone => f.write_str("everyone"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_only" => Ok(Self::OnCallOnly),
                "everyone" => Ok(Self::Everyone),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "default",
    ///    "random",
    ///    "cycle",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        #[serde(rename = "default")]
        Default,
        #[serde(rename = "random")]
        Random,
        #[serde(rename = "cycle")]
        Cycle,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Default => f.write_str("default"),
                Self::Random => f.write_str("random"),
                Self::Cycle => f.write_str("cycle"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "default" => Ok(Self::Default),
                "random" => Ok(Self::Random),
                "cycle" => Ok(Self::Cycle),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyLevelDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_levels"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyLevelDataType {
        #[serde(rename = "escalation_levels")]
        EscalationLevels,
    }
    impl ::std::fmt::Display for UpdateEscalationPolicyLevelDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationLevels => f.write_str("escalation_levels"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEscalationPolicyLevelDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_levels" => Ok(Self::EscalationLevels),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEscalationPolicyLevelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyLevelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyLevelDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyPath`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "after_deferral_behavior": {
    ///              "description": "What happens after a deferral path finishes.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "re_evaluate",
    ///                "execute_path"
    ///              ]
    ///            },
    ///            "after_deferral_path_id": {
    ///              "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "default": {
    ///              "description": "Whether this escalation path is the default path",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "initial_delay": {
    ///              "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///              "type": "integer"
    ///            },
    ///            "match_mode": {
    ///              "description": "How path rules are matched.",
    ///              "default": "match-all-rules",
    ///              "type": "string",
    ///              "enum": [
    ///                "match-all-rules",
    ///                "match-any-rule"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the escalation path",
    ///              "type": "string"
    ///            },
    ///            "notification_type": {
    ///              "description": "Position of the escalation policy level",
    ///              "default": "audible",
    ///              "type": "string",
    ///              "enum": [
    ///                "audible",
    ///                "quiet"
    ///              ]
    ///            },
    ///            "path_type": {
    ///              "description": "The type of escalation path. Cannot be changed after creation.",
    ///              "type": "string",
    ///              "enum": [
    ///                "escalation",
    ///                "deferral"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "The position of this path in the paths for this EP.",
    ///              "type": "integer"
    ///            },
    ///            "repeat": {
    ///              "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "repeat_count": {
    ///              "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "rules": {
    ///              "description": "Escalation path conditions",
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "oneOf": [
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "urgency_ids"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "alert_urgency"
    ///                        ]
    ///                      },
    ///                      "urgency_ids": {
    ///                        "description": "Alert urgency ids for which this escalation path should be used",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "within_working_hour"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "working_hour"
    ///                        ]
    ///                      },
    ///                      "within_working_hour": {
    ///                        "description": "Whether the escalation path should be used within working hours",
    ///                        "type": "boolean"
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "json_path",
    ///                      "operator",
    ///                      "rule_type"
    ///                    ],
    ///                    "properties": {
    ///                      "json_path": {
    ///                        "description": "JSON path to extract value from payload",
    ///                        "type": "string"
    ///                      },
    ///                      "operator": {
    ///                        "description": "How JSON path value should be matched",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "is_set",
    ///                          "is_not_set"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "json_path"
    ///                        ]
    ///                      },
    ///                      "value": {
    ///                        "description": "Value with which JSON path value should be matched",
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      "values": {
    ///                        "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "fieldable_id",
    ///                      "fieldable_type",
    ///                      "operator",
    ///                      "rule_type"
    ///                    ],
    ///                    "properties": {
    ///                      "fieldable_id": {
    ///                        "description": "The ID of the alert field",
    ///                        "type": "string"
    ///                      },
    ///                      "fieldable_type": {
    ///                        "description": "The type of the fieldable (e.g., AlertField)",
    ///                        "type": "string"
    ///                      },
    ///                      "operator": {
    ///                        "description": "How the alert field value should be matched",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "is_one_of",
    ///                          "is_not_one_of",
    ///                          "contains",
    ///                          "does_not_contain",
    ///                          "is_empty",
    ///                          "is_not_empty",
    ///                          "contains_key",
    ///                          "does_not_contain_key",
    ///                          "starts_with",
    ///                          "does_not_start_with",
    ///                          "matches",
    ///                          "does_not_match"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "field"
    ///                        ]
    ///                      },
    ///                      "values": {
    ///                        "description": "Values to match against",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "service_ids"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "service"
    ///                        ]
    ///                      },
    ///                      "service_ids": {
    ///                        "description": "Service ids for which this escalation path should be used",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "rule_type",
    ///                      "time_blocks",
    ///                      "time_zone"
    ///                    ],
    ///                    "properties": {
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "deferral_window"
    ///                        ]
    ///                      },
    ///                      "time_blocks": {
    ///                        "description": "Time windows during which alerts are deferred",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "object",
    ///                          "properties": {
    ///                            "all_day": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "end_time": {
    ///                              "description": "Formatted as HH:MM",
    ///                              "type": "string"
    ///                            },
    ///                            "friday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "monday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "position": {
    ///                              "type": [
    ///                                "integer",
    ///                                "null"
    ///                              ]
    ///                            },
    ///                            "saturday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "start_time": {
    ///                              "description": "Formatted as HH:MM",
    ///                              "type": "string"
    ///                            },
    ///                            "sunday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "thursday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "tuesday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            },
    ///                            "wednesday": {
    ///                              "default": false,
    ///                              "type": "boolean"
    ///                            }
    ///                          }
    ///                        }
    ///                      },
    ///                      "time_zone": {
    ///                        "description": "Time zone for the deferral window",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "International Date Line West",
    ///                          "Etc/GMT+12",
    ///                          "American Samoa",
    ///                          "Pacific/Pago_Pago",
    ///                          "Midway Island",
    ///                          "Pacific/Midway",
    ///                          "Hawaii",
    ///                          "Pacific/Honolulu",
    ///                          "Alaska",
    ///                          "America/Juneau",
    ///                          "Pacific Time (US & Canada)",
    ///                          "America/Los_Angeles",
    ///                          "Tijuana",
    ///                          "America/Tijuana",
    ///                          "Arizona",
    ///                          "America/Phoenix",
    ///                          "Mazatlan",
    ///                          "America/Mazatlan",
    ///                          "Mountain Time (US & Canada)",
    ///                          "America/Denver",
    ///                          "Central America",
    ///                          "America/Guatemala",
    ///                          "Central Time (US & Canada)",
    ///                          "America/Chicago",
    ///                          "Chihuahua",
    ///                          "America/Chihuahua",
    ///                          "Guadalajara",
    ///                          "America/Mexico_City",
    ///                          "Mexico City",
    ///                          "Monterrey",
    ///                          "America/Monterrey",
    ///                          "Saskatchewan",
    ///                          "America/Regina",
    ///                          "Bogota",
    ///                          "America/Bogota",
    ///                          "Eastern Time (US & Canada)",
    ///                          "America/New_York",
    ///                          "Indiana (East)",
    ///                          "America/Indiana/Indianapolis",
    ///                          "Lima",
    ///                          "America/Lima",
    ///                          "Quito",
    ///                          "Atlantic Time (Canada)",
    ///                          "America/Halifax",
    ///                          "Caracas",
    ///                          "America/Caracas",
    ///                          "Georgetown",
    ///                          "America/Guyana",
    ///                          "La Paz",
    ///                          "America/La_Paz",
    ///                          "Puerto Rico",
    ///                          "America/Puerto_Rico",
    ///                          "Santiago",
    ///                          "America/Santiago",
    ///                          "Newfoundland",
    ///                          "America/St_Johns",
    ///                          "Asuncion",
    ///                          "America/Asuncion",
    ///                          "Brasilia",
    ///                          "America/Sao_Paulo",
    ///                          "Buenos Aires",
    ///                          "America/Argentina/Buenos_Aires",
    ///                          "Montevideo",
    ///                          "America/Montevideo",
    ///                          "Greenland",
    ///                          "America/Nuuk",
    ///                          "Mid-Atlantic",
    ///                          "Atlantic/South_Georgia",
    ///                          "Azores",
    ///                          "Atlantic/Azores",
    ///                          "Cape Verde Is.",
    ///                          "Atlantic/Cape_Verde",
    ///                          "Edinburgh",
    ///                          "Europe/London",
    ///                          "Lisbon",
    ///                          "Europe/Lisbon",
    ///                          "London",
    ///                          "Monrovia",
    ///                          "Africa/Monrovia",
    ///                          "UTC",
    ///                          "Etc/UTC",
    ///                          "Amsterdam",
    ///                          "Europe/Amsterdam",
    ///                          "Belgrade",
    ///                          "Europe/Belgrade",
    ///                          "Berlin",
    ///                          "Europe/Berlin",
    ///                          "Bern",
    ///                          "Europe/Zurich",
    ///                          "Bratislava",
    ///                          "Europe/Bratislava",
    ///                          "Brussels",
    ///                          "Europe/Brussels",
    ///                          "Budapest",
    ///                          "Europe/Budapest",
    ///                          "Casablanca",
    ///                          "Africa/Casablanca",
    ///                          "Copenhagen",
    ///                          "Europe/Copenhagen",
    ///                          "Dublin",
    ///                          "Europe/Dublin",
    ///                          "Ljubljana",
    ///                          "Europe/Ljubljana",
    ///                          "Madrid",
    ///                          "Europe/Madrid",
    ///                          "Paris",
    ///                          "Europe/Paris",
    ///                          "Prague",
    ///                          "Europe/Prague",
    ///                          "Rome",
    ///                          "Europe/Rome",
    ///                          "Sarajevo",
    ///                          "Europe/Sarajevo",
    ///                          "Skopje",
    ///                          "Europe/Skopje",
    ///                          "Stockholm",
    ///                          "Europe/Stockholm",
    ///                          "Vienna",
    ///                          "Europe/Vienna",
    ///                          "Warsaw",
    ///                          "Europe/Warsaw",
    ///                          "West Central Africa",
    ///                          "Africa/Algiers",
    ///                          "Zagreb",
    ///                          "Europe/Zagreb",
    ///                          "Zurich",
    ///                          "Athens",
    ///                          "Europe/Athens",
    ///                          "Bucharest",
    ///                          "Europe/Bucharest",
    ///                          "Cairo",
    ///                          "Africa/Cairo",
    ///                          "Harare",
    ///                          "Africa/Harare",
    ///                          "Helsinki",
    ///                          "Europe/Helsinki",
    ///                          "Jerusalem",
    ///                          "Asia/Jerusalem",
    ///                          "Kaliningrad",
    ///                          "Europe/Kaliningrad",
    ///                          "Kyiv",
    ///                          "Europe/Kiev",
    ///                          "Pretoria",
    ///                          "Africa/Johannesburg",
    ///                          "Riga",
    ///                          "Europe/Riga",
    ///                          "Sofia",
    ///                          "Europe/Sofia",
    ///                          "Tallinn",
    ///                          "Europe/Tallinn",
    ///                          "Vilnius",
    ///                          "Europe/Vilnius",
    ///                          "Baghdad",
    ///                          "Asia/Baghdad",
    ///                          "Istanbul",
    ///                          "Europe/Istanbul",
    ///                          "Kuwait",
    ///                          "Asia/Kuwait",
    ///                          "Minsk",
    ///                          "Europe/Minsk",
    ///                          "Moscow",
    ///                          "Europe/Moscow",
    ///                          "Nairobi",
    ///                          "Africa/Nairobi",
    ///                          "Riyadh",
    ///                          "Asia/Riyadh",
    ///                          "St. Petersburg",
    ///                          "Volgograd",
    ///                          "Europe/Volgograd",
    ///                          "Tehran",
    ///                          "Asia/Tehran",
    ///                          "Abu Dhabi",
    ///                          "Asia/Muscat",
    ///                          "Baku",
    ///                          "Asia/Baku",
    ///                          "Muscat",
    ///                          "Samara",
    ///                          "Europe/Samara",
    ///                          "Tbilisi",
    ///                          "Asia/Tbilisi",
    ///                          "Yerevan",
    ///                          "Asia/Yerevan",
    ///                          "Kabul",
    ///                          "Asia/Kabul",
    ///                          "Almaty",
    ///                          "Asia/Almaty",
    ///                          "Astana",
    ///                          "Ekaterinburg",
    ///                          "Asia/Yekaterinburg",
    ///                          "Islamabad",
    ///                          "Asia/Karachi",
    ///                          "Karachi",
    ///                          "Tashkent",
    ///                          "Asia/Tashkent",
    ///                          "Chennai",
    ///                          "Asia/Kolkata",
    ///                          "Kolkata",
    ///                          "Mumbai",
    ///                          "New Delhi",
    ///                          "Sri Jayawardenepura",
    ///                          "Asia/Colombo",
    ///                          "Kathmandu",
    ///                          "Asia/Kathmandu",
    ///                          "Dhaka",
    ///                          "Asia/Dhaka",
    ///                          "Urumqi",
    ///                          "Asia/Urumqi",
    ///                          "Rangoon",
    ///                          "Asia/Rangoon",
    ///                          "Bangkok",
    ///                          "Asia/Bangkok",
    ///                          "Hanoi",
    ///                          "Jakarta",
    ///                          "Asia/Jakarta",
    ///                          "Krasnoyarsk",
    ///                          "Asia/Krasnoyarsk",
    ///                          "Novosibirsk",
    ///                          "Asia/Novosibirsk",
    ///                          "Beijing",
    ///                          "Asia/Shanghai",
    ///                          "Chongqing",
    ///                          "Asia/Chongqing",
    ///                          "Hong Kong",
    ///                          "Asia/Hong_Kong",
    ///                          "Irkutsk",
    ///                          "Asia/Irkutsk",
    ///                          "Kuala Lumpur",
    ///                          "Asia/Kuala_Lumpur",
    ///                          "Perth",
    ///                          "Australia/Perth",
    ///                          "Singapore",
    ///                          "Asia/Singapore",
    ///                          "Taipei",
    ///                          "Asia/Taipei",
    ///                          "Ulaanbaatar",
    ///                          "Asia/Ulaanbaatar",
    ///                          "Osaka",
    ///                          "Asia/Tokyo",
    ///                          "Sapporo",
    ///                          "Seoul",
    ///                          "Asia/Seoul",
    ///                          "Tokyo",
    ///                          "Yakutsk",
    ///                          "Asia/Yakutsk",
    ///                          "Adelaide",
    ///                          "Australia/Adelaide",
    ///                          "Darwin",
    ///                          "Australia/Darwin",
    ///                          "Brisbane",
    ///                          "Australia/Brisbane",
    ///                          "Canberra",
    ///                          "Australia/Canberra",
    ///                          "Guam",
    ///                          "Pacific/Guam",
    ///                          "Hobart",
    ///                          "Australia/Hobart",
    ///                          "Melbourne",
    ///                          "Australia/Melbourne",
    ///                          "Port Moresby",
    ///                          "Pacific/Port_Moresby",
    ///                          "Sydney",
    ///                          "Australia/Sydney",
    ///                          "Vladivostok",
    ///                          "Asia/Vladivostok",
    ///                          "Magadan",
    ///                          "Asia/Magadan",
    ///                          "New Caledonia",
    ///                          "Pacific/Noumea",
    ///                          "Solomon Is.",
    ///                          "Pacific/Guadalcanal",
    ///                          "Srednekolymsk",
    ///                          "Asia/Srednekolymsk",
    ///                          "Auckland",
    ///                          "Pacific/Auckland",
    ///                          "Fiji",
    ///                          "Pacific/Fiji",
    ///                          "Kamchatka",
    ///                          "Asia/Kamchatka",
    ///                          "Marshall Is.",
    ///                          "Pacific/Majuro",
    ///                          "Wellington",
    ///                          "Chatham Is.",
    ///                          "Pacific/Chatham",
    ///                          "Nuku'alofa",
    ///                          "Pacific/Tongatapu",
    ///                          "Samoa",
    ///                          "Pacific/Apia",
    ///                          "Tokelau Is.",
    ///                          "Pacific/Fakaofo"
    ///                        ]
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "operator",
    ///                      "rule_type",
    ///                      "values"
    ///                    ],
    ///                    "properties": {
    ///                      "operator": {
    ///                        "description": "How the alert source should be matched",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is",
    ///                          "is_not",
    ///                          "is_one_of",
    ///                          "is_not_one_of"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "source"
    ///                        ]
    ///                      },
    ///                      "values": {
    ///                        "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  {
    ///                    "required": [
    ///                      "operator",
    ///                      "rule_type"
    ///                    ],
    ///                    "properties": {
    ///                      "operator": {
    ///                        "description": "Whether the alert must (or must not) have related incidents",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "is_set",
    ///                          "is_not_set"
    ///                        ]
    ///                      },
    ///                      "rule_type": {
    ///                        "description": "The type of the escalation path rule",
    ///                        "type": "string",
    ///                        "enum": [
    ///                          "related_incidents"
    ///                        ]
    ///                      }
    ///                    }
    ///                  }
    ///                ]
    ///              }
    ///            },
    ///            "time_restriction_time_zone": {
    ///              "description": "Time zone used for time restrictions.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "International Date Line West",
    ///                "Etc/GMT+12",
    ///                "American Samoa",
    ///                "Pacific/Pago_Pago",
    ///                "Midway Island",
    ///                "Pacific/Midway",
    ///                "Hawaii",
    ///                "Pacific/Honolulu",
    ///                "Alaska",
    ///                "America/Juneau",
    ///                "Pacific Time (US & Canada)",
    ///                "America/Los_Angeles",
    ///                "Tijuana",
    ///                "America/Tijuana",
    ///                "Arizona",
    ///                "America/Phoenix",
    ///                "Mazatlan",
    ///                "America/Mazatlan",
    ///                "Mountain Time (US & Canada)",
    ///                "America/Denver",
    ///                "Central America",
    ///                "America/Guatemala",
    ///                "Central Time (US & Canada)",
    ///                "America/Chicago",
    ///                "Chihuahua",
    ///                "America/Chihuahua",
    ///                "Guadalajara",
    ///                "America/Mexico_City",
    ///                "Mexico City",
    ///                "Monterrey",
    ///                "America/Monterrey",
    ///                "Saskatchewan",
    ///                "America/Regina",
    ///                "Bogota",
    ///                "America/Bogota",
    ///                "Eastern Time (US & Canada)",
    ///                "America/New_York",
    ///                "Indiana (East)",
    ///                "America/Indiana/Indianapolis",
    ///                "Lima",
    ///                "America/Lima",
    ///                "Quito",
    ///                "Atlantic Time (Canada)",
    ///                "America/Halifax",
    ///                "Caracas",
    ///                "America/Caracas",
    ///                "Georgetown",
    ///                "America/Guyana",
    ///                "La Paz",
    ///                "America/La_Paz",
    ///                "Puerto Rico",
    ///                "America/Puerto_Rico",
    ///                "Santiago",
    ///                "America/Santiago",
    ///                "Newfoundland",
    ///                "America/St_Johns",
    ///                "Asuncion",
    ///                "America/Asuncion",
    ///                "Brasilia",
    ///                "America/Sao_Paulo",
    ///                "Buenos Aires",
    ///                "America/Argentina/Buenos_Aires",
    ///                "Montevideo",
    ///                "America/Montevideo",
    ///                "Greenland",
    ///                "America/Nuuk",
    ///                "Mid-Atlantic",
    ///                "Atlantic/South_Georgia",
    ///                "Azores",
    ///                "Atlantic/Azores",
    ///                "Cape Verde Is.",
    ///                "Atlantic/Cape_Verde",
    ///                "Edinburgh",
    ///                "Europe/London",
    ///                "Lisbon",
    ///                "Europe/Lisbon",
    ///                "London",
    ///                "Monrovia",
    ///                "Africa/Monrovia",
    ///                "UTC",
    ///                "Etc/UTC",
    ///                "Amsterdam",
    ///                "Europe/Amsterdam",
    ///                "Belgrade",
    ///                "Europe/Belgrade",
    ///                "Berlin",
    ///                "Europe/Berlin",
    ///                "Bern",
    ///                "Europe/Zurich",
    ///                "Bratislava",
    ///                "Europe/Bratislava",
    ///                "Brussels",
    ///                "Europe/Brussels",
    ///                "Budapest",
    ///                "Europe/Budapest",
    ///                "Casablanca",
    ///                "Africa/Casablanca",
    ///                "Copenhagen",
    ///                "Europe/Copenhagen",
    ///                "Dublin",
    ///                "Europe/Dublin",
    ///                "Ljubljana",
    ///                "Europe/Ljubljana",
    ///                "Madrid",
    ///                "Europe/Madrid",
    ///                "Paris",
    ///                "Europe/Paris",
    ///                "Prague",
    ///                "Europe/Prague",
    ///                "Rome",
    ///                "Europe/Rome",
    ///                "Sarajevo",
    ///                "Europe/Sarajevo",
    ///                "Skopje",
    ///                "Europe/Skopje",
    ///                "Stockholm",
    ///                "Europe/Stockholm",
    ///                "Vienna",
    ///                "Europe/Vienna",
    ///                "Warsaw",
    ///                "Europe/Warsaw",
    ///                "West Central Africa",
    ///                "Africa/Algiers",
    ///                "Zagreb",
    ///                "Europe/Zagreb",
    ///                "Zurich",
    ///                "Athens",
    ///                "Europe/Athens",
    ///                "Bucharest",
    ///                "Europe/Bucharest",
    ///                "Cairo",
    ///                "Africa/Cairo",
    ///                "Harare",
    ///                "Africa/Harare",
    ///                "Helsinki",
    ///                "Europe/Helsinki",
    ///                "Jerusalem",
    ///                "Asia/Jerusalem",
    ///                "Kaliningrad",
    ///                "Europe/Kaliningrad",
    ///                "Kyiv",
    ///                "Europe/Kiev",
    ///                "Pretoria",
    ///                "Africa/Johannesburg",
    ///                "Riga",
    ///                "Europe/Riga",
    ///                "Sofia",
    ///                "Europe/Sofia",
    ///                "Tallinn",
    ///                "Europe/Tallinn",
    ///                "Vilnius",
    ///                "Europe/Vilnius",
    ///                "Baghdad",
    ///                "Asia/Baghdad",
    ///                "Istanbul",
    ///                "Europe/Istanbul",
    ///                "Kuwait",
    ///                "Asia/Kuwait",
    ///                "Minsk",
    ///                "Europe/Minsk",
    ///                "Moscow",
    ///                "Europe/Moscow",
    ///                "Nairobi",
    ///                "Africa/Nairobi",
    ///                "Riyadh",
    ///                "Asia/Riyadh",
    ///                "St. Petersburg",
    ///                "Volgograd",
    ///                "Europe/Volgograd",
    ///                "Tehran",
    ///                "Asia/Tehran",
    ///                "Abu Dhabi",
    ///                "Asia/Muscat",
    ///                "Baku",
    ///                "Asia/Baku",
    ///                "Muscat",
    ///                "Samara",
    ///                "Europe/Samara",
    ///                "Tbilisi",
    ///                "Asia/Tbilisi",
    ///                "Yerevan",
    ///                "Asia/Yerevan",
    ///                "Kabul",
    ///                "Asia/Kabul",
    ///                "Almaty",
    ///                "Asia/Almaty",
    ///                "Astana",
    ///                "Ekaterinburg",
    ///                "Asia/Yekaterinburg",
    ///                "Islamabad",
    ///                "Asia/Karachi",
    ///                "Karachi",
    ///                "Tashkent",
    ///                "Asia/Tashkent",
    ///                "Chennai",
    ///                "Asia/Kolkata",
    ///                "Kolkata",
    ///                "Mumbai",
    ///                "New Delhi",
    ///                "Sri Jayawardenepura",
    ///                "Asia/Colombo",
    ///                "Kathmandu",
    ///                "Asia/Kathmandu",
    ///                "Dhaka",
    ///                "Asia/Dhaka",
    ///                "Urumqi",
    ///                "Asia/Urumqi",
    ///                "Rangoon",
    ///                "Asia/Rangoon",
    ///                "Bangkok",
    ///                "Asia/Bangkok",
    ///                "Hanoi",
    ///                "Jakarta",
    ///                "Asia/Jakarta",
    ///                "Krasnoyarsk",
    ///                "Asia/Krasnoyarsk",
    ///                "Novosibirsk",
    ///                "Asia/Novosibirsk",
    ///                "Beijing",
    ///                "Asia/Shanghai",
    ///                "Chongqing",
    ///                "Asia/Chongqing",
    ///                "Hong Kong",
    ///                "Asia/Hong_Kong",
    ///                "Irkutsk",
    ///                "Asia/Irkutsk",
    ///                "Kuala Lumpur",
    ///                "Asia/Kuala_Lumpur",
    ///                "Perth",
    ///                "Australia/Perth",
    ///                "Singapore",
    ///                "Asia/Singapore",
    ///                "Taipei",
    ///                "Asia/Taipei",
    ///                "Ulaanbaatar",
    ///                "Asia/Ulaanbaatar",
    ///                "Osaka",
    ///                "Asia/Tokyo",
    ///                "Sapporo",
    ///                "Seoul",
    ///                "Asia/Seoul",
    ///                "Tokyo",
    ///                "Yakutsk",
    ///                "Asia/Yakutsk",
    ///                "Adelaide",
    ///                "Australia/Adelaide",
    ///                "Darwin",
    ///                "Australia/Darwin",
    ///                "Brisbane",
    ///                "Australia/Brisbane",
    ///                "Canberra",
    ///                "Australia/Canberra",
    ///                "Guam",
    ///                "Pacific/Guam",
    ///                "Hobart",
    ///                "Australia/Hobart",
    ///                "Melbourne",
    ///                "Australia/Melbourne",
    ///                "Port Moresby",
    ///                "Pacific/Port_Moresby",
    ///                "Sydney",
    ///                "Australia/Sydney",
    ///                "Vladivostok",
    ///                "Asia/Vladivostok",
    ///                "Magadan",
    ///                "Asia/Magadan",
    ///                "New Caledonia",
    ///                "Pacific/Noumea",
    ///                "Solomon Is.",
    ///                "Pacific/Guadalcanal",
    ///                "Srednekolymsk",
    ///                "Asia/Srednekolymsk",
    ///                "Auckland",
    ///                "Pacific/Auckland",
    ///                "Fiji",
    ///                "Pacific/Fiji",
    ///                "Kamchatka",
    ///                "Asia/Kamchatka",
    ///                "Marshall Is.",
    ///                "Pacific/Majuro",
    ///                "Wellington",
    ///                "Chatham Is.",
    ///                "Pacific/Chatham",
    ///                "Nuku'alofa",
    ///                "Pacific/Tongatapu",
    ///                "Samoa",
    ///                "Pacific/Apia",
    ///                "Tokelau Is.",
    ///                "Pacific/Fakaofo"
    ///              ]
    ///            },
    ///            "time_restrictions": {
    ///              "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "end_day": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "monday",
    ///                      "tuesday",
    ///                      "wednesday",
    ///                      "thursday",
    ///                      "friday",
    ///                      "saturday",
    ///                      "sunday"
    ///                    ]
    ///                  },
    ///                  "end_time": {
    ///                    "description": "Formatted as HH:MM",
    ///                    "type": "string"
    ///                  },
    ///                  "start_day": {
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "monday",
    ///                      "tuesday",
    ///                      "wednesday",
    ///                      "thursday",
    ///                      "friday",
    ///                      "saturday",
    ///                      "sunday"
    ///                    ]
    ///                  },
    ///                  "start_time": {
    ///                    "description": "Formatted as HH:MM",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation_paths"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyPath {
        pub data: UpdateEscalationPolicyPathData,
    }
    impl UpdateEscalationPolicyPath {
        pub fn builder() -> builder::UpdateEscalationPolicyPath {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyPathData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "after_deferral_behavior": {
    ///          "description": "What happens after a deferral path finishes.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "re_evaluate",
    ///            "execute_path"
    ///          ]
    ///        },
    ///        "after_deferral_path_id": {
    ///          "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "default": {
    ///          "description": "Whether this escalation path is the default path",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "initial_delay": {
    ///          "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///          "type": "integer"
    ///        },
    ///        "match_mode": {
    ///          "description": "How path rules are matched.",
    ///          "default": "match-all-rules",
    ///          "type": "string",
    ///          "enum": [
    ///            "match-all-rules",
    ///            "match-any-rule"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the escalation path",
    ///          "type": "string"
    ///        },
    ///        "notification_type": {
    ///          "description": "Position of the escalation policy level",
    ///          "default": "audible",
    ///          "type": "string",
    ///          "enum": [
    ///            "audible",
    ///            "quiet"
    ///          ]
    ///        },
    ///        "path_type": {
    ///          "description": "The type of escalation path. Cannot be changed after creation.",
    ///          "type": "string",
    ///          "enum": [
    ///            "escalation",
    ///            "deferral"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "The position of this path in the paths for this EP.",
    ///          "type": "integer"
    ///        },
    ///        "repeat": {
    ///          "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "repeat_count": {
    ///          "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "rules": {
    ///          "description": "Escalation path conditions",
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "oneOf": [
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "urgency_ids"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "alert_urgency"
    ///                    ]
    ///                  },
    ///                  "urgency_ids": {
    ///                    "description": "Alert urgency ids for which this escalation path should be used",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "within_working_hour"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "working_hour"
    ///                    ]
    ///                  },
    ///                  "within_working_hour": {
    ///                    "description": "Whether the escalation path should be used within working hours",
    ///                    "type": "boolean"
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "json_path",
    ///                  "operator",
    ///                  "rule_type"
    ///                ],
    ///                "properties": {
    ///                  "json_path": {
    ///                    "description": "JSON path to extract value from payload",
    ///                    "type": "string"
    ///                  },
    ///                  "operator": {
    ///                    "description": "How JSON path value should be matched",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "is_set",
    ///                      "is_not_set"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "json_path"
    ///                    ]
    ///                  },
    ///                  "value": {
    ///                    "description": "Value with which JSON path value should be matched",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "fieldable_id",
    ///                  "fieldable_type",
    ///                  "operator",
    ///                  "rule_type"
    ///                ],
    ///                "properties": {
    ///                  "fieldable_id": {
    ///                    "description": "The ID of the alert field",
    ///                    "type": "string"
    ///                  },
    ///                  "fieldable_type": {
    ///                    "description": "The type of the fieldable (e.g., AlertField)",
    ///                    "type": "string"
    ///                  },
    ///                  "operator": {
    ///                    "description": "How the alert field value should be matched",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "is_one_of",
    ///                      "is_not_one_of",
    ///                      "contains",
    ///                      "does_not_contain",
    ///                      "is_empty",
    ///                      "is_not_empty",
    ///                      "contains_key",
    ///                      "does_not_contain_key",
    ///                      "starts_with",
    ///                      "does_not_start_with",
    ///                      "matches",
    ///                      "does_not_match"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "field"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "Values to match against",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "service_ids"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "service"
    ///                    ]
    ///                  },
    ///                  "service_ids": {
    ///                    "description": "Service ids for which this escalation path should be used",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "rule_type",
    ///                  "time_blocks",
    ///                  "time_zone"
    ///                ],
    ///                "properties": {
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "deferral_window"
    ///                    ]
    ///                  },
    ///                  "time_blocks": {
    ///                    "description": "Time windows during which alerts are deferred",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "object",
    ///                      "properties": {
    ///                        "all_day": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "end_time": {
    ///                          "description": "Formatted as HH:MM",
    ///                          "type": "string"
    ///                        },
    ///                        "friday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "monday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "position": {
    ///                          "type": [
    ///                            "integer",
    ///                            "null"
    ///                          ]
    ///                        },
    ///                        "saturday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "start_time": {
    ///                          "description": "Formatted as HH:MM",
    ///                          "type": "string"
    ///                        },
    ///                        "sunday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "thursday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "tuesday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        },
    ///                        "wednesday": {
    ///                          "default": false,
    ///                          "type": "boolean"
    ///                        }
    ///                      }
    ///                    }
    ///                  },
    ///                  "time_zone": {
    ///                    "description": "Time zone for the deferral window",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "International Date Line West",
    ///                      "Etc/GMT+12",
    ///                      "American Samoa",
    ///                      "Pacific/Pago_Pago",
    ///                      "Midway Island",
    ///                      "Pacific/Midway",
    ///                      "Hawaii",
    ///                      "Pacific/Honolulu",
    ///                      "Alaska",
    ///                      "America/Juneau",
    ///                      "Pacific Time (US & Canada)",
    ///                      "America/Los_Angeles",
    ///                      "Tijuana",
    ///                      "America/Tijuana",
    ///                      "Arizona",
    ///                      "America/Phoenix",
    ///                      "Mazatlan",
    ///                      "America/Mazatlan",
    ///                      "Mountain Time (US & Canada)",
    ///                      "America/Denver",
    ///                      "Central America",
    ///                      "America/Guatemala",
    ///                      "Central Time (US & Canada)",
    ///                      "America/Chicago",
    ///                      "Chihuahua",
    ///                      "America/Chihuahua",
    ///                      "Guadalajara",
    ///                      "America/Mexico_City",
    ///                      "Mexico City",
    ///                      "Monterrey",
    ///                      "America/Monterrey",
    ///                      "Saskatchewan",
    ///                      "America/Regina",
    ///                      "Bogota",
    ///                      "America/Bogota",
    ///                      "Eastern Time (US & Canada)",
    ///                      "America/New_York",
    ///                      "Indiana (East)",
    ///                      "America/Indiana/Indianapolis",
    ///                      "Lima",
    ///                      "America/Lima",
    ///                      "Quito",
    ///                      "Atlantic Time (Canada)",
    ///                      "America/Halifax",
    ///                      "Caracas",
    ///                      "America/Caracas",
    ///                      "Georgetown",
    ///                      "America/Guyana",
    ///                      "La Paz",
    ///                      "America/La_Paz",
    ///                      "Puerto Rico",
    ///                      "America/Puerto_Rico",
    ///                      "Santiago",
    ///                      "America/Santiago",
    ///                      "Newfoundland",
    ///                      "America/St_Johns",
    ///                      "Asuncion",
    ///                      "America/Asuncion",
    ///                      "Brasilia",
    ///                      "America/Sao_Paulo",
    ///                      "Buenos Aires",
    ///                      "America/Argentina/Buenos_Aires",
    ///                      "Montevideo",
    ///                      "America/Montevideo",
    ///                      "Greenland",
    ///                      "America/Nuuk",
    ///                      "Mid-Atlantic",
    ///                      "Atlantic/South_Georgia",
    ///                      "Azores",
    ///                      "Atlantic/Azores",
    ///                      "Cape Verde Is.",
    ///                      "Atlantic/Cape_Verde",
    ///                      "Edinburgh",
    ///                      "Europe/London",
    ///                      "Lisbon",
    ///                      "Europe/Lisbon",
    ///                      "London",
    ///                      "Monrovia",
    ///                      "Africa/Monrovia",
    ///                      "UTC",
    ///                      "Etc/UTC",
    ///                      "Amsterdam",
    ///                      "Europe/Amsterdam",
    ///                      "Belgrade",
    ///                      "Europe/Belgrade",
    ///                      "Berlin",
    ///                      "Europe/Berlin",
    ///                      "Bern",
    ///                      "Europe/Zurich",
    ///                      "Bratislava",
    ///                      "Europe/Bratislava",
    ///                      "Brussels",
    ///                      "Europe/Brussels",
    ///                      "Budapest",
    ///                      "Europe/Budapest",
    ///                      "Casablanca",
    ///                      "Africa/Casablanca",
    ///                      "Copenhagen",
    ///                      "Europe/Copenhagen",
    ///                      "Dublin",
    ///                      "Europe/Dublin",
    ///                      "Ljubljana",
    ///                      "Europe/Ljubljana",
    ///                      "Madrid",
    ///                      "Europe/Madrid",
    ///                      "Paris",
    ///                      "Europe/Paris",
    ///                      "Prague",
    ///                      "Europe/Prague",
    ///                      "Rome",
    ///                      "Europe/Rome",
    ///                      "Sarajevo",
    ///                      "Europe/Sarajevo",
    ///                      "Skopje",
    ///                      "Europe/Skopje",
    ///                      "Stockholm",
    ///                      "Europe/Stockholm",
    ///                      "Vienna",
    ///                      "Europe/Vienna",
    ///                      "Warsaw",
    ///                      "Europe/Warsaw",
    ///                      "West Central Africa",
    ///                      "Africa/Algiers",
    ///                      "Zagreb",
    ///                      "Europe/Zagreb",
    ///                      "Zurich",
    ///                      "Athens",
    ///                      "Europe/Athens",
    ///                      "Bucharest",
    ///                      "Europe/Bucharest",
    ///                      "Cairo",
    ///                      "Africa/Cairo",
    ///                      "Harare",
    ///                      "Africa/Harare",
    ///                      "Helsinki",
    ///                      "Europe/Helsinki",
    ///                      "Jerusalem",
    ///                      "Asia/Jerusalem",
    ///                      "Kaliningrad",
    ///                      "Europe/Kaliningrad",
    ///                      "Kyiv",
    ///                      "Europe/Kiev",
    ///                      "Pretoria",
    ///                      "Africa/Johannesburg",
    ///                      "Riga",
    ///                      "Europe/Riga",
    ///                      "Sofia",
    ///                      "Europe/Sofia",
    ///                      "Tallinn",
    ///                      "Europe/Tallinn",
    ///                      "Vilnius",
    ///                      "Europe/Vilnius",
    ///                      "Baghdad",
    ///                      "Asia/Baghdad",
    ///                      "Istanbul",
    ///                      "Europe/Istanbul",
    ///                      "Kuwait",
    ///                      "Asia/Kuwait",
    ///                      "Minsk",
    ///                      "Europe/Minsk",
    ///                      "Moscow",
    ///                      "Europe/Moscow",
    ///                      "Nairobi",
    ///                      "Africa/Nairobi",
    ///                      "Riyadh",
    ///                      "Asia/Riyadh",
    ///                      "St. Petersburg",
    ///                      "Volgograd",
    ///                      "Europe/Volgograd",
    ///                      "Tehran",
    ///                      "Asia/Tehran",
    ///                      "Abu Dhabi",
    ///                      "Asia/Muscat",
    ///                      "Baku",
    ///                      "Asia/Baku",
    ///                      "Muscat",
    ///                      "Samara",
    ///                      "Europe/Samara",
    ///                      "Tbilisi",
    ///                      "Asia/Tbilisi",
    ///                      "Yerevan",
    ///                      "Asia/Yerevan",
    ///                      "Kabul",
    ///                      "Asia/Kabul",
    ///                      "Almaty",
    ///                      "Asia/Almaty",
    ///                      "Astana",
    ///                      "Ekaterinburg",
    ///                      "Asia/Yekaterinburg",
    ///                      "Islamabad",
    ///                      "Asia/Karachi",
    ///                      "Karachi",
    ///                      "Tashkent",
    ///                      "Asia/Tashkent",
    ///                      "Chennai",
    ///                      "Asia/Kolkata",
    ///                      "Kolkata",
    ///                      "Mumbai",
    ///                      "New Delhi",
    ///                      "Sri Jayawardenepura",
    ///                      "Asia/Colombo",
    ///                      "Kathmandu",
    ///                      "Asia/Kathmandu",
    ///                      "Dhaka",
    ///                      "Asia/Dhaka",
    ///                      "Urumqi",
    ///                      "Asia/Urumqi",
    ///                      "Rangoon",
    ///                      "Asia/Rangoon",
    ///                      "Bangkok",
    ///                      "Asia/Bangkok",
    ///                      "Hanoi",
    ///                      "Jakarta",
    ///                      "Asia/Jakarta",
    ///                      "Krasnoyarsk",
    ///                      "Asia/Krasnoyarsk",
    ///                      "Novosibirsk",
    ///                      "Asia/Novosibirsk",
    ///                      "Beijing",
    ///                      "Asia/Shanghai",
    ///                      "Chongqing",
    ///                      "Asia/Chongqing",
    ///                      "Hong Kong",
    ///                      "Asia/Hong_Kong",
    ///                      "Irkutsk",
    ///                      "Asia/Irkutsk",
    ///                      "Kuala Lumpur",
    ///                      "Asia/Kuala_Lumpur",
    ///                      "Perth",
    ///                      "Australia/Perth",
    ///                      "Singapore",
    ///                      "Asia/Singapore",
    ///                      "Taipei",
    ///                      "Asia/Taipei",
    ///                      "Ulaanbaatar",
    ///                      "Asia/Ulaanbaatar",
    ///                      "Osaka",
    ///                      "Asia/Tokyo",
    ///                      "Sapporo",
    ///                      "Seoul",
    ///                      "Asia/Seoul",
    ///                      "Tokyo",
    ///                      "Yakutsk",
    ///                      "Asia/Yakutsk",
    ///                      "Adelaide",
    ///                      "Australia/Adelaide",
    ///                      "Darwin",
    ///                      "Australia/Darwin",
    ///                      "Brisbane",
    ///                      "Australia/Brisbane",
    ///                      "Canberra",
    ///                      "Australia/Canberra",
    ///                      "Guam",
    ///                      "Pacific/Guam",
    ///                      "Hobart",
    ///                      "Australia/Hobart",
    ///                      "Melbourne",
    ///                      "Australia/Melbourne",
    ///                      "Port Moresby",
    ///                      "Pacific/Port_Moresby",
    ///                      "Sydney",
    ///                      "Australia/Sydney",
    ///                      "Vladivostok",
    ///                      "Asia/Vladivostok",
    ///                      "Magadan",
    ///                      "Asia/Magadan",
    ///                      "New Caledonia",
    ///                      "Pacific/Noumea",
    ///                      "Solomon Is.",
    ///                      "Pacific/Guadalcanal",
    ///                      "Srednekolymsk",
    ///                      "Asia/Srednekolymsk",
    ///                      "Auckland",
    ///                      "Pacific/Auckland",
    ///                      "Fiji",
    ///                      "Pacific/Fiji",
    ///                      "Kamchatka",
    ///                      "Asia/Kamchatka",
    ///                      "Marshall Is.",
    ///                      "Pacific/Majuro",
    ///                      "Wellington",
    ///                      "Chatham Is.",
    ///                      "Pacific/Chatham",
    ///                      "Nuku'alofa",
    ///                      "Pacific/Tongatapu",
    ///                      "Samoa",
    ///                      "Pacific/Apia",
    ///                      "Tokelau Is.",
    ///                      "Pacific/Fakaofo"
    ///                    ]
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "operator",
    ///                  "rule_type",
    ///                  "values"
    ///                ],
    ///                "properties": {
    ///                  "operator": {
    ///                    "description": "How the alert source should be matched",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is",
    ///                      "is_not",
    ///                      "is_one_of",
    ///                      "is_not_one_of"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "source"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              {
    ///                "required": [
    ///                  "operator",
    ///                  "rule_type"
    ///                ],
    ///                "properties": {
    ///                  "operator": {
    ///                    "description": "Whether the alert must (or must not) have related incidents",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "is_set",
    ///                      "is_not_set"
    ///                    ]
    ///                  },
    ///                  "rule_type": {
    ///                    "description": "The type of the escalation path rule",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "related_incidents"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            ]
    ///          }
    ///        },
    ///        "time_restriction_time_zone": {
    ///          "description": "Time zone used for time restrictions.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        },
    ///        "time_restrictions": {
    ///          "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "end_day": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "monday",
    ///                  "tuesday",
    ///                  "wednesday",
    ///                  "thursday",
    ///                  "friday",
    ///                  "saturday",
    ///                  "sunday"
    ///                ]
    ///              },
    ///              "end_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "start_day": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "monday",
    ///                  "tuesday",
    ///                  "wednesday",
    ///                  "thursday",
    ///                  "friday",
    ///                  "saturday",
    ///                  "sunday"
    ///                ]
    ///              },
    ///              "start_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation_paths"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyPathData {
        pub attributes: UpdateEscalationPolicyPathDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateEscalationPolicyPathDataType,
    }
    impl UpdateEscalationPolicyPathData {
        pub fn builder() -> builder::UpdateEscalationPolicyPathData {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyPathDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "after_deferral_behavior": {
    ///      "description": "What happens after a deferral path finishes.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "re_evaluate",
    ///        "execute_path"
    ///      ]
    ///    },
    ///    "after_deferral_path_id": {
    ///      "description": "The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "default": {
    ///      "description": "Whether this escalation path is the default path",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "initial_delay": {
    ///      "description": "Initial delay for escalation path in minutes. Maximum 1 week (10080).",
    ///      "type": "integer"
    ///    },
    ///    "match_mode": {
    ///      "description": "How path rules are matched.",
    ///      "default": "match-all-rules",
    ///      "type": "string",
    ///      "enum": [
    ///        "match-all-rules",
    ///        "match-any-rule"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the escalation path",
    ///      "type": "string"
    ///    },
    ///    "notification_type": {
    ///      "description": "Position of the escalation policy level",
    ///      "default": "audible",
    ///      "type": "string",
    ///      "enum": [
    ///        "audible",
    ///        "quiet"
    ///      ]
    ///    },
    ///    "path_type": {
    ///      "description": "The type of escalation path. Cannot be changed after creation.",
    ///      "type": "string",
    ///      "enum": [
    ///        "escalation",
    ///        "deferral"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of this path in the paths for this EP.",
    ///      "type": "integer"
    ///    },
    ///    "repeat": {
    ///      "description": "Whether this path should be repeated until someone acknowledges the alert",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_count": {
    ///      "description": "The number of times this path will be executed until someone acknowledges the alert",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "rules": {
    ///      "description": "Escalation path conditions",
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "oneOf": [
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "urgency_ids"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "alert_urgency"
    ///                ]
    ///              },
    ///              "urgency_ids": {
    ///                "description": "Alert urgency ids for which this escalation path should be used",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "within_working_hour"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "working_hour"
    ///                ]
    ///              },
    ///              "within_working_hour": {
    ///                "description": "Whether the escalation path should be used within working hours",
    ///                "type": "boolean"
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "json_path",
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "json_path": {
    ///                "description": "JSON path to extract value from payload",
    ///                "type": "string"
    ///              },
    ///              "operator": {
    ///                "description": "How JSON path value should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "is_set",
    ///                  "is_not_set"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "json_path"
    ///                ]
    ///              },
    ///              "value": {
    ///                "description": "Value with which JSON path value should be matched",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "fieldable_id",
    ///              "fieldable_type",
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "fieldable_id": {
    ///                "description": "The ID of the alert field",
    ///                "type": "string"
    ///              },
    ///              "fieldable_type": {
    ///                "description": "The type of the fieldable (e.g., AlertField)",
    ///                "type": "string"
    ///              },
    ///              "operator": {
    ///                "description": "How the alert field value should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "is_one_of",
    ///                  "is_not_one_of",
    ///                  "contains",
    ///                  "does_not_contain",
    ///                  "is_empty",
    ///                  "is_not_empty",
    ///                  "contains_key",
    ///                  "does_not_contain_key",
    ///                  "starts_with",
    ///                  "does_not_start_with",
    ///                  "matches",
    ///                  "does_not_match"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "field"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Values to match against",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "service_ids"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service"
    ///                ]
    ///              },
    ///              "service_ids": {
    ///                "description": "Service ids for which this escalation path should be used",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "rule_type",
    ///              "time_blocks",
    ///              "time_zone"
    ///            ],
    ///            "properties": {
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "deferral_window"
    ///                ]
    ///              },
    ///              "time_blocks": {
    ///                "description": "Time windows during which alerts are deferred",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "object",
    ///                  "properties": {
    ///                    "all_day": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "end_time": {
    ///                      "description": "Formatted as HH:MM",
    ///                      "type": "string"
    ///                    },
    ///                    "friday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "monday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "position": {
    ///                      "type": [
    ///                        "integer",
    ///                        "null"
    ///                      ]
    ///                    },
    ///                    "saturday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "start_time": {
    ///                      "description": "Formatted as HH:MM",
    ///                      "type": "string"
    ///                    },
    ///                    "sunday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "thursday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "tuesday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    },
    ///                    "wednesday": {
    ///                      "default": false,
    ///                      "type": "boolean"
    ///                    }
    ///                  }
    ///                }
    ///              },
    ///              "time_zone": {
    ///                "description": "Time zone for the deferral window",
    ///                "type": "string",
    ///                "enum": [
    ///                  "International Date Line West",
    ///                  "Etc/GMT+12",
    ///                  "American Samoa",
    ///                  "Pacific/Pago_Pago",
    ///                  "Midway Island",
    ///                  "Pacific/Midway",
    ///                  "Hawaii",
    ///                  "Pacific/Honolulu",
    ///                  "Alaska",
    ///                  "America/Juneau",
    ///                  "Pacific Time (US & Canada)",
    ///                  "America/Los_Angeles",
    ///                  "Tijuana",
    ///                  "America/Tijuana",
    ///                  "Arizona",
    ///                  "America/Phoenix",
    ///                  "Mazatlan",
    ///                  "America/Mazatlan",
    ///                  "Mountain Time (US & Canada)",
    ///                  "America/Denver",
    ///                  "Central America",
    ///                  "America/Guatemala",
    ///                  "Central Time (US & Canada)",
    ///                  "America/Chicago",
    ///                  "Chihuahua",
    ///                  "America/Chihuahua",
    ///                  "Guadalajara",
    ///                  "America/Mexico_City",
    ///                  "Mexico City",
    ///                  "Monterrey",
    ///                  "America/Monterrey",
    ///                  "Saskatchewan",
    ///                  "America/Regina",
    ///                  "Bogota",
    ///                  "America/Bogota",
    ///                  "Eastern Time (US & Canada)",
    ///                  "America/New_York",
    ///                  "Indiana (East)",
    ///                  "America/Indiana/Indianapolis",
    ///                  "Lima",
    ///                  "America/Lima",
    ///                  "Quito",
    ///                  "Atlantic Time (Canada)",
    ///                  "America/Halifax",
    ///                  "Caracas",
    ///                  "America/Caracas",
    ///                  "Georgetown",
    ///                  "America/Guyana",
    ///                  "La Paz",
    ///                  "America/La_Paz",
    ///                  "Puerto Rico",
    ///                  "America/Puerto_Rico",
    ///                  "Santiago",
    ///                  "America/Santiago",
    ///                  "Newfoundland",
    ///                  "America/St_Johns",
    ///                  "Asuncion",
    ///                  "America/Asuncion",
    ///                  "Brasilia",
    ///                  "America/Sao_Paulo",
    ///                  "Buenos Aires",
    ///                  "America/Argentina/Buenos_Aires",
    ///                  "Montevideo",
    ///                  "America/Montevideo",
    ///                  "Greenland",
    ///                  "America/Nuuk",
    ///                  "Mid-Atlantic",
    ///                  "Atlantic/South_Georgia",
    ///                  "Azores",
    ///                  "Atlantic/Azores",
    ///                  "Cape Verde Is.",
    ///                  "Atlantic/Cape_Verde",
    ///                  "Edinburgh",
    ///                  "Europe/London",
    ///                  "Lisbon",
    ///                  "Europe/Lisbon",
    ///                  "London",
    ///                  "Monrovia",
    ///                  "Africa/Monrovia",
    ///                  "UTC",
    ///                  "Etc/UTC",
    ///                  "Amsterdam",
    ///                  "Europe/Amsterdam",
    ///                  "Belgrade",
    ///                  "Europe/Belgrade",
    ///                  "Berlin",
    ///                  "Europe/Berlin",
    ///                  "Bern",
    ///                  "Europe/Zurich",
    ///                  "Bratislava",
    ///                  "Europe/Bratislava",
    ///                  "Brussels",
    ///                  "Europe/Brussels",
    ///                  "Budapest",
    ///                  "Europe/Budapest",
    ///                  "Casablanca",
    ///                  "Africa/Casablanca",
    ///                  "Copenhagen",
    ///                  "Europe/Copenhagen",
    ///                  "Dublin",
    ///                  "Europe/Dublin",
    ///                  "Ljubljana",
    ///                  "Europe/Ljubljana",
    ///                  "Madrid",
    ///                  "Europe/Madrid",
    ///                  "Paris",
    ///                  "Europe/Paris",
    ///                  "Prague",
    ///                  "Europe/Prague",
    ///                  "Rome",
    ///                  "Europe/Rome",
    ///                  "Sarajevo",
    ///                  "Europe/Sarajevo",
    ///                  "Skopje",
    ///                  "Europe/Skopje",
    ///                  "Stockholm",
    ///                  "Europe/Stockholm",
    ///                  "Vienna",
    ///                  "Europe/Vienna",
    ///                  "Warsaw",
    ///                  "Europe/Warsaw",
    ///                  "West Central Africa",
    ///                  "Africa/Algiers",
    ///                  "Zagreb",
    ///                  "Europe/Zagreb",
    ///                  "Zurich",
    ///                  "Athens",
    ///                  "Europe/Athens",
    ///                  "Bucharest",
    ///                  "Europe/Bucharest",
    ///                  "Cairo",
    ///                  "Africa/Cairo",
    ///                  "Harare",
    ///                  "Africa/Harare",
    ///                  "Helsinki",
    ///                  "Europe/Helsinki",
    ///                  "Jerusalem",
    ///                  "Asia/Jerusalem",
    ///                  "Kaliningrad",
    ///                  "Europe/Kaliningrad",
    ///                  "Kyiv",
    ///                  "Europe/Kiev",
    ///                  "Pretoria",
    ///                  "Africa/Johannesburg",
    ///                  "Riga",
    ///                  "Europe/Riga",
    ///                  "Sofia",
    ///                  "Europe/Sofia",
    ///                  "Tallinn",
    ///                  "Europe/Tallinn",
    ///                  "Vilnius",
    ///                  "Europe/Vilnius",
    ///                  "Baghdad",
    ///                  "Asia/Baghdad",
    ///                  "Istanbul",
    ///                  "Europe/Istanbul",
    ///                  "Kuwait",
    ///                  "Asia/Kuwait",
    ///                  "Minsk",
    ///                  "Europe/Minsk",
    ///                  "Moscow",
    ///                  "Europe/Moscow",
    ///                  "Nairobi",
    ///                  "Africa/Nairobi",
    ///                  "Riyadh",
    ///                  "Asia/Riyadh",
    ///                  "St. Petersburg",
    ///                  "Volgograd",
    ///                  "Europe/Volgograd",
    ///                  "Tehran",
    ///                  "Asia/Tehran",
    ///                  "Abu Dhabi",
    ///                  "Asia/Muscat",
    ///                  "Baku",
    ///                  "Asia/Baku",
    ///                  "Muscat",
    ///                  "Samara",
    ///                  "Europe/Samara",
    ///                  "Tbilisi",
    ///                  "Asia/Tbilisi",
    ///                  "Yerevan",
    ///                  "Asia/Yerevan",
    ///                  "Kabul",
    ///                  "Asia/Kabul",
    ///                  "Almaty",
    ///                  "Asia/Almaty",
    ///                  "Astana",
    ///                  "Ekaterinburg",
    ///                  "Asia/Yekaterinburg",
    ///                  "Islamabad",
    ///                  "Asia/Karachi",
    ///                  "Karachi",
    ///                  "Tashkent",
    ///                  "Asia/Tashkent",
    ///                  "Chennai",
    ///                  "Asia/Kolkata",
    ///                  "Kolkata",
    ///                  "Mumbai",
    ///                  "New Delhi",
    ///                  "Sri Jayawardenepura",
    ///                  "Asia/Colombo",
    ///                  "Kathmandu",
    ///                  "Asia/Kathmandu",
    ///                  "Dhaka",
    ///                  "Asia/Dhaka",
    ///                  "Urumqi",
    ///                  "Asia/Urumqi",
    ///                  "Rangoon",
    ///                  "Asia/Rangoon",
    ///                  "Bangkok",
    ///                  "Asia/Bangkok",
    ///                  "Hanoi",
    ///                  "Jakarta",
    ///                  "Asia/Jakarta",
    ///                  "Krasnoyarsk",
    ///                  "Asia/Krasnoyarsk",
    ///                  "Novosibirsk",
    ///                  "Asia/Novosibirsk",
    ///                  "Beijing",
    ///                  "Asia/Shanghai",
    ///                  "Chongqing",
    ///                  "Asia/Chongqing",
    ///                  "Hong Kong",
    ///                  "Asia/Hong_Kong",
    ///                  "Irkutsk",
    ///                  "Asia/Irkutsk",
    ///                  "Kuala Lumpur",
    ///                  "Asia/Kuala_Lumpur",
    ///                  "Perth",
    ///                  "Australia/Perth",
    ///                  "Singapore",
    ///                  "Asia/Singapore",
    ///                  "Taipei",
    ///                  "Asia/Taipei",
    ///                  "Ulaanbaatar",
    ///                  "Asia/Ulaanbaatar",
    ///                  "Osaka",
    ///                  "Asia/Tokyo",
    ///                  "Sapporo",
    ///                  "Seoul",
    ///                  "Asia/Seoul",
    ///                  "Tokyo",
    ///                  "Yakutsk",
    ///                  "Asia/Yakutsk",
    ///                  "Adelaide",
    ///                  "Australia/Adelaide",
    ///                  "Darwin",
    ///                  "Australia/Darwin",
    ///                  "Brisbane",
    ///                  "Australia/Brisbane",
    ///                  "Canberra",
    ///                  "Australia/Canberra",
    ///                  "Guam",
    ///                  "Pacific/Guam",
    ///                  "Hobart",
    ///                  "Australia/Hobart",
    ///                  "Melbourne",
    ///                  "Australia/Melbourne",
    ///                  "Port Moresby",
    ///                  "Pacific/Port_Moresby",
    ///                  "Sydney",
    ///                  "Australia/Sydney",
    ///                  "Vladivostok",
    ///                  "Asia/Vladivostok",
    ///                  "Magadan",
    ///                  "Asia/Magadan",
    ///                  "New Caledonia",
    ///                  "Pacific/Noumea",
    ///                  "Solomon Is.",
    ///                  "Pacific/Guadalcanal",
    ///                  "Srednekolymsk",
    ///                  "Asia/Srednekolymsk",
    ///                  "Auckland",
    ///                  "Pacific/Auckland",
    ///                  "Fiji",
    ///                  "Pacific/Fiji",
    ///                  "Kamchatka",
    ///                  "Asia/Kamchatka",
    ///                  "Marshall Is.",
    ///                  "Pacific/Majuro",
    ///                  "Wellington",
    ///                  "Chatham Is.",
    ///                  "Pacific/Chatham",
    ///                  "Nuku'alofa",
    ///                  "Pacific/Tongatapu",
    ///                  "Samoa",
    ///                  "Pacific/Apia",
    ///                  "Tokelau Is.",
    ///                  "Pacific/Fakaofo"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "operator",
    ///              "rule_type",
    ///              "values"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "description": "How the alert source should be matched",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is",
    ///                  "is_not",
    ///                  "is_one_of",
    ///                  "is_not_one_of"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "source"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "Alert source values to match against (e.g., manual, datadog)",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          },
    ///          {
    ///            "required": [
    ///              "operator",
    ///              "rule_type"
    ///            ],
    ///            "properties": {
    ///              "operator": {
    ///                "description": "Whether the alert must (or must not) have related incidents",
    ///                "type": "string",
    ///                "enum": [
    ///                  "is_set",
    ///                  "is_not_set"
    ///                ]
    ///              },
    ///              "rule_type": {
    ///                "description": "The type of the escalation path rule",
    ///                "type": "string",
    ///                "enum": [
    ///                  "related_incidents"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        ]
    ///      }
    ///    },
    ///    "time_restriction_time_zone": {
    ///      "description": "Time zone used for time restrictions.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "International Date Line West",
    ///        "Etc/GMT+12",
    ///        "American Samoa",
    ///        "Pacific/Pago_Pago",
    ///        "Midway Island",
    ///        "Pacific/Midway",
    ///        "Hawaii",
    ///        "Pacific/Honolulu",
    ///        "Alaska",
    ///        "America/Juneau",
    ///        "Pacific Time (US & Canada)",
    ///        "America/Los_Angeles",
    ///        "Tijuana",
    ///        "America/Tijuana",
    ///        "Arizona",
    ///        "America/Phoenix",
    ///        "Mazatlan",
    ///        "America/Mazatlan",
    ///        "Mountain Time (US & Canada)",
    ///        "America/Denver",
    ///        "Central America",
    ///        "America/Guatemala",
    ///        "Central Time (US & Canada)",
    ///        "America/Chicago",
    ///        "Chihuahua",
    ///        "America/Chihuahua",
    ///        "Guadalajara",
    ///        "America/Mexico_City",
    ///        "Mexico City",
    ///        "Monterrey",
    ///        "America/Monterrey",
    ///        "Saskatchewan",
    ///        "America/Regina",
    ///        "Bogota",
    ///        "America/Bogota",
    ///        "Eastern Time (US & Canada)",
    ///        "America/New_York",
    ///        "Indiana (East)",
    ///        "America/Indiana/Indianapolis",
    ///        "Lima",
    ///        "America/Lima",
    ///        "Quito",
    ///        "Atlantic Time (Canada)",
    ///        "America/Halifax",
    ///        "Caracas",
    ///        "America/Caracas",
    ///        "Georgetown",
    ///        "America/Guyana",
    ///        "La Paz",
    ///        "America/La_Paz",
    ///        "Puerto Rico",
    ///        "America/Puerto_Rico",
    ///        "Santiago",
    ///        "America/Santiago",
    ///        "Newfoundland",
    ///        "America/St_Johns",
    ///        "Asuncion",
    ///        "America/Asuncion",
    ///        "Brasilia",
    ///        "America/Sao_Paulo",
    ///        "Buenos Aires",
    ///        "America/Argentina/Buenos_Aires",
    ///        "Montevideo",
    ///        "America/Montevideo",
    ///        "Greenland",
    ///        "America/Nuuk",
    ///        "Mid-Atlantic",
    ///        "Atlantic/South_Georgia",
    ///        "Azores",
    ///        "Atlantic/Azores",
    ///        "Cape Verde Is.",
    ///        "Atlantic/Cape_Verde",
    ///        "Edinburgh",
    ///        "Europe/London",
    ///        "Lisbon",
    ///        "Europe/Lisbon",
    ///        "London",
    ///        "Monrovia",
    ///        "Africa/Monrovia",
    ///        "UTC",
    ///        "Etc/UTC",
    ///        "Amsterdam",
    ///        "Europe/Amsterdam",
    ///        "Belgrade",
    ///        "Europe/Belgrade",
    ///        "Berlin",
    ///        "Europe/Berlin",
    ///        "Bern",
    ///        "Europe/Zurich",
    ///        "Bratislava",
    ///        "Europe/Bratislava",
    ///        "Brussels",
    ///        "Europe/Brussels",
    ///        "Budapest",
    ///        "Europe/Budapest",
    ///        "Casablanca",
    ///        "Africa/Casablanca",
    ///        "Copenhagen",
    ///        "Europe/Copenhagen",
    ///        "Dublin",
    ///        "Europe/Dublin",
    ///        "Ljubljana",
    ///        "Europe/Ljubljana",
    ///        "Madrid",
    ///        "Europe/Madrid",
    ///        "Paris",
    ///        "Europe/Paris",
    ///        "Prague",
    ///        "Europe/Prague",
    ///        "Rome",
    ///        "Europe/Rome",
    ///        "Sarajevo",
    ///        "Europe/Sarajevo",
    ///        "Skopje",
    ///        "Europe/Skopje",
    ///        "Stockholm",
    ///        "Europe/Stockholm",
    ///        "Vienna",
    ///        "Europe/Vienna",
    ///        "Warsaw",
    ///        "Europe/Warsaw",
    ///        "West Central Africa",
    ///        "Africa/Algiers",
    ///        "Zagreb",
    ///        "Europe/Zagreb",
    ///        "Zurich",
    ///        "Athens",
    ///        "Europe/Athens",
    ///        "Bucharest",
    ///        "Europe/Bucharest",
    ///        "Cairo",
    ///        "Africa/Cairo",
    ///        "Harare",
    ///        "Africa/Harare",
    ///        "Helsinki",
    ///        "Europe/Helsinki",
    ///        "Jerusalem",
    ///        "Asia/Jerusalem",
    ///        "Kaliningrad",
    ///        "Europe/Kaliningrad",
    ///        "Kyiv",
    ///        "Europe/Kiev",
    ///        "Pretoria",
    ///        "Africa/Johannesburg",
    ///        "Riga",
    ///        "Europe/Riga",
    ///        "Sofia",
    ///        "Europe/Sofia",
    ///        "Tallinn",
    ///        "Europe/Tallinn",
    ///        "Vilnius",
    ///        "Europe/Vilnius",
    ///        "Baghdad",
    ///        "Asia/Baghdad",
    ///        "Istanbul",
    ///        "Europe/Istanbul",
    ///        "Kuwait",
    ///        "Asia/Kuwait",
    ///        "Minsk",
    ///        "Europe/Minsk",
    ///        "Moscow",
    ///        "Europe/Moscow",
    ///        "Nairobi",
    ///        "Africa/Nairobi",
    ///        "Riyadh",
    ///        "Asia/Riyadh",
    ///        "St. Petersburg",
    ///        "Volgograd",
    ///        "Europe/Volgograd",
    ///        "Tehran",
    ///        "Asia/Tehran",
    ///        "Abu Dhabi",
    ///        "Asia/Muscat",
    ///        "Baku",
    ///        "Asia/Baku",
    ///        "Muscat",
    ///        "Samara",
    ///        "Europe/Samara",
    ///        "Tbilisi",
    ///        "Asia/Tbilisi",
    ///        "Yerevan",
    ///        "Asia/Yerevan",
    ///        "Kabul",
    ///        "Asia/Kabul",
    ///        "Almaty",
    ///        "Asia/Almaty",
    ///        "Astana",
    ///        "Ekaterinburg",
    ///        "Asia/Yekaterinburg",
    ///        "Islamabad",
    ///        "Asia/Karachi",
    ///        "Karachi",
    ///        "Tashkent",
    ///        "Asia/Tashkent",
    ///        "Chennai",
    ///        "Asia/Kolkata",
    ///        "Kolkata",
    ///        "Mumbai",
    ///        "New Delhi",
    ///        "Sri Jayawardenepura",
    ///        "Asia/Colombo",
    ///        "Kathmandu",
    ///        "Asia/Kathmandu",
    ///        "Dhaka",
    ///        "Asia/Dhaka",
    ///        "Urumqi",
    ///        "Asia/Urumqi",
    ///        "Rangoon",
    ///        "Asia/Rangoon",
    ///        "Bangkok",
    ///        "Asia/Bangkok",
    ///        "Hanoi",
    ///        "Jakarta",
    ///        "Asia/Jakarta",
    ///        "Krasnoyarsk",
    ///        "Asia/Krasnoyarsk",
    ///        "Novosibirsk",
    ///        "Asia/Novosibirsk",
    ///        "Beijing",
    ///        "Asia/Shanghai",
    ///        "Chongqing",
    ///        "Asia/Chongqing",
    ///        "Hong Kong",
    ///        "Asia/Hong_Kong",
    ///        "Irkutsk",
    ///        "Asia/Irkutsk",
    ///        "Kuala Lumpur",
    ///        "Asia/Kuala_Lumpur",
    ///        "Perth",
    ///        "Australia/Perth",
    ///        "Singapore",
    ///        "Asia/Singapore",
    ///        "Taipei",
    ///        "Asia/Taipei",
    ///        "Ulaanbaatar",
    ///        "Asia/Ulaanbaatar",
    ///        "Osaka",
    ///        "Asia/Tokyo",
    ///        "Sapporo",
    ///        "Seoul",
    ///        "Asia/Seoul",
    ///        "Tokyo",
    ///        "Yakutsk",
    ///        "Asia/Yakutsk",
    ///        "Adelaide",
    ///        "Australia/Adelaide",
    ///        "Darwin",
    ///        "Australia/Darwin",
    ///        "Brisbane",
    ///        "Australia/Brisbane",
    ///        "Canberra",
    ///        "Australia/Canberra",
    ///        "Guam",
    ///        "Pacific/Guam",
    ///        "Hobart",
    ///        "Australia/Hobart",
    ///        "Melbourne",
    ///        "Australia/Melbourne",
    ///        "Port Moresby",
    ///        "Pacific/Port_Moresby",
    ///        "Sydney",
    ///        "Australia/Sydney",
    ///        "Vladivostok",
    ///        "Asia/Vladivostok",
    ///        "Magadan",
    ///        "Asia/Magadan",
    ///        "New Caledonia",
    ///        "Pacific/Noumea",
    ///        "Solomon Is.",
    ///        "Pacific/Guadalcanal",
    ///        "Srednekolymsk",
    ///        "Asia/Srednekolymsk",
    ///        "Auckland",
    ///        "Pacific/Auckland",
    ///        "Fiji",
    ///        "Pacific/Fiji",
    ///        "Kamchatka",
    ///        "Asia/Kamchatka",
    ///        "Marshall Is.",
    ///        "Pacific/Majuro",
    ///        "Wellington",
    ///        "Chatham Is.",
    ///        "Pacific/Chatham",
    ///        "Nuku'alofa",
    ///        "Pacific/Tongatapu",
    ///        "Samoa",
    ///        "Pacific/Apia",
    ///        "Tokelau Is.",
    ///        "Pacific/Fakaofo"
    ///      ]
    ///    },
    ///    "time_restrictions": {
    ///      "description": "If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "end_day": {
    ///            "type": "string",
    ///            "enum": [
    ///              "monday",
    ///              "tuesday",
    ///              "wednesday",
    ///              "thursday",
    ///              "friday",
    ///              "saturday",
    ///              "sunday"
    ///            ]
    ///          },
    ///          "end_time": {
    ///            "description": "Formatted as HH:MM",
    ///            "type": "string"
    ///          },
    ///          "start_day": {
    ///            "type": "string",
    ///            "enum": [
    ///              "monday",
    ///              "tuesday",
    ///              "wednesday",
    ///              "thursday",
    ///              "friday",
    ///              "saturday",
    ///              "sunday"
    ///            ]
    ///          },
    ///          "start_time": {
    ///            "description": "Formatted as HH:MM",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateEscalationPolicyPathDataAttributes {
        ///What happens after a deferral path finishes.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub after_deferral_behavior: ::std::option::Option<
            UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior,
        >,
        ///The escalation path to execute after this deferral path when after_deferral_behavior is execute_path.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub after_deferral_path_id: ::std::option::Option<::std::string::String>,
        ///Whether this escalation path is the default path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///Initial delay for escalation path in minutes. Maximum 1 week (10080).
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub initial_delay: ::std::option::Option<i64>,
        ///How path rules are matched.
        #[serde(
            default = "defaults::update_escalation_policy_path_data_attributes_match_mode"
        )]
        pub match_mode: UpdateEscalationPolicyPathDataAttributesMatchMode,
        ///The name of the escalation path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the escalation policy level
        #[serde(
            default = "defaults::update_escalation_policy_path_data_attributes_notification_type"
        )]
        pub notification_type: UpdateEscalationPolicyPathDataAttributesNotificationType,
        ///The type of escalation path. Cannot be changed after creation.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub path_type: ::std::option::Option<
            UpdateEscalationPolicyPathDataAttributesPathType,
        >,
        ///The position of this path in the paths for this EP.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether this path should be repeated until someone acknowledges the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat: ::std::option::Option<bool>,
        ///The number of times this path will be executed until someone acknowledges the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_count: ::std::option::Option<i64>,
        ///Escalation path conditions
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub rules: ::std::vec::Vec<
            ::std::option::Option<UpdateEscalationPolicyPathDataAttributesRulesItem>,
        >,
        ///Time zone used for time restrictions.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_restriction_time_zone: ::std::option::Option<
            UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone,
        >,
        ///If time restrictions are set, alerts will follow this path when they arrive within the specified time ranges and meet the rules.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub time_restrictions: ::std::vec::Vec<
            UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
        >,
    }
    impl ::std::default::Default for UpdateEscalationPolicyPathDataAttributes {
        fn default() -> Self {
            Self {
                after_deferral_behavior: Default::default(),
                after_deferral_path_id: Default::default(),
                default: Default::default(),
                initial_delay: Default::default(),
                match_mode: defaults::update_escalation_policy_path_data_attributes_match_mode(),
                name: Default::default(),
                notification_type: defaults::update_escalation_policy_path_data_attributes_notification_type(),
                path_type: Default::default(),
                position: Default::default(),
                repeat: Default::default(),
                repeat_count: Default::default(),
                rules: Default::default(),
                time_restriction_time_zone: Default::default(),
                time_restrictions: Default::default(),
            }
        }
    }
    impl UpdateEscalationPolicyPathDataAttributes {
        pub fn builder() -> builder::UpdateEscalationPolicyPathDataAttributes {
            Default::default()
        }
    }
    ///What happens after a deferral path finishes.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "What happens after a deferral path finishes.",
    ///  "type": "string",
    ///  "enum": [
    ///    "re_evaluate",
    ///    "execute_path"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        #[serde(rename = "re_evaluate")]
        ReEvaluate,
        #[serde(rename = "execute_path")]
        ExecutePath,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ReEvaluate => f.write_str("re_evaluate"),
                Self::ExecutePath => f.write_str("execute_path"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "re_evaluate" => Ok(Self::ReEvaluate),
                "execute_path" => Ok(Self::ExecutePath),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///How path rules are matched.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How path rules are matched.",
    ///  "default": "match-all-rules",
    ///  "type": "string",
    ///  "enum": [
    ///    "match-all-rules",
    ///    "match-any-rule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesMatchMode {
        #[serde(rename = "match-all-rules")]
        MatchAllRules,
        #[serde(rename = "match-any-rule")]
        MatchAnyRule,
    }
    impl ::std::fmt::Display for UpdateEscalationPolicyPathDataAttributesMatchMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::MatchAllRules => f.write_str("match-all-rules"),
                Self::MatchAnyRule => f.write_str("match-any-rule"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEscalationPolicyPathDataAttributesMatchMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "match-all-rules" => Ok(Self::MatchAllRules),
                "match-any-rule" => Ok(Self::MatchAnyRule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesMatchMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for UpdateEscalationPolicyPathDataAttributesMatchMode {
        fn default() -> Self {
            UpdateEscalationPolicyPathDataAttributesMatchMode::MatchAllRules
        }
    }
    ///Position of the escalation policy level
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Position of the escalation policy level",
    ///  "default": "audible",
    ///  "type": "string",
    ///  "enum": [
    ///    "audible",
    ///    "quiet"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesNotificationType {
        #[serde(rename = "audible")]
        Audible,
        #[serde(rename = "quiet")]
        Quiet,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesNotificationType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Audible => f.write_str("audible"),
                Self::Quiet => f.write_str("quiet"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesNotificationType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "audible" => Ok(Self::Audible),
                "quiet" => Ok(Self::Quiet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for UpdateEscalationPolicyPathDataAttributesNotificationType {
        fn default() -> Self {
            UpdateEscalationPolicyPathDataAttributesNotificationType::Audible
        }
    }
    ///The type of escalation path. Cannot be changed after creation.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of escalation path. Cannot be changed after creation.",
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation",
    ///    "deferral"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesPathType {
        #[serde(rename = "escalation")]
        Escalation,
        #[serde(rename = "deferral")]
        Deferral,
    }
    impl ::std::fmt::Display for UpdateEscalationPolicyPathDataAttributesPathType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Escalation => f.write_str("escalation"),
                Self::Deferral => f.write_str("deferral"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEscalationPolicyPathDataAttributesPathType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation" => Ok(Self::Escalation),
                "deferral" => Ok(Self::Deferral),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesPathType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyPathDataAttributesRulesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "urgency_ids"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "alert_urgency"
    ///          ]
    ///        },
    ///        "urgency_ids": {
    ///          "description": "Alert urgency ids for which this escalation path should be used",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "within_working_hour"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "working_hour"
    ///          ]
    ///        },
    ///        "within_working_hour": {
    ///          "description": "Whether the escalation path should be used within working hours",
    ///          "type": "boolean"
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "json_path",
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "json_path": {
    ///          "description": "JSON path to extract value from payload",
    ///          "type": "string"
    ///        },
    ///        "operator": {
    ///          "description": "How JSON path value should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "contains",
    ///            "does_not_contain",
    ///            "is_one_of",
    ///            "is_not_one_of",
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "json_path"
    ///          ]
    ///        },
    ///        "value": {
    ///          "description": "Value with which JSON path value should be matched",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Values to match against (for is_one_of / is_not_one_of operators)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "fieldable_id",
    ///        "fieldable_type",
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "fieldable_id": {
    ///          "description": "The ID of the alert field",
    ///          "type": "string"
    ///        },
    ///        "fieldable_type": {
    ///          "description": "The type of the fieldable (e.g., AlertField)",
    ///          "type": "string"
    ///        },
    ///        "operator": {
    ///          "description": "How the alert field value should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "is_one_of",
    ///            "is_not_one_of",
    ///            "contains",
    ///            "does_not_contain",
    ///            "is_empty",
    ///            "is_not_empty",
    ///            "contains_key",
    ///            "does_not_contain_key",
    ///            "starts_with",
    ///            "does_not_start_with",
    ///            "matches",
    ///            "does_not_match"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "field"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Values to match against",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "service_ids"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "service"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Service ids for which this escalation path should be used",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "rule_type",
    ///        "time_blocks",
    ///        "time_zone"
    ///      ],
    ///      "properties": {
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "deferral_window"
    ///          ]
    ///        },
    ///        "time_blocks": {
    ///          "description": "Time windows during which alerts are deferred",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "all_day": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "end_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "friday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "monday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "position": {
    ///                "type": [
    ///                  "integer",
    ///                  "null"
    ///                ]
    ///              },
    ///              "saturday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "start_time": {
    ///                "description": "Formatted as HH:MM",
    ///                "type": "string"
    ///              },
    ///              "sunday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "thursday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "tuesday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              },
    ///              "wednesday": {
    ///                "default": false,
    ///                "type": "boolean"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "time_zone": {
    ///          "description": "Time zone for the deferral window",
    ///          "type": "string",
    ///          "enum": [
    ///            "International Date Line West",
    ///            "Etc/GMT+12",
    ///            "American Samoa",
    ///            "Pacific/Pago_Pago",
    ///            "Midway Island",
    ///            "Pacific/Midway",
    ///            "Hawaii",
    ///            "Pacific/Honolulu",
    ///            "Alaska",
    ///            "America/Juneau",
    ///            "Pacific Time (US & Canada)",
    ///            "America/Los_Angeles",
    ///            "Tijuana",
    ///            "America/Tijuana",
    ///            "Arizona",
    ///            "America/Phoenix",
    ///            "Mazatlan",
    ///            "America/Mazatlan",
    ///            "Mountain Time (US & Canada)",
    ///            "America/Denver",
    ///            "Central America",
    ///            "America/Guatemala",
    ///            "Central Time (US & Canada)",
    ///            "America/Chicago",
    ///            "Chihuahua",
    ///            "America/Chihuahua",
    ///            "Guadalajara",
    ///            "America/Mexico_City",
    ///            "Mexico City",
    ///            "Monterrey",
    ///            "America/Monterrey",
    ///            "Saskatchewan",
    ///            "America/Regina",
    ///            "Bogota",
    ///            "America/Bogota",
    ///            "Eastern Time (US & Canada)",
    ///            "America/New_York",
    ///            "Indiana (East)",
    ///            "America/Indiana/Indianapolis",
    ///            "Lima",
    ///            "America/Lima",
    ///            "Quito",
    ///            "Atlantic Time (Canada)",
    ///            "America/Halifax",
    ///            "Caracas",
    ///            "America/Caracas",
    ///            "Georgetown",
    ///            "America/Guyana",
    ///            "La Paz",
    ///            "America/La_Paz",
    ///            "Puerto Rico",
    ///            "America/Puerto_Rico",
    ///            "Santiago",
    ///            "America/Santiago",
    ///            "Newfoundland",
    ///            "America/St_Johns",
    ///            "Asuncion",
    ///            "America/Asuncion",
    ///            "Brasilia",
    ///            "America/Sao_Paulo",
    ///            "Buenos Aires",
    ///            "America/Argentina/Buenos_Aires",
    ///            "Montevideo",
    ///            "America/Montevideo",
    ///            "Greenland",
    ///            "America/Nuuk",
    ///            "Mid-Atlantic",
    ///            "Atlantic/South_Georgia",
    ///            "Azores",
    ///            "Atlantic/Azores",
    ///            "Cape Verde Is.",
    ///            "Atlantic/Cape_Verde",
    ///            "Edinburgh",
    ///            "Europe/London",
    ///            "Lisbon",
    ///            "Europe/Lisbon",
    ///            "London",
    ///            "Monrovia",
    ///            "Africa/Monrovia",
    ///            "UTC",
    ///            "Etc/UTC",
    ///            "Amsterdam",
    ///            "Europe/Amsterdam",
    ///            "Belgrade",
    ///            "Europe/Belgrade",
    ///            "Berlin",
    ///            "Europe/Berlin",
    ///            "Bern",
    ///            "Europe/Zurich",
    ///            "Bratislava",
    ///            "Europe/Bratislava",
    ///            "Brussels",
    ///            "Europe/Brussels",
    ///            "Budapest",
    ///            "Europe/Budapest",
    ///            "Casablanca",
    ///            "Africa/Casablanca",
    ///            "Copenhagen",
    ///            "Europe/Copenhagen",
    ///            "Dublin",
    ///            "Europe/Dublin",
    ///            "Ljubljana",
    ///            "Europe/Ljubljana",
    ///            "Madrid",
    ///            "Europe/Madrid",
    ///            "Paris",
    ///            "Europe/Paris",
    ///            "Prague",
    ///            "Europe/Prague",
    ///            "Rome",
    ///            "Europe/Rome",
    ///            "Sarajevo",
    ///            "Europe/Sarajevo",
    ///            "Skopje",
    ///            "Europe/Skopje",
    ///            "Stockholm",
    ///            "Europe/Stockholm",
    ///            "Vienna",
    ///            "Europe/Vienna",
    ///            "Warsaw",
    ///            "Europe/Warsaw",
    ///            "West Central Africa",
    ///            "Africa/Algiers",
    ///            "Zagreb",
    ///            "Europe/Zagreb",
    ///            "Zurich",
    ///            "Athens",
    ///            "Europe/Athens",
    ///            "Bucharest",
    ///            "Europe/Bucharest",
    ///            "Cairo",
    ///            "Africa/Cairo",
    ///            "Harare",
    ///            "Africa/Harare",
    ///            "Helsinki",
    ///            "Europe/Helsinki",
    ///            "Jerusalem",
    ///            "Asia/Jerusalem",
    ///            "Kaliningrad",
    ///            "Europe/Kaliningrad",
    ///            "Kyiv",
    ///            "Europe/Kiev",
    ///            "Pretoria",
    ///            "Africa/Johannesburg",
    ///            "Riga",
    ///            "Europe/Riga",
    ///            "Sofia",
    ///            "Europe/Sofia",
    ///            "Tallinn",
    ///            "Europe/Tallinn",
    ///            "Vilnius",
    ///            "Europe/Vilnius",
    ///            "Baghdad",
    ///            "Asia/Baghdad",
    ///            "Istanbul",
    ///            "Europe/Istanbul",
    ///            "Kuwait",
    ///            "Asia/Kuwait",
    ///            "Minsk",
    ///            "Europe/Minsk",
    ///            "Moscow",
    ///            "Europe/Moscow",
    ///            "Nairobi",
    ///            "Africa/Nairobi",
    ///            "Riyadh",
    ///            "Asia/Riyadh",
    ///            "St. Petersburg",
    ///            "Volgograd",
    ///            "Europe/Volgograd",
    ///            "Tehran",
    ///            "Asia/Tehran",
    ///            "Abu Dhabi",
    ///            "Asia/Muscat",
    ///            "Baku",
    ///            "Asia/Baku",
    ///            "Muscat",
    ///            "Samara",
    ///            "Europe/Samara",
    ///            "Tbilisi",
    ///            "Asia/Tbilisi",
    ///            "Yerevan",
    ///            "Asia/Yerevan",
    ///            "Kabul",
    ///            "Asia/Kabul",
    ///            "Almaty",
    ///            "Asia/Almaty",
    ///            "Astana",
    ///            "Ekaterinburg",
    ///            "Asia/Yekaterinburg",
    ///            "Islamabad",
    ///            "Asia/Karachi",
    ///            "Karachi",
    ///            "Tashkent",
    ///            "Asia/Tashkent",
    ///            "Chennai",
    ///            "Asia/Kolkata",
    ///            "Kolkata",
    ///            "Mumbai",
    ///            "New Delhi",
    ///            "Sri Jayawardenepura",
    ///            "Asia/Colombo",
    ///            "Kathmandu",
    ///            "Asia/Kathmandu",
    ///            "Dhaka",
    ///            "Asia/Dhaka",
    ///            "Urumqi",
    ///            "Asia/Urumqi",
    ///            "Rangoon",
    ///            "Asia/Rangoon",
    ///            "Bangkok",
    ///            "Asia/Bangkok",
    ///            "Hanoi",
    ///            "Jakarta",
    ///            "Asia/Jakarta",
    ///            "Krasnoyarsk",
    ///            "Asia/Krasnoyarsk",
    ///            "Novosibirsk",
    ///            "Asia/Novosibirsk",
    ///            "Beijing",
    ///            "Asia/Shanghai",
    ///            "Chongqing",
    ///            "Asia/Chongqing",
    ///            "Hong Kong",
    ///            "Asia/Hong_Kong",
    ///            "Irkutsk",
    ///            "Asia/Irkutsk",
    ///            "Kuala Lumpur",
    ///            "Asia/Kuala_Lumpur",
    ///            "Perth",
    ///            "Australia/Perth",
    ///            "Singapore",
    ///            "Asia/Singapore",
    ///            "Taipei",
    ///            "Asia/Taipei",
    ///            "Ulaanbaatar",
    ///            "Asia/Ulaanbaatar",
    ///            "Osaka",
    ///            "Asia/Tokyo",
    ///            "Sapporo",
    ///            "Seoul",
    ///            "Asia/Seoul",
    ///            "Tokyo",
    ///            "Yakutsk",
    ///            "Asia/Yakutsk",
    ///            "Adelaide",
    ///            "Australia/Adelaide",
    ///            "Darwin",
    ///            "Australia/Darwin",
    ///            "Brisbane",
    ///            "Australia/Brisbane",
    ///            "Canberra",
    ///            "Australia/Canberra",
    ///            "Guam",
    ///            "Pacific/Guam",
    ///            "Hobart",
    ///            "Australia/Hobart",
    ///            "Melbourne",
    ///            "Australia/Melbourne",
    ///            "Port Moresby",
    ///            "Pacific/Port_Moresby",
    ///            "Sydney",
    ///            "Australia/Sydney",
    ///            "Vladivostok",
    ///            "Asia/Vladivostok",
    ///            "Magadan",
    ///            "Asia/Magadan",
    ///            "New Caledonia",
    ///            "Pacific/Noumea",
    ///            "Solomon Is.",
    ///            "Pacific/Guadalcanal",
    ///            "Srednekolymsk",
    ///            "Asia/Srednekolymsk",
    ///            "Auckland",
    ///            "Pacific/Auckland",
    ///            "Fiji",
    ///            "Pacific/Fiji",
    ///            "Kamchatka",
    ///            "Asia/Kamchatka",
    ///            "Marshall Is.",
    ///            "Pacific/Majuro",
    ///            "Wellington",
    ///            "Chatham Is.",
    ///            "Pacific/Chatham",
    ///            "Nuku'alofa",
    ///            "Pacific/Tongatapu",
    ///            "Samoa",
    ///            "Pacific/Apia",
    ///            "Tokelau Is.",
    ///            "Pacific/Fakaofo"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "operator",
    ///        "rule_type",
    ///        "values"
    ///      ],
    ///      "properties": {
    ///        "operator": {
    ///          "description": "How the alert source should be matched",
    ///          "type": "string",
    ///          "enum": [
    ///            "is",
    ///            "is_not",
    ///            "is_one_of",
    ///            "is_not_one_of"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "source"
    ///          ]
    ///        },
    ///        "values": {
    ///          "description": "Alert source values to match against (e.g., manual, datadog)",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    {
    ///      "required": [
    ///        "operator",
    ///        "rule_type"
    ///      ],
    ///      "properties": {
    ///        "operator": {
    ///          "description": "Whether the alert must (or must not) have related incidents",
    ///          "type": "string",
    ///          "enum": [
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "rule_type": {
    ///          "description": "The type of the escalation path rule",
    ///          "type": "string",
    ///          "enum": [
    ///            "related_incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(tag = "rule_type")]
    pub enum UpdateEscalationPolicyPathDataAttributesRulesItem {
        #[serde(rename = "alert_urgency")]
        AlertUrgency {
            ///Alert urgency ids for which this escalation path should be used
            urgency_ids: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "working_hour")]
        WorkingHour {
            ///Whether the escalation path should be used within working hours
            within_working_hour: bool,
        },
        #[serde(rename = "json_path")]
        JsonPath {
            ///JSON path to extract value from payload
            json_path: ::std::string::String,
            ///How JSON path value should be matched
            operator: UpdateEscalationPolicyPathDataAttributesRulesItemOperator,
            ///Value with which JSON path value should be matched
            #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
            value: ::std::option::Option<::std::string::String>,
            ///Values to match against (for is_one_of / is_not_one_of operators)
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "field")]
        Field {
            ///The ID of the alert field
            fieldable_id: ::std::string::String,
            ///The type of the fieldable (e.g., AlertField)
            fieldable_type: ::std::string::String,
            ///How the alert field value should be matched
            operator: UpdateEscalationPolicyPathDataAttributesRulesItemOperator,
            ///Values to match against
            #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "service")]
        Service {
            ///Service ids for which this escalation path should be used
            service_ids: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "deferral_window")]
        DeferralWindow {
            ///Time windows during which alerts are deferred
            time_blocks: ::std::vec::Vec<
                UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
            >,
            ///Time zone for the deferral window
            time_zone: UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone,
        },
        #[serde(rename = "source")]
        Source {
            ///How the alert source should be matched
            operator: UpdateEscalationPolicyPathDataAttributesRulesItemOperator,
            ///Alert source values to match against (e.g., manual, datadog)
            values: ::std::vec::Vec<::std::string::String>,
        },
        #[serde(rename = "related_incidents")]
        RelatedIncidents {
            ///Whether the alert must (or must not) have related incidents
            operator: UpdateEscalationPolicyPathDataAttributesRulesItemOperator,
        },
    }
    ///How JSON path value should be matched
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How JSON path value should be matched",
    ///  "type": "string",
    ///  "enum": [
    ///    "is",
    ///    "is_not",
    ///    "contains",
    ///    "does_not_contain",
    ///    "is_one_of",
    ///    "is_not_one_of",
    ///    "is_set",
    ///    "is_not_set"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesRulesItemOperator {
        #[serde(rename = "is")]
        Is,
        #[serde(rename = "is_not")]
        IsNot,
        #[serde(rename = "contains")]
        Contains,
        #[serde(rename = "does_not_contain")]
        DoesNotContain,
        #[serde(rename = "is_one_of")]
        IsOneOf,
        #[serde(rename = "is_not_one_of")]
        IsNotOneOf,
        #[serde(rename = "is_set")]
        IsSet,
        #[serde(rename = "is_not_set")]
        IsNotSet,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesRulesItemOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("is"),
                Self::IsNot => f.write_str("is_not"),
                Self::Contains => f.write_str("contains"),
                Self::DoesNotContain => f.write_str("does_not_contain"),
                Self::IsOneOf => f.write_str("is_one_of"),
                Self::IsNotOneOf => f.write_str("is_not_one_of"),
                Self::IsSet => f.write_str("is_set"),
                Self::IsNotSet => f.write_str("is_not_set"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesRulesItemOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "is" => Ok(Self::Is),
                "is_not" => Ok(Self::IsNot),
                "contains" => Ok(Self::Contains),
                "does_not_contain" => Ok(Self::DoesNotContain),
                "is_one_of" => Ok(Self::IsOneOf),
                "is_not_one_of" => Ok(Self::IsNotOneOf),
                "is_set" => Ok(Self::IsSet),
                "is_not_set" => Ok(Self::IsNotSet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesRulesItemOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "all_day": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "end_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "friday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "monday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "saturday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "start_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "sunday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "thursday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "tuesday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "wednesday": {
    ///      "default": false,
    ///      "type": "boolean"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
        #[serde(default)]
        pub all_day: bool,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        #[serde(default)]
        pub friday: bool,
        #[serde(default)]
        pub monday: bool,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default)]
        pub saturday: bool,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
        #[serde(default)]
        pub sunday: bool,
        #[serde(default)]
        pub thursday: bool,
        #[serde(default)]
        pub tuesday: bool,
        #[serde(default)]
        pub wednesday: bool,
    }
    impl ::std::default::Default
    for UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
        fn default() -> Self {
            Self {
                all_day: Default::default(),
                end_time: Default::default(),
                friday: Default::default(),
                monday: Default::default(),
                position: Default::default(),
                saturday: Default::default(),
                start_time: Default::default(),
                sunday: Default::default(),
                thursday: Default::default(),
                tuesday: Default::default(),
                wednesday: Default::default(),
            }
        }
    }
    impl UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
        pub fn builder() -> builder::UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            Default::default()
        }
    }
    ///Time zone for the deferral window
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone for the deferral window",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesRulesItemTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Time zone used for time restrictions.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Time zone used for time restrictions.",
    ///  "type": "string",
    ///  "enum": [
    ///    "International Date Line West",
    ///    "Etc/GMT+12",
    ///    "American Samoa",
    ///    "Pacific/Pago_Pago",
    ///    "Midway Island",
    ///    "Pacific/Midway",
    ///    "Hawaii",
    ///    "Pacific/Honolulu",
    ///    "Alaska",
    ///    "America/Juneau",
    ///    "Pacific Time (US & Canada)",
    ///    "America/Los_Angeles",
    ///    "Tijuana",
    ///    "America/Tijuana",
    ///    "Arizona",
    ///    "America/Phoenix",
    ///    "Mazatlan",
    ///    "America/Mazatlan",
    ///    "Mountain Time (US & Canada)",
    ///    "America/Denver",
    ///    "Central America",
    ///    "America/Guatemala",
    ///    "Central Time (US & Canada)",
    ///    "America/Chicago",
    ///    "Chihuahua",
    ///    "America/Chihuahua",
    ///    "Guadalajara",
    ///    "America/Mexico_City",
    ///    "Mexico City",
    ///    "Monterrey",
    ///    "America/Monterrey",
    ///    "Saskatchewan",
    ///    "America/Regina",
    ///    "Bogota",
    ///    "America/Bogota",
    ///    "Eastern Time (US & Canada)",
    ///    "America/New_York",
    ///    "Indiana (East)",
    ///    "America/Indiana/Indianapolis",
    ///    "Lima",
    ///    "America/Lima",
    ///    "Quito",
    ///    "Atlantic Time (Canada)",
    ///    "America/Halifax",
    ///    "Caracas",
    ///    "America/Caracas",
    ///    "Georgetown",
    ///    "America/Guyana",
    ///    "La Paz",
    ///    "America/La_Paz",
    ///    "Puerto Rico",
    ///    "America/Puerto_Rico",
    ///    "Santiago",
    ///    "America/Santiago",
    ///    "Newfoundland",
    ///    "America/St_Johns",
    ///    "Asuncion",
    ///    "America/Asuncion",
    ///    "Brasilia",
    ///    "America/Sao_Paulo",
    ///    "Buenos Aires",
    ///    "America/Argentina/Buenos_Aires",
    ///    "Montevideo",
    ///    "America/Montevideo",
    ///    "Greenland",
    ///    "America/Nuuk",
    ///    "Mid-Atlantic",
    ///    "Atlantic/South_Georgia",
    ///    "Azores",
    ///    "Atlantic/Azores",
    ///    "Cape Verde Is.",
    ///    "Atlantic/Cape_Verde",
    ///    "Edinburgh",
    ///    "Europe/London",
    ///    "Lisbon",
    ///    "Europe/Lisbon",
    ///    "London",
    ///    "Monrovia",
    ///    "Africa/Monrovia",
    ///    "UTC",
    ///    "Etc/UTC",
    ///    "Amsterdam",
    ///    "Europe/Amsterdam",
    ///    "Belgrade",
    ///    "Europe/Belgrade",
    ///    "Berlin",
    ///    "Europe/Berlin",
    ///    "Bern",
    ///    "Europe/Zurich",
    ///    "Bratislava",
    ///    "Europe/Bratislava",
    ///    "Brussels",
    ///    "Europe/Brussels",
    ///    "Budapest",
    ///    "Europe/Budapest",
    ///    "Casablanca",
    ///    "Africa/Casablanca",
    ///    "Copenhagen",
    ///    "Europe/Copenhagen",
    ///    "Dublin",
    ///    "Europe/Dublin",
    ///    "Ljubljana",
    ///    "Europe/Ljubljana",
    ///    "Madrid",
    ///    "Europe/Madrid",
    ///    "Paris",
    ///    "Europe/Paris",
    ///    "Prague",
    ///    "Europe/Prague",
    ///    "Rome",
    ///    "Europe/Rome",
    ///    "Sarajevo",
    ///    "Europe/Sarajevo",
    ///    "Skopje",
    ///    "Europe/Skopje",
    ///    "Stockholm",
    ///    "Europe/Stockholm",
    ///    "Vienna",
    ///    "Europe/Vienna",
    ///    "Warsaw",
    ///    "Europe/Warsaw",
    ///    "West Central Africa",
    ///    "Africa/Algiers",
    ///    "Zagreb",
    ///    "Europe/Zagreb",
    ///    "Zurich",
    ///    "Athens",
    ///    "Europe/Athens",
    ///    "Bucharest",
    ///    "Europe/Bucharest",
    ///    "Cairo",
    ///    "Africa/Cairo",
    ///    "Harare",
    ///    "Africa/Harare",
    ///    "Helsinki",
    ///    "Europe/Helsinki",
    ///    "Jerusalem",
    ///    "Asia/Jerusalem",
    ///    "Kaliningrad",
    ///    "Europe/Kaliningrad",
    ///    "Kyiv",
    ///    "Europe/Kiev",
    ///    "Pretoria",
    ///    "Africa/Johannesburg",
    ///    "Riga",
    ///    "Europe/Riga",
    ///    "Sofia",
    ///    "Europe/Sofia",
    ///    "Tallinn",
    ///    "Europe/Tallinn",
    ///    "Vilnius",
    ///    "Europe/Vilnius",
    ///    "Baghdad",
    ///    "Asia/Baghdad",
    ///    "Istanbul",
    ///    "Europe/Istanbul",
    ///    "Kuwait",
    ///    "Asia/Kuwait",
    ///    "Minsk",
    ///    "Europe/Minsk",
    ///    "Moscow",
    ///    "Europe/Moscow",
    ///    "Nairobi",
    ///    "Africa/Nairobi",
    ///    "Riyadh",
    ///    "Asia/Riyadh",
    ///    "St. Petersburg",
    ///    "Volgograd",
    ///    "Europe/Volgograd",
    ///    "Tehran",
    ///    "Asia/Tehran",
    ///    "Abu Dhabi",
    ///    "Asia/Muscat",
    ///    "Baku",
    ///    "Asia/Baku",
    ///    "Muscat",
    ///    "Samara",
    ///    "Europe/Samara",
    ///    "Tbilisi",
    ///    "Asia/Tbilisi",
    ///    "Yerevan",
    ///    "Asia/Yerevan",
    ///    "Kabul",
    ///    "Asia/Kabul",
    ///    "Almaty",
    ///    "Asia/Almaty",
    ///    "Astana",
    ///    "Ekaterinburg",
    ///    "Asia/Yekaterinburg",
    ///    "Islamabad",
    ///    "Asia/Karachi",
    ///    "Karachi",
    ///    "Tashkent",
    ///    "Asia/Tashkent",
    ///    "Chennai",
    ///    "Asia/Kolkata",
    ///    "Kolkata",
    ///    "Mumbai",
    ///    "New Delhi",
    ///    "Sri Jayawardenepura",
    ///    "Asia/Colombo",
    ///    "Kathmandu",
    ///    "Asia/Kathmandu",
    ///    "Dhaka",
    ///    "Asia/Dhaka",
    ///    "Urumqi",
    ///    "Asia/Urumqi",
    ///    "Rangoon",
    ///    "Asia/Rangoon",
    ///    "Bangkok",
    ///    "Asia/Bangkok",
    ///    "Hanoi",
    ///    "Jakarta",
    ///    "Asia/Jakarta",
    ///    "Krasnoyarsk",
    ///    "Asia/Krasnoyarsk",
    ///    "Novosibirsk",
    ///    "Asia/Novosibirsk",
    ///    "Beijing",
    ///    "Asia/Shanghai",
    ///    "Chongqing",
    ///    "Asia/Chongqing",
    ///    "Hong Kong",
    ///    "Asia/Hong_Kong",
    ///    "Irkutsk",
    ///    "Asia/Irkutsk",
    ///    "Kuala Lumpur",
    ///    "Asia/Kuala_Lumpur",
    ///    "Perth",
    ///    "Australia/Perth",
    ///    "Singapore",
    ///    "Asia/Singapore",
    ///    "Taipei",
    ///    "Asia/Taipei",
    ///    "Ulaanbaatar",
    ///    "Asia/Ulaanbaatar",
    ///    "Osaka",
    ///    "Asia/Tokyo",
    ///    "Sapporo",
    ///    "Seoul",
    ///    "Asia/Seoul",
    ///    "Tokyo",
    ///    "Yakutsk",
    ///    "Asia/Yakutsk",
    ///    "Adelaide",
    ///    "Australia/Adelaide",
    ///    "Darwin",
    ///    "Australia/Darwin",
    ///    "Brisbane",
    ///    "Australia/Brisbane",
    ///    "Canberra",
    ///    "Australia/Canberra",
    ///    "Guam",
    ///    "Pacific/Guam",
    ///    "Hobart",
    ///    "Australia/Hobart",
    ///    "Melbourne",
    ///    "Australia/Melbourne",
    ///    "Port Moresby",
    ///    "Pacific/Port_Moresby",
    ///    "Sydney",
    ///    "Australia/Sydney",
    ///    "Vladivostok",
    ///    "Asia/Vladivostok",
    ///    "Magadan",
    ///    "Asia/Magadan",
    ///    "New Caledonia",
    ///    "Pacific/Noumea",
    ///    "Solomon Is.",
    ///    "Pacific/Guadalcanal",
    ///    "Srednekolymsk",
    ///    "Asia/Srednekolymsk",
    ///    "Auckland",
    ///    "Pacific/Auckland",
    ///    "Fiji",
    ///    "Pacific/Fiji",
    ///    "Kamchatka",
    ///    "Asia/Kamchatka",
    ///    "Marshall Is.",
    ///    "Pacific/Majuro",
    ///    "Wellington",
    ///    "Chatham Is.",
    ///    "Pacific/Chatham",
    ///    "Nuku'alofa",
    ///    "Pacific/Tongatapu",
    ///    "Samoa",
    ///    "Pacific/Apia",
    ///    "Tokelau Is.",
    ///    "Pacific/Fakaofo"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        #[serde(rename = "International Date Line West")]
        InternationalDateLineWest,
        #[serde(rename = "Etc/GMT+12")]
        EtcGmt12,
        #[serde(rename = "American Samoa")]
        AmericanSamoa,
        #[serde(rename = "Pacific/Pago_Pago")]
        PacificPagoPago,
        #[serde(rename = "Midway Island")]
        MidwayIsland,
        #[serde(rename = "Pacific/Midway")]
        PacificMidway,
        Hawaii,
        #[serde(rename = "Pacific/Honolulu")]
        PacificHonolulu,
        Alaska,
        #[serde(rename = "America/Juneau")]
        AmericaJuneau,
        #[serde(rename = "Pacific Time (US & Canada)")]
        PacificTimeUsCanada,
        #[serde(rename = "America/Los_Angeles")]
        AmericaLosAngeles,
        Tijuana,
        #[serde(rename = "America/Tijuana")]
        AmericaTijuana,
        Arizona,
        #[serde(rename = "America/Phoenix")]
        AmericaPhoenix,
        Mazatlan,
        #[serde(rename = "America/Mazatlan")]
        AmericaMazatlan,
        #[serde(rename = "Mountain Time (US & Canada)")]
        MountainTimeUsCanada,
        #[serde(rename = "America/Denver")]
        AmericaDenver,
        #[serde(rename = "Central America")]
        CentralAmerica,
        #[serde(rename = "America/Guatemala")]
        AmericaGuatemala,
        #[serde(rename = "Central Time (US & Canada)")]
        CentralTimeUsCanada,
        #[serde(rename = "America/Chicago")]
        AmericaChicago,
        Chihuahua,
        #[serde(rename = "America/Chihuahua")]
        AmericaChihuahua,
        Guadalajara,
        #[serde(rename = "America/Mexico_City")]
        AmericaMexicoCity,
        #[serde(rename = "Mexico City")]
        MexicoCity,
        Monterrey,
        #[serde(rename = "America/Monterrey")]
        AmericaMonterrey,
        Saskatchewan,
        #[serde(rename = "America/Regina")]
        AmericaRegina,
        Bogota,
        #[serde(rename = "America/Bogota")]
        AmericaBogota,
        #[serde(rename = "Eastern Time (US & Canada)")]
        EasternTimeUsCanada,
        #[serde(rename = "America/New_York")]
        AmericaNewYork,
        #[serde(rename = "Indiana (East)")]
        IndianaEast,
        #[serde(rename = "America/Indiana/Indianapolis")]
        AmericaIndianaIndianapolis,
        Lima,
        #[serde(rename = "America/Lima")]
        AmericaLima,
        Quito,
        #[serde(rename = "Atlantic Time (Canada)")]
        AtlanticTimeCanada,
        #[serde(rename = "America/Halifax")]
        AmericaHalifax,
        Caracas,
        #[serde(rename = "America/Caracas")]
        AmericaCaracas,
        Georgetown,
        #[serde(rename = "America/Guyana")]
        AmericaGuyana,
        #[serde(rename = "La Paz")]
        LaPaz,
        #[serde(rename = "America/La_Paz")]
        AmericaLaPaz,
        #[serde(rename = "Puerto Rico")]
        PuertoRico,
        #[serde(rename = "America/Puerto_Rico")]
        AmericaPuertoRico,
        Santiago,
        #[serde(rename = "America/Santiago")]
        AmericaSantiago,
        Newfoundland,
        #[serde(rename = "America/St_Johns")]
        AmericaStJohns,
        Asuncion,
        #[serde(rename = "America/Asuncion")]
        AmericaAsuncion,
        Brasilia,
        #[serde(rename = "America/Sao_Paulo")]
        AmericaSaoPaulo,
        #[serde(rename = "Buenos Aires")]
        BuenosAires,
        #[serde(rename = "America/Argentina/Buenos_Aires")]
        AmericaArgentinaBuenosAires,
        Montevideo,
        #[serde(rename = "America/Montevideo")]
        AmericaMontevideo,
        Greenland,
        #[serde(rename = "America/Nuuk")]
        AmericaNuuk,
        #[serde(rename = "Mid-Atlantic")]
        MidAtlantic,
        #[serde(rename = "Atlantic/South_Georgia")]
        AtlanticSouthGeorgia,
        Azores,
        #[serde(rename = "Atlantic/Azores")]
        AtlanticAzores,
        #[serde(rename = "Cape Verde Is.")]
        CapeVerdeIs,
        #[serde(rename = "Atlantic/Cape_Verde")]
        AtlanticCapeVerde,
        Edinburgh,
        #[serde(rename = "Europe/London")]
        EuropeLondon,
        Lisbon,
        #[serde(rename = "Europe/Lisbon")]
        EuropeLisbon,
        London,
        Monrovia,
        #[serde(rename = "Africa/Monrovia")]
        AfricaMonrovia,
        #[serde(rename = "UTC")]
        Utc,
        #[serde(rename = "Etc/UTC")]
        EtcUtc,
        Amsterdam,
        #[serde(rename = "Europe/Amsterdam")]
        EuropeAmsterdam,
        Belgrade,
        #[serde(rename = "Europe/Belgrade")]
        EuropeBelgrade,
        Berlin,
        #[serde(rename = "Europe/Berlin")]
        EuropeBerlin,
        Bern,
        #[serde(rename = "Europe/Zurich")]
        EuropeZurich,
        Bratislava,
        #[serde(rename = "Europe/Bratislava")]
        EuropeBratislava,
        Brussels,
        #[serde(rename = "Europe/Brussels")]
        EuropeBrussels,
        Budapest,
        #[serde(rename = "Europe/Budapest")]
        EuropeBudapest,
        Casablanca,
        #[serde(rename = "Africa/Casablanca")]
        AfricaCasablanca,
        Copenhagen,
        #[serde(rename = "Europe/Copenhagen")]
        EuropeCopenhagen,
        Dublin,
        #[serde(rename = "Europe/Dublin")]
        EuropeDublin,
        Ljubljana,
        #[serde(rename = "Europe/Ljubljana")]
        EuropeLjubljana,
        Madrid,
        #[serde(rename = "Europe/Madrid")]
        EuropeMadrid,
        Paris,
        #[serde(rename = "Europe/Paris")]
        EuropeParis,
        Prague,
        #[serde(rename = "Europe/Prague")]
        EuropePrague,
        Rome,
        #[serde(rename = "Europe/Rome")]
        EuropeRome,
        Sarajevo,
        #[serde(rename = "Europe/Sarajevo")]
        EuropeSarajevo,
        Skopje,
        #[serde(rename = "Europe/Skopje")]
        EuropeSkopje,
        Stockholm,
        #[serde(rename = "Europe/Stockholm")]
        EuropeStockholm,
        Vienna,
        #[serde(rename = "Europe/Vienna")]
        EuropeVienna,
        Warsaw,
        #[serde(rename = "Europe/Warsaw")]
        EuropeWarsaw,
        #[serde(rename = "West Central Africa")]
        WestCentralAfrica,
        #[serde(rename = "Africa/Algiers")]
        AfricaAlgiers,
        Zagreb,
        #[serde(rename = "Europe/Zagreb")]
        EuropeZagreb,
        Zurich,
        Athens,
        #[serde(rename = "Europe/Athens")]
        EuropeAthens,
        Bucharest,
        #[serde(rename = "Europe/Bucharest")]
        EuropeBucharest,
        Cairo,
        #[serde(rename = "Africa/Cairo")]
        AfricaCairo,
        Harare,
        #[serde(rename = "Africa/Harare")]
        AfricaHarare,
        Helsinki,
        #[serde(rename = "Europe/Helsinki")]
        EuropeHelsinki,
        Jerusalem,
        #[serde(rename = "Asia/Jerusalem")]
        AsiaJerusalem,
        Kaliningrad,
        #[serde(rename = "Europe/Kaliningrad")]
        EuropeKaliningrad,
        Kyiv,
        #[serde(rename = "Europe/Kiev")]
        EuropeKiev,
        Pretoria,
        #[serde(rename = "Africa/Johannesburg")]
        AfricaJohannesburg,
        Riga,
        #[serde(rename = "Europe/Riga")]
        EuropeRiga,
        Sofia,
        #[serde(rename = "Europe/Sofia")]
        EuropeSofia,
        Tallinn,
        #[serde(rename = "Europe/Tallinn")]
        EuropeTallinn,
        Vilnius,
        #[serde(rename = "Europe/Vilnius")]
        EuropeVilnius,
        Baghdad,
        #[serde(rename = "Asia/Baghdad")]
        AsiaBaghdad,
        Istanbul,
        #[serde(rename = "Europe/Istanbul")]
        EuropeIstanbul,
        Kuwait,
        #[serde(rename = "Asia/Kuwait")]
        AsiaKuwait,
        Minsk,
        #[serde(rename = "Europe/Minsk")]
        EuropeMinsk,
        Moscow,
        #[serde(rename = "Europe/Moscow")]
        EuropeMoscow,
        Nairobi,
        #[serde(rename = "Africa/Nairobi")]
        AfricaNairobi,
        Riyadh,
        #[serde(rename = "Asia/Riyadh")]
        AsiaRiyadh,
        #[serde(rename = "St. Petersburg")]
        StPetersburg,
        Volgograd,
        #[serde(rename = "Europe/Volgograd")]
        EuropeVolgograd,
        Tehran,
        #[serde(rename = "Asia/Tehran")]
        AsiaTehran,
        #[serde(rename = "Abu Dhabi")]
        AbuDhabi,
        #[serde(rename = "Asia/Muscat")]
        AsiaMuscat,
        Baku,
        #[serde(rename = "Asia/Baku")]
        AsiaBaku,
        Muscat,
        Samara,
        #[serde(rename = "Europe/Samara")]
        EuropeSamara,
        Tbilisi,
        #[serde(rename = "Asia/Tbilisi")]
        AsiaTbilisi,
        Yerevan,
        #[serde(rename = "Asia/Yerevan")]
        AsiaYerevan,
        Kabul,
        #[serde(rename = "Asia/Kabul")]
        AsiaKabul,
        Almaty,
        #[serde(rename = "Asia/Almaty")]
        AsiaAlmaty,
        Astana,
        Ekaterinburg,
        #[serde(rename = "Asia/Yekaterinburg")]
        AsiaYekaterinburg,
        Islamabad,
        #[serde(rename = "Asia/Karachi")]
        AsiaKarachi,
        Karachi,
        Tashkent,
        #[serde(rename = "Asia/Tashkent")]
        AsiaTashkent,
        Chennai,
        #[serde(rename = "Asia/Kolkata")]
        AsiaKolkata,
        Kolkata,
        Mumbai,
        #[serde(rename = "New Delhi")]
        NewDelhi,
        #[serde(rename = "Sri Jayawardenepura")]
        SriJayawardenepura,
        #[serde(rename = "Asia/Colombo")]
        AsiaColombo,
        Kathmandu,
        #[serde(rename = "Asia/Kathmandu")]
        AsiaKathmandu,
        Dhaka,
        #[serde(rename = "Asia/Dhaka")]
        AsiaDhaka,
        Urumqi,
        #[serde(rename = "Asia/Urumqi")]
        AsiaUrumqi,
        Rangoon,
        #[serde(rename = "Asia/Rangoon")]
        AsiaRangoon,
        Bangkok,
        #[serde(rename = "Asia/Bangkok")]
        AsiaBangkok,
        Hanoi,
        Jakarta,
        #[serde(rename = "Asia/Jakarta")]
        AsiaJakarta,
        Krasnoyarsk,
        #[serde(rename = "Asia/Krasnoyarsk")]
        AsiaKrasnoyarsk,
        Novosibirsk,
        #[serde(rename = "Asia/Novosibirsk")]
        AsiaNovosibirsk,
        Beijing,
        #[serde(rename = "Asia/Shanghai")]
        AsiaShanghai,
        Chongqing,
        #[serde(rename = "Asia/Chongqing")]
        AsiaChongqing,
        #[serde(rename = "Hong Kong")]
        HongKong,
        #[serde(rename = "Asia/Hong_Kong")]
        AsiaHongKong,
        Irkutsk,
        #[serde(rename = "Asia/Irkutsk")]
        AsiaIrkutsk,
        #[serde(rename = "Kuala Lumpur")]
        KualaLumpur,
        #[serde(rename = "Asia/Kuala_Lumpur")]
        AsiaKualaLumpur,
        Perth,
        #[serde(rename = "Australia/Perth")]
        AustraliaPerth,
        Singapore,
        #[serde(rename = "Asia/Singapore")]
        AsiaSingapore,
        Taipei,
        #[serde(rename = "Asia/Taipei")]
        AsiaTaipei,
        Ulaanbaatar,
        #[serde(rename = "Asia/Ulaanbaatar")]
        AsiaUlaanbaatar,
        Osaka,
        #[serde(rename = "Asia/Tokyo")]
        AsiaTokyo,
        Sapporo,
        Seoul,
        #[serde(rename = "Asia/Seoul")]
        AsiaSeoul,
        Tokyo,
        Yakutsk,
        #[serde(rename = "Asia/Yakutsk")]
        AsiaYakutsk,
        Adelaide,
        #[serde(rename = "Australia/Adelaide")]
        AustraliaAdelaide,
        Darwin,
        #[serde(rename = "Australia/Darwin")]
        AustraliaDarwin,
        Brisbane,
        #[serde(rename = "Australia/Brisbane")]
        AustraliaBrisbane,
        Canberra,
        #[serde(rename = "Australia/Canberra")]
        AustraliaCanberra,
        Guam,
        #[serde(rename = "Pacific/Guam")]
        PacificGuam,
        Hobart,
        #[serde(rename = "Australia/Hobart")]
        AustraliaHobart,
        Melbourne,
        #[serde(rename = "Australia/Melbourne")]
        AustraliaMelbourne,
        #[serde(rename = "Port Moresby")]
        PortMoresby,
        #[serde(rename = "Pacific/Port_Moresby")]
        PacificPortMoresby,
        Sydney,
        #[serde(rename = "Australia/Sydney")]
        AustraliaSydney,
        Vladivostok,
        #[serde(rename = "Asia/Vladivostok")]
        AsiaVladivostok,
        Magadan,
        #[serde(rename = "Asia/Magadan")]
        AsiaMagadan,
        #[serde(rename = "New Caledonia")]
        NewCaledonia,
        #[serde(rename = "Pacific/Noumea")]
        PacificNoumea,
        #[serde(rename = "Solomon Is.")]
        SolomonIs,
        #[serde(rename = "Pacific/Guadalcanal")]
        PacificGuadalcanal,
        Srednekolymsk,
        #[serde(rename = "Asia/Srednekolymsk")]
        AsiaSrednekolymsk,
        Auckland,
        #[serde(rename = "Pacific/Auckland")]
        PacificAuckland,
        Fiji,
        #[serde(rename = "Pacific/Fiji")]
        PacificFiji,
        Kamchatka,
        #[serde(rename = "Asia/Kamchatka")]
        AsiaKamchatka,
        #[serde(rename = "Marshall Is.")]
        MarshallIs,
        #[serde(rename = "Pacific/Majuro")]
        PacificMajuro,
        Wellington,
        #[serde(rename = "Chatham Is.")]
        ChathamIs,
        #[serde(rename = "Pacific/Chatham")]
        PacificChatham,
        #[serde(rename = "Nuku'alofa")]
        Nukualofa,
        #[serde(rename = "Pacific/Tongatapu")]
        PacificTongatapu,
        Samoa,
        #[serde(rename = "Pacific/Apia")]
        PacificApia,
        #[serde(rename = "Tokelau Is.")]
        TokelauIs,
        #[serde(rename = "Pacific/Fakaofo")]
        PacificFakaofo,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InternationalDateLineWest => {
                    f.write_str("International Date Line West")
                }
                Self::EtcGmt12 => f.write_str("Etc/GMT+12"),
                Self::AmericanSamoa => f.write_str("American Samoa"),
                Self::PacificPagoPago => f.write_str("Pacific/Pago_Pago"),
                Self::MidwayIsland => f.write_str("Midway Island"),
                Self::PacificMidway => f.write_str("Pacific/Midway"),
                Self::Hawaii => f.write_str("Hawaii"),
                Self::PacificHonolulu => f.write_str("Pacific/Honolulu"),
                Self::Alaska => f.write_str("Alaska"),
                Self::AmericaJuneau => f.write_str("America/Juneau"),
                Self::PacificTimeUsCanada => f.write_str("Pacific Time (US & Canada)"),
                Self::AmericaLosAngeles => f.write_str("America/Los_Angeles"),
                Self::Tijuana => f.write_str("Tijuana"),
                Self::AmericaTijuana => f.write_str("America/Tijuana"),
                Self::Arizona => f.write_str("Arizona"),
                Self::AmericaPhoenix => f.write_str("America/Phoenix"),
                Self::Mazatlan => f.write_str("Mazatlan"),
                Self::AmericaMazatlan => f.write_str("America/Mazatlan"),
                Self::MountainTimeUsCanada => f.write_str("Mountain Time (US & Canada)"),
                Self::AmericaDenver => f.write_str("America/Denver"),
                Self::CentralAmerica => f.write_str("Central America"),
                Self::AmericaGuatemala => f.write_str("America/Guatemala"),
                Self::CentralTimeUsCanada => f.write_str("Central Time (US & Canada)"),
                Self::AmericaChicago => f.write_str("America/Chicago"),
                Self::Chihuahua => f.write_str("Chihuahua"),
                Self::AmericaChihuahua => f.write_str("America/Chihuahua"),
                Self::Guadalajara => f.write_str("Guadalajara"),
                Self::AmericaMexicoCity => f.write_str("America/Mexico_City"),
                Self::MexicoCity => f.write_str("Mexico City"),
                Self::Monterrey => f.write_str("Monterrey"),
                Self::AmericaMonterrey => f.write_str("America/Monterrey"),
                Self::Saskatchewan => f.write_str("Saskatchewan"),
                Self::AmericaRegina => f.write_str("America/Regina"),
                Self::Bogota => f.write_str("Bogota"),
                Self::AmericaBogota => f.write_str("America/Bogota"),
                Self::EasternTimeUsCanada => f.write_str("Eastern Time (US & Canada)"),
                Self::AmericaNewYork => f.write_str("America/New_York"),
                Self::IndianaEast => f.write_str("Indiana (East)"),
                Self::AmericaIndianaIndianapolis => {
                    f.write_str("America/Indiana/Indianapolis")
                }
                Self::Lima => f.write_str("Lima"),
                Self::AmericaLima => f.write_str("America/Lima"),
                Self::Quito => f.write_str("Quito"),
                Self::AtlanticTimeCanada => f.write_str("Atlantic Time (Canada)"),
                Self::AmericaHalifax => f.write_str("America/Halifax"),
                Self::Caracas => f.write_str("Caracas"),
                Self::AmericaCaracas => f.write_str("America/Caracas"),
                Self::Georgetown => f.write_str("Georgetown"),
                Self::AmericaGuyana => f.write_str("America/Guyana"),
                Self::LaPaz => f.write_str("La Paz"),
                Self::AmericaLaPaz => f.write_str("America/La_Paz"),
                Self::PuertoRico => f.write_str("Puerto Rico"),
                Self::AmericaPuertoRico => f.write_str("America/Puerto_Rico"),
                Self::Santiago => f.write_str("Santiago"),
                Self::AmericaSantiago => f.write_str("America/Santiago"),
                Self::Newfoundland => f.write_str("Newfoundland"),
                Self::AmericaStJohns => f.write_str("America/St_Johns"),
                Self::Asuncion => f.write_str("Asuncion"),
                Self::AmericaAsuncion => f.write_str("America/Asuncion"),
                Self::Brasilia => f.write_str("Brasilia"),
                Self::AmericaSaoPaulo => f.write_str("America/Sao_Paulo"),
                Self::BuenosAires => f.write_str("Buenos Aires"),
                Self::AmericaArgentinaBuenosAires => {
                    f.write_str("America/Argentina/Buenos_Aires")
                }
                Self::Montevideo => f.write_str("Montevideo"),
                Self::AmericaMontevideo => f.write_str("America/Montevideo"),
                Self::Greenland => f.write_str("Greenland"),
                Self::AmericaNuuk => f.write_str("America/Nuuk"),
                Self::MidAtlantic => f.write_str("Mid-Atlantic"),
                Self::AtlanticSouthGeorgia => f.write_str("Atlantic/South_Georgia"),
                Self::Azores => f.write_str("Azores"),
                Self::AtlanticAzores => f.write_str("Atlantic/Azores"),
                Self::CapeVerdeIs => f.write_str("Cape Verde Is."),
                Self::AtlanticCapeVerde => f.write_str("Atlantic/Cape_Verde"),
                Self::Edinburgh => f.write_str("Edinburgh"),
                Self::EuropeLondon => f.write_str("Europe/London"),
                Self::Lisbon => f.write_str("Lisbon"),
                Self::EuropeLisbon => f.write_str("Europe/Lisbon"),
                Self::London => f.write_str("London"),
                Self::Monrovia => f.write_str("Monrovia"),
                Self::AfricaMonrovia => f.write_str("Africa/Monrovia"),
                Self::Utc => f.write_str("UTC"),
                Self::EtcUtc => f.write_str("Etc/UTC"),
                Self::Amsterdam => f.write_str("Amsterdam"),
                Self::EuropeAmsterdam => f.write_str("Europe/Amsterdam"),
                Self::Belgrade => f.write_str("Belgrade"),
                Self::EuropeBelgrade => f.write_str("Europe/Belgrade"),
                Self::Berlin => f.write_str("Berlin"),
                Self::EuropeBerlin => f.write_str("Europe/Berlin"),
                Self::Bern => f.write_str("Bern"),
                Self::EuropeZurich => f.write_str("Europe/Zurich"),
                Self::Bratislava => f.write_str("Bratislava"),
                Self::EuropeBratislava => f.write_str("Europe/Bratislava"),
                Self::Brussels => f.write_str("Brussels"),
                Self::EuropeBrussels => f.write_str("Europe/Brussels"),
                Self::Budapest => f.write_str("Budapest"),
                Self::EuropeBudapest => f.write_str("Europe/Budapest"),
                Self::Casablanca => f.write_str("Casablanca"),
                Self::AfricaCasablanca => f.write_str("Africa/Casablanca"),
                Self::Copenhagen => f.write_str("Copenhagen"),
                Self::EuropeCopenhagen => f.write_str("Europe/Copenhagen"),
                Self::Dublin => f.write_str("Dublin"),
                Self::EuropeDublin => f.write_str("Europe/Dublin"),
                Self::Ljubljana => f.write_str("Ljubljana"),
                Self::EuropeLjubljana => f.write_str("Europe/Ljubljana"),
                Self::Madrid => f.write_str("Madrid"),
                Self::EuropeMadrid => f.write_str("Europe/Madrid"),
                Self::Paris => f.write_str("Paris"),
                Self::EuropeParis => f.write_str("Europe/Paris"),
                Self::Prague => f.write_str("Prague"),
                Self::EuropePrague => f.write_str("Europe/Prague"),
                Self::Rome => f.write_str("Rome"),
                Self::EuropeRome => f.write_str("Europe/Rome"),
                Self::Sarajevo => f.write_str("Sarajevo"),
                Self::EuropeSarajevo => f.write_str("Europe/Sarajevo"),
                Self::Skopje => f.write_str("Skopje"),
                Self::EuropeSkopje => f.write_str("Europe/Skopje"),
                Self::Stockholm => f.write_str("Stockholm"),
                Self::EuropeStockholm => f.write_str("Europe/Stockholm"),
                Self::Vienna => f.write_str("Vienna"),
                Self::EuropeVienna => f.write_str("Europe/Vienna"),
                Self::Warsaw => f.write_str("Warsaw"),
                Self::EuropeWarsaw => f.write_str("Europe/Warsaw"),
                Self::WestCentralAfrica => f.write_str("West Central Africa"),
                Self::AfricaAlgiers => f.write_str("Africa/Algiers"),
                Self::Zagreb => f.write_str("Zagreb"),
                Self::EuropeZagreb => f.write_str("Europe/Zagreb"),
                Self::Zurich => f.write_str("Zurich"),
                Self::Athens => f.write_str("Athens"),
                Self::EuropeAthens => f.write_str("Europe/Athens"),
                Self::Bucharest => f.write_str("Bucharest"),
                Self::EuropeBucharest => f.write_str("Europe/Bucharest"),
                Self::Cairo => f.write_str("Cairo"),
                Self::AfricaCairo => f.write_str("Africa/Cairo"),
                Self::Harare => f.write_str("Harare"),
                Self::AfricaHarare => f.write_str("Africa/Harare"),
                Self::Helsinki => f.write_str("Helsinki"),
                Self::EuropeHelsinki => f.write_str("Europe/Helsinki"),
                Self::Jerusalem => f.write_str("Jerusalem"),
                Self::AsiaJerusalem => f.write_str("Asia/Jerusalem"),
                Self::Kaliningrad => f.write_str("Kaliningrad"),
                Self::EuropeKaliningrad => f.write_str("Europe/Kaliningrad"),
                Self::Kyiv => f.write_str("Kyiv"),
                Self::EuropeKiev => f.write_str("Europe/Kiev"),
                Self::Pretoria => f.write_str("Pretoria"),
                Self::AfricaJohannesburg => f.write_str("Africa/Johannesburg"),
                Self::Riga => f.write_str("Riga"),
                Self::EuropeRiga => f.write_str("Europe/Riga"),
                Self::Sofia => f.write_str("Sofia"),
                Self::EuropeSofia => f.write_str("Europe/Sofia"),
                Self::Tallinn => f.write_str("Tallinn"),
                Self::EuropeTallinn => f.write_str("Europe/Tallinn"),
                Self::Vilnius => f.write_str("Vilnius"),
                Self::EuropeVilnius => f.write_str("Europe/Vilnius"),
                Self::Baghdad => f.write_str("Baghdad"),
                Self::AsiaBaghdad => f.write_str("Asia/Baghdad"),
                Self::Istanbul => f.write_str("Istanbul"),
                Self::EuropeIstanbul => f.write_str("Europe/Istanbul"),
                Self::Kuwait => f.write_str("Kuwait"),
                Self::AsiaKuwait => f.write_str("Asia/Kuwait"),
                Self::Minsk => f.write_str("Minsk"),
                Self::EuropeMinsk => f.write_str("Europe/Minsk"),
                Self::Moscow => f.write_str("Moscow"),
                Self::EuropeMoscow => f.write_str("Europe/Moscow"),
                Self::Nairobi => f.write_str("Nairobi"),
                Self::AfricaNairobi => f.write_str("Africa/Nairobi"),
                Self::Riyadh => f.write_str("Riyadh"),
                Self::AsiaRiyadh => f.write_str("Asia/Riyadh"),
                Self::StPetersburg => f.write_str("St. Petersburg"),
                Self::Volgograd => f.write_str("Volgograd"),
                Self::EuropeVolgograd => f.write_str("Europe/Volgograd"),
                Self::Tehran => f.write_str("Tehran"),
                Self::AsiaTehran => f.write_str("Asia/Tehran"),
                Self::AbuDhabi => f.write_str("Abu Dhabi"),
                Self::AsiaMuscat => f.write_str("Asia/Muscat"),
                Self::Baku => f.write_str("Baku"),
                Self::AsiaBaku => f.write_str("Asia/Baku"),
                Self::Muscat => f.write_str("Muscat"),
                Self::Samara => f.write_str("Samara"),
                Self::EuropeSamara => f.write_str("Europe/Samara"),
                Self::Tbilisi => f.write_str("Tbilisi"),
                Self::AsiaTbilisi => f.write_str("Asia/Tbilisi"),
                Self::Yerevan => f.write_str("Yerevan"),
                Self::AsiaYerevan => f.write_str("Asia/Yerevan"),
                Self::Kabul => f.write_str("Kabul"),
                Self::AsiaKabul => f.write_str("Asia/Kabul"),
                Self::Almaty => f.write_str("Almaty"),
                Self::AsiaAlmaty => f.write_str("Asia/Almaty"),
                Self::Astana => f.write_str("Astana"),
                Self::Ekaterinburg => f.write_str("Ekaterinburg"),
                Self::AsiaYekaterinburg => f.write_str("Asia/Yekaterinburg"),
                Self::Islamabad => f.write_str("Islamabad"),
                Self::AsiaKarachi => f.write_str("Asia/Karachi"),
                Self::Karachi => f.write_str("Karachi"),
                Self::Tashkent => f.write_str("Tashkent"),
                Self::AsiaTashkent => f.write_str("Asia/Tashkent"),
                Self::Chennai => f.write_str("Chennai"),
                Self::AsiaKolkata => f.write_str("Asia/Kolkata"),
                Self::Kolkata => f.write_str("Kolkata"),
                Self::Mumbai => f.write_str("Mumbai"),
                Self::NewDelhi => f.write_str("New Delhi"),
                Self::SriJayawardenepura => f.write_str("Sri Jayawardenepura"),
                Self::AsiaColombo => f.write_str("Asia/Colombo"),
                Self::Kathmandu => f.write_str("Kathmandu"),
                Self::AsiaKathmandu => f.write_str("Asia/Kathmandu"),
                Self::Dhaka => f.write_str("Dhaka"),
                Self::AsiaDhaka => f.write_str("Asia/Dhaka"),
                Self::Urumqi => f.write_str("Urumqi"),
                Self::AsiaUrumqi => f.write_str("Asia/Urumqi"),
                Self::Rangoon => f.write_str("Rangoon"),
                Self::AsiaRangoon => f.write_str("Asia/Rangoon"),
                Self::Bangkok => f.write_str("Bangkok"),
                Self::AsiaBangkok => f.write_str("Asia/Bangkok"),
                Self::Hanoi => f.write_str("Hanoi"),
                Self::Jakarta => f.write_str("Jakarta"),
                Self::AsiaJakarta => f.write_str("Asia/Jakarta"),
                Self::Krasnoyarsk => f.write_str("Krasnoyarsk"),
                Self::AsiaKrasnoyarsk => f.write_str("Asia/Krasnoyarsk"),
                Self::Novosibirsk => f.write_str("Novosibirsk"),
                Self::AsiaNovosibirsk => f.write_str("Asia/Novosibirsk"),
                Self::Beijing => f.write_str("Beijing"),
                Self::AsiaShanghai => f.write_str("Asia/Shanghai"),
                Self::Chongqing => f.write_str("Chongqing"),
                Self::AsiaChongqing => f.write_str("Asia/Chongqing"),
                Self::HongKong => f.write_str("Hong Kong"),
                Self::AsiaHongKong => f.write_str("Asia/Hong_Kong"),
                Self::Irkutsk => f.write_str("Irkutsk"),
                Self::AsiaIrkutsk => f.write_str("Asia/Irkutsk"),
                Self::KualaLumpur => f.write_str("Kuala Lumpur"),
                Self::AsiaKualaLumpur => f.write_str("Asia/Kuala_Lumpur"),
                Self::Perth => f.write_str("Perth"),
                Self::AustraliaPerth => f.write_str("Australia/Perth"),
                Self::Singapore => f.write_str("Singapore"),
                Self::AsiaSingapore => f.write_str("Asia/Singapore"),
                Self::Taipei => f.write_str("Taipei"),
                Self::AsiaTaipei => f.write_str("Asia/Taipei"),
                Self::Ulaanbaatar => f.write_str("Ulaanbaatar"),
                Self::AsiaUlaanbaatar => f.write_str("Asia/Ulaanbaatar"),
                Self::Osaka => f.write_str("Osaka"),
                Self::AsiaTokyo => f.write_str("Asia/Tokyo"),
                Self::Sapporo => f.write_str("Sapporo"),
                Self::Seoul => f.write_str("Seoul"),
                Self::AsiaSeoul => f.write_str("Asia/Seoul"),
                Self::Tokyo => f.write_str("Tokyo"),
                Self::Yakutsk => f.write_str("Yakutsk"),
                Self::AsiaYakutsk => f.write_str("Asia/Yakutsk"),
                Self::Adelaide => f.write_str("Adelaide"),
                Self::AustraliaAdelaide => f.write_str("Australia/Adelaide"),
                Self::Darwin => f.write_str("Darwin"),
                Self::AustraliaDarwin => f.write_str("Australia/Darwin"),
                Self::Brisbane => f.write_str("Brisbane"),
                Self::AustraliaBrisbane => f.write_str("Australia/Brisbane"),
                Self::Canberra => f.write_str("Canberra"),
                Self::AustraliaCanberra => f.write_str("Australia/Canberra"),
                Self::Guam => f.write_str("Guam"),
                Self::PacificGuam => f.write_str("Pacific/Guam"),
                Self::Hobart => f.write_str("Hobart"),
                Self::AustraliaHobart => f.write_str("Australia/Hobart"),
                Self::Melbourne => f.write_str("Melbourne"),
                Self::AustraliaMelbourne => f.write_str("Australia/Melbourne"),
                Self::PortMoresby => f.write_str("Port Moresby"),
                Self::PacificPortMoresby => f.write_str("Pacific/Port_Moresby"),
                Self::Sydney => f.write_str("Sydney"),
                Self::AustraliaSydney => f.write_str("Australia/Sydney"),
                Self::Vladivostok => f.write_str("Vladivostok"),
                Self::AsiaVladivostok => f.write_str("Asia/Vladivostok"),
                Self::Magadan => f.write_str("Magadan"),
                Self::AsiaMagadan => f.write_str("Asia/Magadan"),
                Self::NewCaledonia => f.write_str("New Caledonia"),
                Self::PacificNoumea => f.write_str("Pacific/Noumea"),
                Self::SolomonIs => f.write_str("Solomon Is."),
                Self::PacificGuadalcanal => f.write_str("Pacific/Guadalcanal"),
                Self::Srednekolymsk => f.write_str("Srednekolymsk"),
                Self::AsiaSrednekolymsk => f.write_str("Asia/Srednekolymsk"),
                Self::Auckland => f.write_str("Auckland"),
                Self::PacificAuckland => f.write_str("Pacific/Auckland"),
                Self::Fiji => f.write_str("Fiji"),
                Self::PacificFiji => f.write_str("Pacific/Fiji"),
                Self::Kamchatka => f.write_str("Kamchatka"),
                Self::AsiaKamchatka => f.write_str("Asia/Kamchatka"),
                Self::MarshallIs => f.write_str("Marshall Is."),
                Self::PacificMajuro => f.write_str("Pacific/Majuro"),
                Self::Wellington => f.write_str("Wellington"),
                Self::ChathamIs => f.write_str("Chatham Is."),
                Self::PacificChatham => f.write_str("Pacific/Chatham"),
                Self::Nukualofa => f.write_str("Nuku'alofa"),
                Self::PacificTongatapu => f.write_str("Pacific/Tongatapu"),
                Self::Samoa => f.write_str("Samoa"),
                Self::PacificApia => f.write_str("Pacific/Apia"),
                Self::TokelauIs => f.write_str("Tokelau Is."),
                Self::PacificFakaofo => f.write_str("Pacific/Fakaofo"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "International Date Line West" => Ok(Self::InternationalDateLineWest),
                "Etc/GMT+12" => Ok(Self::EtcGmt12),
                "American Samoa" => Ok(Self::AmericanSamoa),
                "Pacific/Pago_Pago" => Ok(Self::PacificPagoPago),
                "Midway Island" => Ok(Self::MidwayIsland),
                "Pacific/Midway" => Ok(Self::PacificMidway),
                "Hawaii" => Ok(Self::Hawaii),
                "Pacific/Honolulu" => Ok(Self::PacificHonolulu),
                "Alaska" => Ok(Self::Alaska),
                "America/Juneau" => Ok(Self::AmericaJuneau),
                "Pacific Time (US & Canada)" => Ok(Self::PacificTimeUsCanada),
                "America/Los_Angeles" => Ok(Self::AmericaLosAngeles),
                "Tijuana" => Ok(Self::Tijuana),
                "America/Tijuana" => Ok(Self::AmericaTijuana),
                "Arizona" => Ok(Self::Arizona),
                "America/Phoenix" => Ok(Self::AmericaPhoenix),
                "Mazatlan" => Ok(Self::Mazatlan),
                "America/Mazatlan" => Ok(Self::AmericaMazatlan),
                "Mountain Time (US & Canada)" => Ok(Self::MountainTimeUsCanada),
                "America/Denver" => Ok(Self::AmericaDenver),
                "Central America" => Ok(Self::CentralAmerica),
                "America/Guatemala" => Ok(Self::AmericaGuatemala),
                "Central Time (US & Canada)" => Ok(Self::CentralTimeUsCanada),
                "America/Chicago" => Ok(Self::AmericaChicago),
                "Chihuahua" => Ok(Self::Chihuahua),
                "America/Chihuahua" => Ok(Self::AmericaChihuahua),
                "Guadalajara" => Ok(Self::Guadalajara),
                "America/Mexico_City" => Ok(Self::AmericaMexicoCity),
                "Mexico City" => Ok(Self::MexicoCity),
                "Monterrey" => Ok(Self::Monterrey),
                "America/Monterrey" => Ok(Self::AmericaMonterrey),
                "Saskatchewan" => Ok(Self::Saskatchewan),
                "America/Regina" => Ok(Self::AmericaRegina),
                "Bogota" => Ok(Self::Bogota),
                "America/Bogota" => Ok(Self::AmericaBogota),
                "Eastern Time (US & Canada)" => Ok(Self::EasternTimeUsCanada),
                "America/New_York" => Ok(Self::AmericaNewYork),
                "Indiana (East)" => Ok(Self::IndianaEast),
                "America/Indiana/Indianapolis" => Ok(Self::AmericaIndianaIndianapolis),
                "Lima" => Ok(Self::Lima),
                "America/Lima" => Ok(Self::AmericaLima),
                "Quito" => Ok(Self::Quito),
                "Atlantic Time (Canada)" => Ok(Self::AtlanticTimeCanada),
                "America/Halifax" => Ok(Self::AmericaHalifax),
                "Caracas" => Ok(Self::Caracas),
                "America/Caracas" => Ok(Self::AmericaCaracas),
                "Georgetown" => Ok(Self::Georgetown),
                "America/Guyana" => Ok(Self::AmericaGuyana),
                "La Paz" => Ok(Self::LaPaz),
                "America/La_Paz" => Ok(Self::AmericaLaPaz),
                "Puerto Rico" => Ok(Self::PuertoRico),
                "America/Puerto_Rico" => Ok(Self::AmericaPuertoRico),
                "Santiago" => Ok(Self::Santiago),
                "America/Santiago" => Ok(Self::AmericaSantiago),
                "Newfoundland" => Ok(Self::Newfoundland),
                "America/St_Johns" => Ok(Self::AmericaStJohns),
                "Asuncion" => Ok(Self::Asuncion),
                "America/Asuncion" => Ok(Self::AmericaAsuncion),
                "Brasilia" => Ok(Self::Brasilia),
                "America/Sao_Paulo" => Ok(Self::AmericaSaoPaulo),
                "Buenos Aires" => Ok(Self::BuenosAires),
                "America/Argentina/Buenos_Aires" => Ok(Self::AmericaArgentinaBuenosAires),
                "Montevideo" => Ok(Self::Montevideo),
                "America/Montevideo" => Ok(Self::AmericaMontevideo),
                "Greenland" => Ok(Self::Greenland),
                "America/Nuuk" => Ok(Self::AmericaNuuk),
                "Mid-Atlantic" => Ok(Self::MidAtlantic),
                "Atlantic/South_Georgia" => Ok(Self::AtlanticSouthGeorgia),
                "Azores" => Ok(Self::Azores),
                "Atlantic/Azores" => Ok(Self::AtlanticAzores),
                "Cape Verde Is." => Ok(Self::CapeVerdeIs),
                "Atlantic/Cape_Verde" => Ok(Self::AtlanticCapeVerde),
                "Edinburgh" => Ok(Self::Edinburgh),
                "Europe/London" => Ok(Self::EuropeLondon),
                "Lisbon" => Ok(Self::Lisbon),
                "Europe/Lisbon" => Ok(Self::EuropeLisbon),
                "London" => Ok(Self::London),
                "Monrovia" => Ok(Self::Monrovia),
                "Africa/Monrovia" => Ok(Self::AfricaMonrovia),
                "UTC" => Ok(Self::Utc),
                "Etc/UTC" => Ok(Self::EtcUtc),
                "Amsterdam" => Ok(Self::Amsterdam),
                "Europe/Amsterdam" => Ok(Self::EuropeAmsterdam),
                "Belgrade" => Ok(Self::Belgrade),
                "Europe/Belgrade" => Ok(Self::EuropeBelgrade),
                "Berlin" => Ok(Self::Berlin),
                "Europe/Berlin" => Ok(Self::EuropeBerlin),
                "Bern" => Ok(Self::Bern),
                "Europe/Zurich" => Ok(Self::EuropeZurich),
                "Bratislava" => Ok(Self::Bratislava),
                "Europe/Bratislava" => Ok(Self::EuropeBratislava),
                "Brussels" => Ok(Self::Brussels),
                "Europe/Brussels" => Ok(Self::EuropeBrussels),
                "Budapest" => Ok(Self::Budapest),
                "Europe/Budapest" => Ok(Self::EuropeBudapest),
                "Casablanca" => Ok(Self::Casablanca),
                "Africa/Casablanca" => Ok(Self::AfricaCasablanca),
                "Copenhagen" => Ok(Self::Copenhagen),
                "Europe/Copenhagen" => Ok(Self::EuropeCopenhagen),
                "Dublin" => Ok(Self::Dublin),
                "Europe/Dublin" => Ok(Self::EuropeDublin),
                "Ljubljana" => Ok(Self::Ljubljana),
                "Europe/Ljubljana" => Ok(Self::EuropeLjubljana),
                "Madrid" => Ok(Self::Madrid),
                "Europe/Madrid" => Ok(Self::EuropeMadrid),
                "Paris" => Ok(Self::Paris),
                "Europe/Paris" => Ok(Self::EuropeParis),
                "Prague" => Ok(Self::Prague),
                "Europe/Prague" => Ok(Self::EuropePrague),
                "Rome" => Ok(Self::Rome),
                "Europe/Rome" => Ok(Self::EuropeRome),
                "Sarajevo" => Ok(Self::Sarajevo),
                "Europe/Sarajevo" => Ok(Self::EuropeSarajevo),
                "Skopje" => Ok(Self::Skopje),
                "Europe/Skopje" => Ok(Self::EuropeSkopje),
                "Stockholm" => Ok(Self::Stockholm),
                "Europe/Stockholm" => Ok(Self::EuropeStockholm),
                "Vienna" => Ok(Self::Vienna),
                "Europe/Vienna" => Ok(Self::EuropeVienna),
                "Warsaw" => Ok(Self::Warsaw),
                "Europe/Warsaw" => Ok(Self::EuropeWarsaw),
                "West Central Africa" => Ok(Self::WestCentralAfrica),
                "Africa/Algiers" => Ok(Self::AfricaAlgiers),
                "Zagreb" => Ok(Self::Zagreb),
                "Europe/Zagreb" => Ok(Self::EuropeZagreb),
                "Zurich" => Ok(Self::Zurich),
                "Athens" => Ok(Self::Athens),
                "Europe/Athens" => Ok(Self::EuropeAthens),
                "Bucharest" => Ok(Self::Bucharest),
                "Europe/Bucharest" => Ok(Self::EuropeBucharest),
                "Cairo" => Ok(Self::Cairo),
                "Africa/Cairo" => Ok(Self::AfricaCairo),
                "Harare" => Ok(Self::Harare),
                "Africa/Harare" => Ok(Self::AfricaHarare),
                "Helsinki" => Ok(Self::Helsinki),
                "Europe/Helsinki" => Ok(Self::EuropeHelsinki),
                "Jerusalem" => Ok(Self::Jerusalem),
                "Asia/Jerusalem" => Ok(Self::AsiaJerusalem),
                "Kaliningrad" => Ok(Self::Kaliningrad),
                "Europe/Kaliningrad" => Ok(Self::EuropeKaliningrad),
                "Kyiv" => Ok(Self::Kyiv),
                "Europe/Kiev" => Ok(Self::EuropeKiev),
                "Pretoria" => Ok(Self::Pretoria),
                "Africa/Johannesburg" => Ok(Self::AfricaJohannesburg),
                "Riga" => Ok(Self::Riga),
                "Europe/Riga" => Ok(Self::EuropeRiga),
                "Sofia" => Ok(Self::Sofia),
                "Europe/Sofia" => Ok(Self::EuropeSofia),
                "Tallinn" => Ok(Self::Tallinn),
                "Europe/Tallinn" => Ok(Self::EuropeTallinn),
                "Vilnius" => Ok(Self::Vilnius),
                "Europe/Vilnius" => Ok(Self::EuropeVilnius),
                "Baghdad" => Ok(Self::Baghdad),
                "Asia/Baghdad" => Ok(Self::AsiaBaghdad),
                "Istanbul" => Ok(Self::Istanbul),
                "Europe/Istanbul" => Ok(Self::EuropeIstanbul),
                "Kuwait" => Ok(Self::Kuwait),
                "Asia/Kuwait" => Ok(Self::AsiaKuwait),
                "Minsk" => Ok(Self::Minsk),
                "Europe/Minsk" => Ok(Self::EuropeMinsk),
                "Moscow" => Ok(Self::Moscow),
                "Europe/Moscow" => Ok(Self::EuropeMoscow),
                "Nairobi" => Ok(Self::Nairobi),
                "Africa/Nairobi" => Ok(Self::AfricaNairobi),
                "Riyadh" => Ok(Self::Riyadh),
                "Asia/Riyadh" => Ok(Self::AsiaRiyadh),
                "St. Petersburg" => Ok(Self::StPetersburg),
                "Volgograd" => Ok(Self::Volgograd),
                "Europe/Volgograd" => Ok(Self::EuropeVolgograd),
                "Tehran" => Ok(Self::Tehran),
                "Asia/Tehran" => Ok(Self::AsiaTehran),
                "Abu Dhabi" => Ok(Self::AbuDhabi),
                "Asia/Muscat" => Ok(Self::AsiaMuscat),
                "Baku" => Ok(Self::Baku),
                "Asia/Baku" => Ok(Self::AsiaBaku),
                "Muscat" => Ok(Self::Muscat),
                "Samara" => Ok(Self::Samara),
                "Europe/Samara" => Ok(Self::EuropeSamara),
                "Tbilisi" => Ok(Self::Tbilisi),
                "Asia/Tbilisi" => Ok(Self::AsiaTbilisi),
                "Yerevan" => Ok(Self::Yerevan),
                "Asia/Yerevan" => Ok(Self::AsiaYerevan),
                "Kabul" => Ok(Self::Kabul),
                "Asia/Kabul" => Ok(Self::AsiaKabul),
                "Almaty" => Ok(Self::Almaty),
                "Asia/Almaty" => Ok(Self::AsiaAlmaty),
                "Astana" => Ok(Self::Astana),
                "Ekaterinburg" => Ok(Self::Ekaterinburg),
                "Asia/Yekaterinburg" => Ok(Self::AsiaYekaterinburg),
                "Islamabad" => Ok(Self::Islamabad),
                "Asia/Karachi" => Ok(Self::AsiaKarachi),
                "Karachi" => Ok(Self::Karachi),
                "Tashkent" => Ok(Self::Tashkent),
                "Asia/Tashkent" => Ok(Self::AsiaTashkent),
                "Chennai" => Ok(Self::Chennai),
                "Asia/Kolkata" => Ok(Self::AsiaKolkata),
                "Kolkata" => Ok(Self::Kolkata),
                "Mumbai" => Ok(Self::Mumbai),
                "New Delhi" => Ok(Self::NewDelhi),
                "Sri Jayawardenepura" => Ok(Self::SriJayawardenepura),
                "Asia/Colombo" => Ok(Self::AsiaColombo),
                "Kathmandu" => Ok(Self::Kathmandu),
                "Asia/Kathmandu" => Ok(Self::AsiaKathmandu),
                "Dhaka" => Ok(Self::Dhaka),
                "Asia/Dhaka" => Ok(Self::AsiaDhaka),
                "Urumqi" => Ok(Self::Urumqi),
                "Asia/Urumqi" => Ok(Self::AsiaUrumqi),
                "Rangoon" => Ok(Self::Rangoon),
                "Asia/Rangoon" => Ok(Self::AsiaRangoon),
                "Bangkok" => Ok(Self::Bangkok),
                "Asia/Bangkok" => Ok(Self::AsiaBangkok),
                "Hanoi" => Ok(Self::Hanoi),
                "Jakarta" => Ok(Self::Jakarta),
                "Asia/Jakarta" => Ok(Self::AsiaJakarta),
                "Krasnoyarsk" => Ok(Self::Krasnoyarsk),
                "Asia/Krasnoyarsk" => Ok(Self::AsiaKrasnoyarsk),
                "Novosibirsk" => Ok(Self::Novosibirsk),
                "Asia/Novosibirsk" => Ok(Self::AsiaNovosibirsk),
                "Beijing" => Ok(Self::Beijing),
                "Asia/Shanghai" => Ok(Self::AsiaShanghai),
                "Chongqing" => Ok(Self::Chongqing),
                "Asia/Chongqing" => Ok(Self::AsiaChongqing),
                "Hong Kong" => Ok(Self::HongKong),
                "Asia/Hong_Kong" => Ok(Self::AsiaHongKong),
                "Irkutsk" => Ok(Self::Irkutsk),
                "Asia/Irkutsk" => Ok(Self::AsiaIrkutsk),
                "Kuala Lumpur" => Ok(Self::KualaLumpur),
                "Asia/Kuala_Lumpur" => Ok(Self::AsiaKualaLumpur),
                "Perth" => Ok(Self::Perth),
                "Australia/Perth" => Ok(Self::AustraliaPerth),
                "Singapore" => Ok(Self::Singapore),
                "Asia/Singapore" => Ok(Self::AsiaSingapore),
                "Taipei" => Ok(Self::Taipei),
                "Asia/Taipei" => Ok(Self::AsiaTaipei),
                "Ulaanbaatar" => Ok(Self::Ulaanbaatar),
                "Asia/Ulaanbaatar" => Ok(Self::AsiaUlaanbaatar),
                "Osaka" => Ok(Self::Osaka),
                "Asia/Tokyo" => Ok(Self::AsiaTokyo),
                "Sapporo" => Ok(Self::Sapporo),
                "Seoul" => Ok(Self::Seoul),
                "Asia/Seoul" => Ok(Self::AsiaSeoul),
                "Tokyo" => Ok(Self::Tokyo),
                "Yakutsk" => Ok(Self::Yakutsk),
                "Asia/Yakutsk" => Ok(Self::AsiaYakutsk),
                "Adelaide" => Ok(Self::Adelaide),
                "Australia/Adelaide" => Ok(Self::AustraliaAdelaide),
                "Darwin" => Ok(Self::Darwin),
                "Australia/Darwin" => Ok(Self::AustraliaDarwin),
                "Brisbane" => Ok(Self::Brisbane),
                "Australia/Brisbane" => Ok(Self::AustraliaBrisbane),
                "Canberra" => Ok(Self::Canberra),
                "Australia/Canberra" => Ok(Self::AustraliaCanberra),
                "Guam" => Ok(Self::Guam),
                "Pacific/Guam" => Ok(Self::PacificGuam),
                "Hobart" => Ok(Self::Hobart),
                "Australia/Hobart" => Ok(Self::AustraliaHobart),
                "Melbourne" => Ok(Self::Melbourne),
                "Australia/Melbourne" => Ok(Self::AustraliaMelbourne),
                "Port Moresby" => Ok(Self::PortMoresby),
                "Pacific/Port_Moresby" => Ok(Self::PacificPortMoresby),
                "Sydney" => Ok(Self::Sydney),
                "Australia/Sydney" => Ok(Self::AustraliaSydney),
                "Vladivostok" => Ok(Self::Vladivostok),
                "Asia/Vladivostok" => Ok(Self::AsiaVladivostok),
                "Magadan" => Ok(Self::Magadan),
                "Asia/Magadan" => Ok(Self::AsiaMagadan),
                "New Caledonia" => Ok(Self::NewCaledonia),
                "Pacific/Noumea" => Ok(Self::PacificNoumea),
                "Solomon Is." => Ok(Self::SolomonIs),
                "Pacific/Guadalcanal" => Ok(Self::PacificGuadalcanal),
                "Srednekolymsk" => Ok(Self::Srednekolymsk),
                "Asia/Srednekolymsk" => Ok(Self::AsiaSrednekolymsk),
                "Auckland" => Ok(Self::Auckland),
                "Pacific/Auckland" => Ok(Self::PacificAuckland),
                "Fiji" => Ok(Self::Fiji),
                "Pacific/Fiji" => Ok(Self::PacificFiji),
                "Kamchatka" => Ok(Self::Kamchatka),
                "Asia/Kamchatka" => Ok(Self::AsiaKamchatka),
                "Marshall Is." => Ok(Self::MarshallIs),
                "Pacific/Majuro" => Ok(Self::PacificMajuro),
                "Wellington" => Ok(Self::Wellington),
                "Chatham Is." => Ok(Self::ChathamIs),
                "Pacific/Chatham" => Ok(Self::PacificChatham),
                "Nuku'alofa" => Ok(Self::Nukualofa),
                "Pacific/Tongatapu" => Ok(Self::PacificTongatapu),
                "Samoa" => Ok(Self::Samoa),
                "Pacific/Apia" => Ok(Self::PacificApia),
                "Tokelau Is." => Ok(Self::TokelauIs),
                "Pacific/Fakaofo" => Ok(Self::PacificFakaofo),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "end_day": {
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "end_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    },
    ///    "start_day": {
    ///      "type": "string",
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "Formatted as HH:MM",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_day: ::std::option::Option<
            UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay,
        >,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_day: ::std::option::Option<
            UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay,
        >,
        ///Formatted as HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
        fn default() -> Self {
            Self {
                end_day: Default::default(),
                end_time: Default::default(),
                start_day: Default::default(),
                start_time: Default::default(),
            }
        }
    }
    impl UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
        pub fn builder() -> builder::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            Default::default()
        }
    }
    ///`UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateEscalationPolicyPathDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "escalation_paths"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateEscalationPolicyPathDataType {
        #[serde(rename = "escalation_paths")]
        EscalationPaths,
    }
    impl ::std::fmt::Display for UpdateEscalationPolicyPathDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EscalationPaths => f.write_str("escalation_paths"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateEscalationPolicyPathDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "escalation_paths" => Ok(Self::EscalationPaths),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateEscalationPolicyPathDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateEscalationPolicyPathDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateEscalationPolicyPathDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormField`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "auto_set_by_catalog_property_id": {
    ///              "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "default_values": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The default values.",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "The description of the form field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the form field is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "input_kind": {
    ///              "description": "The input kind of the form field",
    ///              "type": "string",
    ///              "enum": [
    ///                "text",
    ///                "textarea",
    ///                "select",
    ///                "multi_select",
    ///                "date",
    ///                "datetime",
    ///                "number",
    ///                "checkbox",
    ///                "tags",
    ///                "rich_text"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the form field",
    ///              "type": "string",
    ///              "enum": [
    ///                "custom",
    ///                "title",
    ///                "summary",
    ///                "mitigation_message",
    ///                "resolution_message",
    ///                "severity",
    ///                "environments",
    ///                "types",
    ///                "services",
    ///                "causes",
    ///                "functionalities",
    ///                "teams",
    ///                "visibility",
    ///                "mark_as_test",
    ///                "mark_as_backfilled",
    ///                "labels",
    ///                "notify_emails",
    ///                "trigger_manual_workflows",
    ///                "show_ongoing_incidents",
    ///                "attach_alerts",
    ///                "mark_as_in_triage",
    ///                "in_triage_at",
    ///                "started_at",
    ///                "detected_at",
    ///                "acknowledged_at",
    ///                "mitigated_at",
    ///                "resolved_at",
    ///                "closed_at",
    ///                "custom_sub_status",
    ///                "manual_starting_datetime_field"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the form field",
    ///              "type": "string"
    ///            },
    ///            "required": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "show_on_incident_details": {
    ///              "description": "Whether the form field is shown on the incident details panel",
    ///              "type": "boolean"
    ///            },
    ///            "shown": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "value_kind": {
    ///              "description": "The value kind of the form field",
    ///              "type": "string",
    ///              "enum": [
    ///                "inherit",
    ///                "group",
    ///                "service",
    ///                "functionality",
    ///                "user",
    ///                "catalog_entity",
    ///                "environment",
    ///                "cause",
    ///                "incident_type"
    ///              ]
    ///            },
    ///            "value_kind_catalog_id": {
    ///              "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_fields"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormField {
        pub data: UpdateFormFieldData,
    }
    impl UpdateFormField {
        pub fn builder() -> builder::UpdateFormField {
            Default::default()
        }
    }
    ///`UpdateFormFieldData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "auto_set_by_catalog_property_id": {
    ///          "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "default_values": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The default values.",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "The description of the form field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the form field is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "input_kind": {
    ///          "description": "The input kind of the form field",
    ///          "type": "string",
    ///          "enum": [
    ///            "text",
    ///            "textarea",
    ///            "select",
    ///            "multi_select",
    ///            "date",
    ///            "datetime",
    ///            "number",
    ///            "checkbox",
    ///            "tags",
    ///            "rich_text"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the form field",
    ///          "type": "string",
    ///          "enum": [
    ///            "custom",
    ///            "title",
    ///            "summary",
    ///            "mitigation_message",
    ///            "resolution_message",
    ///            "severity",
    ///            "environments",
    ///            "types",
    ///            "services",
    ///            "causes",
    ///            "functionalities",
    ///            "teams",
    ///            "visibility",
    ///            "mark_as_test",
    ///            "mark_as_backfilled",
    ///            "labels",
    ///            "notify_emails",
    ///            "trigger_manual_workflows",
    ///            "show_ongoing_incidents",
    ///            "attach_alerts",
    ///            "mark_as_in_triage",
    ///            "in_triage_at",
    ///            "started_at",
    ///            "detected_at",
    ///            "acknowledged_at",
    ///            "mitigated_at",
    ///            "resolved_at",
    ///            "closed_at",
    ///            "custom_sub_status",
    ///            "manual_starting_datetime_field"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the form field",
    ///          "type": "string"
    ///        },
    ///        "required": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "show_on_incident_details": {
    ///          "description": "Whether the form field is shown on the incident details panel",
    ///          "type": "boolean"
    ///        },
    ///        "shown": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "value_kind": {
    ///          "description": "The value kind of the form field",
    ///          "type": "string",
    ///          "enum": [
    ///            "inherit",
    ///            "group",
    ///            "service",
    ///            "functionality",
    ///            "user",
    ///            "catalog_entity",
    ///            "environment",
    ///            "cause",
    ///            "incident_type"
    ///          ]
    ///        },
    ///        "value_kind_catalog_id": {
    ///          "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_fields"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldData {
        pub attributes: UpdateFormFieldDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormFieldDataType,
    }
    impl UpdateFormFieldData {
        pub fn builder() -> builder::UpdateFormFieldData {
            Default::default()
        }
    }
    ///`UpdateFormFieldDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "auto_set_by_catalog_property_id": {
    ///      "description": "Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "default_values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The default values.",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The description of the form field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the form field is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "input_kind": {
    ///      "description": "The input kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "text",
    ///        "textarea",
    ///        "select",
    ///        "multi_select",
    ///        "date",
    ///        "datetime",
    ///        "number",
    ///        "checkbox",
    ///        "tags",
    ///        "rich_text"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "custom",
    ///        "title",
    ///        "summary",
    ///        "mitigation_message",
    ///        "resolution_message",
    ///        "severity",
    ///        "environments",
    ///        "types",
    ///        "services",
    ///        "causes",
    ///        "functionalities",
    ///        "teams",
    ///        "visibility",
    ///        "mark_as_test",
    ///        "mark_as_backfilled",
    ///        "labels",
    ///        "notify_emails",
    ///        "trigger_manual_workflows",
    ///        "show_ongoing_incidents",
    ///        "attach_alerts",
    ///        "mark_as_in_triage",
    ///        "in_triage_at",
    ///        "started_at",
    ///        "detected_at",
    ///        "acknowledged_at",
    ///        "mitigated_at",
    ///        "resolved_at",
    ///        "closed_at",
    ///        "custom_sub_status",
    ///        "manual_starting_datetime_field"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the form field",
    ///      "type": "string"
    ///    },
    ///    "required": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the form field is required. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "show_on_incident_details": {
    ///      "description": "Whether the form field is shown on the incident details panel",
    ///      "type": "boolean"
    ///    },
    ///    "shown": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Where the form field is shown. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `incident_post_mortem`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "value_kind": {
    ///      "description": "The value kind of the form field",
    ///      "type": "string",
    ///      "enum": [
    ///        "inherit",
    ///        "group",
    ///        "service",
    ///        "functionality",
    ///        "user",
    ///        "catalog_entity",
    ///        "environment",
    ///        "cause",
    ///        "incident_type"
    ///      ]
    ///    },
    ///    "value_kind_catalog_id": {
    ///      "description": "The ID of the catalog used when value_kind is `catalog_entity`",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormFieldDataAttributes {
        ///Catalog property ID to auto-set this form field. Only reference-kind catalog properties are supported.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_set_by_catalog_property_id: ::std::option::Option<
            ::std::string::String,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub default_values: ::std::vec::Vec<::std::string::String>,
        ///The description of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the form field is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The input kind of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub input_kind: ::std::option::Option<UpdateFormFieldDataAttributesInputKind>,
        ///The kind of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateFormFieldDataAttributesKind>,
        ///The name of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub required: ::std::vec::Vec<::std::string::String>,
        ///Whether the form field is shown on the incident details panel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_on_incident_details: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub shown: ::std::vec::Vec<::std::string::String>,
        ///The value kind of the form field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value_kind: ::std::option::Option<UpdateFormFieldDataAttributesValueKind>,
        ///The ID of the catalog used when value_kind is `catalog_entity`
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value_kind_catalog_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateFormFieldDataAttributes {
        fn default() -> Self {
            Self {
                auto_set_by_catalog_property_id: Default::default(),
                default_values: Default::default(),
                description: Default::default(),
                enabled: Default::default(),
                input_kind: Default::default(),
                kind: Default::default(),
                name: Default::default(),
                required: Default::default(),
                show_on_incident_details: Default::default(),
                shown: Default::default(),
                value_kind: Default::default(),
                value_kind_catalog_id: Default::default(),
            }
        }
    }
    impl UpdateFormFieldDataAttributes {
        pub fn builder() -> builder::UpdateFormFieldDataAttributes {
            Default::default()
        }
    }
    ///The input kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The input kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "text",
    ///    "textarea",
    ///    "select",
    ///    "multi_select",
    ///    "date",
    ///    "datetime",
    ///    "number",
    ///    "checkbox",
    ///    "tags",
    ///    "rich_text"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldDataAttributesInputKind {
        #[serde(rename = "text")]
        Text,
        #[serde(rename = "textarea")]
        Textarea,
        #[serde(rename = "select")]
        Select,
        #[serde(rename = "multi_select")]
        MultiSelect,
        #[serde(rename = "date")]
        Date,
        #[serde(rename = "datetime")]
        Datetime,
        #[serde(rename = "number")]
        Number,
        #[serde(rename = "checkbox")]
        Checkbox,
        #[serde(rename = "tags")]
        Tags,
        #[serde(rename = "rich_text")]
        RichText,
    }
    impl ::std::fmt::Display for UpdateFormFieldDataAttributesInputKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Text => f.write_str("text"),
                Self::Textarea => f.write_str("textarea"),
                Self::Select => f.write_str("select"),
                Self::MultiSelect => f.write_str("multi_select"),
                Self::Date => f.write_str("date"),
                Self::Datetime => f.write_str("datetime"),
                Self::Number => f.write_str("number"),
                Self::Checkbox => f.write_str("checkbox"),
                Self::Tags => f.write_str("tags"),
                Self::RichText => f.write_str("rich_text"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldDataAttributesInputKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "text" => Ok(Self::Text),
                "textarea" => Ok(Self::Textarea),
                "select" => Ok(Self::Select),
                "multi_select" => Ok(Self::MultiSelect),
                "date" => Ok(Self::Date),
                "datetime" => Ok(Self::Datetime),
                "number" => Ok(Self::Number),
                "checkbox" => Ok(Self::Checkbox),
                "tags" => Ok(Self::Tags),
                "rich_text" => Ok(Self::RichText),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldDataAttributesInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldDataAttributesInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldDataAttributesInputKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "custom",
    ///    "title",
    ///    "summary",
    ///    "mitigation_message",
    ///    "resolution_message",
    ///    "severity",
    ///    "environments",
    ///    "types",
    ///    "services",
    ///    "causes",
    ///    "functionalities",
    ///    "teams",
    ///    "visibility",
    ///    "mark_as_test",
    ///    "mark_as_backfilled",
    ///    "labels",
    ///    "notify_emails",
    ///    "trigger_manual_workflows",
    ///    "show_ongoing_incidents",
    ///    "attach_alerts",
    ///    "mark_as_in_triage",
    ///    "in_triage_at",
    ///    "started_at",
    ///    "detected_at",
    ///    "acknowledged_at",
    ///    "mitigated_at",
    ///    "resolved_at",
    ///    "closed_at",
    ///    "custom_sub_status",
    ///    "manual_starting_datetime_field"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldDataAttributesKind {
        #[serde(rename = "custom")]
        Custom,
        #[serde(rename = "title")]
        Title,
        #[serde(rename = "summary")]
        Summary,
        #[serde(rename = "mitigation_message")]
        MitigationMessage,
        #[serde(rename = "resolution_message")]
        ResolutionMessage,
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "environments")]
        Environments,
        #[serde(rename = "types")]
        Types,
        #[serde(rename = "services")]
        Services,
        #[serde(rename = "causes")]
        Causes,
        #[serde(rename = "functionalities")]
        Functionalities,
        #[serde(rename = "teams")]
        Teams,
        #[serde(rename = "visibility")]
        Visibility,
        #[serde(rename = "mark_as_test")]
        MarkAsTest,
        #[serde(rename = "mark_as_backfilled")]
        MarkAsBackfilled,
        #[serde(rename = "labels")]
        Labels,
        #[serde(rename = "notify_emails")]
        NotifyEmails,
        #[serde(rename = "trigger_manual_workflows")]
        TriggerManualWorkflows,
        #[serde(rename = "show_ongoing_incidents")]
        ShowOngoingIncidents,
        #[serde(rename = "attach_alerts")]
        AttachAlerts,
        #[serde(rename = "mark_as_in_triage")]
        MarkAsInTriage,
        #[serde(rename = "in_triage_at")]
        InTriageAt,
        #[serde(rename = "started_at")]
        StartedAt,
        #[serde(rename = "detected_at")]
        DetectedAt,
        #[serde(rename = "acknowledged_at")]
        AcknowledgedAt,
        #[serde(rename = "mitigated_at")]
        MitigatedAt,
        #[serde(rename = "resolved_at")]
        ResolvedAt,
        #[serde(rename = "closed_at")]
        ClosedAt,
        #[serde(rename = "custom_sub_status")]
        CustomSubStatus,
        #[serde(rename = "manual_starting_datetime_field")]
        ManualStartingDatetimeField,
    }
    impl ::std::fmt::Display for UpdateFormFieldDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Custom => f.write_str("custom"),
                Self::Title => f.write_str("title"),
                Self::Summary => f.write_str("summary"),
                Self::MitigationMessage => f.write_str("mitigation_message"),
                Self::ResolutionMessage => f.write_str("resolution_message"),
                Self::Severity => f.write_str("severity"),
                Self::Environments => f.write_str("environments"),
                Self::Types => f.write_str("types"),
                Self::Services => f.write_str("services"),
                Self::Causes => f.write_str("causes"),
                Self::Functionalities => f.write_str("functionalities"),
                Self::Teams => f.write_str("teams"),
                Self::Visibility => f.write_str("visibility"),
                Self::MarkAsTest => f.write_str("mark_as_test"),
                Self::MarkAsBackfilled => f.write_str("mark_as_backfilled"),
                Self::Labels => f.write_str("labels"),
                Self::NotifyEmails => f.write_str("notify_emails"),
                Self::TriggerManualWorkflows => f.write_str("trigger_manual_workflows"),
                Self::ShowOngoingIncidents => f.write_str("show_ongoing_incidents"),
                Self::AttachAlerts => f.write_str("attach_alerts"),
                Self::MarkAsInTriage => f.write_str("mark_as_in_triage"),
                Self::InTriageAt => f.write_str("in_triage_at"),
                Self::StartedAt => f.write_str("started_at"),
                Self::DetectedAt => f.write_str("detected_at"),
                Self::AcknowledgedAt => f.write_str("acknowledged_at"),
                Self::MitigatedAt => f.write_str("mitigated_at"),
                Self::ResolvedAt => f.write_str("resolved_at"),
                Self::ClosedAt => f.write_str("closed_at"),
                Self::CustomSubStatus => f.write_str("custom_sub_status"),
                Self::ManualStartingDatetimeField => {
                    f.write_str("manual_starting_datetime_field")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "custom" => Ok(Self::Custom),
                "title" => Ok(Self::Title),
                "summary" => Ok(Self::Summary),
                "mitigation_message" => Ok(Self::MitigationMessage),
                "resolution_message" => Ok(Self::ResolutionMessage),
                "severity" => Ok(Self::Severity),
                "environments" => Ok(Self::Environments),
                "types" => Ok(Self::Types),
                "services" => Ok(Self::Services),
                "causes" => Ok(Self::Causes),
                "functionalities" => Ok(Self::Functionalities),
                "teams" => Ok(Self::Teams),
                "visibility" => Ok(Self::Visibility),
                "mark_as_test" => Ok(Self::MarkAsTest),
                "mark_as_backfilled" => Ok(Self::MarkAsBackfilled),
                "labels" => Ok(Self::Labels),
                "notify_emails" => Ok(Self::NotifyEmails),
                "trigger_manual_workflows" => Ok(Self::TriggerManualWorkflows),
                "show_ongoing_incidents" => Ok(Self::ShowOngoingIncidents),
                "attach_alerts" => Ok(Self::AttachAlerts),
                "mark_as_in_triage" => Ok(Self::MarkAsInTriage),
                "in_triage_at" => Ok(Self::InTriageAt),
                "started_at" => Ok(Self::StartedAt),
                "detected_at" => Ok(Self::DetectedAt),
                "acknowledged_at" => Ok(Self::AcknowledgedAt),
                "mitigated_at" => Ok(Self::MitigatedAt),
                "resolved_at" => Ok(Self::ResolvedAt),
                "closed_at" => Ok(Self::ClosedAt),
                "custom_sub_status" => Ok(Self::CustomSubStatus),
                "manual_starting_datetime_field" => Ok(Self::ManualStartingDatetimeField),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The value kind of the form field
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The value kind of the form field",
    ///  "type": "string",
    ///  "enum": [
    ///    "inherit",
    ///    "group",
    ///    "service",
    ///    "functionality",
    ///    "user",
    ///    "catalog_entity",
    ///    "environment",
    ///    "cause",
    ///    "incident_type"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldDataAttributesValueKind {
        #[serde(rename = "inherit")]
        Inherit,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "catalog_entity")]
        CatalogEntity,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "incident_type")]
        IncidentType,
    }
    impl ::std::fmt::Display for UpdateFormFieldDataAttributesValueKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Inherit => f.write_str("inherit"),
                Self::Group => f.write_str("group"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::User => f.write_str("user"),
                Self::CatalogEntity => f.write_str("catalog_entity"),
                Self::Environment => f.write_str("environment"),
                Self::Cause => f.write_str("cause"),
                Self::IncidentType => f.write_str("incident_type"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldDataAttributesValueKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "inherit" => Ok(Self::Inherit),
                "group" => Ok(Self::Group),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "user" => Ok(Self::User),
                "catalog_entity" => Ok(Self::CatalogEntity),
                "environment" => Ok(Self::Environment),
                "cause" => Ok(Self::Cause),
                "incident_type" => Ok(Self::IncidentType),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldDataAttributesValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldDataAttributesValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldDataAttributesValueKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldDataType {
        #[serde(rename = "form_fields")]
        FormFields,
    }
    impl ::std::fmt::Display for UpdateFormFieldDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFields => f.write_str("form_fields"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_fields" => Ok(Self::FormFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateFormFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateFormFieldDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldOption`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the form field option",
    ///              "type": "string"
    ///            },
    ///            "default": {
    ///              "type": "boolean"
    ///            },
    ///            "position": {
    ///              "description": "The position of the form field option",
    ///              "type": "integer"
    ///            },
    ///            "value": {
    ///              "description": "The value of the form field option",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_options"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldOption {
        pub data: UpdateFormFieldOptionData,
    }
    impl UpdateFormFieldOption {
        pub fn builder() -> builder::UpdateFormFieldOption {
            Default::default()
        }
    }
    ///`UpdateFormFieldOptionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the form field option",
    ///          "type": "string"
    ///        },
    ///        "default": {
    ///          "type": "boolean"
    ///        },
    ///        "position": {
    ///          "description": "The position of the form field option",
    ///          "type": "integer"
    ///        },
    ///        "value": {
    ///          "description": "The value of the form field option",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_options"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldOptionData {
        pub attributes: UpdateFormFieldOptionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormFieldOptionDataType,
    }
    impl UpdateFormFieldOptionData {
        pub fn builder() -> builder::UpdateFormFieldOptionData {
            Default::default()
        }
    }
    ///`UpdateFormFieldOptionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the form field option",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "The position of the form field option",
    ///      "type": "integer"
    ///    },
    ///    "value": {
    ///      "description": "The value of the form field option",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormFieldOptionDataAttributes {
        ///The hex color of the form field option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The position of the form field option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The value of the form field option
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateFormFieldOptionDataAttributes {
        fn default() -> Self {
            Self {
                color: Default::default(),
                default: Default::default(),
                position: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateFormFieldOptionDataAttributes {
        pub fn builder() -> builder::UpdateFormFieldOptionDataAttributes {
            Default::default()
        }
    }
    ///`UpdateFormFieldOptionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_options"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldOptionDataType {
        #[serde(rename = "form_field_options")]
        FormFieldOptions,
    }
    impl ::std::fmt::Display for UpdateFormFieldOptionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldOptions => f.write_str("form_field_options"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldOptionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_options" => Ok(Self::FormFieldOptions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldOptionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldPlacement`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "form": {
    ///              "description": "The form this field is placed on.",
    ///              "type": "string"
    ///            },
    ///            "form_set_id": {
    ///              "description": "The form set this field is placed in.",
    ///              "type": "string"
    ///            },
    ///            "non_editable": {
    ///              "description": "Whether the field is read-only and cannot be edited by users.",
    ///              "type": "boolean"
    ///            },
    ///            "placement_operator": {
    ///              "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///              "type": "string",
    ///              "enum": [
    ///                "and",
    ///                "or"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "The position of the field placement.",
    ///              "type": "integer"
    ///            },
    ///            "required": {
    ///              "description": "Whether the field is unconditionally required on this form.",
    ///              "type": "boolean"
    ///            },
    ///            "required_operator": {
    ///              "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///              "type": "string",
    ///              "enum": [
    ///                "and",
    ///                "or"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_placements"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldPlacement {
        pub data: UpdateFormFieldPlacementData,
    }
    impl UpdateFormFieldPlacement {
        pub fn builder() -> builder::UpdateFormFieldPlacement {
            Default::default()
        }
    }
    ///`UpdateFormFieldPlacementCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "comparison": {
    ///              "description": "The condition comparison.",
    ///              "type": "string",
    ///              "enum": [
    ///                "equal",
    ///                "not_equal",
    ///                "is_set",
    ///                "is_not_set"
    ///              ]
    ///            },
    ///            "conditioned": {
    ///              "description": "The resource or attribute the condition applies.",
    ///              "type": "string",
    ///              "enum": [
    ///                "placement",
    ///                "required"
    ///              ]
    ///            },
    ///            "form_field_id": {
    ///              "description": "The condition field.",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The condition position.",
    ///              "type": "integer"
    ///            },
    ///            "values": {
    ///              "description": "The values for comparison.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value for comparison.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_placement_conditions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldPlacementCondition {
        pub data: UpdateFormFieldPlacementConditionData,
    }
    impl UpdateFormFieldPlacementCondition {
        pub fn builder() -> builder::UpdateFormFieldPlacementCondition {
            Default::default()
        }
    }
    ///`UpdateFormFieldPlacementConditionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "comparison": {
    ///          "description": "The condition comparison.",
    ///          "type": "string",
    ///          "enum": [
    ///            "equal",
    ///            "not_equal",
    ///            "is_set",
    ///            "is_not_set"
    ///          ]
    ///        },
    ///        "conditioned": {
    ///          "description": "The resource or attribute the condition applies.",
    ///          "type": "string",
    ///          "enum": [
    ///            "placement",
    ///            "required"
    ///          ]
    ///        },
    ///        "form_field_id": {
    ///          "description": "The condition field.",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The condition position.",
    ///          "type": "integer"
    ///        },
    ///        "values": {
    ///          "description": "The values for comparison.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value for comparison.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placement_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldPlacementConditionData {
        pub attributes: UpdateFormFieldPlacementConditionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormFieldPlacementConditionDataType,
    }
    impl UpdateFormFieldPlacementConditionData {
        pub fn builder() -> builder::UpdateFormFieldPlacementConditionData {
            Default::default()
        }
    }
    ///`UpdateFormFieldPlacementConditionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "comparison": {
    ///      "description": "The condition comparison.",
    ///      "type": "string",
    ///      "enum": [
    ///        "equal",
    ///        "not_equal",
    ///        "is_set",
    ///        "is_not_set"
    ///      ]
    ///    },
    ///    "conditioned": {
    ///      "description": "The resource or attribute the condition applies.",
    ///      "type": "string",
    ///      "enum": [
    ///        "placement",
    ///        "required"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The condition field.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The condition position.",
    ///      "type": "integer"
    ///    },
    ///    "values": {
    ///      "description": "The values for comparison.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value for comparison.",
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormFieldPlacementConditionDataAttributes {
        ///The condition comparison.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub comparison: ::std::option::Option<
            UpdateFormFieldPlacementConditionDataAttributesComparison,
        >,
        ///The resource or attribute the condition applies.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conditioned: ::std::option::Option<
            UpdateFormFieldPlacementConditionDataAttributesConditioned,
        >,
        ///The condition field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::std::string::String>,
        ///The condition position.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The values for comparison.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateFormFieldPlacementConditionDataAttributes {
        fn default() -> Self {
            Self {
                comparison: Default::default(),
                conditioned: Default::default(),
                form_field_id: Default::default(),
                position: Default::default(),
                values: Default::default(),
            }
        }
    }
    impl UpdateFormFieldPlacementConditionDataAttributes {
        pub fn builder() -> builder::UpdateFormFieldPlacementConditionDataAttributes {
            Default::default()
        }
    }
    ///The condition comparison.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition comparison.",
    ///  "type": "string",
    ///  "enum": [
    ///    "equal",
    ///    "not_equal",
    ///    "is_set",
    ///    "is_not_set"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPlacementConditionDataAttributesComparison {
        #[serde(rename = "equal")]
        Equal,
        #[serde(rename = "not_equal")]
        NotEqual,
        #[serde(rename = "is_set")]
        IsSet,
        #[serde(rename = "is_not_set")]
        IsNotSet,
    }
    impl ::std::fmt::Display
    for UpdateFormFieldPlacementConditionDataAttributesComparison {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Equal => f.write_str("equal"),
                Self::NotEqual => f.write_str("not_equal"),
                Self::IsSet => f.write_str("is_set"),
                Self::IsNotSet => f.write_str("is_not_set"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateFormFieldPlacementConditionDataAttributesComparison {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "equal" => Ok(Self::Equal),
                "not_equal" => Ok(Self::NotEqual),
                "is_set" => Ok(Self::IsSet),
                "is_not_set" => Ok(Self::IsNotSet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateFormFieldPlacementConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPlacementConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPlacementConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The resource or attribute the condition applies.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The resource or attribute the condition applies.",
    ///  "type": "string",
    ///  "enum": [
    ///    "placement",
    ///    "required"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPlacementConditionDataAttributesConditioned {
        #[serde(rename = "placement")]
        Placement,
        #[serde(rename = "required")]
        Required,
    }
    impl ::std::fmt::Display
    for UpdateFormFieldPlacementConditionDataAttributesConditioned {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Placement => f.write_str("placement"),
                Self::Required => f.write_str("required"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateFormFieldPlacementConditionDataAttributesConditioned {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "placement" => Ok(Self::Placement),
                "required" => Ok(Self::Required),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateFormFieldPlacementConditionDataAttributesConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPlacementConditionDataAttributesConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPlacementConditionDataAttributesConditioned {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldPlacementConditionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placement_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPlacementConditionDataType {
        #[serde(rename = "form_field_placement_conditions")]
        FormFieldPlacementConditions,
    }
    impl ::std::fmt::Display for UpdateFormFieldPlacementConditionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacementConditions => {
                    f.write_str("form_field_placement_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldPlacementConditionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placement_conditions" => {
                    Ok(Self::FormFieldPlacementConditions)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldPlacementConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPlacementConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPlacementConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldPlacementData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "form": {
    ///          "description": "The form this field is placed on.",
    ///          "type": "string"
    ///        },
    ///        "form_set_id": {
    ///          "description": "The form set this field is placed in.",
    ///          "type": "string"
    ///        },
    ///        "non_editable": {
    ///          "description": "Whether the field is read-only and cannot be edited by users.",
    ///          "type": "boolean"
    ///        },
    ///        "placement_operator": {
    ///          "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///          "type": "string",
    ///          "enum": [
    ///            "and",
    ///            "or"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "The position of the field placement.",
    ///          "type": "integer"
    ///        },
    ///        "required": {
    ///          "description": "Whether the field is unconditionally required on this form.",
    ///          "type": "boolean"
    ///        },
    ///        "required_operator": {
    ///          "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///          "type": "string",
    ///          "enum": [
    ///            "and",
    ///            "or"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_placements"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldPlacementData {
        pub attributes: UpdateFormFieldPlacementDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormFieldPlacementDataType,
    }
    impl UpdateFormFieldPlacementData {
        pub fn builder() -> builder::UpdateFormFieldPlacementData {
            Default::default()
        }
    }
    ///`UpdateFormFieldPlacementDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "form": {
    ///      "description": "The form this field is placed on.",
    ///      "type": "string"
    ///    },
    ///    "form_set_id": {
    ///      "description": "The form set this field is placed in.",
    ///      "type": "string"
    ///    },
    ///    "non_editable": {
    ///      "description": "Whether the field is read-only and cannot be edited by users.",
    ///      "type": "boolean"
    ///    },
    ///    "placement_operator": {
    ///      "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of the field placement.",
    ///      "type": "integer"
    ///    },
    ///    "required": {
    ///      "description": "Whether the field is unconditionally required on this form.",
    ///      "type": "boolean"
    ///    },
    ///    "required_operator": {
    ///      "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///      "type": "string",
    ///      "enum": [
    ///        "and",
    ///        "or"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormFieldPlacementDataAttributes {
        ///The form this field is placed on.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form: ::std::option::Option<::std::string::String>,
        ///The form set this field is placed in.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_set_id: ::std::option::Option<::std::string::String>,
        ///Whether the field is read-only and cannot be edited by users.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub non_editable: ::std::option::Option<bool>,
        ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub placement_operator: ::std::option::Option<
            UpdateFormFieldPlacementDataAttributesPlacementOperator,
        >,
        ///The position of the field placement.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Whether the field is unconditionally required on this form.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required: ::std::option::Option<bool>,
        ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub required_operator: ::std::option::Option<
            UpdateFormFieldPlacementDataAttributesRequiredOperator,
        >,
    }
    impl ::std::default::Default for UpdateFormFieldPlacementDataAttributes {
        fn default() -> Self {
            Self {
                form: Default::default(),
                form_set_id: Default::default(),
                non_editable: Default::default(),
                placement_operator: Default::default(),
                position: Default::default(),
                required: Default::default(),
                required_operator: Default::default(),
            }
        }
    }
    impl UpdateFormFieldPlacementDataAttributes {
        pub fn builder() -> builder::UpdateFormFieldPlacementDataAttributes {
            Default::default()
        }
    }
    ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=placement",
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPlacementDataAttributesPlacementOperator {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display
    for UpdateFormFieldPlacementDataAttributesPlacementOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateFormFieldPlacementDataAttributesPlacementOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateFormFieldPlacementDataAttributesPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPlacementDataAttributesPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPlacementDataAttributesPlacementOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Logical operator when evaluating multiple form_field_placement_conditions with conditioned=required",
    ///  "type": "string",
    ///  "enum": [
    ///    "and",
    ///    "or"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPlacementDataAttributesRequiredOperator {
        #[serde(rename = "and")]
        And,
        #[serde(rename = "or")]
        Or,
    }
    impl ::std::fmt::Display for UpdateFormFieldPlacementDataAttributesRequiredOperator {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::And => f.write_str("and"),
                Self::Or => f.write_str("or"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldPlacementDataAttributesRequiredOperator {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "and" => Ok(Self::And),
                "or" => Ok(Self::Or),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateFormFieldPlacementDataAttributesRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPlacementDataAttributesRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPlacementDataAttributesRequiredOperator {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldPlacementDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_placements"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPlacementDataType {
        #[serde(rename = "form_field_placements")]
        FormFieldPlacements,
    }
    impl ::std::fmt::Display for UpdateFormFieldPlacementDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPlacements => f.write_str("form_field_placements"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldPlacementDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_placements" => Ok(Self::FormFieldPlacements),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldPlacementDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPlacementDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPlacementDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldPosition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "form": {
    ///              "description": "The form for the position",
    ///              "type": "string",
    ///              "enum": [
    ///                "web_new_incident_form",
    ///                "web_update_incident_form",
    ///                "web_incident_post_mortem_form",
    ///                "web_incident_mitigation_form",
    ///                "web_incident_resolution_form",
    ///                "web_incident_cancellation_form",
    ///                "web_scheduled_incident_form",
    ///                "web_update_scheduled_incident_form",
    ///                "incident_post_mortem",
    ///                "slack_new_incident_form",
    ///                "slack_update_incident_form",
    ///                "slack_update_incident_status_form",
    ///                "slack_incident_mitigation_form",
    ///                "slack_incident_resolution_form",
    ///                "slack_incident_cancellation_form",
    ///                "slack_scheduled_incident_form",
    ///                "slack_update_scheduled_incident_form"
    ///              ]
    ///            },
    ///            "form_field_id": {
    ///              "description": "The ID of the form field.",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the form_field_position",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_field_positions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldPosition {
        pub data: UpdateFormFieldPositionData,
    }
    impl UpdateFormFieldPosition {
        pub fn builder() -> builder::UpdateFormFieldPosition {
            Default::default()
        }
    }
    ///`UpdateFormFieldPositionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "form": {
    ///          "description": "The form for the position",
    ///          "type": "string",
    ///          "enum": [
    ///            "web_new_incident_form",
    ///            "web_update_incident_form",
    ///            "web_incident_post_mortem_form",
    ///            "web_incident_mitigation_form",
    ///            "web_incident_resolution_form",
    ///            "web_incident_cancellation_form",
    ///            "web_scheduled_incident_form",
    ///            "web_update_scheduled_incident_form",
    ///            "incident_post_mortem",
    ///            "slack_new_incident_form",
    ///            "slack_update_incident_form",
    ///            "slack_update_incident_status_form",
    ///            "slack_incident_mitigation_form",
    ///            "slack_incident_resolution_form",
    ///            "slack_incident_cancellation_form",
    ///            "slack_scheduled_incident_form",
    ///            "slack_update_scheduled_incident_form"
    ///          ]
    ///        },
    ///        "form_field_id": {
    ///          "description": "The ID of the form field.",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the form_field_position",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_field_positions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormFieldPositionData {
        pub attributes: UpdateFormFieldPositionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormFieldPositionDataType,
    }
    impl UpdateFormFieldPositionData {
        pub fn builder() -> builder::UpdateFormFieldPositionData {
            Default::default()
        }
    }
    ///`UpdateFormFieldPositionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "form": {
    ///      "description": "The form for the position",
    ///      "type": "string",
    ///      "enum": [
    ///        "web_new_incident_form",
    ///        "web_update_incident_form",
    ///        "web_incident_post_mortem_form",
    ///        "web_incident_mitigation_form",
    ///        "web_incident_resolution_form",
    ///        "web_incident_cancellation_form",
    ///        "web_scheduled_incident_form",
    ///        "web_update_scheduled_incident_form",
    ///        "incident_post_mortem",
    ///        "slack_new_incident_form",
    ///        "slack_update_incident_form",
    ///        "slack_update_incident_status_form",
    ///        "slack_incident_mitigation_form",
    ///        "slack_incident_resolution_form",
    ///        "slack_incident_cancellation_form",
    ///        "slack_scheduled_incident_form",
    ///        "slack_update_scheduled_incident_form"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the form_field_position",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormFieldPositionDataAttributes {
        ///The form for the position
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form: ::std::option::Option<UpdateFormFieldPositionDataAttributesForm>,
        ///The ID of the form field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::std::string::String>,
        ///The position of the form_field_position
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateFormFieldPositionDataAttributes {
        fn default() -> Self {
            Self {
                form: Default::default(),
                form_field_id: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateFormFieldPositionDataAttributes {
        pub fn builder() -> builder::UpdateFormFieldPositionDataAttributes {
            Default::default()
        }
    }
    ///The form for the position
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The form for the position",
    ///  "type": "string",
    ///  "enum": [
    ///    "web_new_incident_form",
    ///    "web_update_incident_form",
    ///    "web_incident_post_mortem_form",
    ///    "web_incident_mitigation_form",
    ///    "web_incident_resolution_form",
    ///    "web_incident_cancellation_form",
    ///    "web_scheduled_incident_form",
    ///    "web_update_scheduled_incident_form",
    ///    "incident_post_mortem",
    ///    "slack_new_incident_form",
    ///    "slack_update_incident_form",
    ///    "slack_update_incident_status_form",
    ///    "slack_incident_mitigation_form",
    ///    "slack_incident_resolution_form",
    ///    "slack_incident_cancellation_form",
    ///    "slack_scheduled_incident_form",
    ///    "slack_update_scheduled_incident_form"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPositionDataAttributesForm {
        #[serde(rename = "web_new_incident_form")]
        WebNewIncidentForm,
        #[serde(rename = "web_update_incident_form")]
        WebUpdateIncidentForm,
        #[serde(rename = "web_incident_post_mortem_form")]
        WebIncidentPostMortemForm,
        #[serde(rename = "web_incident_mitigation_form")]
        WebIncidentMitigationForm,
        #[serde(rename = "web_incident_resolution_form")]
        WebIncidentResolutionForm,
        #[serde(rename = "web_incident_cancellation_form")]
        WebIncidentCancellationForm,
        #[serde(rename = "web_scheduled_incident_form")]
        WebScheduledIncidentForm,
        #[serde(rename = "web_update_scheduled_incident_form")]
        WebUpdateScheduledIncidentForm,
        #[serde(rename = "incident_post_mortem")]
        IncidentPostMortem,
        #[serde(rename = "slack_new_incident_form")]
        SlackNewIncidentForm,
        #[serde(rename = "slack_update_incident_form")]
        SlackUpdateIncidentForm,
        #[serde(rename = "slack_update_incident_status_form")]
        SlackUpdateIncidentStatusForm,
        #[serde(rename = "slack_incident_mitigation_form")]
        SlackIncidentMitigationForm,
        #[serde(rename = "slack_incident_resolution_form")]
        SlackIncidentResolutionForm,
        #[serde(rename = "slack_incident_cancellation_form")]
        SlackIncidentCancellationForm,
        #[serde(rename = "slack_scheduled_incident_form")]
        SlackScheduledIncidentForm,
        #[serde(rename = "slack_update_scheduled_incident_form")]
        SlackUpdateScheduledIncidentForm,
    }
    impl ::std::fmt::Display for UpdateFormFieldPositionDataAttributesForm {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebNewIncidentForm => f.write_str("web_new_incident_form"),
                Self::WebUpdateIncidentForm => f.write_str("web_update_incident_form"),
                Self::WebIncidentPostMortemForm => {
                    f.write_str("web_incident_post_mortem_form")
                }
                Self::WebIncidentMitigationForm => {
                    f.write_str("web_incident_mitigation_form")
                }
                Self::WebIncidentResolutionForm => {
                    f.write_str("web_incident_resolution_form")
                }
                Self::WebIncidentCancellationForm => {
                    f.write_str("web_incident_cancellation_form")
                }
                Self::WebScheduledIncidentForm => {
                    f.write_str("web_scheduled_incident_form")
                }
                Self::WebUpdateScheduledIncidentForm => {
                    f.write_str("web_update_scheduled_incident_form")
                }
                Self::IncidentPostMortem => f.write_str("incident_post_mortem"),
                Self::SlackNewIncidentForm => f.write_str("slack_new_incident_form"),
                Self::SlackUpdateIncidentForm => {
                    f.write_str("slack_update_incident_form")
                }
                Self::SlackUpdateIncidentStatusForm => {
                    f.write_str("slack_update_incident_status_form")
                }
                Self::SlackIncidentMitigationForm => {
                    f.write_str("slack_incident_mitigation_form")
                }
                Self::SlackIncidentResolutionForm => {
                    f.write_str("slack_incident_resolution_form")
                }
                Self::SlackIncidentCancellationForm => {
                    f.write_str("slack_incident_cancellation_form")
                }
                Self::SlackScheduledIncidentForm => {
                    f.write_str("slack_scheduled_incident_form")
                }
                Self::SlackUpdateScheduledIncidentForm => {
                    f.write_str("slack_update_scheduled_incident_form")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldPositionDataAttributesForm {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "web_new_incident_form" => Ok(Self::WebNewIncidentForm),
                "web_update_incident_form" => Ok(Self::WebUpdateIncidentForm),
                "web_incident_post_mortem_form" => Ok(Self::WebIncidentPostMortemForm),
                "web_incident_mitigation_form" => Ok(Self::WebIncidentMitigationForm),
                "web_incident_resolution_form" => Ok(Self::WebIncidentResolutionForm),
                "web_incident_cancellation_form" => Ok(Self::WebIncidentCancellationForm),
                "web_scheduled_incident_form" => Ok(Self::WebScheduledIncidentForm),
                "web_update_scheduled_incident_form" => {
                    Ok(Self::WebUpdateScheduledIncidentForm)
                }
                "incident_post_mortem" => Ok(Self::IncidentPostMortem),
                "slack_new_incident_form" => Ok(Self::SlackNewIncidentForm),
                "slack_update_incident_form" => Ok(Self::SlackUpdateIncidentForm),
                "slack_update_incident_status_form" => {
                    Ok(Self::SlackUpdateIncidentStatusForm)
                }
                "slack_incident_mitigation_form" => Ok(Self::SlackIncidentMitigationForm),
                "slack_incident_resolution_form" => Ok(Self::SlackIncidentResolutionForm),
                "slack_incident_cancellation_form" => {
                    Ok(Self::SlackIncidentCancellationForm)
                }
                "slack_scheduled_incident_form" => Ok(Self::SlackScheduledIncidentForm),
                "slack_update_scheduled_incident_form" => {
                    Ok(Self::SlackUpdateScheduledIncidentForm)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldPositionDataAttributesForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPositionDataAttributesForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPositionDataAttributesForm {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormFieldPositionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_field_positions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormFieldPositionDataType {
        #[serde(rename = "form_field_positions")]
        FormFieldPositions,
    }
    impl ::std::fmt::Display for UpdateFormFieldPositionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormFieldPositions => f.write_str("form_field_positions"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormFieldPositionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_field_positions" => Ok(Self::FormFieldPositions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormFieldPositionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormFieldPositionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormFieldPositionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormSet`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "forms": {
    ///              "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the form set",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_sets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormSet {
        pub data: UpdateFormSetData,
    }
    impl UpdateFormSet {
        pub fn builder() -> builder::UpdateFormSet {
            Default::default()
        }
    }
    ///`UpdateFormSetCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "comparison": {
    ///              "description": "The condition comparison.",
    ///              "type": "string",
    ///              "enum": [
    ///                "equal"
    ///              ]
    ///            },
    ///            "form_field_id": {
    ///              "description": "The form field this condition applies.",
    ///              "type": "string"
    ///            },
    ///            "values": {
    ///              "description": "The values for comparison.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value for comparison.",
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "form_set_conditions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormSetCondition {
        pub data: UpdateFormSetConditionData,
    }
    impl UpdateFormSetCondition {
        pub fn builder() -> builder::UpdateFormSetCondition {
            Default::default()
        }
    }
    ///`UpdateFormSetConditionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "comparison": {
    ///          "description": "The condition comparison.",
    ///          "type": "string",
    ///          "enum": [
    ///            "equal"
    ///          ]
    ///        },
    ///        "form_field_id": {
    ///          "description": "The form field this condition applies.",
    ///          "type": "string"
    ///        },
    ///        "values": {
    ///          "description": "The values for comparison.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value for comparison.",
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_set_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormSetConditionData {
        pub attributes: UpdateFormSetConditionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormSetConditionDataType,
    }
    impl UpdateFormSetConditionData {
        pub fn builder() -> builder::UpdateFormSetConditionData {
            Default::default()
        }
    }
    ///`UpdateFormSetConditionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "comparison": {
    ///      "description": "The condition comparison.",
    ///      "type": "string",
    ///      "enum": [
    ///        "equal"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The form field this condition applies.",
    ///      "type": "string"
    ///    },
    ///    "values": {
    ///      "description": "The values for comparison.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value for comparison.",
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormSetConditionDataAttributes {
        ///The condition comparison.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub comparison: ::std::option::Option<
            UpdateFormSetConditionDataAttributesComparison,
        >,
        ///The form field this condition applies.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::std::string::String>,
        ///The values for comparison.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateFormSetConditionDataAttributes {
        fn default() -> Self {
            Self {
                comparison: Default::default(),
                form_field_id: Default::default(),
                values: Default::default(),
            }
        }
    }
    impl UpdateFormSetConditionDataAttributes {
        pub fn builder() -> builder::UpdateFormSetConditionDataAttributes {
            Default::default()
        }
    }
    ///The condition comparison.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The condition comparison.",
    ///  "type": "string",
    ///  "enum": [
    ///    "equal"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormSetConditionDataAttributesComparison {
        #[serde(rename = "equal")]
        Equal,
    }
    impl ::std::fmt::Display for UpdateFormSetConditionDataAttributesComparison {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Equal => f.write_str("equal"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormSetConditionDataAttributesComparison {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "equal" => Ok(Self::Equal),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateFormSetConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormSetConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormSetConditionDataAttributesComparison {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormSetConditionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_set_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormSetConditionDataType {
        #[serde(rename = "form_set_conditions")]
        FormSetConditions,
    }
    impl ::std::fmt::Display for UpdateFormSetConditionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSetConditions => f.write_str("form_set_conditions"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormSetConditionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_set_conditions" => Ok(Self::FormSetConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormSetConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFormSetConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateFormSetConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFormSetData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "forms": {
    ///          "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the form set",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "form_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFormSetData {
        pub attributes: UpdateFormSetDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFormSetDataType,
    }
    impl UpdateFormSetData {
        pub fn builder() -> builder::UpdateFormSetData {
            Default::default()
        }
    }
    ///`UpdateFormSetDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "forms": {
    ///      "description": "The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The form included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the form set",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFormSetDataAttributes {
        ///The forms included in the form set. Add custom forms using the custom form's `slug` field. Or choose a built-in form: `web_new_incident_form`, `web_update_incident_form`, `web_incident_post_mortem_form`, `web_incident_mitigation_form`, `web_incident_resolution_form`, `web_incident_cancellation_form`, `web_scheduled_incident_form`, `web_update_scheduled_incident_form`, `slack_new_incident_form`, `slack_update_incident_form`, `slack_update_incident_status_form`, `slack_incident_mitigation_form`, `slack_incident_resolution_form`, `slack_incident_cancellation_form`, `slack_scheduled_incident_form`, `slack_update_scheduled_incident_form`, `google_chat_new_incident_form`, `google_chat_update_incident_form`
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub forms: ::std::vec::Vec<::std::string::String>,
        ///The name of the form set
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateFormSetDataAttributes {
        fn default() -> Self {
            Self {
                forms: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateFormSetDataAttributes {
        pub fn builder() -> builder::UpdateFormSetDataAttributes {
            Default::default()
        }
    }
    ///`UpdateFormSetDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "form_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFormSetDataType {
        #[serde(rename = "form_sets")]
        FormSets,
    }
    impl ::std::fmt::Display for UpdateFormSetDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FormSets => f.write_str("form_sets"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFormSetDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "form_sets" => Ok(Self::FormSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFormSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateFormSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateFormSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "backstage_id": {
    ///              "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cortex_id": {
    ///              "description": "The Cortex group id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "environment_ids": {
    ///              "description": "Environments associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "escalation_policy_id": {
    ///              "description": "The escalation policy id of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_id": {
    ///              "description": "The external id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the functionality",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "opsgenie_id": {
    ///              "description": "The Opsgenie service id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "opsgenie_team_id": {
    ///              "description": "The Opsgenie team id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "Owner Teams associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "owner_user_ids": {
    ///              "description": "Owner Users associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "pagerduty_id": {
    ///              "description": "The PagerDuty service id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the functionality",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this functionality.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "public_description": {
    ///              "description": "The public description of the functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "Services associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_now_ci_sys_id": {
    ///              "description": "The Service Now CI sys id associated to this functionality",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this functionality",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "functionalities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFunctionality {
        pub data: UpdateFunctionalityData,
    }
    impl UpdateFunctionality {
        pub fn builder() -> builder::UpdateFunctionality {
            Default::default()
        }
    }
    ///`UpdateFunctionalityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "backstage_id": {
    ///          "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cortex_id": {
    ///          "description": "The Cortex group id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "environment_ids": {
    ///          "description": "Environments associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "escalation_policy_id": {
    ///          "description": "The escalation policy id of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_id": {
    ///          "description": "The external id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the functionality",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "opsgenie_id": {
    ///          "description": "The Opsgenie service id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "opsgenie_team_id": {
    ///          "description": "The Opsgenie team id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "Owner Teams associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "owner_user_ids": {
    ///          "description": "Owner Users associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "pagerduty_id": {
    ///          "description": "The PagerDuty service id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the functionality",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this functionality.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "public_description": {
    ///          "description": "The public description of the functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Services associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_now_ci_sys_id": {
    ///          "description": "The Service Now CI sys id associated to this functionality",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this functionality",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFunctionalityData {
        pub attributes: UpdateFunctionalityDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateFunctionalityDataType,
    }
    impl UpdateFunctionalityData {
        pub fn builder() -> builder::UpdateFunctionalityData {
            Default::default()
        }
    }
    ///`UpdateFunctionalityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "Environments associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The escalation policy id of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the functionality",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie service id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "opsgenie_team_id": {
    ///      "description": "The Opsgenie team id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owner Teams associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_ids": {
    ///      "description": "Owner Users associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty service id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the functionality",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this functionality.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Services associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this functionality",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this functionality",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateFunctionalityDataAttributes {
        ///The Backstage entity id associated to this functionality. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///The description of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Environments associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The escalation policy id of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The external id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///The name of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Emails to attach to the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie service id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The Opsgenie team id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_team_id: ::std::option::Option<::std::string::String>,
        ///Owner Teams associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Owner Users associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The PagerDuty service id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///Position of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this functionality.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateFunctionalityDataAttributesPropertiesItem>,
        ///The public description of the functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///Services associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Service Now CI sys id associated to this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<UpdateFunctionalityDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this functionality
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<UpdateFunctionalityDataAttributesSlackChannelsItem>,
        >,
    }
    impl ::std::default::Default for UpdateFunctionalityDataAttributes {
        fn default() -> Self {
            Self {
                backstage_id: Default::default(),
                color: Default::default(),
                cortex_id: Default::default(),
                description: Default::default(),
                environment_ids: Default::default(),
                escalation_policy_id: Default::default(),
                external_id: Default::default(),
                name: Default::default(),
                notify_emails: Default::default(),
                opsgenie_id: Default::default(),
                opsgenie_team_id: Default::default(),
                owner_group_ids: Default::default(),
                owner_user_ids: Default::default(),
                pagerduty_id: Default::default(),
                position: Default::default(),
                properties: Default::default(),
                public_description: Default::default(),
                service_ids: Default::default(),
                service_now_ci_sys_id: Default::default(),
                slack_aliases: Default::default(),
                slack_channels: Default::default(),
            }
        }
    }
    impl UpdateFunctionalityDataAttributes {
        pub fn builder() -> builder::UpdateFunctionalityDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFunctionalityDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl UpdateFunctionalityDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateFunctionalityDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateFunctionalityDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFunctionalityDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl UpdateFunctionalityDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::UpdateFunctionalityDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`UpdateFunctionalityDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateFunctionalityDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl UpdateFunctionalityDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::UpdateFunctionalityDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateFunctionalityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateFunctionalityDataType {
        #[serde(rename = "functionalities")]
        Functionalities,
    }
    impl ::std::fmt::Display for UpdateFunctionalityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Functionalities => f.write_str("functionalities"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateFunctionalityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "functionalities" => Ok(Self::Functionalities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGithubIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "issue_id"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "The issue body",
    ///      "type": "string"
    ///    },
    ///    "completion": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "issue_id": {
    ///      "description": "The issue id",
    ///      "type": "string"
    ///    },
    ///    "issue_type": {
    ///      "description": "The issue type",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "labels_mode": {
    ///      "description": "How to apply labels. 'replace' (default) overwrites all existing labels. 'append' adds to existing labels without removing them.",
    ///      "default": "replace",
    ///      "type": "string",
    ///      "enum": [
    ///        "replace",
    ///        "append"
    ///      ]
    ///    },
    ///    "repository": {
    ///      "description": "The repository (used for loading labels and issue types)",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_github_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGithubIssueTaskParams {
        ///The issue body
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub body: ::std::option::Option<::std::string::String>,
        pub completion: UpdateGithubIssueTaskParamsCompletion,
        ///The issue id
        pub issue_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub issue_type: ::std::option::Option<UpdateGithubIssueTaskParamsIssueType>,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<UpdateGithubIssueTaskParamsLabelsItem>,
        ///How to apply labels. 'replace' (default) overwrites all existing labels. 'append' adds to existing labels without removing them.
        #[serde(default = "defaults::update_github_issue_task_params_labels_mode")]
        pub labels_mode: UpdateGithubIssueTaskParamsLabelsMode,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repository: ::std::option::Option<UpdateGithubIssueTaskParamsRepository>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateGithubIssueTaskParamsTaskType>,
        ///The issue title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateGithubIssueTaskParams {
        pub fn builder() -> builder::UpdateGithubIssueTaskParams {
            Default::default()
        }
    }
    ///`UpdateGithubIssueTaskParamsCompletion`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGithubIssueTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateGithubIssueTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGithubIssueTaskParamsCompletion {
        pub fn builder() -> builder::UpdateGithubIssueTaskParamsCompletion {
            Default::default()
        }
    }
    ///The issue type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The issue type",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGithubIssueTaskParamsIssueType {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateGithubIssueTaskParamsIssueType {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGithubIssueTaskParamsIssueType {
        pub fn builder() -> builder::UpdateGithubIssueTaskParamsIssueType {
            Default::default()
        }
    }
    ///`UpdateGithubIssueTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGithubIssueTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateGithubIssueTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGithubIssueTaskParamsLabelsItem {
        pub fn builder() -> builder::UpdateGithubIssueTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///How to apply labels. 'replace' (default) overwrites all existing labels. 'append' adds to existing labels without removing them.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "How to apply labels. 'replace' (default) overwrites all existing labels. 'append' adds to existing labels without removing them.",
    ///  "default": "replace",
    ///  "type": "string",
    ///  "enum": [
    ///    "replace",
    ///    "append"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGithubIssueTaskParamsLabelsMode {
        #[serde(rename = "replace")]
        Replace,
        #[serde(rename = "append")]
        Append,
    }
    impl ::std::fmt::Display for UpdateGithubIssueTaskParamsLabelsMode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Replace => f.write_str("replace"),
                Self::Append => f.write_str("append"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateGithubIssueTaskParamsLabelsMode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "replace" => Ok(Self::Replace),
                "append" => Ok(Self::Append),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateGithubIssueTaskParamsLabelsMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGithubIssueTaskParamsLabelsMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGithubIssueTaskParamsLabelsMode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for UpdateGithubIssueTaskParamsLabelsMode {
        fn default() -> Self {
            UpdateGithubIssueTaskParamsLabelsMode::Replace
        }
    }
    ///The repository (used for loading labels and issue types)
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The repository (used for loading labels and issue types)",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGithubIssueTaskParamsRepository {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateGithubIssueTaskParamsRepository {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGithubIssueTaskParamsRepository {
        pub fn builder() -> builder::UpdateGithubIssueTaskParamsRepository {
            Default::default()
        }
    }
    ///`UpdateGithubIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_github_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGithubIssueTaskParamsTaskType {
        #[serde(rename = "update_github_issue")]
        UpdateGithubIssue,
    }
    impl ::std::fmt::Display for UpdateGithubIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateGithubIssue => f.write_str("update_github_issue"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateGithubIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_github_issue" => Ok(Self::UpdateGithubIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateGithubIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGithubIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGithubIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGitlabIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "issue_id"
    ///  ],
    ///  "properties": {
    ///    "completion": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "issue_id": {
    ///      "description": "The issue id",
    ///      "type": "string"
    ///    },
    ///    "issue_type": {
    ///      "description": "The issue type",
    ///      "type": "string",
    ///      "enum": [
    ///        "issue",
    ///        "incident",
    ///        "test_case",
    ///        "task"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_gitlab_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGitlabIssueTaskParams {
        pub completion: UpdateGitlabIssueTaskParamsCompletion,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///The issue id
        pub issue_id: ::std::string::String,
        ///The issue type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub issue_type: ::std::option::Option<UpdateGitlabIssueTaskParamsIssueType>,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateGitlabIssueTaskParamsTaskType>,
        ///The issue title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateGitlabIssueTaskParams {
        pub fn builder() -> builder::UpdateGitlabIssueTaskParams {
            Default::default()
        }
    }
    ///`UpdateGitlabIssueTaskParamsCompletion`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGitlabIssueTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateGitlabIssueTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGitlabIssueTaskParamsCompletion {
        pub fn builder() -> builder::UpdateGitlabIssueTaskParamsCompletion {
            Default::default()
        }
    }
    ///The issue type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The issue type",
    ///  "type": "string",
    ///  "enum": [
    ///    "issue",
    ///    "incident",
    ///    "test_case",
    ///    "task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGitlabIssueTaskParamsIssueType {
        #[serde(rename = "issue")]
        Issue,
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "test_case")]
        TestCase,
        #[serde(rename = "task")]
        Task,
    }
    impl ::std::fmt::Display for UpdateGitlabIssueTaskParamsIssueType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Issue => f.write_str("issue"),
                Self::Incident => f.write_str("incident"),
                Self::TestCase => f.write_str("test_case"),
                Self::Task => f.write_str("task"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateGitlabIssueTaskParamsIssueType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "issue" => Ok(Self::Issue),
                "incident" => Ok(Self::Incident),
                "test_case" => Ok(Self::TestCase),
                "task" => Ok(Self::Task),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateGitlabIssueTaskParamsIssueType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGitlabIssueTaskParamsIssueType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGitlabIssueTaskParamsIssueType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGitlabIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_gitlab_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGitlabIssueTaskParamsTaskType {
        #[serde(rename = "update_gitlab_issue")]
        UpdateGitlabIssue,
    }
    impl ::std::fmt::Display for UpdateGitlabIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateGitlabIssue => f.write_str("update_gitlab_issue"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateGitlabIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_gitlab_issue" => Ok(Self::UpdateGitlabIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateGitlabIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGitlabIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGitlabIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGoogleCalendarEventTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "event_id"
    ///  ],
    ///  "properties": {
    ///    "adjustment_days": {
    ///      "description": "Days to adjust meeting by",
    ///      "type": "integer",
    ///      "maximum": 31.0,
    ///      "minimum": 0.0
    ///    },
    ///    "attendees": {
    ///      "description": "Emails of attendees",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "calendar_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "can_guests_invite_others": {
    ///      "type": "boolean"
    ///    },
    ///    "can_guests_modify_event": {
    ///      "type": "boolean"
    ///    },
    ///    "can_guests_see_other_guests": {
    ///      "type": "boolean"
    ///    },
    ///    "conference_solution_key": {
    ///      "description": "Sets the video conference type attached to the meeting",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "eventHangout",
    ///        "eventNamedHangout",
    ///        "hangoutsMeet",
    ///        "addOn"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The event description",
    ///      "type": "string"
    ///    },
    ///    "event_id": {
    ///      "description": "The event ID",
    ///      "type": "string"
    ///    },
    ///    "meeting_duration": {
    ///      "description": "Meeting duration in format like '1 hour', '30 minutes'",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "post_to_incident_timeline": {
    ///      "type": "boolean"
    ///    },
    ///    "post_to_slack_channels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "replace_attendees": {
    ///      "type": "boolean"
    ///    },
    ///    "send_updates": {
    ///      "description": "Send an email to the attendees notifying them of the event",
    ///      "type": "boolean"
    ///    },
    ///    "summary": {
    ///      "description": "The event summary",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "create_google_calendar_event"
    ///      ]
    ///    },
    ///    "time_of_meeting": {
    ///      "description": "Time of meeting in format HH:MM",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGoogleCalendarEventTaskParams {
        ///Days to adjust meeting by
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub adjustment_days: ::std::option::Option<i64>,
        ///Emails of attendees
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub attendees: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calendar_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub can_guests_invite_others: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub can_guests_modify_event: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub can_guests_see_other_guests: ::std::option::Option<bool>,
        ///Sets the video conference type attached to the meeting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub conference_solution_key: ::std::option::Option<
            UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey,
        >,
        ///The event description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The event ID
        pub event_id: ::std::string::String,
        ///Meeting duration in format like '1 hour', '30 minutes'
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meeting_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_to_incident_timeline: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub post_to_slack_channels: ::std::vec::Vec<
            UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub replace_attendees: ::std::option::Option<bool>,
        ///Send an email to the attendees notifying them of the event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub send_updates: ::std::option::Option<bool>,
        ///The event summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            UpdateGoogleCalendarEventTaskParamsTaskType,
        >,
        ///Time of meeting in format HH:MM
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_of_meeting: ::std::option::Option<::std::string::String>,
    }
    impl UpdateGoogleCalendarEventTaskParams {
        pub fn builder() -> builder::UpdateGoogleCalendarEventTaskParams {
            Default::default()
        }
    }
    ///Sets the video conference type attached to the meeting
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Sets the video conference type attached to the meeting",
    ///  "type": "string",
    ///  "enum": [
    ///    "eventHangout",
    ///    "eventNamedHangout",
    ///    "hangoutsMeet",
    ///    "addOn"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        #[serde(rename = "eventHangout")]
        EventHangout,
        #[serde(rename = "eventNamedHangout")]
        EventNamedHangout,
        #[serde(rename = "hangoutsMeet")]
        HangoutsMeet,
        #[serde(rename = "addOn")]
        AddOn,
    }
    impl ::std::fmt::Display
    for UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::EventHangout => f.write_str("eventHangout"),
                Self::EventNamedHangout => f.write_str("eventNamedHangout"),
                Self::HangoutsMeet => f.write_str("hangoutsMeet"),
                Self::AddOn => f.write_str("addOn"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "eventHangout" => Ok(Self::EventHangout),
                "eventNamedHangout" => Ok(Self::EventNamedHangout),
                "hangoutsMeet" => Ok(Self::HangoutsMeet),
                "addOn" => Ok(Self::AddOn),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
        pub fn builder() -> builder::UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateGoogleCalendarEventTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create_google_calendar_event"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGoogleCalendarEventTaskParamsTaskType {
        #[serde(rename = "create_google_calendar_event")]
        CreateGoogleCalendarEvent,
    }
    impl ::std::fmt::Display for UpdateGoogleCalendarEventTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::CreateGoogleCalendarEvent => {
                    f.write_str("create_google_calendar_event")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateGoogleCalendarEventTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create_google_calendar_event" => Ok(Self::CreateGoogleCalendarEvent),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateGoogleCalendarEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGoogleCalendarEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGoogleCalendarEventTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGoogleChatSpaceDescriptionTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "description",
    ///    "space"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The space description. Supports liquid markup",
    ///      "type": "string"
    ///    },
    ///    "space": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_google_chat_space_description"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGoogleChatSpaceDescriptionTaskParams {
        ///The space description. Supports liquid markup
        pub description: ::std::string::String,
        pub space: UpdateGoogleChatSpaceDescriptionTaskParamsSpace,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            UpdateGoogleChatSpaceDescriptionTaskParamsTaskType,
        >,
    }
    impl UpdateGoogleChatSpaceDescriptionTaskParams {
        pub fn builder() -> builder::UpdateGoogleChatSpaceDescriptionTaskParams {
            Default::default()
        }
    }
    ///`UpdateGoogleChatSpaceDescriptionTaskParamsSpace`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
        pub fn builder() -> builder::UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
            Default::default()
        }
    }
    ///`UpdateGoogleChatSpaceDescriptionTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_google_chat_space_description"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGoogleChatSpaceDescriptionTaskParamsTaskType {
        #[serde(rename = "update_google_chat_space_description")]
        UpdateGoogleChatSpaceDescription,
    }
    impl ::std::fmt::Display for UpdateGoogleChatSpaceDescriptionTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateGoogleChatSpaceDescription => {
                    f.write_str("update_google_chat_space_description")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateGoogleChatSpaceDescriptionTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_google_chat_space_description" => {
                    Ok(Self::UpdateGoogleChatSpaceDescription)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateGoogleChatSpaceDescriptionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGoogleChatSpaceDescriptionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGoogleChatSpaceDescriptionTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateGoogleDocsPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Google Doc content",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The Google Doc file ID",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when updating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_google_docs_page"
    ///      ]
    ///    },
    ///    "template_id": {
    ///      "description": "The Google Doc file ID to use as a template.",
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "The Google Doc title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateGoogleDocsPageTaskParams {
        ///The Google Doc content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Google Doc file ID
        pub file_id: ::std::string::String,
        ///Retrospective template to use when updating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateGoogleDocsPageTaskParamsTaskType>,
        ///The Google Doc file ID to use as a template.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_id: ::std::option::Option<::std::string::String>,
        ///The Google Doc title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateGoogleDocsPageTaskParams {
        pub fn builder() -> builder::UpdateGoogleDocsPageTaskParams {
            Default::default()
        }
    }
    ///`UpdateGoogleDocsPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_google_docs_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateGoogleDocsPageTaskParamsTaskType {
        #[serde(rename = "update_google_docs_page")]
        UpdateGoogleDocsPage,
    }
    impl ::std::fmt::Display for UpdateGoogleDocsPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateGoogleDocsPage => f.write_str("update_google_docs_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateGoogleDocsPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_google_docs_page" => Ok(Self::UpdateGoogleDocsPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateGoogleDocsPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateGoogleDocsPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateGoogleDocsPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateHeartbeat`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alert_description": {
    ///              "description": "Description of alerts triggered when heartbeat expires.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_summary": {
    ///              "description": "Summary of alerts triggered when heartbeat expires.",
    ///              "type": "string"
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "Urgency of alerts triggered when heartbeat expires.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the heartbeat",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether to trigger alerts when heartbeat is expired.",
    ///              "type": "boolean"
    ///            },
    ///            "interval": {
    ///              "type": "integer"
    ///            },
    ///            "interval_unit": {
    ///              "type": "string",
    ///              "enum": [
    ///                "minutes",
    ///                "hours",
    ///                "days"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the heartbeat",
    ///              "type": "string"
    ///            },
    ///            "notification_target_id": {
    ///              "type": "string"
    ///            },
    ///            "notification_target_type": {
    ///              "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///              "type": "string",
    ///              "enum": [
    ///                "User",
    ///                "Group",
    ///                "Service",
    ///                "EscalationPolicy",
    ///                "Functionality"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "heartbeats"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateHeartbeat {
        pub data: UpdateHeartbeatData,
    }
    impl UpdateHeartbeat {
        pub fn builder() -> builder::UpdateHeartbeat {
            Default::default()
        }
    }
    ///`UpdateHeartbeatData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alert_description": {
    ///          "description": "Description of alerts triggered when heartbeat expires.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_summary": {
    ///          "description": "Summary of alerts triggered when heartbeat expires.",
    ///          "type": "string"
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "Urgency of alerts triggered when heartbeat expires.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the heartbeat",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether to trigger alerts when heartbeat is expired.",
    ///          "type": "boolean"
    ///        },
    ///        "interval": {
    ///          "type": "integer"
    ///        },
    ///        "interval_unit": {
    ///          "type": "string",
    ///          "enum": [
    ///            "minutes",
    ///            "hours",
    ///            "days"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the heartbeat",
    ///          "type": "string"
    ///        },
    ///        "notification_target_id": {
    ///          "type": "string"
    ///        },
    ///        "notification_target_type": {
    ///          "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "User",
    ///            "Group",
    ///            "Service",
    ///            "EscalationPolicy",
    ///            "Functionality"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "heartbeats"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateHeartbeatData {
        pub attributes: UpdateHeartbeatDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateHeartbeatDataType,
    }
    impl UpdateHeartbeatData {
        pub fn builder() -> builder::UpdateHeartbeatData {
            Default::default()
        }
    }
    ///`UpdateHeartbeatDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_description": {
    ///      "description": "Description of alerts triggered when heartbeat expires.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_summary": {
    ///      "description": "Summary of alerts triggered when heartbeat expires.",
    ///      "type": "string"
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "Urgency of alerts triggered when heartbeat expires.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the heartbeat",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether to trigger alerts when heartbeat is expired.",
    ///      "type": "boolean"
    ///    },
    ///    "interval": {
    ///      "type": "integer"
    ///    },
    ///    "interval_unit": {
    ///      "type": "string",
    ///      "enum": [
    ///        "minutes",
    ///        "hours",
    ///        "days"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the heartbeat",
    ///      "type": "string"
    ///    },
    ///    "notification_target_id": {
    ///      "type": "string"
    ///    },
    ///    "notification_target_type": {
    ///      "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Group",
    ///        "Service",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateHeartbeatDataAttributes {
        ///Description of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_description: ::std::option::Option<::std::string::String>,
        ///Summary of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_summary: ::std::option::Option<::std::string::String>,
        ///Urgency of alerts triggered when heartbeat expires.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The description of the heartbeat
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether to trigger alerts when heartbeat is expired.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub interval: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub interval_unit: ::std::option::Option<
            UpdateHeartbeatDataAttributesIntervalUnit,
        >,
        ///The name of the heartbeat
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_target_id: ::std::option::Option<::std::string::String>,
        ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_target_type: ::std::option::Option<
            UpdateHeartbeatDataAttributesNotificationTargetType,
        >,
    }
    impl ::std::default::Default for UpdateHeartbeatDataAttributes {
        fn default() -> Self {
            Self {
                alert_description: Default::default(),
                alert_summary: Default::default(),
                alert_urgency_id: Default::default(),
                description: Default::default(),
                enabled: Default::default(),
                interval: Default::default(),
                interval_unit: Default::default(),
                name: Default::default(),
                notification_target_id: Default::default(),
                notification_target_type: Default::default(),
            }
        }
    }
    impl UpdateHeartbeatDataAttributes {
        pub fn builder() -> builder::UpdateHeartbeatDataAttributes {
            Default::default()
        }
    }
    ///`UpdateHeartbeatDataAttributesIntervalUnit`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "minutes",
    ///    "hours",
    ///    "days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateHeartbeatDataAttributesIntervalUnit {
        #[serde(rename = "minutes")]
        Minutes,
        #[serde(rename = "hours")]
        Hours,
        #[serde(rename = "days")]
        Days,
    }
    impl ::std::fmt::Display for UpdateHeartbeatDataAttributesIntervalUnit {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Minutes => f.write_str("minutes"),
                Self::Hours => f.write_str("hours"),
                Self::Days => f.write_str("days"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateHeartbeatDataAttributesIntervalUnit {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "minutes" => Ok(Self::Minutes),
                "hours" => Ok(Self::Hours),
                "days" => Ok(Self::Days),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateHeartbeatDataAttributesIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateHeartbeatDataAttributesIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateHeartbeatDataAttributesIntervalUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Group",
    ///    "Service",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateHeartbeatDataAttributesNotificationTargetType {
        User,
        Group,
        Service,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display for UpdateHeartbeatDataAttributesNotificationTargetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Group => f.write_str("Group"),
                Self::Service => f.write_str("Service"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateHeartbeatDataAttributesNotificationTargetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Group" => Ok(Self::Group),
                "Service" => Ok(Self::Service),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateHeartbeatDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateHeartbeatDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateHeartbeatDataAttributesNotificationTargetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateHeartbeatDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "heartbeats"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateHeartbeatDataType {
        #[serde(rename = "heartbeats")]
        Heartbeats,
    }
    impl ::std::fmt::Display for UpdateHeartbeatDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Heartbeats => f.write_str("heartbeats"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateHeartbeatDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "heartbeats" => Ok(Self::Heartbeats),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateHeartbeatDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateHeartbeatDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateHeartbeatDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncident`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "acknowledged_at": {
    ///              "description": "Date of acknowledgment",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_ids": {
    ///              "description": "The Alert IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "cancellation_message": {
    ///              "description": "Why was the incident cancelled?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cancelled_at": {
    ///              "description": "Date of cancellation",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cause_ids": {
    ///              "description": "The Cause IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "closed_at": {
    ///              "description": "Date of closure",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "detected_at": {
    ///              "description": "Date of detection",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "duplicate_incident_id": {
    ///              "description": "ID of duplicated incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "functionality_ids": {
    ///              "description": "The Functionality IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "google_drive_parent_id": {
    ///              "description": "Google Drive parent folder ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "google_drive_url": {
    ///              "description": "Google Drive URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "group_ids": {
    ///              "description": "The Team IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "in_triage_at": {
    ///              "description": "Date of triage",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_type_ids": {
    ///              "description": "The Incident Type IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "jira_issue_id": {
    ///              "description": "Jira issue ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_key": {
    ///              "description": "Jira issue key",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_url": {
    ///              "description": "Jira issue URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "test",
    ///                "test_sub",
    ///                "example",
    ///                "example_sub",
    ///                "normal",
    ///                "normal_sub",
    ///                "backfilled",
    ///                "scheduled",
    ///                "scheduled_sub"
    ///              ]
    ///            },
    ///            "labels": {
    ///              "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            },
    ///            "mitigated_at": {
    ///              "description": "Date of mitigation",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "mitigation_message": {
    ///              "description": "How was the incident mitigated?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "muted_service_ids": {
    ///              "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "parent_incident_id": {
    ///              "description": "ID of parent incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "private": {
    ///              "description": "Convert the incident as private. Once an incident is updated as private it cannot be undone",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "public_title": {
    ///              "description": "The public title of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "resolution_message": {
    ///              "description": "How was the incident resolved?",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "resolved_at": {
    ///              "description": "Date of resolution",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "scheduled_for": {
    ///              "description": "Date of when the maintenance begins",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "scheduled_until": {
    ///              "description": "Date of when the maintenance ends",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_id": {
    ///              "description": "The Severity ID to attach to the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_archived": {
    ///              "description": "Whether the Slack channel is archived",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_id": {
    ///              "description": "Slack channel id",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_name": {
    ///              "description": "Slack channel name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel_url": {
    ///              "description": "Slack channel url",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "started_at": {
    ///              "description": "Date of start",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "status": {
    ///              "description": "The status of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "in_triage",
    ///                "started",
    ///                "detected",
    ///                "acknowledged",
    ///                "mitigated",
    ///                "resolved",
    ///                "closed",
    ///                "cancelled",
    ///                "scheduled",
    ///                "in_progress",
    ///                "completed"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the incident",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incidents"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncident {
        pub data: UpdateIncidentData,
    }
    impl UpdateIncident {
        pub fn builder() -> builder::UpdateIncident {
            Default::default()
        }
    }
    ///`UpdateIncidentActionItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "assigned_to_group_ids": {
    ///              "description": "IDs of groups you wish to assign this action item",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "assigned_to_user_id": {
    ///              "description": "ID of user you wish to assign this action item",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the action item",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "due_date": {
    ///              "description": "The due date of the action item",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "form_field_selections": {
    ///              "description": "Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "form_field_id"
    ///                ],
    ///                "properties": {
    ///                  "_destroy": {
    ///                    "description": "Set to true to remove the field's value from the action item",
    ///                    "type": [
    ///                      "boolean",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  "form_field_id": {
    ///                    "description": "ID of the custom field",
    ///                    "type": "string"
    ///                  },
    ///                  "id": {
    ///                    "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///                    "type": "string"
    ///                  },
    ///                  "selected_catalog_entity_ids": {
    ///                    "description": "IDs of the selected catalog entities",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_cause_ids": {
    ///                    "description": "IDs of the selected causes",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_environment_ids": {
    ///                    "description": "IDs of the selected environments",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_functionality_ids": {
    ///                    "description": "IDs of the selected functionalities",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_group_ids": {
    ///                    "description": "IDs of the selected teams",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_incident_type_ids": {
    ///                    "description": "IDs of the selected incident types",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_option_ids": {
    ///                    "description": "IDs of the selected custom field options",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_service_ids": {
    ///                    "description": "IDs of the selected services",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  },
    ///                  "selected_user_ids": {
    ///                    "description": "IDs of the selected users",
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "integer"
    ///                    }
    ///                  },
    ///                  "value": {
    ///                    "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///                    "oneOf": [
    ///                      {
    ///                        "type": [
    ///                          "string",
    ///                          "null"
    ///                        ]
    ///                      },
    ///                      {
    ///                        "type": "array",
    ///                        "items": {
    ///                          "type": "string"
    ///                        }
    ///                      }
    ///                    ]
    ///                  }
    ///                },
    ///                "additionalProperties": false
    ///              }
    ///            },
    ///            "jira_issue_id": {
    ///              "description": "The Jira issue ID.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_key": {
    ///              "description": "The Jira issue key.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "jira_issue_url": {
    ///              "description": "The Jira issue URL.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "task",
    ///                "follow_up"
    ///              ]
    ///            },
    ///            "priority": {
    ///              "description": "The priority of the action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "high",
    ///                "medium",
    ///                "low"
    ///              ]
    ///            },
    ///            "status": {
    ///              "description": "The status of the action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "open",
    ///                "in_progress",
    ///                "cancelled",
    ///                "done"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the action item",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_action_items"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentActionItem {
        pub data: UpdateIncidentActionItemData,
    }
    impl UpdateIncidentActionItem {
        pub fn builder() -> builder::UpdateIncidentActionItem {
            Default::default()
        }
    }
    ///`UpdateIncidentActionItemData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "assigned_to_group_ids": {
    ///          "description": "IDs of groups you wish to assign this action item",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "assigned_to_user_id": {
    ///          "description": "ID of user you wish to assign this action item",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the action item",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "due_date": {
    ///          "description": "The due date of the action item",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "form_field_selections": {
    ///          "description": "Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "form_field_id"
    ///            ],
    ///            "properties": {
    ///              "_destroy": {
    ///                "description": "Set to true to remove the field's value from the action item",
    ///                "type": [
    ///                  "boolean",
    ///                  "null"
    ///                ]
    ///              },
    ///              "form_field_id": {
    ///                "description": "ID of the custom field",
    ///                "type": "string"
    ///              },
    ///              "id": {
    ///                "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///                "type": "string"
    ///              },
    ///              "selected_catalog_entity_ids": {
    ///                "description": "IDs of the selected catalog entities",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_cause_ids": {
    ///                "description": "IDs of the selected causes",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_environment_ids": {
    ///                "description": "IDs of the selected environments",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_functionality_ids": {
    ///                "description": "IDs of the selected functionalities",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_group_ids": {
    ///                "description": "IDs of the selected teams",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_incident_type_ids": {
    ///                "description": "IDs of the selected incident types",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_option_ids": {
    ///                "description": "IDs of the selected custom field options",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_service_ids": {
    ///                "description": "IDs of the selected services",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              },
    ///              "selected_user_ids": {
    ///                "description": "IDs of the selected users",
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "integer"
    ///                }
    ///              },
    ///              "value": {
    ///                "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///                "oneOf": [
    ///                  {
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ]
    ///                  },
    ///                  {
    ///                    "type": "array",
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                ]
    ///              }
    ///            },
    ///            "additionalProperties": false
    ///          }
    ///        },
    ///        "jira_issue_id": {
    ///          "description": "The Jira issue ID.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_key": {
    ///          "description": "The Jira issue key.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_url": {
    ///          "description": "The Jira issue URL.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "task",
    ///            "follow_up"
    ///          ]
    ///        },
    ///        "priority": {
    ///          "description": "The priority of the action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "high",
    ///            "medium",
    ///            "low"
    ///          ]
    ///        },
    ///        "status": {
    ///          "description": "The status of the action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "open",
    ///            "in_progress",
    ///            "cancelled",
    ///            "done"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the action item",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_action_items"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentActionItemData {
        pub attributes: UpdateIncidentActionItemDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentActionItemDataType,
    }
    impl UpdateIncidentActionItemData {
        pub fn builder() -> builder::UpdateIncidentActionItemData {
            Default::default()
        }
    }
    ///`UpdateIncidentActionItemDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "assigned_to_group_ids": {
    ///      "description": "IDs of groups you wish to assign this action item",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "assigned_to_user_id": {
    ///      "description": "ID of user you wish to assign this action item",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the action item",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_date": {
    ///      "description": "The due date of the action item",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "form_field_selections": {
    ///      "description": "Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "form_field_id"
    ///        ],
    ///        "properties": {
    ///          "_destroy": {
    ///            "description": "Set to true to remove the field's value from the action item",
    ///            "type": [
    ///              "boolean",
    ///              "null"
    ///            ]
    ///          },
    ///          "form_field_id": {
    ///            "description": "ID of the custom field",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///            "type": "string"
    ///          },
    ///          "selected_catalog_entity_ids": {
    ///            "description": "IDs of the selected catalog entities",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_cause_ids": {
    ///            "description": "IDs of the selected causes",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_environment_ids": {
    ///            "description": "IDs of the selected environments",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_functionality_ids": {
    ///            "description": "IDs of the selected functionalities",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_group_ids": {
    ///            "description": "IDs of the selected teams",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_incident_type_ids": {
    ///            "description": "IDs of the selected incident types",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_option_ids": {
    ///            "description": "IDs of the selected custom field options",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_service_ids": {
    ///            "description": "IDs of the selected services",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "selected_user_ids": {
    ///            "description": "IDs of the selected users",
    ///            "type": "array",
    ///            "items": {
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "value": {
    ///            "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///            "oneOf": [
    ///              {
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ]
    ///              },
    ///              {
    ///                "type": "array",
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            ]
    ///          }
    ///        },
    ///        "additionalProperties": false
    ///      }
    ///    },
    ///    "jira_issue_id": {
    ///      "description": "The Jira issue ID.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "The Jira issue key.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_url": {
    ///      "description": "The Jira issue URL.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "task",
    ///        "follow_up"
    ///      ]
    ///    },
    ///    "priority": {
    ///      "description": "The priority of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "open",
    ///        "in_progress",
    ///        "cancelled",
    ///        "done"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the action item",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentActionItemDataAttributes {
        ///IDs of groups you wish to assign this action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///ID of user you wish to assign this action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_to_user_id: ::std::option::Option<i64>,
        ///The description of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///Custom field values to set on the action item. Ignored unless custom fields for action items are enabled for the organization.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_selections: ::std::option::Option<
            ::std::vec::Vec<
                UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
            >,
        >,
        ///The Jira issue ID.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_id: ::std::option::Option<::std::string::String>,
        ///The Jira issue key.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_key: ::std::option::Option<::std::string::String>,
        ///The Jira issue URL.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_url: ::std::option::Option<::std::string::String>,
        ///The kind of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateIncidentActionItemDataAttributesKind>,
        ///The priority of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<
            UpdateIncidentActionItemDataAttributesPriority,
        >,
        ///The status of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateIncidentActionItemDataAttributesStatus>,
        ///The summary of the action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentActionItemDataAttributes {
        fn default() -> Self {
            Self {
                assigned_to_group_ids: Default::default(),
                assigned_to_user_id: Default::default(),
                description: Default::default(),
                due_date: Default::default(),
                form_field_selections: Default::default(),
                jira_issue_id: Default::default(),
                jira_issue_key: Default::default(),
                jira_issue_url: Default::default(),
                kind: Default::default(),
                priority: Default::default(),
                status: Default::default(),
                summary: Default::default(),
            }
        }
    }
    impl UpdateIncidentActionItemDataAttributes {
        pub fn builder() -> builder::UpdateIncidentActionItemDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id"
    ///  ],
    ///  "properties": {
    ///    "_destroy": {
    ///      "description": "Set to true to remove the field's value from the action item",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "ID of the custom field",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "ID of an existing selection. Required when updating or removing a field's existing value.",
    ///      "type": "string"
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "description": "IDs of the selected catalog entities",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "description": "IDs of the selected causes",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "description": "IDs of the selected environments",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "description": "IDs of the selected functionalities",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "description": "IDs of the selected teams",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "description": "IDs of the selected incident types",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "description": "IDs of the selected custom field options",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "description": "IDs of the selected services",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "description": "IDs of the selected users",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///      "oneOf": [
    ///        {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
        ///Set to true to remove the field's value from the action item
        #[serde(
            rename = "_destroy",
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub destroy: ::std::option::Option<bool>,
        ///ID of the custom field
        pub form_field_id: ::std::string::String,
        ///ID of an existing selection. Required when updating or removing a field's existing value.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///IDs of the selected catalog entities
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected causes
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected environments
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected functionalities
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected teams
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected incident types
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected custom field options
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected services
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        ///IDs of the selected users
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        ///Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<
            UpdateIncidentActionItemDataAttributesFormFieldSelectionsItemValue,
        >,
    }
    impl UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
        pub fn builder() -> builder::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
            Default::default()
        }
    }
    ///Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Value for text, textarea, rich text, date, datetime, number, checkbox, or tag fields",
    ///  "oneOf": [
    ///    {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum UpdateIncidentActionItemDataAttributesFormFieldSelectionsItemValue {
        Variant0(::std::option::Option<::std::string::String>),
        Variant1(::std::vec::Vec<::std::string::String>),
    }
    impl ::std::convert::From<::std::option::Option<::std::string::String>>
    for UpdateIncidentActionItemDataAttributesFormFieldSelectionsItemValue {
        fn from(value: ::std::option::Option<::std::string::String>) -> Self {
            Self::Variant0(value)
        }
    }
    impl ::std::convert::From<::std::vec::Vec<::std::string::String>>
    for UpdateIncidentActionItemDataAttributesFormFieldSelectionsItemValue {
        fn from(value: ::std::vec::Vec<::std::string::String>) -> Self {
            Self::Variant1(value)
        }
    }
    ///The kind of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "task",
    ///    "follow_up"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentActionItemDataAttributesKind {
        #[serde(rename = "task")]
        Task,
        #[serde(rename = "follow_up")]
        FollowUp,
    }
    impl ::std::fmt::Display for UpdateIncidentActionItemDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Task => f.write_str("task"),
                Self::FollowUp => f.write_str("follow_up"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentActionItemDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "task" => Ok(Self::Task),
                "follow_up" => Ok(Self::FollowUp),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentActionItemDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentActionItemDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentActionItemDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The priority of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentActionItemDataAttributesPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for UpdateIncidentActionItemDataAttributesPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentActionItemDataAttributesPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentActionItemDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentActionItemDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentActionItemDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "open",
    ///    "in_progress",
    ///    "cancelled",
    ///    "done"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentActionItemDataAttributesStatus {
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "done")]
        Done,
    }
    impl ::std::fmt::Display for UpdateIncidentActionItemDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Open => f.write_str("open"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Done => f.write_str("done"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentActionItemDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "open" => Ok(Self::Open),
                "in_progress" => Ok(Self::InProgress),
                "cancelled" => Ok(Self::Cancelled),
                "done" => Ok(Self::Done),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentActionItemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentActionItemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentActionItemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentActionItemDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_action_items"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentActionItemDataType {
        #[serde(rename = "incident_action_items")]
        IncidentActionItems,
    }
    impl ::std::fmt::Display for UpdateIncidentActionItemDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentActionItems => f.write_str("incident_action_items"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentActionItemDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_action_items" => Ok(Self::IncidentActionItems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentActionItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentActionItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentActionItemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentCustomFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected option id for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "value": {
    ///              "description": "The selected value for text kind custom fields",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_custom_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentCustomFieldSelection {
        pub data: UpdateIncidentCustomFieldSelectionData,
    }
    impl UpdateIncidentCustomFieldSelection {
        pub fn builder() -> builder::UpdateIncidentCustomFieldSelection {
            Default::default()
        }
    }
    ///`UpdateIncidentCustomFieldSelectionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected option id for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "value": {
    ///          "description": "The selected value for text kind custom fields",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentCustomFieldSelectionData {
        pub attributes: UpdateIncidentCustomFieldSelectionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentCustomFieldSelectionDataType,
    }
    impl UpdateIncidentCustomFieldSelectionData {
        pub fn builder() -> builder::UpdateIncidentCustomFieldSelectionData {
            Default::default()
        }
    }
    ///`UpdateIncidentCustomFieldSelectionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "The selected value for text kind custom fields",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentCustomFieldSelectionDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<i64>,
        ///The selected value for text kind custom fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentCustomFieldSelectionDataAttributes {
        fn default() -> Self {
            Self {
                selected_option_ids: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateIncidentCustomFieldSelectionDataAttributes {
        pub fn builder() -> builder::UpdateIncidentCustomFieldSelectionDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentCustomFieldSelectionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentCustomFieldSelectionDataType {
        #[serde(rename = "incident_custom_field_selections")]
        IncidentCustomFieldSelections,
    }
    impl ::std::fmt::Display for UpdateIncidentCustomFieldSelectionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCustomFieldSelections => {
                    f.write_str("incident_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentCustomFieldSelectionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_custom_field_selections" => {
                    Ok(Self::IncidentCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "acknowledged_at": {
    ///          "description": "Date of acknowledgment",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_ids": {
    ///          "description": "The Alert IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "cancellation_message": {
    ///          "description": "Why was the incident cancelled?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cancelled_at": {
    ///          "description": "Date of cancellation",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cause_ids": {
    ///          "description": "The Cause IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "closed_at": {
    ///          "description": "Date of closure",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "detected_at": {
    ///          "description": "Date of detection",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "duplicate_incident_id": {
    ///          "description": "ID of duplicated incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "functionality_ids": {
    ///          "description": "The Functionality IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "google_drive_parent_id": {
    ///          "description": "Google Drive parent folder ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "google_drive_url": {
    ///          "description": "Google Drive URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "group_ids": {
    ///          "description": "The Team IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "in_triage_at": {
    ///          "description": "Date of triage",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_type_ids": {
    ///          "description": "The Incident Type IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "jira_issue_id": {
    ///          "description": "Jira issue ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_key": {
    ///          "description": "Jira issue key",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "jira_issue_url": {
    ///          "description": "Jira issue URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "test",
    ///            "test_sub",
    ///            "example",
    ///            "example_sub",
    ///            "normal",
    ///            "normal_sub",
    ///            "backfilled",
    ///            "scheduled",
    ///            "scheduled_sub"
    ///          ]
    ///        },
    ///        "labels": {
    ///          "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        },
    ///        "mitigated_at": {
    ///          "description": "Date of mitigation",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "mitigation_message": {
    ///          "description": "How was the incident mitigated?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "muted_service_ids": {
    ///          "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "parent_incident_id": {
    ///          "description": "ID of parent incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "private": {
    ///          "description": "Convert the incident as private. Once an incident is updated as private it cannot be undone",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "public_title": {
    ///          "description": "The public title of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "resolution_message": {
    ///          "description": "How was the incident resolved?",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "resolved_at": {
    ///          "description": "Date of resolution",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "scheduled_for": {
    ///          "description": "Date of when the maintenance begins",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "scheduled_until": {
    ///          "description": "Date of when the maintenance ends",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_id": {
    ///          "description": "The Severity ID to attach to the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_archived": {
    ///          "description": "Whether the Slack channel is archived",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_id": {
    ///          "description": "Slack channel id",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_name": {
    ///          "description": "Slack channel name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel_url": {
    ///          "description": "Slack channel url",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "started_at": {
    ///          "description": "Date of start",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "status": {
    ///          "description": "The status of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "in_triage",
    ///            "started",
    ///            "detected",
    ///            "acknowledged",
    ///            "mitigated",
    ///            "resolved",
    ///            "closed",
    ///            "cancelled",
    ///            "scheduled",
    ///            "in_progress",
    ///            "completed"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the incident",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incidents"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentData {
        pub attributes: UpdateIncidentDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentDataType,
    }
    impl UpdateIncidentData {
        pub fn builder() -> builder::UpdateIncidentData {
            Default::default()
        }
    }
    ///`UpdateIncidentDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "acknowledged_at": {
    ///      "description": "Date of acknowledgment",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_ids": {
    ///      "description": "The Alert IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "cancellation_message": {
    ///      "description": "Why was the incident cancelled?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cancelled_at": {
    ///      "description": "Date of cancellation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cause_ids": {
    ///      "description": "The Cause IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "closed_at": {
    ///      "description": "Date of closure",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "detected_at": {
    ///      "description": "Date of detection",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "duplicate_incident_id": {
    ///      "description": "ID of duplicated incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "google_drive_parent_id": {
    ///      "description": "Google Drive parent folder ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "google_drive_url": {
    ///      "description": "Google Drive URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "in_triage_at": {
    ///      "description": "Date of triage",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "jira_issue_id": {
    ///      "description": "Jira issue ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_key": {
    ///      "description": "Jira issue key",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "jira_issue_url": {
    ///      "description": "Jira issue URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "test",
    ///        "test_sub",
    ///        "example",
    ///        "example_sub",
    ///        "normal",
    ///        "normal_sub",
    ///        "backfilled",
    ///        "scheduled",
    ///        "scheduled_sub"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "description": "Labels to attach to the incidents. eg: {\"platform\":\"osx\", \"version\": \"1.29\"}",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "mitigated_at": {
    ///      "description": "Date of mitigation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "mitigation_message": {
    ///      "description": "How was the incident mitigated?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "muted_service_ids": {
    ///      "description": "The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "parent_incident_id": {
    ///      "description": "ID of parent incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "private": {
    ///      "description": "Convert the incident as private. Once an incident is updated as private it cannot be undone",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_title": {
    ///      "description": "The public title of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolution_message": {
    ///      "description": "How was the incident resolved?",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolved_at": {
    ///      "description": "Date of resolution",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "scheduled_for": {
    ///      "description": "Date of when the maintenance begins",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "scheduled_until": {
    ///      "description": "Date of when the maintenance ends",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_id": {
    ///      "description": "The Severity ID to attach to the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_archived": {
    ///      "description": "Whether the Slack channel is archived",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_id": {
    ///      "description": "Slack channel id",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_name": {
    ///      "description": "Slack channel name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel_url": {
    ///      "description": "Slack channel url",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "Date of start",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "detected",
    ///        "acknowledged",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the incident",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentDataAttributes {
        ///Date of acknowledgment
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub acknowledged_at: ::std::option::Option<::std::string::String>,
        ///The Alert IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Why was the incident cancelled?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancellation_message: ::std::option::Option<::std::string::String>,
        ///Date of cancellation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cancelled_at: ::std::option::Option<::std::string::String>,
        ///The Cause IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cause_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of closure
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub closed_at: ::std::option::Option<::std::string::String>,
        ///Date of detection
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub detected_at: ::std::option::Option<::std::string::String>,
        ///ID of duplicated incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duplicate_incident_id: ::std::option::Option<::std::string::String>,
        ///The Environment IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Functionality IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Google Drive parent folder ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_parent_id: ::std::option::Option<::std::string::String>,
        ///Google Drive URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub google_drive_url: ::std::option::Option<::std::string::String>,
        ///The Team IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of triage
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub in_triage_at: ::std::option::Option<::std::string::String>,
        ///The Incident Type IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Jira issue ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_id: ::std::option::Option<::std::string::String>,
        ///Jira issue key
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_key: ::std::option::Option<::std::string::String>,
        ///Jira issue URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub jira_issue_url: ::std::option::Option<::std::string::String>,
        ///The kind of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateIncidentDataAttributesKind>,
        ///Labels to attach to the incidents. eg: {"platform":"osx", "version": "1.29"}
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Date of mitigation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_at: ::std::option::Option<::std::string::String>,
        ///How was the incident mitigated?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigation_message: ::std::option::Option<::std::string::String>,
        ///The Service IDs to mute alerts for during maintenance. Alerts for these services will still be triggered and attached to the incident, but won't page responders.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub muted_service_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///ID of parent incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub parent_incident_id: ::std::option::Option<::std::string::String>,
        ///Convert the incident as private. Once an incident is updated as private it cannot be undone
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        ///The public title of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_title: ::std::option::Option<::std::string::String>,
        ///How was the incident resolved?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_message: ::std::option::Option<::std::string::String>,
        ///Date of resolution
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_at: ::std::option::Option<::std::string::String>,
        ///Date of when the maintenance begins
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scheduled_for: ::std::option::Option<::std::string::String>,
        ///Date of when the maintenance ends
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub scheduled_until: ::std::option::Option<::std::string::String>,
        ///The Service IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Severity ID to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_id: ::std::option::Option<::std::string::String>,
        ///Whether the Slack channel is archived
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_archived: ::std::option::Option<bool>,
        ///Slack channel id
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_name: ::std::option::Option<::std::string::String>,
        ///Slack channel url
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel_url: ::std::option::Option<::std::string::String>,
        ///Date of start
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        ///The status of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateIncidentDataAttributesStatus>,
        ///The summary of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///The title of the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentDataAttributes {
        fn default() -> Self {
            Self {
                acknowledged_at: Default::default(),
                alert_ids: Default::default(),
                cancellation_message: Default::default(),
                cancelled_at: Default::default(),
                cause_ids: Default::default(),
                closed_at: Default::default(),
                detected_at: Default::default(),
                duplicate_incident_id: Default::default(),
                environment_ids: Default::default(),
                functionality_ids: Default::default(),
                google_drive_parent_id: Default::default(),
                google_drive_url: Default::default(),
                group_ids: Default::default(),
                in_triage_at: Default::default(),
                incident_type_ids: Default::default(),
                jira_issue_id: Default::default(),
                jira_issue_key: Default::default(),
                jira_issue_url: Default::default(),
                kind: Default::default(),
                labels: Default::default(),
                mitigated_at: Default::default(),
                mitigation_message: Default::default(),
                muted_service_ids: Default::default(),
                parent_incident_id: Default::default(),
                private: Default::default(),
                public_title: Default::default(),
                resolution_message: Default::default(),
                resolved_at: Default::default(),
                scheduled_for: Default::default(),
                scheduled_until: Default::default(),
                service_ids: Default::default(),
                severity_id: Default::default(),
                slack_channel_archived: Default::default(),
                slack_channel_id: Default::default(),
                slack_channel_name: Default::default(),
                slack_channel_url: Default::default(),
                started_at: Default::default(),
                status: Default::default(),
                summary: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl UpdateIncidentDataAttributes {
        pub fn builder() -> builder::UpdateIncidentDataAttributes {
            Default::default()
        }
    }
    ///The kind of the incident
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the incident",
    ///  "type": "string",
    ///  "enum": [
    ///    "test",
    ///    "test_sub",
    ///    "example",
    ///    "example_sub",
    ///    "normal",
    ///    "normal_sub",
    ///    "backfilled",
    ///    "scheduled",
    ///    "scheduled_sub"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentDataAttributesKind {
        #[serde(rename = "test")]
        Test,
        #[serde(rename = "test_sub")]
        TestSub,
        #[serde(rename = "example")]
        Example,
        #[serde(rename = "example_sub")]
        ExampleSub,
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "normal_sub")]
        NormalSub,
        #[serde(rename = "backfilled")]
        Backfilled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "scheduled_sub")]
        ScheduledSub,
    }
    impl ::std::fmt::Display for UpdateIncidentDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Test => f.write_str("test"),
                Self::TestSub => f.write_str("test_sub"),
                Self::Example => f.write_str("example"),
                Self::ExampleSub => f.write_str("example_sub"),
                Self::Normal => f.write_str("normal"),
                Self::NormalSub => f.write_str("normal_sub"),
                Self::Backfilled => f.write_str("backfilled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::ScheduledSub => f.write_str("scheduled_sub"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "test" => Ok(Self::Test),
                "test_sub" => Ok(Self::TestSub),
                "example" => Ok(Self::Example),
                "example_sub" => Ok(Self::ExampleSub),
                "normal" => Ok(Self::Normal),
                "normal_sub" => Ok(Self::NormalSub),
                "backfilled" => Ok(Self::Backfilled),
                "scheduled" => Ok(Self::Scheduled),
                "scheduled_sub" => Ok(Self::ScheduledSub),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The status of the incident
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident",
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "detected",
    ///    "acknowledged",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentDataAttributesStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "detected")]
        Detected,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for UpdateIncidentDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Detected => f.write_str("detected"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "detected" => Ok(Self::Detected),
                "acknowledged" => Ok(Self::Acknowledged),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentDataType {
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for UpdateIncidentDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateIncidentDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "event": {
    ///              "description": "The summary of the incident event",
    ///              "type": "string"
    ///            },
    ///            "visibility": {
    ///              "description": "The visibility of the incident action item",
    ///              "type": "string",
    ///              "enum": [
    ///                "internal",
    ///                "external"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_events"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentEvent {
        pub data: UpdateIncidentEventData,
    }
    impl UpdateIncidentEvent {
        pub fn builder() -> builder::UpdateIncidentEvent {
            Default::default()
        }
    }
    ///`UpdateIncidentEventData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "event": {
    ///          "description": "The summary of the incident event",
    ///          "type": "string"
    ///        },
    ///        "visibility": {
    ///          "description": "The visibility of the incident action item",
    ///          "type": "string",
    ///          "enum": [
    ///            "internal",
    ///            "external"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentEventData {
        pub attributes: UpdateIncidentEventDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentEventDataType,
    }
    impl UpdateIncidentEventData {
        pub fn builder() -> builder::UpdateIncidentEventData {
            Default::default()
        }
    }
    ///`UpdateIncidentEventDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "event": {
    ///      "description": "The summary of the incident event",
    ///      "type": "string"
    ///    },
    ///    "visibility": {
    ///      "description": "The visibility of the incident action item",
    ///      "type": "string",
    ///      "enum": [
    ///        "internal",
    ///        "external"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentEventDataAttributes {
        ///The summary of the incident event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event: ::std::option::Option<::std::string::String>,
        ///The visibility of the incident action item
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub visibility: ::std::option::Option<
            UpdateIncidentEventDataAttributesVisibility,
        >,
    }
    impl ::std::default::Default for UpdateIncidentEventDataAttributes {
        fn default() -> Self {
            Self {
                event: Default::default(),
                visibility: Default::default(),
            }
        }
    }
    impl UpdateIncidentEventDataAttributes {
        pub fn builder() -> builder::UpdateIncidentEventDataAttributes {
            Default::default()
        }
    }
    ///The visibility of the incident action item
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The visibility of the incident action item",
    ///  "type": "string",
    ///  "enum": [
    ///    "internal",
    ///    "external"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentEventDataAttributesVisibility {
        #[serde(rename = "internal")]
        Internal,
        #[serde(rename = "external")]
        External,
    }
    impl ::std::fmt::Display for UpdateIncidentEventDataAttributesVisibility {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Internal => f.write_str("internal"),
                Self::External => f.write_str("external"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentEventDataAttributesVisibility {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "internal" => Ok(Self::Internal),
                "external" => Ok(Self::External),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentEventDataAttributesVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentEventDataAttributesVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentEventDataAttributesVisibility {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentEventDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentEventDataType {
        #[serde(rename = "incident_events")]
        IncidentEvents,
    }
    impl ::std::fmt::Display for UpdateIncidentEventDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEvents => f.write_str("incident_events"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentEventDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_events" => Ok(Self::IncidentEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateIncidentEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentEventFunctionality`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "status"
    ///          ],
    ///          "properties": {
    ///            "status": {
    ///              "description": "The status of the affected functionality",
    ///              "type": "string",
    ///              "enum": [
    ///                "operational",
    ///                "partial_outage",
    ///                "major_outage"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_event_functionalities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentEventFunctionality {
        pub data: UpdateIncidentEventFunctionalityData,
    }
    impl UpdateIncidentEventFunctionality {
        pub fn builder() -> builder::UpdateIncidentEventFunctionality {
            Default::default()
        }
    }
    ///`UpdateIncidentEventFunctionalityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "status"
    ///      ],
    ///      "properties": {
    ///        "status": {
    ///          "description": "The status of the affected functionality",
    ///          "type": "string",
    ///          "enum": [
    ///            "operational",
    ///            "partial_outage",
    ///            "major_outage"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_functionalities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentEventFunctionalityData {
        pub attributes: UpdateIncidentEventFunctionalityDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentEventFunctionalityDataType,
    }
    impl UpdateIncidentEventFunctionalityData {
        pub fn builder() -> builder::UpdateIncidentEventFunctionalityData {
            Default::default()
        }
    }
    ///`UpdateIncidentEventFunctionalityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "status": {
    ///      "description": "The status of the affected functionality",
    ///      "type": "string",
    ///      "enum": [
    ///        "operational",
    ///        "partial_outage",
    ///        "major_outage"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentEventFunctionalityDataAttributes {
        ///The status of the affected functionality
        pub status: UpdateIncidentEventFunctionalityDataAttributesStatus,
    }
    impl UpdateIncidentEventFunctionalityDataAttributes {
        pub fn builder() -> builder::UpdateIncidentEventFunctionalityDataAttributes {
            Default::default()
        }
    }
    ///The status of the affected functionality
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the affected functionality",
    ///  "type": "string",
    ///  "enum": [
    ///    "operational",
    ///    "partial_outage",
    ///    "major_outage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentEventFunctionalityDataAttributesStatus {
        #[serde(rename = "operational")]
        Operational,
        #[serde(rename = "partial_outage")]
        PartialOutage,
        #[serde(rename = "major_outage")]
        MajorOutage,
    }
    impl ::std::fmt::Display for UpdateIncidentEventFunctionalityDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Operational => f.write_str("operational"),
                Self::PartialOutage => f.write_str("partial_outage"),
                Self::MajorOutage => f.write_str("major_outage"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentEventFunctionalityDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "operational" => Ok(Self::Operational),
                "partial_outage" => Ok(Self::PartialOutage),
                "major_outage" => Ok(Self::MajorOutage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentEventFunctionalityDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentEventFunctionalityDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentEventFunctionalityDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentEventFunctionalityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_functionalities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentEventFunctionalityDataType {
        #[serde(rename = "incident_event_functionalities")]
        IncidentEventFunctionalities,
    }
    impl ::std::fmt::Display for UpdateIncidentEventFunctionalityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventFunctionalities => {
                    f.write_str("incident_event_functionalities")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentEventFunctionalityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_functionalities" => {
                    Ok(Self::IncidentEventFunctionalities)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentEventFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentEventFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentEventFunctionalityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentEventService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "status"
    ///          ],
    ///          "properties": {
    ///            "status": {
    ///              "description": "The status of the affected service",
    ///              "type": "string",
    ///              "enum": [
    ///                "operational",
    ///                "partial_outage",
    ///                "major_outage"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_event_services"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentEventService {
        pub data: UpdateIncidentEventServiceData,
    }
    impl UpdateIncidentEventService {
        pub fn builder() -> builder::UpdateIncidentEventService {
            Default::default()
        }
    }
    ///`UpdateIncidentEventServiceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "status"
    ///      ],
    ///      "properties": {
    ///        "status": {
    ///          "description": "The status of the affected service",
    ///          "type": "string",
    ///          "enum": [
    ///            "operational",
    ///            "partial_outage",
    ///            "major_outage"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_event_services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentEventServiceData {
        pub attributes: UpdateIncidentEventServiceDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentEventServiceDataType,
    }
    impl UpdateIncidentEventServiceData {
        pub fn builder() -> builder::UpdateIncidentEventServiceData {
            Default::default()
        }
    }
    ///`UpdateIncidentEventServiceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "status": {
    ///      "description": "The status of the affected service",
    ///      "type": "string",
    ///      "enum": [
    ///        "operational",
    ///        "partial_outage",
    ///        "major_outage"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentEventServiceDataAttributes {
        ///The status of the affected service
        pub status: UpdateIncidentEventServiceDataAttributesStatus,
    }
    impl UpdateIncidentEventServiceDataAttributes {
        pub fn builder() -> builder::UpdateIncidentEventServiceDataAttributes {
            Default::default()
        }
    }
    ///The status of the affected service
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the affected service",
    ///  "type": "string",
    ///  "enum": [
    ///    "operational",
    ///    "partial_outage",
    ///    "major_outage"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentEventServiceDataAttributesStatus {
        #[serde(rename = "operational")]
        Operational,
        #[serde(rename = "partial_outage")]
        PartialOutage,
        #[serde(rename = "major_outage")]
        MajorOutage,
    }
    impl ::std::fmt::Display for UpdateIncidentEventServiceDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Operational => f.write_str("operational"),
                Self::PartialOutage => f.write_str("partial_outage"),
                Self::MajorOutage => f.write_str("major_outage"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentEventServiceDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "operational" => Ok(Self::Operational),
                "partial_outage" => Ok(Self::PartialOutage),
                "major_outage" => Ok(Self::MajorOutage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentEventServiceDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentEventServiceDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentEventServiceDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentEventServiceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_event_services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentEventServiceDataType {
        #[serde(rename = "incident_event_services")]
        IncidentEventServices,
    }
    impl ::std::fmt::Display for UpdateIncidentEventServiceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentEventServices => f.write_str("incident_event_services"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentEventServiceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_event_services" => Ok(Self::IncidentEventServices),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentEventServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentEventServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentEventServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentFeedback`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "anonymous": {
    ///              "description": "Is the feedback anonymous?",
    ///              "type": "boolean"
    ///            },
    ///            "feedback": {
    ///              "description": "The feedback of the incident feedback",
    ///              "type": "string"
    ///            },
    ///            "rating": {
    ///              "description": "The rating of the incident feedback",
    ///              "type": "integer",
    ///              "enum": [
    ///                4,
    ///                3,
    ///                2,
    ///                1,
    ///                0
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_feedbacks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentFeedback {
        pub data: UpdateIncidentFeedbackData,
    }
    impl UpdateIncidentFeedback {
        pub fn builder() -> builder::UpdateIncidentFeedback {
            Default::default()
        }
    }
    ///`UpdateIncidentFeedbackData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "anonymous": {
    ///          "description": "Is the feedback anonymous?",
    ///          "type": "boolean"
    ///        },
    ///        "feedback": {
    ///          "description": "The feedback of the incident feedback",
    ///          "type": "string"
    ///        },
    ///        "rating": {
    ///          "description": "The rating of the incident feedback",
    ///          "type": "integer",
    ///          "enum": [
    ///            4,
    ///            3,
    ///            2,
    ///            1,
    ///            0
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_feedbacks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentFeedbackData {
        pub attributes: UpdateIncidentFeedbackDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentFeedbackDataType,
    }
    impl UpdateIncidentFeedbackData {
        pub fn builder() -> builder::UpdateIncidentFeedbackData {
            Default::default()
        }
    }
    ///`UpdateIncidentFeedbackDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "anonymous": {
    ///      "description": "Is the feedback anonymous?",
    ///      "type": "boolean"
    ///    },
    ///    "feedback": {
    ///      "description": "The feedback of the incident feedback",
    ///      "type": "string"
    ///    },
    ///    "rating": {
    ///      "description": "The rating of the incident feedback",
    ///      "type": "integer",
    ///      "enum": [
    ///        4,
    ///        3,
    ///        2,
    ///        1,
    ///        0
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentFeedbackDataAttributes {
        ///Is the feedback anonymous?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub anonymous: ::std::option::Option<bool>,
        ///The feedback of the incident feedback
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub feedback: ::std::option::Option<::std::string::String>,
        ///The rating of the incident feedback
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub rating: ::std::option::Option<UpdateIncidentFeedbackDataAttributesRating>,
    }
    impl ::std::default::Default for UpdateIncidentFeedbackDataAttributes {
        fn default() -> Self {
            Self {
                anonymous: Default::default(),
                feedback: Default::default(),
                rating: Default::default(),
            }
        }
    }
    impl UpdateIncidentFeedbackDataAttributes {
        pub fn builder() -> builder::UpdateIncidentFeedbackDataAttributes {
            Default::default()
        }
    }
    ///The rating of the incident feedback
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The rating of the incident feedback",
    ///  "type": "integer",
    ///  "enum": [
    ///    4,
    ///    3,
    ///    2,
    ///    1,
    ///    0
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct UpdateIncidentFeedbackDataAttributesRating(i64);
    impl ::std::ops::Deref for UpdateIncidentFeedbackDataAttributesRating {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<UpdateIncidentFeedbackDataAttributesRating> for i64 {
        fn from(value: UpdateIncidentFeedbackDataAttributesRating) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for UpdateIncidentFeedbackDataAttributesRating {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![4_i64, 3_i64, 2_i64, 1_i64, 0_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de> for UpdateIncidentFeedbackDataAttributesRating {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`UpdateIncidentFeedbackDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_feedbacks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentFeedbackDataType {
        #[serde(rename = "incident_feedbacks")]
        IncidentFeedbacks,
    }
    impl ::std::fmt::Display for UpdateIncidentFeedbackDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFeedbacks => f.write_str("incident_feedbacks"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentFeedbackDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_feedbacks" => Ok(Self::IncidentFeedbacks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentFeedbackDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentFeedbackDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentFeedbackDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentFormFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "selected_catalog_entity_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected catalog entities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_cause_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected causes for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_environment_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected environments for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_functionality_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected functionalities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_group_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected groups (teams) for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_incident_type_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected incident types for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected options for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_service_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected services for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_user_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected users for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "value": {
    ///              "description": "The selected value for text kind custom fields",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_form_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentFormFieldSelection {
        pub data: UpdateIncidentFormFieldSelectionData,
    }
    impl UpdateIncidentFormFieldSelection {
        pub fn builder() -> builder::UpdateIncidentFormFieldSelection {
            Default::default()
        }
    }
    ///`UpdateIncidentFormFieldSelectionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "selected_catalog_entity_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected catalog entities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_cause_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected causes for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_environment_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected environments for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_functionality_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected functionalities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_group_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected groups (teams) for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_incident_type_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected incident types for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected options for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected services for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_user_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected users for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "value": {
    ///          "description": "The selected value for text kind custom fields",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_form_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentFormFieldSelectionData {
        pub attributes: UpdateIncidentFormFieldSelectionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentFormFieldSelectionDataType,
    }
    impl UpdateIncidentFormFieldSelectionData {
        pub fn builder() -> builder::UpdateIncidentFormFieldSelectionData {
            Default::default()
        }
    }
    ///`UpdateIncidentFormFieldSelectionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "selected_catalog_entity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected catalog entities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected causes for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected environments for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected functionalities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected groups (teams) for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected incident types for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected options for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected services for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected users for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "value": {
    ///      "description": "The selected value for text kind custom fields",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentFormFieldSelectionDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        ///The selected value for text kind custom fields
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub value: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentFormFieldSelectionDataAttributes {
        fn default() -> Self {
            Self {
                selected_catalog_entity_ids: Default::default(),
                selected_cause_ids: Default::default(),
                selected_environment_ids: Default::default(),
                selected_functionality_ids: Default::default(),
                selected_group_ids: Default::default(),
                selected_incident_type_ids: Default::default(),
                selected_option_ids: Default::default(),
                selected_service_ids: Default::default(),
                selected_user_ids: Default::default(),
                value: Default::default(),
            }
        }
    }
    impl UpdateIncidentFormFieldSelectionDataAttributes {
        pub fn builder() -> builder::UpdateIncidentFormFieldSelectionDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentFormFieldSelectionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_form_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentFormFieldSelectionDataType {
        #[serde(rename = "incident_form_field_selections")]
        IncidentFormFieldSelections,
    }
    impl ::std::fmt::Display for UpdateIncidentFormFieldSelectionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentFormFieldSelections => {
                    f.write_str("incident_form_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentFormFieldSelectionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_form_field_selections" => Ok(Self::IncidentFormFieldSelections),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentFormFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentFormFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentFormFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSet`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The incident permission set description.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The incident permission set name.",
    ///              "type": "string"
    ///            },
    ///            "private_incident_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "public_incident_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_sets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSet {
        pub data: UpdateIncidentPermissionSetData,
    }
    impl UpdateIncidentPermissionSet {
        pub fn builder() -> builder::UpdateIncidentPermissionSet {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetBoolean`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "publish_to_status_page",
    ///                "assign_incident_roles",
    ///                "invite_subscribers",
    ///                "update_summary",
    ///                "update_timeline",
    ///                "trigger_workflows",
    ///                "create_communications",
    ///                "read_communications",
    ///                "update_communications",
    ///                "delete_communications",
    ///                "send_communications",
    ///                "modify_custom_fields"
    ///              ]
    ///            },
    ///            "private": {
    ///              "type": "boolean"
    ///            },
    ///            "severity_params": {
    ///              "type": "object",
    ///              "properties": {
    ///                "applies_to_unassigned": {
    ///                  "description": "Whether permissions are enabled for incident without severity",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "create_enabled": {
    ///                  "description": "Whether permissions are enabled when creating incident",
    ///                  "default": false,
    ///                  "type": "boolean"
    ///                },
    ///                "fully_enabled": {
    ///                  "description": "Whether permissions are enabled for any severity incident",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "severity_ids": {
    ///                  "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_set_booleans"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetBoolean {
        pub data: UpdateIncidentPermissionSetBooleanData,
    }
    impl UpdateIncidentPermissionSetBoolean {
        pub fn builder() -> builder::UpdateIncidentPermissionSetBoolean {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetBooleanData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "publish_to_status_page",
    ///            "assign_incident_roles",
    ///            "invite_subscribers",
    ///            "update_summary",
    ///            "update_timeline",
    ///            "trigger_workflows",
    ///            "create_communications",
    ///            "read_communications",
    ///            "update_communications",
    ///            "delete_communications",
    ///            "send_communications",
    ///            "modify_custom_fields"
    ///          ]
    ///        },
    ///        "private": {
    ///          "type": "boolean"
    ///        },
    ///        "severity_params": {
    ///          "type": "object",
    ///          "properties": {
    ///            "applies_to_unassigned": {
    ///              "description": "Whether permissions are enabled for incident without severity",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "create_enabled": {
    ///              "description": "Whether permissions are enabled when creating incident",
    ///              "default": false,
    ///              "type": "boolean"
    ///            },
    ///            "fully_enabled": {
    ///              "description": "Whether permissions are enabled for any severity incident",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "severity_ids": {
    ///              "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_booleans"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetBooleanData {
        pub attributes: UpdateIncidentPermissionSetBooleanDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentPermissionSetBooleanDataType,
    }
    impl UpdateIncidentPermissionSetBooleanData {
        pub fn builder() -> builder::UpdateIncidentPermissionSetBooleanData {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetBooleanDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "publish_to_status_page",
    ///        "assign_incident_roles",
    ///        "invite_subscribers",
    ///        "update_summary",
    ///        "update_timeline",
    ///        "trigger_workflows",
    ///        "create_communications",
    ///        "read_communications",
    ///        "update_communications",
    ///        "delete_communications",
    ///        "send_communications",
    ///        "modify_custom_fields"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "severity_params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "applies_to_unassigned": {
    ///          "description": "Whether permissions are enabled for incident without severity",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "create_enabled": {
    ///          "description": "Whether permissions are enabled when creating incident",
    ///          "default": false,
    ///          "type": "boolean"
    ///        },
    ///        "fully_enabled": {
    ///          "description": "Whether permissions are enabled for any severity incident",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "severity_ids": {
    ///          "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentPermissionSetBooleanDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            UpdateIncidentPermissionSetBooleanDataAttributesKind,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_params: ::std::option::Option<
            UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
        >,
    }
    impl ::std::default::Default for UpdateIncidentPermissionSetBooleanDataAttributes {
        fn default() -> Self {
            Self {
                enabled: Default::default(),
                kind: Default::default(),
                private: Default::default(),
                severity_params: Default::default(),
            }
        }
    }
    impl UpdateIncidentPermissionSetBooleanDataAttributes {
        pub fn builder() -> builder::UpdateIncidentPermissionSetBooleanDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetBooleanDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "publish_to_status_page",
    ///    "assign_incident_roles",
    ///    "invite_subscribers",
    ///    "update_summary",
    ///    "update_timeline",
    ///    "trigger_workflows",
    ///    "create_communications",
    ///    "read_communications",
    ///    "update_communications",
    ///    "delete_communications",
    ///    "send_communications",
    ///    "modify_custom_fields"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetBooleanDataAttributesKind {
        #[serde(rename = "publish_to_status_page")]
        PublishToStatusPage,
        #[serde(rename = "assign_incident_roles")]
        AssignIncidentRoles,
        #[serde(rename = "invite_subscribers")]
        InviteSubscribers,
        #[serde(rename = "update_summary")]
        UpdateSummary,
        #[serde(rename = "update_timeline")]
        UpdateTimeline,
        #[serde(rename = "trigger_workflows")]
        TriggerWorkflows,
        #[serde(rename = "create_communications")]
        CreateCommunications,
        #[serde(rename = "read_communications")]
        ReadCommunications,
        #[serde(rename = "update_communications")]
        UpdateCommunications,
        #[serde(rename = "delete_communications")]
        DeleteCommunications,
        #[serde(rename = "send_communications")]
        SendCommunications,
        #[serde(rename = "modify_custom_fields")]
        ModifyCustomFields,
    }
    impl ::std::fmt::Display for UpdateIncidentPermissionSetBooleanDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PublishToStatusPage => f.write_str("publish_to_status_page"),
                Self::AssignIncidentRoles => f.write_str("assign_incident_roles"),
                Self::InviteSubscribers => f.write_str("invite_subscribers"),
                Self::UpdateSummary => f.write_str("update_summary"),
                Self::UpdateTimeline => f.write_str("update_timeline"),
                Self::TriggerWorkflows => f.write_str("trigger_workflows"),
                Self::CreateCommunications => f.write_str("create_communications"),
                Self::ReadCommunications => f.write_str("read_communications"),
                Self::UpdateCommunications => f.write_str("update_communications"),
                Self::DeleteCommunications => f.write_str("delete_communications"),
                Self::SendCommunications => f.write_str("send_communications"),
                Self::ModifyCustomFields => f.write_str("modify_custom_fields"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPermissionSetBooleanDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "publish_to_status_page" => Ok(Self::PublishToStatusPage),
                "assign_incident_roles" => Ok(Self::AssignIncidentRoles),
                "invite_subscribers" => Ok(Self::InviteSubscribers),
                "update_summary" => Ok(Self::UpdateSummary),
                "update_timeline" => Ok(Self::UpdateTimeline),
                "trigger_workflows" => Ok(Self::TriggerWorkflows),
                "create_communications" => Ok(Self::CreateCommunications),
                "read_communications" => Ok(Self::ReadCommunications),
                "update_communications" => Ok(Self::UpdateCommunications),
                "delete_communications" => Ok(Self::DeleteCommunications),
                "send_communications" => Ok(Self::SendCommunications),
                "modify_custom_fields" => Ok(Self::ModifyCustomFields),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentPermissionSetBooleanDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetBooleanDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetBooleanDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "applies_to_unassigned": {
    ///      "description": "Whether permissions are enabled for incident without severity",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "create_enabled": {
    ///      "description": "Whether permissions are enabled when creating incident",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "fully_enabled": {
    ///      "description": "Whether permissions are enabled for any severity incident",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "severity_ids": {
    ///      "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
        ///Whether permissions are enabled for incident without severity
        #[serde(default = "defaults::default_bool::<true>")]
        pub applies_to_unassigned: bool,
        ///Whether permissions are enabled when creating incident
        #[serde(default)]
        pub create_enabled: bool,
        ///Whether permissions are enabled for any severity incident
        #[serde(default = "defaults::default_bool::<true>")]
        pub fully_enabled: bool,
        ///Severity ids that determine if an incident is permitted based on matching severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
        fn default() -> Self {
            Self {
                applies_to_unassigned: defaults::default_bool::<true>(),
                create_enabled: Default::default(),
                fully_enabled: defaults::default_bool::<true>(),
                severity_ids: Default::default(),
            }
        }
    }
    impl UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
        pub fn builder() -> builder::UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetBooleanDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_booleans"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetBooleanDataType {
        #[serde(rename = "incident_permission_set_booleans")]
        IncidentPermissionSetBooleans,
    }
    impl ::std::fmt::Display for UpdateIncidentPermissionSetBooleanDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetBooleans => {
                    f.write_str("incident_permission_set_booleans")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPermissionSetBooleanDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_booleans" => {
                    Ok(Self::IncidentPermissionSetBooleans)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentPermissionSetBooleanDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetBooleanDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetBooleanDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSetData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The incident permission set description.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The incident permission set name.",
    ///          "type": "string"
    ///        },
    ///        "private_incident_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "public_incident_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_sets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetData {
        pub attributes: UpdateIncidentPermissionSetDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentPermissionSetDataType,
    }
    impl UpdateIncidentPermissionSetData {
        pub fn builder() -> builder::UpdateIncidentPermissionSetData {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The incident permission set description.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The incident permission set name.",
    ///      "type": "string"
    ///    },
    ///    "private_incident_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "public_incident_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentPermissionSetDataAttributes {
        ///The incident permission set description.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The incident permission set name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub private_incident_permissions: ::std::vec::Vec<
            UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub public_incident_permissions: ::std::vec::Vec<
            UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem,
        >,
    }
    impl ::std::default::Default for UpdateIncidentPermissionSetDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                private_incident_permissions: Default::default(),
                public_incident_permissions: Default::default(),
            }
        }
    }
    impl UpdateIncidentPermissionSetDataAttributes {
        pub fn builder() -> builder::UpdateIncidentPermissionSetDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSetDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_sets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetDataType {
        #[serde(rename = "incident_permission_sets")]
        IncidentPermissionSets,
    }
    impl ::std::fmt::Display for UpdateIncidentPermissionSetDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSets => f.write_str("incident_permission_sets"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPermissionSetDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_sets" => Ok(Self::IncidentPermissionSets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentPermissionSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSetResource`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "kind": {
    ///              "type": "string",
    ///              "enum": [
    ///                "severities",
    ///                "incident_types",
    ///                "statuses",
    ///                "sub_statuses"
    ///              ]
    ///            },
    ///            "private": {
    ///              "type": "boolean"
    ///            },
    ///            "resource_id": {
    ///              "type": "string"
    ///            },
    ///            "resource_type": {
    ///              "type": "string"
    ///            },
    ///            "severity_params": {
    ///              "type": "object",
    ///              "properties": {
    ///                "applies_to_unassigned": {
    ///                  "description": "Whether permissions are enabled for incident without severity",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "create_enabled": {
    ///                  "description": "Whether permissions are enabled when creating incident",
    ///                  "default": false,
    ///                  "type": "boolean"
    ///                },
    ///                "fully_enabled": {
    ///                  "description": "Whether permissions are enabled for any severity incident",
    ///                  "default": true,
    ///                  "type": "boolean"
    ///                },
    ///                "severity_ids": {
    ///                  "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///                  "type": [
    ///                    "array",
    ///                    "null"
    ///                  ],
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_permission_set_resources"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetResource {
        pub data: UpdateIncidentPermissionSetResourceData,
    }
    impl UpdateIncidentPermissionSetResource {
        pub fn builder() -> builder::UpdateIncidentPermissionSetResource {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetResourceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "kind": {
    ///          "type": "string",
    ///          "enum": [
    ///            "severities",
    ///            "incident_types",
    ///            "statuses",
    ///            "sub_statuses"
    ///          ]
    ///        },
    ///        "private": {
    ///          "type": "boolean"
    ///        },
    ///        "resource_id": {
    ///          "type": "string"
    ///        },
    ///        "resource_type": {
    ///          "type": "string"
    ///        },
    ///        "severity_params": {
    ///          "type": "object",
    ///          "properties": {
    ///            "applies_to_unassigned": {
    ///              "description": "Whether permissions are enabled for incident without severity",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "create_enabled": {
    ///              "description": "Whether permissions are enabled when creating incident",
    ///              "default": false,
    ///              "type": "boolean"
    ///            },
    ///            "fully_enabled": {
    ///              "description": "Whether permissions are enabled for any severity incident",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "severity_ids": {
    ///              "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_permission_set_resources"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetResourceData {
        pub attributes: UpdateIncidentPermissionSetResourceDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentPermissionSetResourceDataType,
    }
    impl UpdateIncidentPermissionSetResourceData {
        pub fn builder() -> builder::UpdateIncidentPermissionSetResourceData {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetResourceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "kind": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities",
    ///        "incident_types",
    ///        "statuses",
    ///        "sub_statuses"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "resource_id": {
    ///      "type": "string"
    ///    },
    ///    "resource_type": {
    ///      "type": "string"
    ///    },
    ///    "severity_params": {
    ///      "type": "object",
    ///      "properties": {
    ///        "applies_to_unassigned": {
    ///          "description": "Whether permissions are enabled for incident without severity",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "create_enabled": {
    ///          "description": "Whether permissions are enabled when creating incident",
    ///          "default": false,
    ///          "type": "boolean"
    ///        },
    ///        "fully_enabled": {
    ///          "description": "Whether permissions are enabled for any severity incident",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "severity_ids": {
    ///          "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentPermissionSetResourceDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<
            UpdateIncidentPermissionSetResourceDataAttributesKind,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resource_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resource_type: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_params: ::std::option::Option<
            UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
        >,
    }
    impl ::std::default::Default for UpdateIncidentPermissionSetResourceDataAttributes {
        fn default() -> Self {
            Self {
                kind: Default::default(),
                private: Default::default(),
                resource_id: Default::default(),
                resource_type: Default::default(),
                severity_params: Default::default(),
            }
        }
    }
    impl UpdateIncidentPermissionSetResourceDataAttributes {
        pub fn builder() -> builder::UpdateIncidentPermissionSetResourceDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetResourceDataAttributesKind`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities",
    ///    "incident_types",
    ///    "statuses",
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetResourceDataAttributesKind {
        #[serde(rename = "severities")]
        Severities,
        #[serde(rename = "incident_types")]
        IncidentTypes,
        #[serde(rename = "statuses")]
        Statuses,
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for UpdateIncidentPermissionSetResourceDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
                Self::IncidentTypes => f.write_str("incident_types"),
                Self::Statuses => f.write_str("statuses"),
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPermissionSetResourceDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                "incident_types" => Ok(Self::IncidentTypes),
                "statuses" => Ok(Self::Statuses),
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentPermissionSetResourceDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetResourceDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetResourceDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPermissionSetResourceDataAttributesSeverityParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "applies_to_unassigned": {
    ///      "description": "Whether permissions are enabled for incident without severity",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "create_enabled": {
    ///      "description": "Whether permissions are enabled when creating incident",
    ///      "default": false,
    ///      "type": "boolean"
    ///    },
    ///    "fully_enabled": {
    ///      "description": "Whether permissions are enabled for any severity incident",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "severity_ids": {
    ///      "description": "Severity ids that determine if an incident is permitted based on matching severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
        ///Whether permissions are enabled for incident without severity
        #[serde(default = "defaults::default_bool::<true>")]
        pub applies_to_unassigned: bool,
        ///Whether permissions are enabled when creating incident
        #[serde(default)]
        pub create_enabled: bool,
        ///Whether permissions are enabled for any severity incident
        #[serde(default = "defaults::default_bool::<true>")]
        pub fully_enabled: bool,
        ///Severity ids that determine if an incident is permitted based on matching severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default
    for UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
        fn default() -> Self {
            Self {
                applies_to_unassigned: defaults::default_bool::<true>(),
                create_enabled: Default::default(),
                fully_enabled: defaults::default_bool::<true>(),
                severity_ids: Default::default(),
            }
        }
    }
    impl UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
        pub fn builder() -> builder::UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
            Default::default()
        }
    }
    ///`UpdateIncidentPermissionSetResourceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_permission_set_resources"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPermissionSetResourceDataType {
        #[serde(rename = "incident_permission_set_resources")]
        IncidentPermissionSetResources,
    }
    impl ::std::fmt::Display for UpdateIncidentPermissionSetResourceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPermissionSetResources => {
                    f.write_str("incident_permission_set_resources")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPermissionSetResourceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_permission_set_resources" => {
                    Ok(Self::IncidentPermissionSetResources)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentPermissionSetResourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPermissionSetResourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPermissionSetResourceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPostMortem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "cause_ids": {
    ///              "description": "The Cause IDs to attach to the incident retrospective",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "mitigated_at": {
    ///              "description": "Date of mitigation",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "resolved_at": {
    ///              "description": "Date of resolution",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_action_items": {
    ///              "description": "Show action items (follow-ups) in the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_alerts_attached": {
    ///              "description": "Show alerts attached to the incident",
    ///              "type": "boolean"
    ///            },
    ///            "show_functionalities_impacted": {
    ///              "description": "Show services impacted of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_groups_impacted": {
    ///              "description": "Show groups impacted of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_services_impacted": {
    ///              "description": "Show functionalities impacted of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_timeline": {
    ///              "description": "Show events timeline of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_timeline_action_items": {
    ///              "description": "Show action items in the timeline of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_timeline_genius": {
    ///              "description": "Show workflow events in the timeline of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_timeline_tasks": {
    ///              "description": "Show tasks in the timeline of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "show_timeline_trail": {
    ///              "description": "Show trail events in the timeline of the incident retrospective",
    ///              "type": "boolean"
    ///            },
    ///            "started_at": {
    ///              "description": "Date of started at",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "status": {
    ///              "description": "The status of the incident retrospective",
    ///              "type": "string",
    ///              "enum": [
    ///                "draft",
    ///                "published"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the incident retrospective",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_post_mortems"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPostMortem {
        pub data: UpdateIncidentPostMortemData,
    }
    impl UpdateIncidentPostMortem {
        pub fn builder() -> builder::UpdateIncidentPostMortem {
            Default::default()
        }
    }
    ///`UpdateIncidentPostMortemData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "cause_ids": {
    ///          "description": "The Cause IDs to attach to the incident retrospective",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "mitigated_at": {
    ///          "description": "Date of mitigation",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "resolved_at": {
    ///          "description": "Date of resolution",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_action_items": {
    ///          "description": "Show action items (follow-ups) in the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_alerts_attached": {
    ///          "description": "Show alerts attached to the incident",
    ///          "type": "boolean"
    ///        },
    ///        "show_functionalities_impacted": {
    ///          "description": "Show services impacted of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_groups_impacted": {
    ///          "description": "Show groups impacted of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_services_impacted": {
    ///          "description": "Show functionalities impacted of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_timeline": {
    ///          "description": "Show events timeline of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_timeline_action_items": {
    ///          "description": "Show action items in the timeline of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_timeline_genius": {
    ///          "description": "Show workflow events in the timeline of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_timeline_tasks": {
    ///          "description": "Show tasks in the timeline of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "show_timeline_trail": {
    ///          "description": "Show trail events in the timeline of the incident retrospective",
    ///          "type": "boolean"
    ///        },
    ///        "started_at": {
    ///          "description": "Date of started at",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "status": {
    ///          "description": "The status of the incident retrospective",
    ///          "type": "string",
    ///          "enum": [
    ///            "draft",
    ///            "published"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the incident retrospective",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_post_mortems"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPostMortemData {
        pub attributes: UpdateIncidentPostMortemDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentPostMortemDataType,
    }
    impl UpdateIncidentPostMortemData {
        pub fn builder() -> builder::UpdateIncidentPostMortemData {
            Default::default()
        }
    }
    ///`UpdateIncidentPostMortemDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "cause_ids": {
    ///      "description": "The Cause IDs to attach to the incident retrospective",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "mitigated_at": {
    ///      "description": "Date of mitigation",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "resolved_at": {
    ///      "description": "Date of resolution",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_action_items": {
    ///      "description": "Show action items (follow-ups) in the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_alerts_attached": {
    ///      "description": "Show alerts attached to the incident",
    ///      "type": "boolean"
    ///    },
    ///    "show_functionalities_impacted": {
    ///      "description": "Show services impacted of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_groups_impacted": {
    ///      "description": "Show groups impacted of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_services_impacted": {
    ///      "description": "Show functionalities impacted of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline": {
    ///      "description": "Show events timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_action_items": {
    ///      "description": "Show action items in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_genius": {
    ///      "description": "Show workflow events in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_tasks": {
    ///      "description": "Show tasks in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_trail": {
    ///      "description": "Show trail events in the timeline of the incident retrospective",
    ///      "type": "boolean"
    ///    },
    ///    "started_at": {
    ///      "description": "Date of started at",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident retrospective",
    ///      "type": "string",
    ///      "enum": [
    ///        "draft",
    ///        "published"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the incident retrospective",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentPostMortemDataAttributes {
        ///The Cause IDs to attach to the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cause_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Date of mitigation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_at: ::std::option::Option<::std::string::String>,
        ///Date of resolution
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_at: ::std::option::Option<::std::string::String>,
        ///Show action items (follow-ups) in the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_action_items: ::std::option::Option<bool>,
        ///Show alerts attached to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_alerts_attached: ::std::option::Option<bool>,
        ///Show services impacted of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_functionalities_impacted: ::std::option::Option<bool>,
        ///Show groups impacted of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_groups_impacted: ::std::option::Option<bool>,
        ///Show functionalities impacted of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_services_impacted: ::std::option::Option<bool>,
        ///Show events timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline: ::std::option::Option<bool>,
        ///Show action items in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_action_items: ::std::option::Option<bool>,
        ///Show workflow events in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_genius: ::std::option::Option<bool>,
        ///Show tasks in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_tasks: ::std::option::Option<bool>,
        ///Show trail events in the timeline of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_trail: ::std::option::Option<bool>,
        ///Date of started at
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        ///The status of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateIncidentPostMortemDataAttributesStatus>,
        ///The title of the incident retrospective
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentPostMortemDataAttributes {
        fn default() -> Self {
            Self {
                cause_ids: Default::default(),
                mitigated_at: Default::default(),
                resolved_at: Default::default(),
                show_action_items: Default::default(),
                show_alerts_attached: Default::default(),
                show_functionalities_impacted: Default::default(),
                show_groups_impacted: Default::default(),
                show_services_impacted: Default::default(),
                show_timeline: Default::default(),
                show_timeline_action_items: Default::default(),
                show_timeline_genius: Default::default(),
                show_timeline_tasks: Default::default(),
                show_timeline_trail: Default::default(),
                started_at: Default::default(),
                status: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl UpdateIncidentPostMortemDataAttributes {
        pub fn builder() -> builder::UpdateIncidentPostMortemDataAttributes {
            Default::default()
        }
    }
    ///The status of the incident retrospective
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident retrospective",
    ///  "type": "string",
    ///  "enum": [
    ///    "draft",
    ///    "published"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPostMortemDataAttributesStatus {
        #[serde(rename = "draft")]
        Draft,
        #[serde(rename = "published")]
        Published,
    }
    impl ::std::fmt::Display for UpdateIncidentPostMortemDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Draft => f.write_str("draft"),
                Self::Published => f.write_str("published"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPostMortemDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "draft" => Ok(Self::Draft),
                "published" => Ok(Self::Published),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentPostMortemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPostMortemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPostMortemDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPostMortemDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_post_mortems"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPostMortemDataType {
        #[serde(rename = "incident_post_mortems")]
        IncidentPostMortems,
    }
    impl ::std::fmt::Display for UpdateIncidentPostMortemDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentPostMortems => f.write_str("incident_post_mortems"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPostMortemDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_post_mortems" => Ok(Self::IncidentPostMortems),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentPostMortemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPostMortemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPostMortemDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentPostmortemTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "postmortem_id"
    ///  ],
    ///  "properties": {
    ///    "postmortem_id": {
    ///      "description": "UUID of the retrospective that needs to be updated",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_incident_postmortem"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentPostmortemTaskParams {
        ///UUID of the retrospective that needs to be updated
        pub postmortem_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateIncidentPostmortemTaskParamsTaskType>,
        ///The incident title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateIncidentPostmortemTaskParams {
        pub fn builder() -> builder::UpdateIncidentPostmortemTaskParams {
            Default::default()
        }
    }
    ///`UpdateIncidentPostmortemTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_incident_postmortem"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentPostmortemTaskParamsTaskType {
        #[serde(rename = "update_incident_postmortem")]
        UpdateIncidentPostmortem,
    }
    impl ::std::fmt::Display for UpdateIncidentPostmortemTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateIncidentPostmortem => {
                    f.write_str("update_incident_postmortem")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentPostmortemTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_incident_postmortem" => Ok(Self::UpdateIncidentPostmortem),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentPostmortemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentPostmortemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentPostmortemTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentRetrospectiveStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the incident retrospective step",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "due_date": {
    ///              "description": "Due date",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the step",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "skippable": {
    ///              "description": "Is the step skippable?",
    ///              "type": "boolean"
    ///            },
    ///            "status": {
    ///              "description": "Status of the incident retrospective step",
    ///              "type": "string",
    ///              "enum": [
    ///                "todo",
    ///                "in_progress",
    ///                "completed",
    ///                "skipped"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The name of the incident retrospective step",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_retrospective_steps"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentRetrospectiveStep {
        pub data: UpdateIncidentRetrospectiveStepData,
    }
    impl UpdateIncidentRetrospectiveStep {
        pub fn builder() -> builder::UpdateIncidentRetrospectiveStep {
            Default::default()
        }
    }
    ///`UpdateIncidentRetrospectiveStepData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the incident retrospective step",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "due_date": {
    ///          "description": "Due date",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the step",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "skippable": {
    ///          "description": "Is the step skippable?",
    ///          "type": "boolean"
    ///        },
    ///        "status": {
    ///          "description": "Status of the incident retrospective step",
    ///          "type": "string",
    ///          "enum": [
    ///            "todo",
    ///            "in_progress",
    ///            "completed",
    ///            "skipped"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The name of the incident retrospective step",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_retrospective_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentRetrospectiveStepData {
        pub attributes: UpdateIncidentRetrospectiveStepDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentRetrospectiveStepDataType,
    }
    impl UpdateIncidentRetrospectiveStepData {
        pub fn builder() -> builder::UpdateIncidentRetrospectiveStepData {
            Default::default()
        }
    }
    ///`UpdateIncidentRetrospectiveStepDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the incident retrospective step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_date": {
    ///      "description": "Due date",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the step",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "skippable": {
    ///      "description": "Is the step skippable?",
    ///      "type": "boolean"
    ///    },
    ///    "status": {
    ///      "description": "Status of the incident retrospective step",
    ///      "type": "string",
    ///      "enum": [
    ///        "todo",
    ///        "in_progress",
    ///        "completed",
    ///        "skipped"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The name of the incident retrospective step",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentRetrospectiveStepDataAttributes {
        ///The description of the incident retrospective step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///Position of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Is the step skippable?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skippable: ::std::option::Option<bool>,
        ///Status of the incident retrospective step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<
            UpdateIncidentRetrospectiveStepDataAttributesStatus,
        >,
        ///The name of the incident retrospective step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentRetrospectiveStepDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                due_date: Default::default(),
                position: Default::default(),
                skippable: Default::default(),
                status: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl UpdateIncidentRetrospectiveStepDataAttributes {
        pub fn builder() -> builder::UpdateIncidentRetrospectiveStepDataAttributes {
            Default::default()
        }
    }
    ///Status of the incident retrospective step
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Status of the incident retrospective step",
    ///  "type": "string",
    ///  "enum": [
    ///    "todo",
    ///    "in_progress",
    ///    "completed",
    ///    "skipped"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentRetrospectiveStepDataAttributesStatus {
        #[serde(rename = "todo")]
        Todo,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
        #[serde(rename = "skipped")]
        Skipped,
    }
    impl ::std::fmt::Display for UpdateIncidentRetrospectiveStepDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Todo => f.write_str("todo"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
                Self::Skipped => f.write_str("skipped"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentRetrospectiveStepDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "todo" => Ok(Self::Todo),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                "skipped" => Ok(Self::Skipped),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentRetrospectiveStepDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentRetrospectiveStepDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentRetrospectiveStepDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentRetrospectiveStepDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_retrospective_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentRetrospectiveStepDataType {
        #[serde(rename = "incident_retrospective_steps")]
        IncidentRetrospectiveSteps,
    }
    impl ::std::fmt::Display for UpdateIncidentRetrospectiveStepDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRetrospectiveSteps => {
                    f.write_str("incident_retrospective_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentRetrospectiveStepDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_retrospective_steps" => Ok(Self::IncidentRetrospectiveSteps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "allow_multi_user_assignment": {
    ///              "type": "boolean"
    ///            },
    ///            "description": {
    ///              "description": "The description of the incident role",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The name of the incident role",
    ///              "type": "string"
    ///            },
    ///            "optional": {
    ///              "type": "boolean"
    ///            },
    ///            "position": {
    ///              "description": "Position of the incident role",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the incident role",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentRole {
        pub data: UpdateIncidentRoleData,
    }
    impl UpdateIncidentRole {
        pub fn builder() -> builder::UpdateIncidentRole {
            Default::default()
        }
    }
    ///`UpdateIncidentRoleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "allow_multi_user_assignment": {
    ///          "type": "boolean"
    ///        },
    ///        "description": {
    ///          "description": "The description of the incident role",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The name of the incident role",
    ///          "type": "string"
    ///        },
    ///        "optional": {
    ///          "type": "boolean"
    ///        },
    ///        "position": {
    ///          "description": "Position of the incident role",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the incident role",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentRoleData {
        pub attributes: UpdateIncidentRoleDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentRoleDataType,
    }
    impl UpdateIncidentRoleData {
        pub fn builder() -> builder::UpdateIncidentRoleData {
            Default::default()
        }
    }
    ///`UpdateIncidentRoleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "allow_multi_user_assignment": {
    ///      "type": "boolean"
    ///    },
    ///    "description": {
    ///      "description": "The description of the incident role",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The name of the incident role",
    ///      "type": "string"
    ///    },
    ///    "optional": {
    ///      "type": "boolean"
    ///    },
    ///    "position": {
    ///      "description": "Position of the incident role",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the incident role",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentRoleDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub allow_multi_user_assignment: ::std::option::Option<bool>,
        ///The description of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The name of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub optional: ::std::option::Option<bool>,
        ///Position of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The summary of the incident role
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentRoleDataAttributes {
        fn default() -> Self {
            Self {
                allow_multi_user_assignment: Default::default(),
                description: Default::default(),
                enabled: Default::default(),
                name: Default::default(),
                optional: Default::default(),
                position: Default::default(),
                summary: Default::default(),
            }
        }
    }
    impl UpdateIncidentRoleDataAttributes {
        pub fn builder() -> builder::UpdateIncidentRoleDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentRoleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentRoleDataType {
        #[serde(rename = "incident_roles")]
        IncidentRoles,
    }
    impl ::std::fmt::Display for UpdateIncidentRoleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoles => f.write_str("incident_roles"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentRoleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_roles" => Ok(Self::IncidentRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateIncidentRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateIncidentRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentRoleTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the incident task",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "priority": {
    ///              "description": "The priority of the incident task",
    ///              "type": "string",
    ///              "enum": [
    ///                "high",
    ///                "medium",
    ///                "low"
    ///              ]
    ///            },
    ///            "task": {
    ///              "description": "The task of the incident task",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_role_tasks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentRoleTask {
        pub data: UpdateIncidentRoleTaskData,
    }
    impl UpdateIncidentRoleTask {
        pub fn builder() -> builder::UpdateIncidentRoleTask {
            Default::default()
        }
    }
    ///`UpdateIncidentRoleTaskData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the incident task",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "priority": {
    ///          "description": "The priority of the incident task",
    ///          "type": "string",
    ///          "enum": [
    ///            "high",
    ///            "medium",
    ///            "low"
    ///          ]
    ///        },
    ///        "task": {
    ///          "description": "The task of the incident task",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_role_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentRoleTaskData {
        pub attributes: UpdateIncidentRoleTaskDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentRoleTaskDataType,
    }
    impl UpdateIncidentRoleTaskData {
        pub fn builder() -> builder::UpdateIncidentRoleTaskData {
            Default::default()
        }
    }
    ///`UpdateIncidentRoleTaskDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the incident task",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "priority": {
    ///      "description": "The priority of the incident task",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "task": {
    ///      "description": "The task of the incident task",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentRoleTaskDataAttributes {
        ///The description of the incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The priority of the incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<
            UpdateIncidentRoleTaskDataAttributesPriority,
        >,
        ///The task of the incident task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentRoleTaskDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                priority: Default::default(),
                task: Default::default(),
            }
        }
    }
    impl UpdateIncidentRoleTaskDataAttributes {
        pub fn builder() -> builder::UpdateIncidentRoleTaskDataAttributes {
            Default::default()
        }
    }
    ///The priority of the incident task
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority of the incident task",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentRoleTaskDataAttributesPriority {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for UpdateIncidentRoleTaskDataAttributesPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentRoleTaskDataAttributesPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentRoleTaskDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentRoleTaskDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentRoleTaskDataAttributesPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentRoleTaskDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_role_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentRoleTaskDataType {
        #[serde(rename = "incident_role_tasks")]
        IncidentRoleTasks,
    }
    impl ::std::fmt::Display for UpdateIncidentRoleTaskDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentRoleTasks => f.write_str("incident_role_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentRoleTaskDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_role_tasks" => Ok(Self::IncidentRoleTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentRoleTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentRoleTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentRoleTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentStatusPageEvent`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "event": {
    ///              "description": "The summary of the incident event",
    ///              "type": "string"
    ///            },
    ///            "notify_subscribers": {
    ///              "description": "Notify all status pages subscribers",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "should_tweet": {
    ///              "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "started_at": {
    ///              "description": "When the event started.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "status": {
    ///              "description": "The status of the incident event",
    ///              "type": "string",
    ///              "enum": [
    ///                "investigating",
    ///                "identified",
    ///                "monitoring",
    ///                "resolved",
    ///                "scheduled",
    ///                "in_progress",
    ///                "completed"
    ///              ]
    ///            },
    ///            "status_page_id": {
    ///              "description": "Unique ID of the status page you wish to post the event to",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_status_page_events"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentStatusPageEvent {
        pub data: UpdateIncidentStatusPageEventData,
    }
    impl UpdateIncidentStatusPageEvent {
        pub fn builder() -> builder::UpdateIncidentStatusPageEvent {
            Default::default()
        }
    }
    ///`UpdateIncidentStatusPageEventData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "event": {
    ///          "description": "The summary of the incident event",
    ///          "type": "string"
    ///        },
    ///        "notify_subscribers": {
    ///          "description": "Notify all status pages subscribers",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "should_tweet": {
    ///          "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "started_at": {
    ///          "description": "When the event started.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "status": {
    ///          "description": "The status of the incident event",
    ///          "type": "string",
    ///          "enum": [
    ///            "investigating",
    ///            "identified",
    ///            "monitoring",
    ///            "resolved",
    ///            "scheduled",
    ///            "in_progress",
    ///            "completed"
    ///          ]
    ///        },
    ///        "status_page_id": {
    ///          "description": "Unique ID of the status page you wish to post the event to",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_status_page_events"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentStatusPageEventData {
        pub attributes: UpdateIncidentStatusPageEventDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentStatusPageEventDataType,
    }
    impl UpdateIncidentStatusPageEventData {
        pub fn builder() -> builder::UpdateIncidentStatusPageEventData {
            Default::default()
        }
    }
    ///`UpdateIncidentStatusPageEventDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "event": {
    ///      "description": "The summary of the incident event",
    ///      "type": "string"
    ///    },
    ///    "notify_subscribers": {
    ///      "description": "Notify all status pages subscribers",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "should_tweet": {
    ///      "description": "For Statuspage.io integrated pages auto publishes a tweet for your update",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "When the event started.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "status": {
    ///      "description": "The status of the incident event",
    ///      "type": "string",
    ///      "enum": [
    ///        "investigating",
    ///        "identified",
    ///        "monitoring",
    ///        "resolved",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "status_page_id": {
    ///      "description": "Unique ID of the status page you wish to post the event to",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentStatusPageEventDataAttributes {
        ///The summary of the incident event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub event: ::std::option::Option<::std::string::String>,
        ///Notify all status pages subscribers
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_subscribers: ::std::option::Option<bool>,
        ///For Statuspage.io integrated pages auto publishes a tweet for your update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_tweet: ::std::option::Option<bool>,
        ///When the event started.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The status of the incident event
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<
            UpdateIncidentStatusPageEventDataAttributesStatus,
        >,
        ///Unique ID of the status page you wish to post the event to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status_page_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentStatusPageEventDataAttributes {
        fn default() -> Self {
            Self {
                event: Default::default(),
                notify_subscribers: Default::default(),
                should_tweet: Default::default(),
                started_at: Default::default(),
                status: Default::default(),
                status_page_id: Default::default(),
            }
        }
    }
    impl UpdateIncidentStatusPageEventDataAttributes {
        pub fn builder() -> builder::UpdateIncidentStatusPageEventDataAttributes {
            Default::default()
        }
    }
    ///The status of the incident event
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status of the incident event",
    ///  "type": "string",
    ///  "enum": [
    ///    "investigating",
    ///    "identified",
    ///    "monitoring",
    ///    "resolved",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentStatusPageEventDataAttributesStatus {
        #[serde(rename = "investigating")]
        Investigating,
        #[serde(rename = "identified")]
        Identified,
        #[serde(rename = "monitoring")]
        Monitoring,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for UpdateIncidentStatusPageEventDataAttributesStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Investigating => f.write_str("investigating"),
                Self::Identified => f.write_str("identified"),
                Self::Monitoring => f.write_str("monitoring"),
                Self::Resolved => f.write_str("resolved"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentStatusPageEventDataAttributesStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "investigating" => Ok(Self::Investigating),
                "identified" => Ok(Self::Identified),
                "monitoring" => Ok(Self::Monitoring),
                "resolved" => Ok(Self::Resolved),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentStatusPageEventDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentStatusPageEventDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentStatusPageEventDataAttributesStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentStatusPageEventDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_status_page_events"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentStatusPageEventDataType {
        #[serde(rename = "incident_status_page_events")]
        IncidentStatusPageEvents,
    }
    impl ::std::fmt::Display for UpdateIncidentStatusPageEventDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentStatusPageEvents => {
                    f.write_str("incident_status_page_events")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentStatusPageEventDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_status_page_events" => Ok(Self::IncidentStatusPageEvents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentStatusPageEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentStatusPageEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentStatusPageEventDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentStatusTimestampTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "assigned_at",
    ///    "sub_status_id"
    ///  ],
    ///  "properties": {
    ///    "assigned_at": {
    ///      "description": "Timestamp of when the sub-status was assigned",
    ///      "type": "string"
    ///    },
    ///    "sub_status_id": {
    ///      "description": "Sub-status to update timestamp for",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_status"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentStatusTimestampTaskParams {
        ///Timestamp of when the sub-status was assigned
        pub assigned_at: ::std::string::String,
        ///Sub-status to update timestamp for
        pub sub_status_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<
            UpdateIncidentStatusTimestampTaskParamsTaskType,
        >,
    }
    impl UpdateIncidentStatusTimestampTaskParams {
        pub fn builder() -> builder::UpdateIncidentStatusTimestampTaskParams {
            Default::default()
        }
    }
    ///`UpdateIncidentStatusTimestampTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_status"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentStatusTimestampTaskParamsTaskType {
        #[serde(rename = "update_status")]
        UpdateStatus,
    }
    impl ::std::fmt::Display for UpdateIncidentStatusTimestampTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateStatus => f.write_str("update_status"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentStatusTimestampTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_status" => Ok(Self::UpdateStatus),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateIncidentStatusTimestampTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentStatusTimestampTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentStatusTimestampTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "assigned_at": {
    ///              "type": "string"
    ///            },
    ///            "assigned_by_user_id": {
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "sub_status_id": {
    ///              "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_sub_statuses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentSubStatus {
        pub data: UpdateIncidentSubStatusData,
    }
    impl UpdateIncidentSubStatus {
        pub fn builder() -> builder::UpdateIncidentSubStatus {
            Default::default()
        }
    }
    ///`UpdateIncidentSubStatusData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "assigned_at": {
    ///          "type": "string"
    ///        },
    ///        "assigned_by_user_id": {
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "sub_status_id": {
    ///          "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentSubStatusData {
        pub attributes: UpdateIncidentSubStatusDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentSubStatusDataType,
    }
    impl UpdateIncidentSubStatusData {
        pub fn builder() -> builder::UpdateIncidentSubStatusData {
            Default::default()
        }
    }
    ///`UpdateIncidentSubStatusDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "assigned_at": {
    ///      "type": "string"
    ///    },
    ///    "assigned_by_user_id": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "sub_status_id": {
    ///      "description": "Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentSubStatusDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assigned_by_user_id: ::std::option::Option<i64>,
        ///Note: To change an incident's sub-status, use the PATCH /incidents/:id endpoint and set the sub_status_id attribute. This endpoint is for modifying the timestamp of when an incident's sub-status was assigned.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sub_status_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateIncidentSubStatusDataAttributes {
        fn default() -> Self {
            Self {
                assigned_at: Default::default(),
                assigned_by_user_id: Default::default(),
                sub_status_id: Default::default(),
            }
        }
    }
    impl UpdateIncidentSubStatusDataAttributes {
        pub fn builder() -> builder::UpdateIncidentSubStatusDataAttributes {
            Default::default()
        }
    }
    ///`UpdateIncidentSubStatusDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentSubStatusDataType {
        #[serde(rename = "incident_sub_statuses")]
        IncidentSubStatuses,
    }
    impl ::std::fmt::Display for UpdateIncidentSubStatusDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentSubStatuses => f.write_str("incident_sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentSubStatusDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_sub_statuses" => Ok(Self::IncidentSubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_id"
    ///  ],
    ///  "properties": {
    ///    "acknowledged_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "attribute_to_query_by": {
    ///      "default": "id",
    ///      "type": "string",
    ///      "enum": [
    ///        "id",
    ///        "slug",
    ///        "sequential_id",
    ///        "pagerduty_incident_id",
    ///        "opsgenie_incident_id",
    ///        "victor_ops_incident_id",
    ///        "jira_issue_id",
    ///        "asana_task_id",
    ///        "shortcut_task_id",
    ///        "linear_issue_id",
    ///        "zendesk_ticket_id",
    ///        "motion_task_id",
    ///        "trello_card_id",
    ///        "airtable_record_id",
    ///        "shortcut_story_id",
    ///        "github_issue_id",
    ///        "gitlab_issue_id",
    ///        "freshservice_ticket_id",
    ///        "freshservice_task_id",
    ///        "clickup_task_id"
    ///      ]
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON. Use 'services', 'functionalities', or 'groups' keys with arrays of names/slugs for name/slug lookup",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "detected_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "description": "Array of functionality UUIDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "Array of group/team UUIDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_id": {
    ///      "description": "The incident id to update or id of any attribute on the incident",
    ///      "type": "string"
    ///    },
    ///    "incident_type_ids": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "mitigated_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "private": {
    ///      "type": "boolean"
    ///    },
    ///    "resolved_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Array of service UUIDs",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "summary": {
    ///      "description": "The incident summary",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_incident"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub acknowledged_at: ::std::option::Option<::std::string::String>,
        #[serde(default = "defaults::update_incident_task_params_attribute_to_query_by")]
        pub attribute_to_query_by: UpdateIncidentTaskParamsAttributeToQueryBy,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON. Use 'services', 'functionalities', or 'groups' keys with arrays of names/slugs for name/slug lookup
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub detected_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Array of functionality UUIDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Array of group/team UUIDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The incident id to update or id of any attribute on the incident
        pub incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub mitigated_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub private: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolved_at: ::std::option::Option<::std::string::String>,
        ///Array of service UUIDs
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<::std::string::String>,
        ///The incident summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateIncidentTaskParamsTaskType>,
        ///The incident title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateIncidentTaskParams {
        pub fn builder() -> builder::UpdateIncidentTaskParams {
            Default::default()
        }
    }
    ///`UpdateIncidentTaskParamsAttributeToQueryBy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "default": "id",
    ///  "type": "string",
    ///  "enum": [
    ///    "id",
    ///    "slug",
    ///    "sequential_id",
    ///    "pagerduty_incident_id",
    ///    "opsgenie_incident_id",
    ///    "victor_ops_incident_id",
    ///    "jira_issue_id",
    ///    "asana_task_id",
    ///    "shortcut_task_id",
    ///    "linear_issue_id",
    ///    "zendesk_ticket_id",
    ///    "motion_task_id",
    ///    "trello_card_id",
    ///    "airtable_record_id",
    ///    "shortcut_story_id",
    ///    "github_issue_id",
    ///    "gitlab_issue_id",
    ///    "freshservice_ticket_id",
    ///    "freshservice_task_id",
    ///    "clickup_task_id"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentTaskParamsAttributeToQueryBy {
        #[serde(rename = "id")]
        Id,
        #[serde(rename = "slug")]
        Slug,
        #[serde(rename = "sequential_id")]
        SequentialId,
        #[serde(rename = "pagerduty_incident_id")]
        PagerdutyIncidentId,
        #[serde(rename = "opsgenie_incident_id")]
        OpsgenieIncidentId,
        #[serde(rename = "victor_ops_incident_id")]
        VictorOpsIncidentId,
        #[serde(rename = "jira_issue_id")]
        JiraIssueId,
        #[serde(rename = "asana_task_id")]
        AsanaTaskId,
        #[serde(rename = "shortcut_task_id")]
        ShortcutTaskId,
        #[serde(rename = "linear_issue_id")]
        LinearIssueId,
        #[serde(rename = "zendesk_ticket_id")]
        ZendeskTicketId,
        #[serde(rename = "motion_task_id")]
        MotionTaskId,
        #[serde(rename = "trello_card_id")]
        TrelloCardId,
        #[serde(rename = "airtable_record_id")]
        AirtableRecordId,
        #[serde(rename = "shortcut_story_id")]
        ShortcutStoryId,
        #[serde(rename = "github_issue_id")]
        GithubIssueId,
        #[serde(rename = "gitlab_issue_id")]
        GitlabIssueId,
        #[serde(rename = "freshservice_ticket_id")]
        FreshserviceTicketId,
        #[serde(rename = "freshservice_task_id")]
        FreshserviceTaskId,
        #[serde(rename = "clickup_task_id")]
        ClickupTaskId,
    }
    impl ::std::fmt::Display for UpdateIncidentTaskParamsAttributeToQueryBy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Id => f.write_str("id"),
                Self::Slug => f.write_str("slug"),
                Self::SequentialId => f.write_str("sequential_id"),
                Self::PagerdutyIncidentId => f.write_str("pagerduty_incident_id"),
                Self::OpsgenieIncidentId => f.write_str("opsgenie_incident_id"),
                Self::VictorOpsIncidentId => f.write_str("victor_ops_incident_id"),
                Self::JiraIssueId => f.write_str("jira_issue_id"),
                Self::AsanaTaskId => f.write_str("asana_task_id"),
                Self::ShortcutTaskId => f.write_str("shortcut_task_id"),
                Self::LinearIssueId => f.write_str("linear_issue_id"),
                Self::ZendeskTicketId => f.write_str("zendesk_ticket_id"),
                Self::MotionTaskId => f.write_str("motion_task_id"),
                Self::TrelloCardId => f.write_str("trello_card_id"),
                Self::AirtableRecordId => f.write_str("airtable_record_id"),
                Self::ShortcutStoryId => f.write_str("shortcut_story_id"),
                Self::GithubIssueId => f.write_str("github_issue_id"),
                Self::GitlabIssueId => f.write_str("gitlab_issue_id"),
                Self::FreshserviceTicketId => f.write_str("freshservice_ticket_id"),
                Self::FreshserviceTaskId => f.write_str("freshservice_task_id"),
                Self::ClickupTaskId => f.write_str("clickup_task_id"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentTaskParamsAttributeToQueryBy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "id" => Ok(Self::Id),
                "slug" => Ok(Self::Slug),
                "sequential_id" => Ok(Self::SequentialId),
                "pagerduty_incident_id" => Ok(Self::PagerdutyIncidentId),
                "opsgenie_incident_id" => Ok(Self::OpsgenieIncidentId),
                "victor_ops_incident_id" => Ok(Self::VictorOpsIncidentId),
                "jira_issue_id" => Ok(Self::JiraIssueId),
                "asana_task_id" => Ok(Self::AsanaTaskId),
                "shortcut_task_id" => Ok(Self::ShortcutTaskId),
                "linear_issue_id" => Ok(Self::LinearIssueId),
                "zendesk_ticket_id" => Ok(Self::ZendeskTicketId),
                "motion_task_id" => Ok(Self::MotionTaskId),
                "trello_card_id" => Ok(Self::TrelloCardId),
                "airtable_record_id" => Ok(Self::AirtableRecordId),
                "shortcut_story_id" => Ok(Self::ShortcutStoryId),
                "github_issue_id" => Ok(Self::GithubIssueId),
                "gitlab_issue_id" => Ok(Self::GitlabIssueId),
                "freshservice_ticket_id" => Ok(Self::FreshserviceTicketId),
                "freshservice_task_id" => Ok(Self::FreshserviceTaskId),
                "clickup_task_id" => Ok(Self::ClickupTaskId),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentTaskParamsAttributeToQueryBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for UpdateIncidentTaskParamsAttributeToQueryBy {
        fn default() -> Self {
            UpdateIncidentTaskParamsAttributeToQueryBy::Id
        }
    }
    ///`UpdateIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentTaskParamsTaskType {
        #[serde(rename = "update_incident")]
        UpdateIncident,
    }
    impl ::std::fmt::Display for UpdateIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateIncident => f.write_str("update_incident"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_incident" => Ok(Self::UpdateIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateIncidentType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the incident type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the incident type",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the incident type",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the incident type",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the incident type",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this incident type.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this incident type",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this incident type",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "incident_types"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentType {
        pub data: UpdateIncidentTypeData,
    }
    impl UpdateIncidentType {
        pub fn builder() -> builder::UpdateIncidentType {
            Default::default()
        }
    }
    ///`UpdateIncidentTypeData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the incident type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the incident type",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the incident type",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the incident type",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the incident type",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this incident type.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this incident type",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this incident type",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "incident_types"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentTypeData {
        pub attributes: UpdateIncidentTypeDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateIncidentTypeDataType,
    }
    impl UpdateIncidentTypeData {
        pub fn builder() -> builder::UpdateIncidentTypeData {
            Default::default()
        }
    }
    ///`UpdateIncidentTypeDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the incident type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the incident type",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the incident type",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the incident type",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this incident type.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this incident type",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateIncidentTypeDataAttributes {
        ///The hex color of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Emails to attach to the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this incident type.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateIncidentTypeDataAttributesPropertiesItem>,
        ///Slack Aliases associated with this incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<UpdateIncidentTypeDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this incident type
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<UpdateIncidentTypeDataAttributesSlackChannelsItem>,
        >,
    }
    impl ::std::default::Default for UpdateIncidentTypeDataAttributes {
        fn default() -> Self {
            Self {
                color: Default::default(),
                description: Default::default(),
                name: Default::default(),
                notify_emails: Default::default(),
                position: Default::default(),
                properties: Default::default(),
                slack_aliases: Default::default(),
                slack_channels: Default::default(),
            }
        }
    }
    impl UpdateIncidentTypeDataAttributes {
        pub fn builder() -> builder::UpdateIncidentTypeDataAttributes {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentTypeDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl UpdateIncidentTypeDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateIncidentTypeDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateIncidentTypeDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentTypeDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl UpdateIncidentTypeDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::UpdateIncidentTypeDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`UpdateIncidentTypeDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateIncidentTypeDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl UpdateIncidentTypeDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::UpdateIncidentTypeDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateIncidentTypeDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident_types"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateIncidentTypeDataType {
        #[serde(rename = "incident_types")]
        IncidentTypes,
    }
    impl ::std::fmt::Display for UpdateIncidentTypeDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentTypes => f.write_str("incident_types"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateIncidentTypeDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident_types" => Ok(Self::IncidentTypes),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateIncidentTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateIncidentTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateIncidentTypeDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateJiraIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "issue_id",
    ///    "project_key"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "integration": {
    ///      "description": "Specify integration id if you have more than one Jira instance",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "issue_id": {
    ///      "description": "The issue id",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "description": "The issue labels",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project_key": {
    ///      "description": "The project key",
    ///      "type": "string"
    ///    },
    ///    "reporter_user_email": {
    ///      "description": "The reporter user's email",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "description": "The status id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_jira_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    },
    ///    "update_payload": {
    ///      "description": "Update payload. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateJiraIssueTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub integration: ::std::option::Option<UpdateJiraIssueTaskParamsIntegration>,
        ///The issue id
        pub issue_id: ::std::string::String,
        ///The issue labels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateJiraIssueTaskParamsPriority>,
        ///The project key
        pub project_key: ::std::string::String,
        ///The reporter user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub reporter_user_email: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateJiraIssueTaskParamsStatus>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateJiraIssueTaskParamsTaskType>,
        ///The issue title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        ///Update payload. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_payload: ::std::option::Option<::std::string::String>,
    }
    impl UpdateJiraIssueTaskParams {
        pub fn builder() -> builder::UpdateJiraIssueTaskParams {
            Default::default()
        }
    }
    ///Specify integration id if you have more than one Jira instance
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Specify integration id if you have more than one Jira instance",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateJiraIssueTaskParamsIntegration {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateJiraIssueTaskParamsIntegration {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateJiraIssueTaskParamsIntegration {
        pub fn builder() -> builder::UpdateJiraIssueTaskParamsIntegration {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateJiraIssueTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateJiraIssueTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateJiraIssueTaskParamsPriority {
        pub fn builder() -> builder::UpdateJiraIssueTaskParamsPriority {
            Default::default()
        }
    }
    ///The status id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The status id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateJiraIssueTaskParamsStatus {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateJiraIssueTaskParamsStatus {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateJiraIssueTaskParamsStatus {
        pub fn builder() -> builder::UpdateJiraIssueTaskParamsStatus {
            Default::default()
        }
    }
    ///`UpdateJiraIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_jira_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateJiraIssueTaskParamsTaskType {
        #[serde(rename = "update_jira_issue")]
        UpdateJiraIssue,
    }
    impl ::std::fmt::Display for UpdateJiraIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateJiraIssue => f.write_str("update_jira_issue"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateJiraIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_jira_issue" => Ok(Self::UpdateJiraIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateJiraIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateJiraIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateJiraIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateLinearIssueTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "issue_id"
    ///  ],
    ///  "properties": {
    ///    "assign_user_email": {
    ///      "description": "The assigned user's email",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The issue description",
    ///      "type": "string"
    ///    },
    ///    "issue_id": {
    ///      "description": "The issue id",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "project": {
    ///      "description": "The project id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "state": {
    ///      "description": "The state id and display name",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_linear_issue"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The issue title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLinearIssueTaskParams {
        ///The assigned user's email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assign_user_email: ::std::option::Option<::std::string::String>,
        ///The issue description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The issue id
        pub issue_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<UpdateLinearIssueTaskParamsLabelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateLinearIssueTaskParamsPriority>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub project: ::std::option::Option<UpdateLinearIssueTaskParamsProject>,
        ///The state id and display name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub state: ::std::option::Option<UpdateLinearIssueTaskParamsState>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateLinearIssueTaskParamsTaskType>,
        ///The issue title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateLinearIssueTaskParams {
        pub fn builder() -> builder::UpdateLinearIssueTaskParams {
            Default::default()
        }
    }
    ///`UpdateLinearIssueTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLinearIssueTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateLinearIssueTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateLinearIssueTaskParamsLabelsItem {
        pub fn builder() -> builder::UpdateLinearIssueTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLinearIssueTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateLinearIssueTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateLinearIssueTaskParamsPriority {
        pub fn builder() -> builder::UpdateLinearIssueTaskParamsPriority {
            Default::default()
        }
    }
    ///The project id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The project id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLinearIssueTaskParamsProject {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateLinearIssueTaskParamsProject {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateLinearIssueTaskParamsProject {
        pub fn builder() -> builder::UpdateLinearIssueTaskParamsProject {
            Default::default()
        }
    }
    ///The state id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The state id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLinearIssueTaskParamsState {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateLinearIssueTaskParamsState {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateLinearIssueTaskParamsState {
        pub fn builder() -> builder::UpdateLinearIssueTaskParamsState {
            Default::default()
        }
    }
    ///`UpdateLinearIssueTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_linear_issue"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLinearIssueTaskParamsTaskType {
        #[serde(rename = "update_linear_issue")]
        UpdateLinearIssue,
    }
    impl ::std::fmt::Display for UpdateLinearIssueTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateLinearIssue => f.write_str("update_linear_issue"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateLinearIssueTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_linear_issue" => Ok(Self::UpdateLinearIssue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateLinearIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLinearIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLinearIssueTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateLiveCallRouter`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alert_urgency_id": {
    ///              "description": "This is used in escalation paths to determine who to page",
    ///              "type": "string"
    ///            },
    ///            "caller_greeting": {
    ///              "description": "The caller greeting message of the live_call_router",
    ///              "type": "string"
    ///            },
    ///            "calling_tree_enabled": {
    ///              "description": "Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected",
    ///              "type": "boolean"
    ///            },
    ///            "calling_tree_prompt": {
    ///              "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///              "type": "string"
    ///            },
    ///            "country_code": {
    ///              "description": "The country code of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "AU",
    ///                "CA",
    ///                "DE",
    ///                "NL",
    ///                "NZ",
    ///                "SE",
    ///                "CH",
    ///                "GB",
    ///                "US"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Whether the live_call_router is enabled",
    ///              "type": "boolean"
    ///            },
    ///            "escalation_level_delay_in_seconds": {
    ///              "description": "This overrides the delay (seconds) in escalation levels",
    ///              "type": "integer"
    ///            },
    ///            "escalation_policy_trigger_params": {
    ///              "type": "object",
    ///              "required": [
    ///                "id",
    ///                "type"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "The ID of notification target",
    ///                  "type": "string"
    ///                },
    ///                "type": {
    ///                  "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "Service",
    ///                    "Group",
    ///                    "EscalationPolicy",
    ///                    "Functionality"
    ///                  ]
    ///                }
    ///              }
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "voicemail",
    ///                "live"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the live_call_router",
    ///              "type": "string"
    ///            },
    ///            "paging_targets": {
    ///              "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "alert_urgency_id",
    ///                  "id",
    ///                  "type"
    ///                ],
    ///                "properties": {
    ///                  "alert_urgency_id": {
    ///                    "description": "This is used in escalation paths to determine who to page",
    ///                    "type": "string"
    ///                  },
    ///                  "id": {
    ///                    "description": "The ID of paging target",
    ///                    "type": "string"
    ///                  },
    ///                  "type": {
    ///                    "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "service",
    ///                      "team",
    ///                      "escalation_policy",
    ///                      "functionality"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "phone_type": {
    ///              "description": "The phone type of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "local",
    ///                "toll_free",
    ///                "mobile"
    ///              ]
    ///            },
    ///            "sent_to_voicemail_delay": {
    ///              "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///              "type": "integer"
    ///            },
    ///            "should_auto_resolve_alert_on_call_end": {
    ///              "description": "This overrides the delay (seconds) in escalation levels",
    ///              "type": "boolean"
    ///            },
    ///            "should_redirect_to_voicemail_on_no_answer": {
    ///              "description": "This prompts the caller to choose voicemail or connect live",
    ///              "type": "boolean"
    ///            },
    ///            "voicemail_greeting": {
    ///              "description": "The voicemail greeting of the live_call_router",
    ///              "type": "string"
    ///            },
    ///            "waiting_music_url": {
    ///              "description": "The waiting music URL of the live_call_router",
    ///              "type": "string",
    ///              "enum": [
    ///                "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///                "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "live_call_routers"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLiveCallRouter {
        pub data: UpdateLiveCallRouterData,
    }
    impl UpdateLiveCallRouter {
        pub fn builder() -> builder::UpdateLiveCallRouter {
            Default::default()
        }
    }
    ///`UpdateLiveCallRouterData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alert_urgency_id": {
    ///          "description": "This is used in escalation paths to determine who to page",
    ///          "type": "string"
    ///        },
    ///        "caller_greeting": {
    ///          "description": "The caller greeting message of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "calling_tree_enabled": {
    ///          "description": "Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected",
    ///          "type": "boolean"
    ///        },
    ///        "calling_tree_prompt": {
    ///          "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///          "type": "string"
    ///        },
    ///        "country_code": {
    ///          "description": "The country code of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "AU",
    ///            "CA",
    ///            "DE",
    ///            "NL",
    ///            "NZ",
    ///            "SE",
    ///            "CH",
    ///            "GB",
    ///            "US"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Whether the live_call_router is enabled",
    ///          "type": "boolean"
    ///        },
    ///        "escalation_level_delay_in_seconds": {
    ///          "description": "This overrides the delay (seconds) in escalation levels",
    ///          "type": "integer"
    ///        },
    ///        "escalation_policy_trigger_params": {
    ///          "type": "object",
    ///          "required": [
    ///            "id",
    ///            "type"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "The ID of notification target",
    ///              "type": "string"
    ///            },
    ///            "type": {
    ///              "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///              "type": "string",
    ///              "enum": [
    ///                "Service",
    ///                "Group",
    ///                "EscalationPolicy",
    ///                "Functionality"
    ///              ]
    ///            }
    ///          }
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "voicemail",
    ///            "live"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "paging_targets": {
    ///          "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "alert_urgency_id",
    ///              "id",
    ///              "type"
    ///            ],
    ///            "properties": {
    ///              "alert_urgency_id": {
    ///                "description": "This is used in escalation paths to determine who to page",
    ///                "type": "string"
    ///              },
    ///              "id": {
    ///                "description": "The ID of paging target",
    ///                "type": "string"
    ///              },
    ///              "type": {
    ///                "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///                "type": "string",
    ///                "enum": [
    ///                  "service",
    ///                  "team",
    ///                  "escalation_policy",
    ///                  "functionality"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "phone_type": {
    ///          "description": "The phone type of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "local",
    ///            "toll_free",
    ///            "mobile"
    ///          ]
    ///        },
    ///        "sent_to_voicemail_delay": {
    ///          "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///          "type": "integer"
    ///        },
    ///        "should_auto_resolve_alert_on_call_end": {
    ///          "description": "This overrides the delay (seconds) in escalation levels",
    ///          "type": "boolean"
    ///        },
    ///        "should_redirect_to_voicemail_on_no_answer": {
    ///          "description": "This prompts the caller to choose voicemail or connect live",
    ///          "type": "boolean"
    ///        },
    ///        "voicemail_greeting": {
    ///          "description": "The voicemail greeting of the live_call_router",
    ///          "type": "string"
    ///        },
    ///        "waiting_music_url": {
    ///          "description": "The waiting music URL of the live_call_router",
    ///          "type": "string",
    ///          "enum": [
    ///            "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///            "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "live_call_routers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLiveCallRouterData {
        pub attributes: UpdateLiveCallRouterDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateLiveCallRouterDataType,
    }
    impl UpdateLiveCallRouterData {
        pub fn builder() -> builder::UpdateLiveCallRouterData {
            Default::default()
        }
    }
    ///`UpdateLiveCallRouterDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "This is used in escalation paths to determine who to page",
    ///      "type": "string"
    ///    },
    ///    "caller_greeting": {
    ///      "description": "The caller greeting message of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "calling_tree_enabled": {
    ///      "description": "Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected",
    ///      "type": "boolean"
    ///    },
    ///    "calling_tree_prompt": {
    ///      "description": "The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call",
    ///      "type": "string"
    ///    },
    ///    "country_code": {
    ///      "description": "The country code of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "AU",
    ///        "CA",
    ///        "DE",
    ///        "NL",
    ///        "NZ",
    ///        "SE",
    ///        "CH",
    ///        "GB",
    ///        "US"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Whether the live_call_router is enabled",
    ///      "type": "boolean"
    ///    },
    ///    "escalation_level_delay_in_seconds": {
    ///      "description": "This overrides the delay (seconds) in escalation levels",
    ///      "type": "integer"
    ///    },
    ///    "escalation_policy_trigger_params": {
    ///      "type": "object",
    ///      "required": [
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "The ID of notification target",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///          "type": "string",
    ///          "enum": [
    ///            "Service",
    ///            "Group",
    ///            "EscalationPolicy",
    ///            "Functionality"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "voicemail",
    ///        "live"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "paging_targets": {
    ///      "description": "Paging targets that callers can select from when this live call router is configured as a phone tree.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "alert_urgency_id",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "alert_urgency_id": {
    ///            "description": "This is used in escalation paths to determine who to page",
    ///            "type": "string"
    ///          },
    ///          "id": {
    ///            "description": "The ID of paging target",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///            "type": "string",
    ///            "enum": [
    ///              "service",
    ///              "team",
    ///              "escalation_policy",
    ///              "functionality"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "phone_type": {
    ///      "description": "The phone type of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "local",
    ///        "toll_free",
    ///        "mobile"
    ///      ]
    ///    },
    ///    "sent_to_voicemail_delay": {
    ///      "description": "The delay (seconds) after which the caller in redirected to voicemail",
    ///      "type": "integer"
    ///    },
    ///    "should_auto_resolve_alert_on_call_end": {
    ///      "description": "This overrides the delay (seconds) in escalation levels",
    ///      "type": "boolean"
    ///    },
    ///    "should_redirect_to_voicemail_on_no_answer": {
    ///      "description": "This prompts the caller to choose voicemail or connect live",
    ///      "type": "boolean"
    ///    },
    ///    "voicemail_greeting": {
    ///      "description": "The voicemail greeting of the live_call_router",
    ///      "type": "string"
    ///    },
    ///    "waiting_music_url": {
    ///      "description": "The waiting music URL of the live_call_router",
    ///      "type": "string",
    ///      "enum": [
    ///        "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///        "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateLiveCallRouterDataAttributes {
        ///This is used in escalation paths to determine who to page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///The caller greeting message of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub caller_greeting: ::std::option::Option<::std::string::String>,
        ///Whether the live call router is configured as a phone tree, requiring callers to press a key before being connected
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calling_tree_enabled: ::std::option::Option<bool>,
        ///The audio instructions callers will hear when they call this number, prompting them to select from available options to route their call
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub calling_tree_prompt: ::std::option::Option<::std::string::String>,
        ///The country code of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub country_code: ::std::option::Option<
            UpdateLiveCallRouterDataAttributesCountryCode,
        >,
        ///Whether the live_call_router is enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///This overrides the delay (seconds) in escalation levels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_level_delay_in_seconds: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_trigger_params: ::std::option::Option<
            UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
        >,
        ///The kind of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateLiveCallRouterDataAttributesKind>,
        ///The name of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Paging targets that callers can select from when this live call router is configured as a phone tree.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub paging_targets: ::std::vec::Vec<
            UpdateLiveCallRouterDataAttributesPagingTargetsItem,
        >,
        ///The phone type of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone_type: ::std::option::Option<
            UpdateLiveCallRouterDataAttributesPhoneType,
        >,
        ///The delay (seconds) after which the caller in redirected to voicemail
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sent_to_voicemail_delay: ::std::option::Option<i64>,
        ///This overrides the delay (seconds) in escalation levels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_auto_resolve_alert_on_call_end: ::std::option::Option<bool>,
        ///This prompts the caller to choose voicemail or connect live
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_redirect_to_voicemail_on_no_answer: ::std::option::Option<bool>,
        ///The voicemail greeting of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub voicemail_greeting: ::std::option::Option<::std::string::String>,
        ///The waiting music URL of the live_call_router
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub waiting_music_url: ::std::option::Option<
            UpdateLiveCallRouterDataAttributesWaitingMusicUrl,
        >,
    }
    impl ::std::default::Default for UpdateLiveCallRouterDataAttributes {
        fn default() -> Self {
            Self {
                alert_urgency_id: Default::default(),
                caller_greeting: Default::default(),
                calling_tree_enabled: Default::default(),
                calling_tree_prompt: Default::default(),
                country_code: Default::default(),
                enabled: Default::default(),
                escalation_level_delay_in_seconds: Default::default(),
                escalation_policy_trigger_params: Default::default(),
                kind: Default::default(),
                name: Default::default(),
                paging_targets: Default::default(),
                phone_type: Default::default(),
                sent_to_voicemail_delay: Default::default(),
                should_auto_resolve_alert_on_call_end: Default::default(),
                should_redirect_to_voicemail_on_no_answer: Default::default(),
                voicemail_greeting: Default::default(),
                waiting_music_url: Default::default(),
            }
        }
    }
    impl UpdateLiveCallRouterDataAttributes {
        pub fn builder() -> builder::UpdateLiveCallRouterDataAttributes {
            Default::default()
        }
    }
    ///The country code of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The country code of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "AU",
    ///    "CA",
    ///    "DE",
    ///    "NL",
    ///    "NZ",
    ///    "SE",
    ///    "CH",
    ///    "GB",
    ///    "US"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataAttributesCountryCode {
        #[serde(rename = "AU")]
        Au,
        #[serde(rename = "CA")]
        Ca,
        #[serde(rename = "DE")]
        De,
        #[serde(rename = "NL")]
        Nl,
        #[serde(rename = "NZ")]
        Nz,
        #[serde(rename = "SE")]
        Se,
        #[serde(rename = "CH")]
        Ch,
        #[serde(rename = "GB")]
        Gb,
        #[serde(rename = "US")]
        Us,
    }
    impl ::std::fmt::Display for UpdateLiveCallRouterDataAttributesCountryCode {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Au => f.write_str("AU"),
                Self::Ca => f.write_str("CA"),
                Self::De => f.write_str("DE"),
                Self::Nl => f.write_str("NL"),
                Self::Nz => f.write_str("NZ"),
                Self::Se => f.write_str("SE"),
                Self::Ch => f.write_str("CH"),
                Self::Gb => f.write_str("GB"),
                Self::Us => f.write_str("US"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateLiveCallRouterDataAttributesCountryCode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "AU" => Ok(Self::Au),
                "CA" => Ok(Self::Ca),
                "DE" => Ok(Self::De),
                "NL" => Ok(Self::Nl),
                "NZ" => Ok(Self::Nz),
                "SE" => Ok(Self::Se),
                "CH" => Ok(Self::Ch),
                "GB" => Ok(Self::Gb),
                "US" => Ok(Self::Us),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateLiveCallRouterDataAttributesCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataAttributesCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataAttributesCountryCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "The ID of notification target",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "Service",
    ///        "Group",
    ///        "EscalationPolicy",
    ///        "Functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
        ///The ID of notification target
        pub id: ::std::string::String,
        ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
        #[serde(rename = "type")]
        pub type_: UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType,
    }
    impl UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
        pub fn builder() -> builder::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            Default::default()
        }
    }
    ///The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the notification target. Please contact support if you encounter issues using `Functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "Service",
    ///    "Group",
    ///    "EscalationPolicy",
    ///    "Functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        Service,
        Group,
        EscalationPolicy,
        Functionality,
    }
    impl ::std::fmt::Display
    for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("Service"),
                Self::Group => f.write_str("Group"),
                Self::EscalationPolicy => f.write_str("EscalationPolicy"),
                Self::Functionality => f.write_str("Functionality"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "Service" => Ok(Self::Service),
                "Group" => Ok(Self::Group),
                "EscalationPolicy" => Ok(Self::EscalationPolicy),
                "Functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The kind of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "voicemail",
    ///    "live"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataAttributesKind {
        #[serde(rename = "voicemail")]
        Voicemail,
        #[serde(rename = "live")]
        Live,
    }
    impl ::std::fmt::Display for UpdateLiveCallRouterDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Voicemail => f.write_str("voicemail"),
                Self::Live => f.write_str("live"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateLiveCallRouterDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "voicemail" => Ok(Self::Voicemail),
                "live" => Ok(Self::Live),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateLiveCallRouterDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateLiveCallRouterDataAttributesPagingTargetsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_urgency_id",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "alert_urgency_id": {
    ///      "description": "This is used in escalation paths to determine who to page",
    ///      "type": "string"
    ///    },
    ///    "id": {
    ///      "description": "The ID of paging target",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///      "type": "string",
    ///      "enum": [
    ///        "service",
    ///        "team",
    ///        "escalation_policy",
    ///        "functionality"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateLiveCallRouterDataAttributesPagingTargetsItem {
        ///This is used in escalation paths to determine who to page
        pub alert_urgency_id: ::std::string::String,
        ///The ID of paging target
        pub id: ::std::string::String,
        ///The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.
        #[serde(rename = "type")]
        pub type_: UpdateLiveCallRouterDataAttributesPagingTargetsItemType,
    }
    impl UpdateLiveCallRouterDataAttributesPagingTargetsItem {
        pub fn builder() -> builder::UpdateLiveCallRouterDataAttributesPagingTargetsItem {
            Default::default()
        }
    }
    ///The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of the paging target. Please contact support if you encounter issues using `functionality` as a target type.",
    ///  "type": "string",
    ///  "enum": [
    ///    "service",
    ///    "team",
    ///    "escalation_policy",
    ///    "functionality"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataAttributesPagingTargetsItemType {
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "team")]
        Team,
        #[serde(rename = "escalation_policy")]
        EscalationPolicy,
        #[serde(rename = "functionality")]
        Functionality,
    }
    impl ::std::fmt::Display
    for UpdateLiveCallRouterDataAttributesPagingTargetsItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Service => f.write_str("service"),
                Self::Team => f.write_str("team"),
                Self::EscalationPolicy => f.write_str("escalation_policy"),
                Self::Functionality => f.write_str("functionality"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateLiveCallRouterDataAttributesPagingTargetsItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "service" => Ok(Self::Service),
                "team" => Ok(Self::Team),
                "escalation_policy" => Ok(Self::EscalationPolicy),
                "functionality" => Ok(Self::Functionality),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateLiveCallRouterDataAttributesPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataAttributesPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataAttributesPagingTargetsItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The phone type of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The phone type of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "local",
    ///    "toll_free",
    ///    "mobile"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataAttributesPhoneType {
        #[serde(rename = "local")]
        Local,
        #[serde(rename = "toll_free")]
        TollFree,
        #[serde(rename = "mobile")]
        Mobile,
    }
    impl ::std::fmt::Display for UpdateLiveCallRouterDataAttributesPhoneType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Local => f.write_str("local"),
                Self::TollFree => f.write_str("toll_free"),
                Self::Mobile => f.write_str("mobile"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateLiveCallRouterDataAttributesPhoneType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "local" => Ok(Self::Local),
                "toll_free" => Ok(Self::TollFree),
                "mobile" => Ok(Self::Mobile),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateLiveCallRouterDataAttributesPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataAttributesPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataAttributesPhoneType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The waiting music URL of the live_call_router
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The waiting music URL of the live_call_router",
    ///  "type": "string",
    ///  "enum": [
    ///    "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
    ///    "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataAttributesWaitingMusicUrl {
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3,
        #[serde(rename = "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3")]
        HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3,
        #[serde(
            rename = "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3"
        )]
        HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3,
    }
    impl ::std::fmt::Display for UpdateLiveCallRouterDataAttributesWaitingMusicUrl {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3",
                    )
                }
                Self::HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3 => {
                    f.write_str(
                        "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3",
                    )
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateLiveCallRouterDataAttributesWaitingMusicUrl {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "https://storage.rootly.com/twilio/voicemail/ClockworkWaltz.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailClockworkWaltzMp3)
                }
                "https://storage.rootly.com/twilio/voicemail/ith_brahms-116-4.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailIthBrahms1164Mp3)
                }
                "https://storage.rootly.com/twilio/voicemail/Mellotroniac_-_Flight_Of_Young_Hearts_Flute.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailMellotroniacFlightOfYoungHeartsFluteMp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/BusyStrings.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailBusyStringsMp3)
                }
                "https://storage.rootly.com/twilio/voicemail/oldDog_-_endless_goodbye_%28instr.%29.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailOldDogEndlessGoodbye28instr29Mp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/MARKOVICHAMP-Borghestral.mp3" => {
                    Ok(
                        Self::HttpsStorageRootlyComTwilioVoicemailMarkovichampBorghestralMp3,
                    )
                }
                "https://storage.rootly.com/twilio/voicemail/ith_chopin-15-2.mp3" => {
                    Ok(Self::HttpsStorageRootlyComTwilioVoicemailIthChopin152Mp3)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateLiveCallRouterDataAttributesWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataAttributesWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataAttributesWaitingMusicUrl {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateLiveCallRouterDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "live_call_routers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateLiveCallRouterDataType {
        #[serde(rename = "live_call_routers")]
        LiveCallRouters,
    }
    impl ::std::fmt::Display for UpdateLiveCallRouterDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::LiveCallRouters => f.write_str("live_call_routers"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateLiveCallRouterDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "live_call_routers" => Ok(Self::LiveCallRouters),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateLiveCallRouterDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateLiveCallRouterDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateLiveCallRouterDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateMotionTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "task_id"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "The task description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "duration": {
    ///      "description": "The duration. Eg.  \"NONE\", \"REMINDER\", or a integer greater than 0.",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_id": {
    ///      "description": "The task id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_motion_task"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The task title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateMotionTaskTaskParams {
        ///The task description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///The duration. Eg.  "NONE", "REMINDER", or a integer greater than 0.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateMotionTaskTaskParamsPriority>,
        ///The task id
        pub task_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateMotionTaskTaskParamsTaskType>,
        ///The task title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateMotionTaskTaskParams {
        pub fn builder() -> builder::UpdateMotionTaskTaskParams {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateMotionTaskTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateMotionTaskTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateMotionTaskTaskParamsPriority {
        pub fn builder() -> builder::UpdateMotionTaskTaskParamsPriority {
            Default::default()
        }
    }
    ///`UpdateMotionTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_motion_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateMotionTaskTaskParamsTaskType {
        #[serde(rename = "update_motion_task")]
        UpdateMotionTask,
    }
    impl ::std::fmt::Display for UpdateMotionTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateMotionTask => f.write_str("update_motion_task"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateMotionTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_motion_task" => Ok(Self::UpdateMotionTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateMotionTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateMotionTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateMotionTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateNotionPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "Custom page content with liquid templating support. When provided, only this content will be rendered (no default sections)",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The Notion page ID",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when creating page task, if desired",
    ///      "type": "string"
    ///    },
    ///    "show_action_items_as_table": {
    ///      "type": "boolean"
    ///    },
    ///    "show_timeline_as_table": {
    ///      "type": "boolean"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_notion_page"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The Notion page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateNotionPageTaskParams {
        ///Custom page content with liquid templating support. When provided, only this content will be rendered (no default sections)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Notion page ID
        pub file_id: ::std::string::String,
        ///Retrospective template to use when creating page task, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_action_items_as_table: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_timeline_as_table: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateNotionPageTaskParamsTaskType>,
        ///The Notion page title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateNotionPageTaskParams {
        pub fn builder() -> builder::UpdateNotionPageTaskParams {
            Default::default()
        }
    }
    ///`UpdateNotionPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_notion_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateNotionPageTaskParamsTaskType {
        #[serde(rename = "update_notion_page")]
        UpdateNotionPage,
    }
    impl ::std::fmt::Display for UpdateNotionPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateNotionPage => f.write_str("update_notion_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateNotionPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_notion_page" => Ok(Self::UpdateNotionPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateNotionPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateNotionPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateNotionPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallPayReport`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "end_date": {
    ///              "description": "The end date for the report period.",
    ///              "type": "string",
    ///              "format": "date"
    ///            },
    ///            "schedule_ids": {
    ///              "description": "List of schedule UUIDs to scope the report.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "start_date": {
    ///              "description": "The start date for the report period.",
    ///              "type": "string",
    ///              "format": "date"
    ///            },
    ///            "time_zone": {
    ///              "description": "IANA timezone used to compute day and weekend boundaries.",
    ///              "type": "string"
    ///            },
    ///            "use_responders_time_zone": {
    ///              "description": "When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.",
    ///              "type": "boolean"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_pay_reports"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOnCallPayReport {
        pub data: UpdateOnCallPayReportData,
    }
    impl UpdateOnCallPayReport {
        pub fn builder() -> builder::UpdateOnCallPayReport {
            Default::default()
        }
    }
    ///`UpdateOnCallPayReportData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "end_date": {
    ///          "description": "The end date for the report period.",
    ///          "type": "string",
    ///          "format": "date"
    ///        },
    ///        "schedule_ids": {
    ///          "description": "List of schedule UUIDs to scope the report.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "start_date": {
    ///          "description": "The start date for the report period.",
    ///          "type": "string",
    ///          "format": "date"
    ///        },
    ///        "time_zone": {
    ///          "description": "IANA timezone used to compute day and weekend boundaries.",
    ///          "type": "string"
    ///        },
    ///        "use_responders_time_zone": {
    ///          "description": "When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.",
    ///          "type": "boolean"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_pay_reports"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOnCallPayReportData {
        pub attributes: UpdateOnCallPayReportDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateOnCallPayReportDataType,
    }
    impl UpdateOnCallPayReportData {
        pub fn builder() -> builder::UpdateOnCallPayReportData {
            Default::default()
        }
    }
    ///`UpdateOnCallPayReportDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "end_date": {
    ///      "description": "The end date for the report period.",
    ///      "type": "string",
    ///      "format": "date"
    ///    },
    ///    "schedule_ids": {
    ///      "description": "List of schedule UUIDs to scope the report.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "start_date": {
    ///      "description": "The start date for the report period.",
    ///      "type": "string",
    ///      "format": "date"
    ///    },
    ///    "time_zone": {
    ///      "description": "IANA timezone used to compute day and weekend boundaries.",
    ///      "type": "string"
    ///    },
    ///    "use_responders_time_zone": {
    ///      "description": "When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.",
    ///      "type": "boolean"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateOnCallPayReportDataAttributes {
        ///The end date for the report period.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_date: ::std::option::Option<::chrono::naive::NaiveDate>,
        ///List of schedule UUIDs to scope the report.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedule_ids: ::std::vec::Vec<::std::string::String>,
        ///The start date for the report period.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_date: ::std::option::Option<::chrono::naive::NaiveDate>,
        ///IANA timezone used to compute day and weekend boundaries.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///When true, day and weekend boundaries are computed in each responder's personal timezone instead of the report-wide timezone.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub use_responders_time_zone: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for UpdateOnCallPayReportDataAttributes {
        fn default() -> Self {
            Self {
                end_date: Default::default(),
                schedule_ids: Default::default(),
                start_date: Default::default(),
                time_zone: Default::default(),
                use_responders_time_zone: Default::default(),
            }
        }
    }
    impl UpdateOnCallPayReportDataAttributes {
        pub fn builder() -> builder::UpdateOnCallPayReportDataAttributes {
            Default::default()
        }
    }
    ///`UpdateOnCallPayReportDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_pay_reports"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallPayReportDataType {
        #[serde(rename = "on_call_pay_reports")]
        OnCallPayReports,
    }
    impl ::std::fmt::Display for UpdateOnCallPayReportDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallPayReports => f.write_str("on_call_pay_reports"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallPayReportDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_pay_reports" => Ok(Self::OnCallPayReports),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOnCallPayReportDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallPayReportDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallPayReportDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alert_fields_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_groups_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_routing_rules_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_sources_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alert_urgency_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "alerts_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "update",
    ///                  "read",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "api_keys_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "audits_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "catalogs_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "contacts_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "read"
    ///                ]
    ///              }
    ///            },
    ///            "escalation_policies_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "groups_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "heartbeats_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "integrations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "invitations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "live_call_routing_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The role name.",
    ///              "type": "string"
    ///            },
    ///            "on_call_readiness_report_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "read"
    ///                ]
    ///              }
    ///            },
    ///            "on_call_roles_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "schedule_override_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "update"
    ///                ]
    ///              }
    ///            },
    ///            "schedules_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "services_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "system_role": {
    ///              "description": "The kind of role (user and custom type roles are only editable)",
    ///              "default": "custom",
    ///              "type": "string",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "admin",
    ///                  "user",
    ///                  "custom",
    ///                  "observer",
    ///                  "no_access"
    ///                ]
    ///              }
    ///            },
    ///            "webhooks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "workflows_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOnCallRole {
        pub data: UpdateOnCallRoleData,
    }
    impl UpdateOnCallRole {
        pub fn builder() -> builder::UpdateOnCallRole {
            Default::default()
        }
    }
    ///`UpdateOnCallRoleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alert_fields_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_groups_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_routing_rules_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_sources_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alert_urgency_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "alerts_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "update",
    ///              "read",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "api_keys_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "audits_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "catalogs_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "contacts_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "read"
    ///            ]
    ///          }
    ///        },
    ///        "escalation_policies_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "groups_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "heartbeats_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "integrations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "invitations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "live_call_routing_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The role name.",
    ///          "type": "string"
    ///        },
    ///        "on_call_readiness_report_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "read"
    ///            ]
    ///          }
    ///        },
    ///        "on_call_roles_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "schedule_override_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "update"
    ///            ]
    ///          }
    ///        },
    ///        "schedules_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "services_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "system_role": {
    ///          "description": "The kind of role (user and custom type roles are only editable)",
    ///          "default": "custom",
    ///          "type": "string",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "admin",
    ///              "user",
    ///              "custom",
    ///              "observer",
    ///              "no_access"
    ///            ]
    ///          }
    ///        },
    ///        "webhooks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "workflows_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOnCallRoleData {
        pub attributes: UpdateOnCallRoleDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateOnCallRoleDataType,
    }
    impl UpdateOnCallRoleData {
        pub fn builder() -> builder::UpdateOnCallRoleData {
            Default::default()
        }
    }
    ///`UpdateOnCallRoleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_fields_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_routing_rules_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_sources_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alert_urgency_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "alerts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update",
    ///          "read",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "api_keys_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "audits_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "catalogs_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "contacts_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "escalation_policies_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "heartbeats_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "integrations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "invitations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "live_call_routing_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The role name.",
    ///      "type": "string"
    ///    },
    ///    "on_call_readiness_report_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "read"
    ///        ]
    ///      }
    ///    },
    ///    "on_call_roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "schedule_override_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "update"
    ///        ]
    ///      }
    ///    },
    ///    "schedules_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "services_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "system_role": {
    ///      "description": "The kind of role (user and custom type roles are only editable)",
    ///      "default": "custom",
    ///      "type": "string",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "admin",
    ///          "user",
    ///          "custom",
    ///          "observer",
    ///          "no_access"
    ///        ]
    ///      }
    ///    },
    ///    "webhooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "workflows_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateOnCallRoleDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_fields_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_groups_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_routing_rules_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_sources_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alert_urgency_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub alerts_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAlertsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub api_keys_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesApiKeysPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub audits_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesAuditsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub catalogs_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesCatalogsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub contacts_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesContactsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub escalation_policies_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub heartbeats_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub integrations_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub invitations_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesInvitationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub live_call_routing_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem,
        >,
        ///The role name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub on_call_readiness_report_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub on_call_roles_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedule_override_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub schedules_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesSchedulesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesServicesPermissionsItem,
        >,
        ///The kind of role (user and custom type roles are only editable)
        #[serde(default = "defaults::update_on_call_role_data_attributes_system_role")]
        pub system_role: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub webhooks_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesWebhooksPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub workflows_permissions: ::std::vec::Vec<
            UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem,
        >,
    }
    impl ::std::default::Default for UpdateOnCallRoleDataAttributes {
        fn default() -> Self {
            Self {
                alert_fields_permissions: Default::default(),
                alert_groups_permissions: Default::default(),
                alert_routing_rules_permissions: Default::default(),
                alert_sources_permissions: Default::default(),
                alert_urgency_permissions: Default::default(),
                alerts_permissions: Default::default(),
                api_keys_permissions: Default::default(),
                audits_permissions: Default::default(),
                catalogs_permissions: Default::default(),
                contacts_permissions: Default::default(),
                escalation_policies_permissions: Default::default(),
                groups_permissions: Default::default(),
                heartbeats_permissions: Default::default(),
                integrations_permissions: Default::default(),
                invitations_permissions: Default::default(),
                live_call_routing_permissions: Default::default(),
                name: Default::default(),
                on_call_readiness_report_permissions: Default::default(),
                on_call_roles_permissions: Default::default(),
                schedule_override_permissions: Default::default(),
                schedules_permissions: Default::default(),
                services_permissions: Default::default(),
                system_role: defaults::update_on_call_role_data_attributes_system_role(),
                webhooks_permissions: Default::default(),
                workflows_permissions: Default::default(),
            }
        }
    }
    impl UpdateOnCallRoleDataAttributes {
        pub fn builder() -> builder::UpdateOnCallRoleDataAttributes {
            Default::default()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAlertsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update",
    ///    "read",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAlertsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesAlertsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
                Self::Read => f.write_str("read"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesAlertsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                "read" => Ok(Self::Read),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAlertsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesApiKeysPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesApiKeysPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesApiKeysPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesAuditsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesAuditsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesAuditsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesAuditsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesCatalogsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesCatalogsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesCatalogsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesContactsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesContactsPermissionsItem {
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesContactsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesContactsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesContactsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesInvitationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesInvitationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesInvitationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "read"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        #[serde(rename = "read")]
        Read,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Read => f.write_str("read"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "read" => Ok(Self::Read),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "update"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "update")]
        Update,
    }
    impl ::std::fmt::Display
    for UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Update => f.write_str("update"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "update" => Ok(Self::Update),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesSchedulesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesSchedulesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesSchedulesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesSchedulesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesServicesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesServicesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesServicesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesServicesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesWebhooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesWebhooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesWebhooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallRoleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallRoleDataType {
        #[serde(rename = "on_call_roles")]
        OnCallRoles,
    }
    impl ::std::fmt::Display for UpdateOnCallRoleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallRoles => f.write_str("on_call_roles"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallRoleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_roles" => Ok(Self::OnCallRoles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOnCallRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateOnCallRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateOnCallRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallShadow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "ends_at": {
    ///              "description": "End datetime for shadow shift",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            },
    ///            "schedule_id": {
    ///              "description": "ID of schedule the shadow shift belongs to",
    ///              "type": "string"
    ///            },
    ///            "shadow_user_id": {
    ///              "description": "Which user the shadow shift belongs to.",
    ///              "type": "integer"
    ///            },
    ///            "shadowable_id": {
    ///              "description": "ID of schedule or user the shadow user is shadowing",
    ///              "type": "string"
    ///            },
    ///            "shadowable_type": {
    ///              "type": "string",
    ///              "enum": [
    ///                "User",
    ///                "Schedule"
    ///              ]
    ///            },
    ///            "starts_at": {
    ///              "description": "Start datetime of shadow shift",
    ///              "type": "string",
    ///              "format": "date-time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "on_call_shadows"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOnCallShadow {
        pub data: UpdateOnCallShadowData,
    }
    impl UpdateOnCallShadow {
        pub fn builder() -> builder::UpdateOnCallShadow {
            Default::default()
        }
    }
    ///`UpdateOnCallShadowData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "ends_at": {
    ///          "description": "End datetime for shadow shift",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        },
    ///        "schedule_id": {
    ///          "description": "ID of schedule the shadow shift belongs to",
    ///          "type": "string"
    ///        },
    ///        "shadow_user_id": {
    ///          "description": "Which user the shadow shift belongs to.",
    ///          "type": "integer"
    ///        },
    ///        "shadowable_id": {
    ///          "description": "ID of schedule or user the shadow user is shadowing",
    ///          "type": "string"
    ///        },
    ///        "shadowable_type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "User",
    ///            "Schedule"
    ///          ]
    ///        },
    ///        "starts_at": {
    ///          "description": "Start datetime of shadow shift",
    ///          "type": "string",
    ///          "format": "date-time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "on_call_shadows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOnCallShadowData {
        pub attributes: UpdateOnCallShadowDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateOnCallShadowDataType,
    }
    impl UpdateOnCallShadowData {
        pub fn builder() -> builder::UpdateOnCallShadowData {
            Default::default()
        }
    }
    ///`UpdateOnCallShadowDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "ends_at": {
    ///      "description": "End datetime for shadow shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    },
    ///    "schedule_id": {
    ///      "description": "ID of schedule the shadow shift belongs to",
    ///      "type": "string"
    ///    },
    ///    "shadow_user_id": {
    ///      "description": "Which user the shadow shift belongs to.",
    ///      "type": "integer"
    ///    },
    ///    "shadowable_id": {
    ///      "description": "ID of schedule or user the shadow user is shadowing",
    ///      "type": "string"
    ///    },
    ///    "shadowable_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Schedule"
    ///      ]
    ///    },
    ///    "starts_at": {
    ///      "description": "Start datetime of shadow shift",
    ///      "type": "string",
    ///      "format": "date-time"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateOnCallShadowDataAttributes {
        ///End datetime for shadow shift
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ends_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///ID of schedule the shadow shift belongs to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_id: ::std::option::Option<::std::string::String>,
        ///Which user the shadow shift belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shadow_user_id: ::std::option::Option<i64>,
        ///ID of schedule or user the shadow user is shadowing
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shadowable_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shadowable_type: ::std::option::Option<
            UpdateOnCallShadowDataAttributesShadowableType,
        >,
        ///Start datetime of shadow shift
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub starts_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
    }
    impl ::std::default::Default for UpdateOnCallShadowDataAttributes {
        fn default() -> Self {
            Self {
                ends_at: Default::default(),
                schedule_id: Default::default(),
                shadow_user_id: Default::default(),
                shadowable_id: Default::default(),
                shadowable_type: Default::default(),
                starts_at: Default::default(),
            }
        }
    }
    impl UpdateOnCallShadowDataAttributes {
        pub fn builder() -> builder::UpdateOnCallShadowDataAttributes {
            Default::default()
        }
    }
    ///`UpdateOnCallShadowDataAttributesShadowableType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Schedule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallShadowDataAttributesShadowableType {
        User,
        Schedule,
    }
    impl ::std::fmt::Display for UpdateOnCallShadowDataAttributesShadowableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Schedule => f.write_str("Schedule"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallShadowDataAttributesShadowableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Schedule" => Ok(Self::Schedule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateOnCallShadowDataAttributesShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOnCallShadowDataAttributesShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOnCallShadowDataAttributesShadowableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOnCallShadowDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "on_call_shadows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOnCallShadowDataType {
        #[serde(rename = "on_call_shadows")]
        OnCallShadows,
    }
    impl ::std::fmt::Display for UpdateOnCallShadowDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::OnCallShadows => f.write_str("on_call_shadows"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOnCallShadowDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "on_call_shadows" => Ok(Self::OnCallShadows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOnCallShadowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateOnCallShadowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateOnCallShadowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOpsgenieAlertTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "alert_id",
    ///    "completion",
    ///    "priority"
    ///  ],
    ///  "properties": {
    ///    "alert_id": {
    ///      "description": "Opsgenie Alert ID",
    ///      "type": "string"
    ///    },
    ///    "completion": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "Description field of the alert that is generally used to provide a detailed information about the alert",
    ///      "type": "string"
    ///    },
    ///    "message": {
    ///      "description": "Message of the alert",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "type": "string",
    ///      "enum": [
    ///        "P1",
    ///        "P2",
    ///        "P3",
    ///        "P4",
    ///        "P5",
    ///        "auto"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_opsgenie_alert"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOpsgenieAlertTaskParams {
        ///Opsgenie Alert ID
        pub alert_id: ::std::string::String,
        pub completion: UpdateOpsgenieAlertTaskParamsCompletion,
        ///Description field of the alert that is generally used to provide a detailed information about the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Message of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub message: ::std::option::Option<::std::string::String>,
        pub priority: UpdateOpsgenieAlertTaskParamsPriority,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateOpsgenieAlertTaskParamsTaskType>,
    }
    impl UpdateOpsgenieAlertTaskParams {
        pub fn builder() -> builder::UpdateOpsgenieAlertTaskParams {
            Default::default()
        }
    }
    ///`UpdateOpsgenieAlertTaskParamsCompletion`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOpsgenieAlertTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateOpsgenieAlertTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateOpsgenieAlertTaskParamsCompletion {
        pub fn builder() -> builder::UpdateOpsgenieAlertTaskParamsCompletion {
            Default::default()
        }
    }
    ///`UpdateOpsgenieAlertTaskParamsPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "P1",
    ///    "P2",
    ///    "P3",
    ///    "P4",
    ///    "P5",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOpsgenieAlertTaskParamsPriority {
        P1,
        P2,
        P3,
        P4,
        P5,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for UpdateOpsgenieAlertTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::P1 => f.write_str("P1"),
                Self::P2 => f.write_str("P2"),
                Self::P3 => f.write_str("P3"),
                Self::P4 => f.write_str("P4"),
                Self::P5 => f.write_str("P5"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOpsgenieAlertTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "P1" => Ok(Self::P1),
                "P2" => Ok(Self::P2),
                "P3" => Ok(Self::P3),
                "P4" => Ok(Self::P4),
                "P5" => Ok(Self::P5),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOpsgenieAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOpsgenieAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOpsgenieAlertTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOpsgenieAlertTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_opsgenie_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOpsgenieAlertTaskParamsTaskType {
        #[serde(rename = "update_opsgenie_alert")]
        UpdateOpsgenieAlert,
    }
    impl ::std::fmt::Display for UpdateOpsgenieAlertTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateOpsgenieAlert => f.write_str("update_opsgenie_alert"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOpsgenieAlertTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_opsgenie_alert" => Ok(Self::UpdateOpsgenieAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOpsgenieAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOpsgenieAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOpsgenieAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOpsgenieIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "opsgenie_incident_id"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description field of the alert that is generally used to provide a detailed information about the alert",
    ///      "type": "string"
    ///    },
    ///    "message": {
    ///      "description": "Message of the alert",
    ///      "type": "string"
    ///    },
    ///    "opsgenie_incident_id": {
    ///      "description": "The Opsgenie incident ID, this can also be a Rootly incident variable ex. {{ incident.opsgenie_incident_id }}",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "P1",
    ///        "P2",
    ///        "P3",
    ///        "P4",
    ///        "P5",
    ///        "auto",
    ///        ""
    ///      ]
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "resolve",
    ///        "open",
    ///        "close",
    ///        "auto"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_opsgenie_incident"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOpsgenieIncidentTaskParams {
        ///Description field of the alert that is generally used to provide a detailed information about the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Message of the alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub message: ::std::option::Option<::std::string::String>,
        ///The Opsgenie incident ID, this can also be a Rootly incident variable ex. {{ incident.opsgenie_incident_id }}
        pub opsgenie_incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateOpsgenieIncidentTaskParamsPriority>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdateOpsgenieIncidentTaskParamsStatus>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateOpsgenieIncidentTaskParamsTaskType>,
    }
    impl UpdateOpsgenieIncidentTaskParams {
        pub fn builder() -> builder::UpdateOpsgenieIncidentTaskParams {
            Default::default()
        }
    }
    ///`UpdateOpsgenieIncidentTaskParamsPriority`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "P1",
    ///    "P2",
    ///    "P3",
    ///    "P4",
    ///    "P5",
    ///    "auto",
    ///    ""
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOpsgenieIncidentTaskParamsPriority {
        P1,
        P2,
        P3,
        P4,
        P5,
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "")]
        X,
    }
    impl ::std::fmt::Display for UpdateOpsgenieIncidentTaskParamsPriority {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::P1 => f.write_str("P1"),
                Self::P2 => f.write_str("P2"),
                Self::P3 => f.write_str("P3"),
                Self::P4 => f.write_str("P4"),
                Self::P5 => f.write_str("P5"),
                Self::Auto => f.write_str("auto"),
                Self::X => f.write_str(""),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOpsgenieIncidentTaskParamsPriority {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "P1" => Ok(Self::P1),
                "P2" => Ok(Self::P2),
                "P3" => Ok(Self::P3),
                "P4" => Ok(Self::P4),
                "P5" => Ok(Self::P5),
                "auto" => Ok(Self::Auto),
                "" => Ok(Self::X),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOpsgenieIncidentTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOpsgenieIncidentTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOpsgenieIncidentTaskParamsPriority {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOpsgenieIncidentTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "resolve",
    ///    "open",
    ///    "close",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOpsgenieIncidentTaskParamsStatus {
        #[serde(rename = "resolve")]
        Resolve,
        #[serde(rename = "open")]
        Open,
        #[serde(rename = "close")]
        Close,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for UpdateOpsgenieIncidentTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Resolve => f.write_str("resolve"),
                Self::Open => f.write_str("open"),
                Self::Close => f.write_str("close"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOpsgenieIncidentTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "resolve" => Ok(Self::Resolve),
                "open" => Ok(Self::Open),
                "close" => Ok(Self::Close),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOpsgenieIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOpsgenieIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOpsgenieIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOpsgenieIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_opsgenie_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOpsgenieIncidentTaskParamsTaskType {
        #[serde(rename = "update_opsgenie_incident")]
        UpdateOpsgenieIncident,
    }
    impl ::std::fmt::Display for UpdateOpsgenieIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateOpsgenieIncident => f.write_str("update_opsgenie_incident"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOpsgenieIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_opsgenie_incident" => Ok(Self::UpdateOpsgenieIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOpsgenieIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOpsgenieIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateOpsgenieIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateOverrideShift`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "user_id"
    ///          ],
    ///          "properties": {
    ///            "user_id": {
    ///              "description": "Override shift user",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "shifts"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOverrideShift {
        pub data: UpdateOverrideShiftData,
    }
    impl UpdateOverrideShift {
        pub fn builder() -> builder::UpdateOverrideShift {
            Default::default()
        }
    }
    ///`UpdateOverrideShiftData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "user_id"
    ///      ],
    ///      "properties": {
    ///        "user_id": {
    ///          "description": "Override shift user",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "shifts"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateOverrideShiftData {
        pub attributes: UpdateOverrideShiftDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateOverrideShiftDataType,
    }
    impl UpdateOverrideShiftData {
        pub fn builder() -> builder::UpdateOverrideShiftData {
            Default::default()
        }
    }
    ///`UpdateOverrideShiftDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "user_id"
    ///  ],
    ///  "properties": {
    ///    "user_id": {
    ///      "description": "Override shift user",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateOverrideShiftDataAttributes {
        ///Override shift user
        pub user_id: i64,
    }
    impl UpdateOverrideShiftDataAttributes {
        pub fn builder() -> builder::UpdateOverrideShiftDataAttributes {
            Default::default()
        }
    }
    ///`UpdateOverrideShiftDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "shifts"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateOverrideShiftDataType {
        #[serde(rename = "shifts")]
        Shifts,
    }
    impl ::std::fmt::Display for UpdateOverrideShiftDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Shifts => f.write_str("shifts"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateOverrideShiftDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "shifts" => Ok(Self::Shifts),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateOverrideShiftDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateOverrideShiftDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateOverrideShiftDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePagerdutyIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "pagerduty_incident_id"
    ///  ],
    ///  "properties": {
    ///    "escalation_level": {
    ///      "description": "Escalation level of policy attached to incident",
    ///      "examples": [
    ///        1
    ///      ],
    ///      "type": "integer",
    ///      "maximum": 20.0,
    ///      "minimum": 1.0
    ///    },
    ///    "pagerduty_incident_id": {
    ///      "description": "Pagerduty incident id",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "PagerDuty incident priority, selecting auto will let Rootly auto map our incident severity",
    ///      "type": "string"
    ///    },
    ///    "resolution": {
    ///      "description": "A message outlining the incident's resolution in PagerDuty",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "resolved",
    ///        "acknowledged",
    ///        "auto"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_pagerduty_incident"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "Title to update to",
    ///      "type": "string"
    ///    },
    ///    "urgency": {
    ///      "description": "PagerDuty incident urgency, selecting auto will let Rootly auto map our incident severity",
    ///      "type": "string",
    ///      "enum": [
    ///        "high",
    ///        "low",
    ///        "auto"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePagerdutyIncidentTaskParams {
        ///Escalation level of policy attached to incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_level: ::std::option::Option<::std::num::NonZeroU64>,
        ///Pagerduty incident id
        pub pagerduty_incident_id: ::std::string::String,
        ///PagerDuty incident priority, selecting auto will let Rootly auto map our incident severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<::std::string::String>,
        ///A message outlining the incident's resolution in PagerDuty
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status: ::std::option::Option<UpdatePagerdutyIncidentTaskParamsStatus>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdatePagerdutyIncidentTaskParamsTaskType>,
        ///Title to update to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        ///PagerDuty incident urgency, selecting auto will let Rootly auto map our incident severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub urgency: ::std::option::Option<UpdatePagerdutyIncidentTaskParamsUrgency>,
    }
    impl UpdatePagerdutyIncidentTaskParams {
        pub fn builder() -> builder::UpdatePagerdutyIncidentTaskParams {
            Default::default()
        }
    }
    ///`UpdatePagerdutyIncidentTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "resolved",
    ///    "acknowledged",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePagerdutyIncidentTaskParamsStatus {
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "acknowledged")]
        Acknowledged,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for UpdatePagerdutyIncidentTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Resolved => f.write_str("resolved"),
                Self::Acknowledged => f.write_str("acknowledged"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePagerdutyIncidentTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "resolved" => Ok(Self::Resolved),
                "acknowledged" => Ok(Self::Acknowledged),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePagerdutyIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePagerdutyIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePagerdutyIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePagerdutyIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_pagerduty_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePagerdutyIncidentTaskParamsTaskType {
        #[serde(rename = "update_pagerduty_incident")]
        UpdatePagerdutyIncident,
    }
    impl ::std::fmt::Display for UpdatePagerdutyIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdatePagerdutyIncident => f.write_str("update_pagerduty_incident"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePagerdutyIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_pagerduty_incident" => Ok(Self::UpdatePagerdutyIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePagerdutyIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePagerdutyIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePagerdutyIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///PagerDuty incident urgency, selecting auto will let Rootly auto map our incident severity
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "PagerDuty incident urgency, selecting auto will let Rootly auto map our incident severity",
    ///  "type": "string",
    ///  "enum": [
    ///    "high",
    ///    "low",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePagerdutyIncidentTaskParamsUrgency {
        #[serde(rename = "high")]
        High,
        #[serde(rename = "low")]
        Low,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for UpdatePagerdutyIncidentTaskParamsUrgency {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::High => f.write_str("high"),
                Self::Low => f.write_str("low"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePagerdutyIncidentTaskParamsUrgency {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "high" => Ok(Self::High),
                "low" => Ok(Self::Low),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePagerdutyIncidentTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePagerdutyIncidentTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePagerdutyIncidentTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePagertreeAlertTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "Description of alert as text",
    ///      "type": "string"
    ///    },
    ///    "incident": {
    ///      "description": "Setting to true makes an alert a Pagertree incident",
    ///      "type": "boolean"
    ///    },
    ///    "pagertree_alert_id": {
    ///      "description": "The prefix ID of the Pagertree alert",
    ///      "type": "string"
    ///    },
    ///    "severity": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "SEV-1",
    ///        "SEV-2",
    ///        "SEV-3",
    ///        "SEV-4"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_pagertree_alert"
    ///      ]
    ///    },
    ///    "teams": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "title": {
    ///      "description": "Title of alert as text",
    ///      "type": "string"
    ///    },
    ///    "urgency": {
    ///      "type": "string",
    ///      "enum": [
    ///        "auto",
    ///        "critical",
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "users": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePagertreeAlertTaskParams {
        ///Description of alert as text
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Setting to true makes an alert a Pagertree incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident: ::std::option::Option<bool>,
        ///The prefix ID of the Pagertree alert
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagertree_alert_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity: ::std::option::Option<UpdatePagertreeAlertTaskParamsSeverity>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdatePagertreeAlertTaskParamsTaskType>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub teams: ::std::vec::Vec<UpdatePagertreeAlertTaskParamsTeamsItem>,
        ///Title of alert as text
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub urgency: ::std::option::Option<UpdatePagertreeAlertTaskParamsUrgency>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub users: ::std::vec::Vec<UpdatePagertreeAlertTaskParamsUsersItem>,
    }
    impl ::std::default::Default for UpdatePagertreeAlertTaskParams {
        fn default() -> Self {
            Self {
                description: Default::default(),
                incident: Default::default(),
                pagertree_alert_id: Default::default(),
                severity: Default::default(),
                task_type: Default::default(),
                teams: Default::default(),
                title: Default::default(),
                urgency: Default::default(),
                users: Default::default(),
            }
        }
    }
    impl UpdatePagertreeAlertTaskParams {
        pub fn builder() -> builder::UpdatePagertreeAlertTaskParams {
            Default::default()
        }
    }
    ///`UpdatePagertreeAlertTaskParamsSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "SEV-1",
    ///    "SEV-2",
    ///    "SEV-3",
    ///    "SEV-4"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePagertreeAlertTaskParamsSeverity {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "SEV-1")]
        Sev1,
        #[serde(rename = "SEV-2")]
        Sev2,
        #[serde(rename = "SEV-3")]
        Sev3,
        #[serde(rename = "SEV-4")]
        Sev4,
    }
    impl ::std::fmt::Display for UpdatePagertreeAlertTaskParamsSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::Sev1 => f.write_str("SEV-1"),
                Self::Sev2 => f.write_str("SEV-2"),
                Self::Sev3 => f.write_str("SEV-3"),
                Self::Sev4 => f.write_str("SEV-4"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePagertreeAlertTaskParamsSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "SEV-1" => Ok(Self::Sev1),
                "SEV-2" => Ok(Self::Sev2),
                "SEV-3" => Ok(Self::Sev3),
                "SEV-4" => Ok(Self::Sev4),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePagertreeAlertTaskParamsSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePagertreeAlertTaskParamsSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePagertreeAlertTaskParamsSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePagertreeAlertTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_pagertree_alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePagertreeAlertTaskParamsTaskType {
        #[serde(rename = "update_pagertree_alert")]
        UpdatePagertreeAlert,
    }
    impl ::std::fmt::Display for UpdatePagertreeAlertTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdatePagertreeAlert => f.write_str("update_pagertree_alert"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePagertreeAlertTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_pagertree_alert" => Ok(Self::UpdatePagertreeAlert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePagertreeAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePagertreeAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePagertreeAlertTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePagertreeAlertTaskParamsTeamsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePagertreeAlertTaskParamsTeamsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdatePagertreeAlertTaskParamsTeamsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdatePagertreeAlertTaskParamsTeamsItem {
        pub fn builder() -> builder::UpdatePagertreeAlertTaskParamsTeamsItem {
            Default::default()
        }
    }
    ///`UpdatePagertreeAlertTaskParamsUrgency`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "auto",
    ///    "critical",
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePagertreeAlertTaskParamsUrgency {
        #[serde(rename = "auto")]
        Auto,
        #[serde(rename = "critical")]
        Critical,
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for UpdatePagertreeAlertTaskParamsUrgency {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Auto => f.write_str("auto"),
                Self::Critical => f.write_str("critical"),
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePagertreeAlertTaskParamsUrgency {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "auto" => Ok(Self::Auto),
                "critical" => Ok(Self::Critical),
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePagertreeAlertTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePagertreeAlertTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePagertreeAlertTaskParamsUrgency {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePagertreeAlertTaskParamsUsersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePagertreeAlertTaskParamsUsersItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdatePagertreeAlertTaskParamsUsersItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdatePagertreeAlertTaskParamsUsersItem {
        pub fn builder() -> builder::UpdatePagertreeAlertTaskParamsUsersItem {
            Default::default()
        }
    }
    ///`UpdatePlaybook`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "external_url": {
    ///              "description": "The external url of the playbook",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "functionality_ids": {
    ///              "description": "The Functionality IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "description": "The Team IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_type_ids": {
    ///              "description": "The Incident Type IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_ids": {
    ///              "description": "The Severity IDs to attach to the incident",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the playbook",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the playbook",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "playbooks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePlaybook {
        pub data: UpdatePlaybookData,
    }
    impl UpdatePlaybook {
        pub fn builder() -> builder::UpdatePlaybook {
            Default::default()
        }
    }
    ///`UpdatePlaybookData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "external_url": {
    ///          "description": "The external url of the playbook",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "functionality_ids": {
    ///          "description": "The Functionality IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "description": "The Team IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_type_ids": {
    ///          "description": "The Incident Type IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_ids": {
    ///          "description": "The Severity IDs to attach to the incident",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the playbook",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the playbook",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbooks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePlaybookData {
        pub attributes: UpdatePlaybookDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdatePlaybookDataType,
    }
    impl UpdatePlaybookData {
        pub fn builder() -> builder::UpdatePlaybookData {
            Default::default()
        }
    }
    ///`UpdatePlaybookDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_url": {
    ///      "description": "The external url of the playbook",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "The Functionality IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "The Severity IDs to attach to the incident",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the playbook",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the playbook",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdatePlaybookDataAttributes {
        ///The Environment IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The external url of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        ///The Functionality IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub functionality_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Team IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Incident Type IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Service IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Severity IDs to attach to the incident
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The summary of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
        ///The title of the playbook
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdatePlaybookDataAttributes {
        fn default() -> Self {
            Self {
                environment_ids: Default::default(),
                external_url: Default::default(),
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                incident_type_ids: Default::default(),
                service_ids: Default::default(),
                severity_ids: Default::default(),
                summary: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl UpdatePlaybookDataAttributes {
        pub fn builder() -> builder::UpdatePlaybookDataAttributes {
            Default::default()
        }
    }
    ///`UpdatePlaybookDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbooks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePlaybookDataType {
        #[serde(rename = "playbooks")]
        Playbooks,
    }
    impl ::std::fmt::Display for UpdatePlaybookDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Playbooks => f.write_str("playbooks"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePlaybookDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbooks" => Ok(Self::Playbooks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePlaybookDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdatePlaybookDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdatePlaybookDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePlaybookTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the task",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "The position of the task",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "task": {
    ///              "description": "The task of the task",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "playbook_tasks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePlaybookTask {
        pub data: UpdatePlaybookTaskData,
    }
    impl UpdatePlaybookTask {
        pub fn builder() -> builder::UpdatePlaybookTask {
            Default::default()
        }
    }
    ///`UpdatePlaybookTaskData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the task",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "The position of the task",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "task": {
    ///          "description": "The task of the task",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "playbook_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePlaybookTaskData {
        pub attributes: UpdatePlaybookTaskDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdatePlaybookTaskDataType,
    }
    impl UpdatePlaybookTaskData {
        pub fn builder() -> builder::UpdatePlaybookTaskData {
            Default::default()
        }
    }
    ///`UpdatePlaybookTaskDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the task",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "The position of the task",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "task": {
    ///      "description": "The task of the task",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdatePlaybookTaskDataAttributes {
        ///The description of the task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The position of the task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The task of the task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdatePlaybookTaskDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                position: Default::default(),
                task: Default::default(),
            }
        }
    }
    impl UpdatePlaybookTaskDataAttributes {
        pub fn builder() -> builder::UpdatePlaybookTaskDataAttributes {
            Default::default()
        }
    }
    ///`UpdatePlaybookTaskDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "playbook_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePlaybookTaskDataType {
        #[serde(rename = "playbook_tasks")]
        PlaybookTasks,
    }
    impl ::std::fmt::Display for UpdatePlaybookTaskDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PlaybookTasks => f.write_str("playbook_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePlaybookTaskDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "playbook_tasks" => Ok(Self::PlaybookTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePlaybookTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdatePlaybookTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdatePlaybookTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePostMortemTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "content": {
    ///              "description": "The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.",
    ///              "type": "string"
    ///            },
    ///            "default": {
    ///              "description": "Default selected template when editing a postmortem",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "format": {
    ///              "description": "The format of the input",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "html",
    ///                "markdown"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the postmortem template",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "post_mortem_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePostMortemTemplate {
        pub data: UpdatePostMortemTemplateData,
    }
    impl UpdatePostMortemTemplate {
        pub fn builder() -> builder::UpdatePostMortemTemplate {
            Default::default()
        }
    }
    ///`UpdatePostMortemTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "content": {
    ///          "description": "The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.",
    ///          "type": "string"
    ///        },
    ///        "default": {
    ///          "description": "Default selected template when editing a postmortem",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "format": {
    ///          "description": "The format of the input",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "html",
    ///            "markdown"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the postmortem template",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "post_mortem_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePostMortemTemplateData {
        pub attributes: UpdatePostMortemTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdatePostMortemTemplateDataType,
    }
    impl UpdatePostMortemTemplateData {
        pub fn builder() -> builder::UpdatePostMortemTemplateData {
            Default::default()
        }
    }
    ///`UpdatePostMortemTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "content": {
    ///      "description": "The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.",
    ///      "type": "string"
    ///    },
    ///    "default": {
    ///      "description": "Default selected template when editing a postmortem",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "format": {
    ///      "description": "The format of the input",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "html",
    ///        "markdown"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the postmortem template",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdatePostMortemTemplateDataAttributes {
        ///The postmortem template. Supports TipTap blocks (followup and timeline components), Liquid syntax, and HTML. Will be sanitized and applied to both content and content_html fields.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///Default selected template when editing a postmortem
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub default: ::std::option::Option<bool>,
        ///The format of the input
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub format: ::std::option::Option<UpdatePostMortemTemplateDataAttributesFormat>,
        ///The name of the postmortem template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdatePostMortemTemplateDataAttributes {
        fn default() -> Self {
            Self {
                content: Default::default(),
                default: Default::default(),
                format: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdatePostMortemTemplateDataAttributes {
        pub fn builder() -> builder::UpdatePostMortemTemplateDataAttributes {
            Default::default()
        }
    }
    ///The format of the input
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The format of the input",
    ///  "type": "string",
    ///  "enum": [
    ///    "html",
    ///    "markdown"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePostMortemTemplateDataAttributesFormat {
        #[serde(rename = "html")]
        Html,
        #[serde(rename = "markdown")]
        Markdown,
    }
    impl ::std::fmt::Display for UpdatePostMortemTemplateDataAttributesFormat {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Html => f.write_str("html"),
                Self::Markdown => f.write_str("markdown"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePostMortemTemplateDataAttributesFormat {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "html" => Ok(Self::Html),
                "markdown" => Ok(Self::Markdown),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePostMortemTemplateDataAttributesFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePostMortemTemplateDataAttributesFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePostMortemTemplateDataAttributesFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePostMortemTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "post_mortem_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePostMortemTemplateDataType {
        #[serde(rename = "post_mortem_templates")]
        PostMortemTemplates,
    }
    impl ::std::fmt::Display for UpdatePostMortemTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::PostMortemTemplates => f.write_str("post_mortem_templates"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePostMortemTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "post_mortem_templates" => Ok(Self::PostMortemTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePostMortemTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdatePostMortemTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdatePostMortemTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdatePulse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "data": {
    ///              "description": "Additional data",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ]
    ///            },
    ///            "ended_at": {
    ///              "description": "Pulse end datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "environment_ids": {
    ///              "description": "The Environment IDs to attach to the pulse",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "external_url": {
    ///              "description": "The external url of the pulse",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "labels": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "description": "Key of the tag",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value of the tag",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "refs": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": [
    ///                  "object",
    ///                  "null"
    ///                ],
    ///                "required": [
    ///                  "key",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "key": {
    ///                    "description": "Key of the ref",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "Value of the ref",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "The Service IDs to attach to the pulse",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "source": {
    ///              "description": "The source of the pulse (eg: k8s)",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "started_at": {
    ///              "description": "Pulse start datetime",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "summary": {
    ///              "description": "The summary of the pulse",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "pulses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePulse {
        pub data: UpdatePulseData,
    }
    impl UpdatePulse {
        pub fn builder() -> builder::UpdatePulse {
            Default::default()
        }
    }
    ///`UpdatePulseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "data": {
    ///          "description": "Additional data",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ]
    ///        },
    ///        "ended_at": {
    ///          "description": "Pulse end datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "environment_ids": {
    ///          "description": "The Environment IDs to attach to the pulse",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "external_url": {
    ///          "description": "The external url of the pulse",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "labels": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "key",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "key": {
    ///                "description": "Key of the tag",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value of the tag",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "refs": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": [
    ///              "object",
    ///              "null"
    ///            ],
    ///            "required": [
    ///              "key",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "key": {
    ///                "description": "Key of the ref",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "Value of the ref",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "The Service IDs to attach to the pulse",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "source": {
    ///          "description": "The source of the pulse (eg: k8s)",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "started_at": {
    ///          "description": "Pulse start datetime",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "summary": {
    ///          "description": "The summary of the pulse",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "pulses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePulseData {
        pub attributes: UpdatePulseDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdatePulseDataType,
    }
    impl UpdatePulseData {
        pub fn builder() -> builder::UpdatePulseData {
            Default::default()
        }
    }
    ///`UpdatePulseDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "data": {
    ///      "description": "Additional data",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ]
    ///    },
    ///    "ended_at": {
    ///      "description": "Pulse end datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "environment_ids": {
    ///      "description": "The Environment IDs to attach to the pulse",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "external_url": {
    ///      "description": "The external url of the pulse",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the tag",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the tag",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "refs": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": [
    ///          "object",
    ///          "null"
    ///        ],
    ///        "required": [
    ///          "key",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "key": {
    ///            "description": "Key of the ref",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "Value of the ref",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "The Service IDs to attach to the pulse",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "source": {
    ///      "description": "The source of the pulse (eg: k8s)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "description": "Pulse start datetime",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "summary": {
    ///      "description": "The summary of the pulse",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdatePulseDataAttributes {
        ///Additional data
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub data: ::std::option::Option<
            ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        >,
        ///Pulse end datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ended_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The Environment IDs to attach to the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The external url of the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_url: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<
            ::std::option::Option<UpdatePulseDataAttributesLabelsItem>,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub refs: ::std::vec::Vec<
            ::std::option::Option<UpdatePulseDataAttributesRefsItem>,
        >,
        ///The Service IDs to attach to the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The source of the pulse (eg: k8s)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub source: ::std::option::Option<::std::string::String>,
        ///Pulse start datetime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The summary of the pulse
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub summary: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdatePulseDataAttributes {
        fn default() -> Self {
            Self {
                data: Default::default(),
                ended_at: Default::default(),
                environment_ids: Default::default(),
                external_url: Default::default(),
                labels: Default::default(),
                refs: Default::default(),
                service_ids: Default::default(),
                source: Default::default(),
                started_at: Default::default(),
                summary: Default::default(),
            }
        }
    }
    impl UpdatePulseDataAttributes {
        pub fn builder() -> builder::UpdatePulseDataAttributes {
            Default::default()
        }
    }
    ///`UpdatePulseDataAttributesLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the tag",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the tag",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePulseDataAttributesLabelsItem {
        ///Key of the tag
        pub key: ::std::string::String,
        ///Value of the tag
        pub value: ::std::string::String,
    }
    impl UpdatePulseDataAttributesLabelsItem {
        pub fn builder() -> builder::UpdatePulseDataAttributesLabelsItem {
            Default::default()
        }
    }
    ///`UpdatePulseDataAttributesRefsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "key",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "key": {
    ///      "description": "Key of the ref",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "Value of the ref",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdatePulseDataAttributesRefsItem {
        ///Key of the ref
        pub key: ::std::string::String,
        ///Value of the ref
        pub value: ::std::string::String,
    }
    impl UpdatePulseDataAttributesRefsItem {
        pub fn builder() -> builder::UpdatePulseDataAttributesRefsItem {
            Default::default()
        }
    }
    ///`UpdatePulseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "pulses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdatePulseDataType {
        #[serde(rename = "pulses")]
        Pulses,
    }
    impl ::std::fmt::Display for UpdatePulseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Pulses => f.write_str("pulses"),
            }
        }
    }
    impl ::std::str::FromStr for UpdatePulseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "pulses" => Ok(Self::Pulses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdatePulseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdatePulseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdatePulseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateQuipPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The Quip page content",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The Quip page ID",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when updating page, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_quip_page"
    ///      ]
    ///    },
    ///    "template_id": {
    ///      "description": "The Quip file ID to use as a template",
    ///      "type": "string"
    ///    },
    ///    "title": {
    ///      "description": "The Quip page title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateQuipPageTaskParams {
        ///The Quip page content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The Quip page ID
        pub file_id: ::std::string::String,
        ///Retrospective template to use when updating page, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateQuipPageTaskParamsTaskType>,
        ///The Quip file ID to use as a template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub template_id: ::std::option::Option<::std::string::String>,
        ///The Quip page title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateQuipPageTaskParams {
        pub fn builder() -> builder::UpdateQuipPageTaskParams {
            Default::default()
        }
    }
    ///`UpdateQuipPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_quip_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateQuipPageTaskParamsTaskType {
        #[serde(rename = "update_quip_page")]
        UpdateQuipPage,
    }
    impl ::std::fmt::Display for UpdateQuipPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateQuipPage => f.write_str("update_quip_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateQuipPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_quip_page" => Ok(Self::UpdateQuipPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateQuipPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateQuipPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateQuipPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRetrospectiveConfiguration`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "group_ids": {
    ///              "description": "The Team IDs to attach to the retrospective configuration",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_type_ids": {
    ///              "description": "The Incident Type IDs to attach to the retrospective configuration",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_ids": {
    ///              "description": "The Severity IDs to attach to the retrospective configuration",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_configurations"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveConfiguration {
        pub data: UpdateRetrospectiveConfigurationData,
    }
    impl UpdateRetrospectiveConfiguration {
        pub fn builder() -> builder::UpdateRetrospectiveConfiguration {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveConfigurationData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "group_ids": {
    ///          "description": "The Team IDs to attach to the retrospective configuration",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_type_ids": {
    ///          "description": "The Incident Type IDs to attach to the retrospective configuration",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_ids": {
    ///          "description": "The Severity IDs to attach to the retrospective configuration",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_configurations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveConfigurationData {
        pub attributes: UpdateRetrospectiveConfigurationDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateRetrospectiveConfigurationDataType,
    }
    impl UpdateRetrospectiveConfigurationData {
        pub fn builder() -> builder::UpdateRetrospectiveConfigurationData {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveConfigurationDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "group_ids": {
    ///      "description": "The Team IDs to attach to the retrospective configuration",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "description": "The Incident Type IDs to attach to the retrospective configuration",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "description": "The Severity IDs to attach to the retrospective configuration",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateRetrospectiveConfigurationDataAttributes {
        ///The Team IDs to attach to the retrospective configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Incident Type IDs to attach to the retrospective configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_type_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The Severity IDs to attach to the retrospective configuration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl ::std::default::Default for UpdateRetrospectiveConfigurationDataAttributes {
        fn default() -> Self {
            Self {
                group_ids: Default::default(),
                incident_type_ids: Default::default(),
                severity_ids: Default::default(),
            }
        }
    }
    impl UpdateRetrospectiveConfigurationDataAttributes {
        pub fn builder() -> builder::UpdateRetrospectiveConfigurationDataAttributes {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveConfigurationDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_configurations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRetrospectiveConfigurationDataType {
        #[serde(rename = "retrospective_configurations")]
        RetrospectiveConfigurations,
    }
    impl ::std::fmt::Display for UpdateRetrospectiveConfigurationDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveConfigurations => {
                    f.write_str("retrospective_configurations")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateRetrospectiveConfigurationDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_configurations" => Ok(Self::RetrospectiveConfigurations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRetrospectiveConfigurationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRetrospectiveConfigurationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRetrospectiveConfigurationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRetrospectiveProcess`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the retrospective process",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the retrospective process",
    ///              "type": "string"
    ///            },
    ///            "retrospective_process_matching_criteria": {
    ///              "type": "object",
    ///              "oneOf": [
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "severity_ids"
    ///                  ],
    ///                  "properties": {
    ///                    "severity_ids": {
    ///                      "description": "Severity IDs for retrospective process matching criteria",
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "group_ids"
    ///                  ],
    ///                  "properties": {
    ///                    "group_ids": {
    ///                      "description": "Team IDs for retrospective process matching criteria",
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "incident_type_ids"
    ///                  ],
    ///                  "properties": {
    ///                    "incident_type_ids": {
    ///                      "description": "Incident type IDs for retrospective process matching criteria",
    ///                      "type": "array",
    ///                      "items": {
    ///                        "type": "string"
    ///                      }
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                }
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_processes"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveProcess {
        pub data: UpdateRetrospectiveProcessData,
    }
    impl UpdateRetrospectiveProcess {
        pub fn builder() -> builder::UpdateRetrospectiveProcess {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the retrospective process",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the retrospective process",
    ///          "type": "string"
    ///        },
    ///        "retrospective_process_matching_criteria": {
    ///          "type": "object",
    ///          "oneOf": [
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "severity_ids"
    ///              ],
    ///              "properties": {
    ///                "severity_ids": {
    ///                  "description": "Severity IDs for retrospective process matching criteria",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "group_ids"
    ///              ],
    ///              "properties": {
    ///                "group_ids": {
    ///                  "description": "Team IDs for retrospective process matching criteria",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "incident_type_ids"
    ///              ],
    ///              "properties": {
    ///                "incident_type_ids": {
    ///                  "description": "Incident type IDs for retrospective process matching criteria",
    ///                  "type": "array",
    ///                  "items": {
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            }
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_processes"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveProcessData {
        pub attributes: UpdateRetrospectiveProcessDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateRetrospectiveProcessDataType,
    }
    impl UpdateRetrospectiveProcessData {
        pub fn builder() -> builder::UpdateRetrospectiveProcessData {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the retrospective process",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the retrospective process",
    ///      "type": "string"
    ///    },
    ///    "retrospective_process_matching_criteria": {
    ///      "type": "object",
    ///      "oneOf": [
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "severity_ids"
    ///          ],
    ///          "properties": {
    ///            "severity_ids": {
    ///              "description": "Severity IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "group_ids"
    ///          ],
    ///          "properties": {
    ///            "group_ids": {
    ///              "description": "Team IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "incident_type_ids"
    ///          ],
    ///          "properties": {
    ///            "incident_type_ids": {
    ///              "description": "Incident type IDs for retrospective process matching criteria",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        }
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateRetrospectiveProcessDataAttributes {
        ///The description of the retrospective process
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the retrospective process
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub retrospective_process_matching_criteria: ::std::option::Option<
            UpdateRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria,
        >,
    }
    impl ::std::default::Default for UpdateRetrospectiveProcessDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                retrospective_process_matching_criteria: Default::default(),
            }
        }
    }
    impl UpdateRetrospectiveProcessDataAttributes {
        pub fn builder() -> builder::UpdateRetrospectiveProcessDataAttributes {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "severity_ids"
    ///      ],
    ///      "properties": {
    ///        "severity_ids": {
    ///          "description": "Severity IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "group_ids"
    ///      ],
    ///      "properties": {
    ///        "group_ids": {
    ///          "description": "Team IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "incident_type_ids"
    ///      ],
    ///      "properties": {
    ///        "incident_type_ids": {
    ///          "description": "Incident type IDs for retrospective process matching criteria",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub enum UpdateRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria {
        #[serde(rename = "severity_ids")]
        SeverityIds(::std::vec::Vec<::std::string::String>),
        #[serde(rename = "group_ids")]
        GroupIds(::std::vec::Vec<::std::string::String>),
        #[serde(rename = "incident_type_ids")]
        IncidentTypeIds(::std::vec::Vec<::std::string::String>),
    }
    ///`UpdateRetrospectiveProcessDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_processes"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRetrospectiveProcessDataType {
        #[serde(rename = "retrospective_processes")]
        RetrospectiveProcesses,
    }
    impl ::std::fmt::Display for UpdateRetrospectiveProcessDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcesses => f.write_str("retrospective_processes"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRetrospectiveProcessDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_processes" => Ok(Self::RetrospectiveProcesses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRetrospectiveProcessDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRetrospectiveProcessDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRetrospectiveProcessDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRetrospectiveProcessGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "position": {
    ///              "type": "integer"
    ///            },
    ///            "sub_status_id": {
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_process_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveProcessGroup {
        pub data: UpdateRetrospectiveProcessGroupData,
    }
    impl UpdateRetrospectiveProcessGroup {
        pub fn builder() -> builder::UpdateRetrospectiveProcessGroup {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "position": {
    ///          "type": "integer"
    ///        },
    ///        "sub_status_id": {
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveProcessGroupData {
        pub attributes: UpdateRetrospectiveProcessGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateRetrospectiveProcessGroupDataType,
    }
    impl UpdateRetrospectiveProcessGroupData {
        pub fn builder() -> builder::UpdateRetrospectiveProcessGroupData {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "position": {
    ///      "type": "integer"
    ///    },
    ///    "sub_status_id": {
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateRetrospectiveProcessGroupDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sub_status_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateRetrospectiveProcessGroupDataAttributes {
        fn default() -> Self {
            Self {
                position: Default::default(),
                sub_status_id: Default::default(),
            }
        }
    }
    impl UpdateRetrospectiveProcessGroupDataAttributes {
        pub fn builder() -> builder::UpdateRetrospectiveProcessGroupDataAttributes {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRetrospectiveProcessGroupDataType {
        #[serde(rename = "retrospective_process_groups")]
        RetrospectiveProcessGroups,
    }
    impl ::std::fmt::Display for UpdateRetrospectiveProcessGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroups => {
                    f.write_str("retrospective_process_groups")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateRetrospectiveProcessGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_groups" => Ok(Self::RetrospectiveProcessGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRetrospectiveProcessGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRetrospectiveProcessGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRetrospectiveProcessGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRetrospectiveProcessGroupStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "position": {
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_process_group_steps"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveProcessGroupStep {
        pub data: UpdateRetrospectiveProcessGroupStepData,
    }
    impl UpdateRetrospectiveProcessGroupStep {
        pub fn builder() -> builder::UpdateRetrospectiveProcessGroupStep {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessGroupStepData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "position": {
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_process_group_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveProcessGroupStepData {
        pub attributes: UpdateRetrospectiveProcessGroupStepDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateRetrospectiveProcessGroupStepDataType,
    }
    impl UpdateRetrospectiveProcessGroupStepData {
        pub fn builder() -> builder::UpdateRetrospectiveProcessGroupStepData {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessGroupStepDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "position": {
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateRetrospectiveProcessGroupStepDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateRetrospectiveProcessGroupStepDataAttributes {
        fn default() -> Self {
            Self {
                position: Default::default(),
            }
        }
    }
    impl UpdateRetrospectiveProcessGroupStepDataAttributes {
        pub fn builder() -> builder::UpdateRetrospectiveProcessGroupStepDataAttributes {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveProcessGroupStepDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_process_group_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRetrospectiveProcessGroupStepDataType {
        #[serde(rename = "retrospective_process_group_steps")]
        RetrospectiveProcessGroupSteps,
    }
    impl ::std::fmt::Display for UpdateRetrospectiveProcessGroupStepDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveProcessGroupSteps => {
                    f.write_str("retrospective_process_group_steps")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateRetrospectiveProcessGroupStepDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_process_group_steps" => {
                    Ok(Self::RetrospectiveProcessGroupSteps)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRetrospectiveProcessGroupStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRetrospectiveProcessGroupStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRetrospectiveProcessGroupStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRetrospectiveStep`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "The description of the step",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "due_after_days": {
    ///              "description": "Due date in days",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_role_id": {
    ///              "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the step",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "skippable": {
    ///              "description": "Is the step skippable?",
    ///              "type": "boolean"
    ///            },
    ///            "title": {
    ///              "description": "The name of the step",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "retrospective_steps"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveStep {
        pub data: UpdateRetrospectiveStepData,
    }
    impl UpdateRetrospectiveStep {
        pub fn builder() -> builder::UpdateRetrospectiveStep {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveStepData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "The description of the step",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "due_after_days": {
    ///          "description": "Due date in days",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_role_id": {
    ///          "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the step",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "skippable": {
    ///          "description": "Is the step skippable?",
    ///          "type": "boolean"
    ///        },
    ///        "title": {
    ///          "description": "The name of the step",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "retrospective_steps"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRetrospectiveStepData {
        pub attributes: UpdateRetrospectiveStepDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateRetrospectiveStepDataType,
    }
    impl UpdateRetrospectiveStepData {
        pub fn builder() -> builder::UpdateRetrospectiveStepData {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveStepDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "The description of the step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "due_after_days": {
    ///      "description": "Due date in days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_role_id": {
    ///      "description": "Users assigned to the selected incident role will be the default owners for this step",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the step",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "skippable": {
    ///      "description": "Is the step skippable?",
    ///      "type": "boolean"
    ///    },
    ///    "title": {
    ///      "description": "The name of the step",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateRetrospectiveStepDataAttributes {
        ///The description of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Due date in days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_after_days: ::std::option::Option<i64>,
        ///Users assigned to the selected incident role will be the default owners for this step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_role_id: ::std::option::Option<::std::string::String>,
        ///Position of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Is the step skippable?
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skippable: ::std::option::Option<bool>,
        ///The name of the step
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateRetrospectiveStepDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                due_after_days: Default::default(),
                incident_role_id: Default::default(),
                position: Default::default(),
                skippable: Default::default(),
                title: Default::default(),
            }
        }
    }
    impl UpdateRetrospectiveStepDataAttributes {
        pub fn builder() -> builder::UpdateRetrospectiveStepDataAttributes {
            Default::default()
        }
    }
    ///`UpdateRetrospectiveStepDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "retrospective_steps"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRetrospectiveStepDataType {
        #[serde(rename = "retrospective_steps")]
        RetrospectiveSteps,
    }
    impl ::std::fmt::Display for UpdateRetrospectiveStepDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::RetrospectiveSteps => f.write_str("retrospective_steps"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRetrospectiveStepDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "retrospective_steps" => Ok(Self::RetrospectiveSteps),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRetrospectiveStepDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRole`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "api_keys_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "audits_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "billing_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "catalogs_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "communication_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "edge_connector_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "environments_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "form_fields_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "functionalities_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "groups_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_causes_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_communication_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete",
    ///                  "send"
    ///                ]
    ///              }
    ///            },
    ///            "incident_feedbacks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_permission_set_id": {
    ///              "description": "Associated incident permissions set.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_roles_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incident_types_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "incidents_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "integrations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "invitations_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "is_deletable": {
    ///              "description": "Whether the role can be deleted.",
    ///              "type": "boolean"
    ///            },
    ///            "is_editable": {
    ///              "description": "Whether the role can be edited.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The role name.",
    ///              "type": "string"
    ///            },
    ///            "paging_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "playbooks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "private_incidents_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "retrospective_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "roles_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "secrets_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "services_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "severities_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "slas_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "status_pages_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "sub_statuses_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "webhooks_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            },
    ///            "workflows_permissions": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "create",
    ///                  "read",
    ///                  "update",
    ///                  "delete"
    ///                ]
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "roles"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRole {
        pub data: UpdateRoleData,
    }
    impl UpdateRole {
        pub fn builder() -> builder::UpdateRole {
            Default::default()
        }
    }
    ///`UpdateRoleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "api_keys_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "audits_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "billing_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "catalogs_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "communication_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "edge_connector_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "environments_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "form_fields_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "functionalities_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "groups_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_causes_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_communication_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete",
    ///              "send"
    ///            ]
    ///          }
    ///        },
    ///        "incident_feedbacks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_permission_set_id": {
    ///          "description": "Associated incident permissions set.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_roles_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incident_types_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "incidents_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "integrations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "invitations_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "is_deletable": {
    ///          "description": "Whether the role can be deleted.",
    ///          "type": "boolean"
    ///        },
    ///        "is_editable": {
    ///          "description": "Whether the role can be edited.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The role name.",
    ///          "type": "string"
    ///        },
    ///        "paging_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "playbooks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "private_incidents_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "retrospective_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "roles_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "secrets_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "services_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "severities_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "slas_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "status_pages_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "sub_statuses_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "webhooks_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        },
    ///        "workflows_permissions": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "create",
    ///              "read",
    ///              "update",
    ///              "delete"
    ///            ]
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "roles"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateRoleData {
        pub attributes: UpdateRoleDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateRoleDataType,
    }
    impl UpdateRoleData {
        pub fn builder() -> builder::UpdateRoleData {
            Default::default()
        }
    }
    ///`UpdateRoleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "api_keys_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "audits_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "billing_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "catalogs_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "communication_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "edge_connector_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "environments_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "form_fields_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "functionalities_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "groups_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_causes_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_communication_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete",
    ///          "send"
    ///        ]
    ///      }
    ///    },
    ///    "incident_feedbacks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_permission_set_id": {
    ///      "description": "Associated incident permissions set.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incident_types_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "incidents_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "integrations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "invitations_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "is_deletable": {
    ///      "description": "Whether the role can be deleted.",
    ///      "type": "boolean"
    ///    },
    ///    "is_editable": {
    ///      "description": "Whether the role can be edited.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The role name.",
    ///      "type": "string"
    ///    },
    ///    "paging_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "playbooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "private_incidents_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "retrospective_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "roles_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "secrets_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "services_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "severities_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "slas_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "status_pages_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "sub_statuses_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "webhooks_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    },
    ///    "workflows_permissions": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "create",
    ///          "read",
    ///          "update",
    ///          "delete"
    ///        ]
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateRoleDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub api_keys_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesApiKeysPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub audits_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesAuditsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub billing_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesBillingPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub catalogs_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesCatalogsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub communication_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesCommunicationPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub edge_connector_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesEdgeConnectorPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environments_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesEnvironmentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub form_fields_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesFormFieldsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionalities_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesFunctionalitiesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub groups_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesGroupsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_causes_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIncidentCausesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_communication_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIncidentCommunicationPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_feedbacks_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem,
        >,
        ///Associated incident permissions set.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_permission_set_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_roles_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIncidentRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_types_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIncidentTypesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incidents_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIncidentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub integrations_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesIntegrationsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub invitations_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesInvitationsPermissionsItem,
        >,
        ///Whether the role can be deleted.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_deletable: ::std::option::Option<bool>,
        ///Whether the role can be edited.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub is_editable: ::std::option::Option<bool>,
        ///The role name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub paging_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesPagingPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub playbooks_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesPlaybooksPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub private_incidents_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesPrivateIncidentsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub retrospective_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesRetrospectivePermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub roles_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesRolesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub secrets_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesSecretsPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub services_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesServicesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub severities_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesSeveritiesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub slas_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesSlasPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub status_pages_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesStatusPagesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sub_statuses_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesSubStatusesPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub webhooks_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesWebhooksPermissionsItem,
        >,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub workflows_permissions: ::std::vec::Vec<
            UpdateRoleDataAttributesWorkflowsPermissionsItem,
        >,
    }
    impl ::std::default::Default for UpdateRoleDataAttributes {
        fn default() -> Self {
            Self {
                api_keys_permissions: Default::default(),
                audits_permissions: Default::default(),
                billing_permissions: Default::default(),
                catalogs_permissions: Default::default(),
                communication_permissions: Default::default(),
                edge_connector_permissions: Default::default(),
                environments_permissions: Default::default(),
                form_fields_permissions: Default::default(),
                functionalities_permissions: Default::default(),
                groups_permissions: Default::default(),
                incident_causes_permissions: Default::default(),
                incident_communication_permissions: Default::default(),
                incident_feedbacks_permissions: Default::default(),
                incident_permission_set_id: Default::default(),
                incident_roles_permissions: Default::default(),
                incident_types_permissions: Default::default(),
                incidents_permissions: Default::default(),
                integrations_permissions: Default::default(),
                invitations_permissions: Default::default(),
                is_deletable: Default::default(),
                is_editable: Default::default(),
                name: Default::default(),
                paging_permissions: Default::default(),
                playbooks_permissions: Default::default(),
                private_incidents_permissions: Default::default(),
                retrospective_permissions: Default::default(),
                roles_permissions: Default::default(),
                secrets_permissions: Default::default(),
                services_permissions: Default::default(),
                severities_permissions: Default::default(),
                slas_permissions: Default::default(),
                status_pages_permissions: Default::default(),
                sub_statuses_permissions: Default::default(),
                webhooks_permissions: Default::default(),
                workflows_permissions: Default::default(),
            }
        }
    }
    impl UpdateRoleDataAttributes {
        pub fn builder() -> builder::UpdateRoleDataAttributes {
            Default::default()
        }
    }
    ///`UpdateRoleDataAttributesApiKeysPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesApiKeysPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesApiKeysPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesApiKeysPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesApiKeysPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesAuditsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesAuditsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesAuditsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesAuditsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesAuditsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesBillingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesBillingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesBillingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesBillingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesBillingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesCatalogsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesCatalogsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesCatalogsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesCatalogsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesCatalogsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesCommunicationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesCommunicationPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesCommunicationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesCommunicationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesEdgeConnectorPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesEdgeConnectorPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesEdgeConnectorPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesEdgeConnectorPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesEdgeConnectorPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesEnvironmentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesEnvironmentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesEnvironmentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesEnvironmentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesEnvironmentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesFormFieldsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesFormFieldsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesFormFieldsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesFormFieldsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesFormFieldsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesFunctionalitiesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesFunctionalitiesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesFunctionalitiesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesFunctionalitiesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesFunctionalitiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesGroupsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesGroupsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesGroupsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesGroupsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesGroupsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIncidentCausesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIncidentCausesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesIncidentCausesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesIncidentCausesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIncidentCausesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIncidentCommunicationPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete",
    ///    "send"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIncidentCommunicationPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
        #[serde(rename = "send")]
        Send,
    }
    impl ::std::fmt::Display
    for UpdateRoleDataAttributesIncidentCommunicationPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
                Self::Send => f.write_str("send"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                "send" => Ok(Self::Send),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIncidentCommunicationPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIncidentRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIncidentRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesIncidentRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesIncidentRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIncidentRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIncidentTypesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIncidentTypesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesIncidentTypesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesIncidentTypesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIncidentTypesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIncidentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIncidentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesIncidentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesIncidentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesIntegrationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesIntegrationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesIntegrationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesIntegrationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesIntegrationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesInvitationsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesInvitationsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesInvitationsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesInvitationsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesInvitationsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesPagingPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesPagingPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesPagingPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesPagingPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesPagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesPagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesPagingPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesPlaybooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesPlaybooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesPlaybooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesPlaybooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesPlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesPlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesPlaybooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesPrivateIncidentsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesPrivateIncidentsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display
    for UpdateRoleDataAttributesPrivateIncidentsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesPrivateIncidentsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesRetrospectivePermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesRetrospectivePermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesRetrospectivePermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesRetrospectivePermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesRetrospectivePermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesRolesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesRolesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesRolesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesRolesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRoleDataAttributesRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesRolesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesSecretsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesSecretsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesSecretsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesSecretsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesSecretsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesServicesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesServicesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesServicesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesServicesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesServicesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesSeveritiesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesSeveritiesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesSeveritiesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesSeveritiesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesSeveritiesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesSlasPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesSlasPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesSlasPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesSlasPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRoleDataAttributesSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesSlasPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesStatusPagesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesStatusPagesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesStatusPagesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesStatusPagesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesStatusPagesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesSubStatusesPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesSubStatusesPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesSubStatusesPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesSubStatusesPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesSubStatusesPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesWebhooksPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesWebhooksPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesWebhooksPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesWebhooksPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesWebhooksPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataAttributesWorkflowsPermissionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "create",
    ///    "read",
    ///    "update",
    ///    "delete"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataAttributesWorkflowsPermissionsItem {
        #[serde(rename = "create")]
        Create,
        #[serde(rename = "read")]
        Read,
        #[serde(rename = "update")]
        Update,
        #[serde(rename = "delete")]
        Delete,
    }
    impl ::std::fmt::Display for UpdateRoleDataAttributesWorkflowsPermissionsItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Create => f.write_str("create"),
                Self::Read => f.write_str("read"),
                Self::Update => f.write_str("update"),
                Self::Delete => f.write_str("delete"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataAttributesWorkflowsPermissionsItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "create" => Ok(Self::Create),
                "read" => Ok(Self::Read),
                "update" => Ok(Self::Update),
                "delete" => Ok(Self::Delete),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateRoleDataAttributesWorkflowsPermissionsItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateRoleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "roles"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateRoleDataType {
        #[serde(rename = "roles")]
        Roles,
    }
    impl ::std::fmt::Display for UpdateRoleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Roles => f.write_str("roles"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateRoleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "roles" => Ok(Self::Roles),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateRoleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSchedule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "all_time_coverage": {
    ///              "description": "24/7 coverage of the schedule",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the schedule",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "include_shadows_in_slack_notifications": {
    ///              "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the schedule",
    ///              "type": "string"
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "Owning teams.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "owner_user_id": {
    ///              "description": "ID of the owner of the schedule",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_report_day_of_week": {
    ///              "description": "Day of week the weekly shift summary is sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "monday",
    ///                "tuesday",
    ///                "wednesday",
    ///                "thursday",
    ///                "friday",
    ///                "saturday",
    ///                "sunday"
    ///              ]
    ///            },
    ///            "shift_report_enabled": {
    ///              "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_report_time_of_day": {
    ///              "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_report_time_zone": {
    ///              "description": "IANA time zone used for the weekly shift summary",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_start_notifications_enabled": {
    ///              "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "shift_update_notifications_enabled": {
    ///              "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_channel": {
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "slack_user_group": {
    ///              "type": "object",
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack user group ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack user group name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "sync_linear_enabled": {
    ///              "description": "Whether the schedule is synced with Linear",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSchedule {
        pub data: UpdateScheduleData,
    }
    impl UpdateSchedule {
        pub fn builder() -> builder::UpdateSchedule {
            Default::default()
        }
    }
    ///`UpdateScheduleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "all_time_coverage": {
    ///          "description": "24/7 coverage of the schedule",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the schedule",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "include_shadows_in_slack_notifications": {
    ///          "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the schedule",
    ///          "type": "string"
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "Owning teams.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "owner_user_id": {
    ///          "description": "ID of the owner of the schedule",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_report_day_of_week": {
    ///          "description": "Day of week the weekly shift summary is sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "monday",
    ///            "tuesday",
    ///            "wednesday",
    ///            "thursday",
    ///            "friday",
    ///            "saturday",
    ///            "sunday"
    ///          ]
    ///        },
    ///        "shift_report_enabled": {
    ///          "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_report_time_of_day": {
    ///          "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_report_time_zone": {
    ///          "description": "IANA time zone used for the weekly shift summary",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_start_notifications_enabled": {
    ///          "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "shift_update_notifications_enabled": {
    ///          "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_channel": {
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "slack_user_group": {
    ///          "type": "object",
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack user group ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack user group name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "sync_linear_enabled": {
    ///          "description": "Whether the schedule is synced with Linear",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleData {
        pub attributes: UpdateScheduleDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateScheduleDataType,
    }
    impl UpdateScheduleData {
        pub fn builder() -> builder::UpdateScheduleData {
            Default::default()
        }
    }
    ///`UpdateScheduleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "all_time_coverage": {
    ///      "description": "24/7 coverage of the schedule",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the schedule",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "include_shadows_in_slack_notifications": {
    ///      "description": "Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the schedule",
    ///      "type": "string"
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owning teams.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_id": {
    ///      "description": "ID of the owner of the schedule",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_report_day_of_week": {
    ///      "description": "Day of week the weekly shift summary is sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "monday",
    ///        "tuesday",
    ///        "wednesday",
    ///        "thursday",
    ///        "friday",
    ///        "saturday",
    ///        "sunday"
    ///      ]
    ///    },
    ///    "shift_report_enabled": {
    ///      "description": "Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_report_time_of_day": {
    ///      "description": "Time of day the weekly shift summary is sent, in HH:MM 24-hour format",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_report_time_zone": {
    ///      "description": "IANA time zone used for the weekly shift summary",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_start_notifications_enabled": {
    ///      "description": "Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "shift_update_notifications_enabled": {
    ///      "description": "Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_channel": {
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "slack_user_group": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack user group ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack user group name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "sync_linear_enabled": {
    ///      "description": "Whether the schedule is synced with Linear",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateScheduleDataAttributes {
        ///24/7 coverage of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub all_time_coverage: ::std::option::Option<bool>,
        ///The description of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether shadow users are included in Slack notifications and user group syncing. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub include_shadows_in_slack_notifications: ::std::option::Option<bool>,
        ///The name of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Owning teams.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub owner_group_ids: ::std::vec::Vec<::std::string::String>,
        ///ID of the owner of the schedule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_id: ::std::option::Option<i64>,
        ///Day of week the weekly shift summary is sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_day_of_week: ::std::option::Option<
            UpdateScheduleDataAttributesShiftReportDayOfWeek,
        >,
        ///Whether the weekly shift summary report is enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_enabled: ::std::option::Option<bool>,
        ///Time of day the weekly shift summary is sent, in HH:MM 24-hour format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_time_of_day: ::std::option::Option<::std::string::String>,
        ///IANA time zone used for the weekly shift summary
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_report_time_zone: ::std::option::Option<::std::string::String>,
        ///Whether shift-start notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_start_notifications_enabled: ::std::option::Option<bool>,
        ///Whether shift-update notifications are enabled. Requires `slack_channel` to be set; otherwise this value is forced to false on save.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub shift_update_notifications_enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channel: ::std::option::Option<
            UpdateScheduleDataAttributesSlackChannel,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_user_group: ::std::option::Option<
            UpdateScheduleDataAttributesSlackUserGroup,
        >,
        ///Whether the schedule is synced with Linear
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub sync_linear_enabled: ::std::option::Option<bool>,
    }
    impl ::std::default::Default for UpdateScheduleDataAttributes {
        fn default() -> Self {
            Self {
                all_time_coverage: Default::default(),
                description: Default::default(),
                include_shadows_in_slack_notifications: Default::default(),
                name: Default::default(),
                owner_group_ids: Default::default(),
                owner_user_id: Default::default(),
                shift_report_day_of_week: Default::default(),
                shift_report_enabled: Default::default(),
                shift_report_time_of_day: Default::default(),
                shift_report_time_zone: Default::default(),
                shift_start_notifications_enabled: Default::default(),
                shift_update_notifications_enabled: Default::default(),
                slack_channel: Default::default(),
                slack_user_group: Default::default(),
                sync_linear_enabled: Default::default(),
            }
        }
    }
    impl UpdateScheduleDataAttributes {
        pub fn builder() -> builder::UpdateScheduleDataAttributes {
            Default::default()
        }
    }
    ///Day of week the weekly shift summary is sent
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Day of week the weekly shift summary is sent",
    ///  "type": "string",
    ///  "enum": [
    ///    "monday",
    ///    "tuesday",
    ///    "wednesday",
    ///    "thursday",
    ///    "friday",
    ///    "saturday",
    ///    "sunday"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleDataAttributesShiftReportDayOfWeek {
        #[serde(rename = "monday")]
        Monday,
        #[serde(rename = "tuesday")]
        Tuesday,
        #[serde(rename = "wednesday")]
        Wednesday,
        #[serde(rename = "thursday")]
        Thursday,
        #[serde(rename = "friday")]
        Friday,
        #[serde(rename = "saturday")]
        Saturday,
        #[serde(rename = "sunday")]
        Sunday,
    }
    impl ::std::fmt::Display for UpdateScheduleDataAttributesShiftReportDayOfWeek {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Monday => f.write_str("monday"),
                Self::Tuesday => f.write_str("tuesday"),
                Self::Wednesday => f.write_str("wednesday"),
                Self::Thursday => f.write_str("thursday"),
                Self::Friday => f.write_str("friday"),
                Self::Saturday => f.write_str("saturday"),
                Self::Sunday => f.write_str("sunday"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleDataAttributesShiftReportDayOfWeek {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "monday" => Ok(Self::Monday),
                "tuesday" => Ok(Self::Tuesday),
                "wednesday" => Ok(Self::Wednesday),
                "thursday" => Ok(Self::Thursday),
                "friday" => Ok(Self::Friday),
                "saturday" => Ok(Self::Saturday),
                "sunday" => Ok(Self::Sunday),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleDataAttributesShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleDataAttributesShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleDataAttributesShiftReportDayOfWeek {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleDataAttributesSlackChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleDataAttributesSlackChannel {
        ///Slack channel ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateScheduleDataAttributesSlackChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateScheduleDataAttributesSlackChannel {
        pub fn builder() -> builder::UpdateScheduleDataAttributesSlackChannel {
            Default::default()
        }
    }
    ///`UpdateScheduleDataAttributesSlackUserGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack user group ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack user group name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleDataAttributesSlackUserGroup {
        ///Slack user group ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        ///Slack user group name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateScheduleDataAttributesSlackUserGroup {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateScheduleDataAttributesSlackUserGroup {
        pub fn builder() -> builder::UpdateScheduleDataAttributesSlackUserGroup {
            Default::default()
        }
    }
    ///`UpdateScheduleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleDataType {
        #[serde(rename = "schedules")]
        Schedules,
    }
    impl ::std::fmt::Display for UpdateScheduleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Schedules => f.write_str("schedules"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedules" => Ok(Self::Schedules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateScheduleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotation`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "schedule_rotationable_type"
    ///          ],
    ///          "properties": {
    ///            "active_all_week": {
    ///              "description": "Schedule rotation active all week?",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "active_days": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Schedule rotation active days",
    ///                "type": "string",
    ///                "enum": [
    ///                  "S",
    ///                  "M",
    ///                  "T",
    ///                  "W",
    ///                  "R",
    ///                  "F",
    ///                  "U"
    ///                ]
    ///              }
    ///            },
    ///            "active_time_attributes": {
    ///              "description": "Schedule rotation's active times",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "end_time",
    ///                  "start_time"
    ///                ],
    ///                "properties": {
    ///                  "end_time": {
    ///                    "description": "End time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  },
    ///                  "start_time": {
    ///                    "description": "Start time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "active_time_type": {
    ///              "type": "string",
    ///              "items": {
    ///                "description": "Schedule rotation active time type",
    ///                "default": "all_day",
    ///                "type": "string",
    ///                "enum": [
    ///                  "all_day",
    ///                  "same_time",
    ///                  "custom"
    ///                ]
    ///              }
    ///            },
    ///            "end_time": {
    ///              "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "name": {
    ///              "description": "The name of the schedule rotation",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "Position of the schedule rotation",
    ///              "type": "integer"
    ///            },
    ///            "schedule_rotation_members": {
    ///              "description": "You can only update schedule rotation members if your account has schedule nesting feature enabled",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "member_id",
    ///                  "member_type"
    ///                ],
    ///                "properties": {
    ///                  "member_id": {
    ///                    "description": "ID of the member",
    ///                    "type": "string"
    ///                  },
    ///                  "member_type": {
    ///                    "description": "Type of member",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "User",
    ///                      "Schedule"
    ///                    ]
    ///                  },
    ///                  "position": {
    ///                    "description": "Position of the member in rotation",
    ///                    "type": "integer"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "schedule_rotationable_attributes": {
    ///              "type": "object",
    ///              "oneOf": [
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_time"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for daily rotation",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_day",
    ///                    "handoff_time"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_day": {
    ///                      "description": "Hand off day for weekly/biweekly rotation",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "S",
    ///                        "M",
    ///                        "T",
    ///                        "W",
    ///                        "R",
    ///                        "F",
    ///                        "U"
    ///                      ]
    ///                    },
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for weekly/biweekly rotation",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_day",
    ///                    "handoff_time"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_day": {
    ///                      "description": "Hand off day for monthly rotation",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "first_day_of_month",
    ///                        "last_day_of_month"
    ///                      ]
    ///                    },
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for monthly rotation",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                },
    ///                {
    ///                  "type": "object",
    ///                  "required": [
    ///                    "handoff_time",
    ///                    "shift_length",
    ///                    "shift_length_unit"
    ///                  ],
    ///                  "properties": {
    ///                    "handoff_time": {
    ///                      "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///                      "type": "string",
    ///                      "format": "time"
    ///                    },
    ///                    "shift_length": {
    ///                      "description": "Shift length for custom rotation",
    ///                      "type": "integer"
    ///                    },
    ///                    "shift_length_unit": {
    ///                      "description": "Shift length unit for custom rotation",
    ///                      "type": "string",
    ///                      "enum": [
    ///                        "hours",
    ///                        "days",
    ///                        "weeks"
    ///                      ]
    ///                    }
    ///                  },
    ///                  "additionalProperties": false
    ///                }
    ///              ]
    ///            },
    ///            "schedule_rotationable_type": {
    ///              "description": "Schedule rotation type",
    ///              "type": "string",
    ///              "enum": [
    ///                "ScheduleDailyRotation",
    ///                "ScheduleWeeklyRotation",
    ///                "ScheduleBiweeklyRotation",
    ///                "ScheduleMonthlyRotation",
    ///                "ScheduleCustomRotation"
    ///              ]
    ///            },
    ///            "start_time": {
    ///              "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "date-time"
    ///            },
    ///            "time_zone": {
    ///              "description": "A valid IANA time zone name.",
    ///              "default": "Etc/UTC",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotations"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotation {
        pub data: UpdateScheduleRotationData,
    }
    impl UpdateScheduleRotation {
        pub fn builder() -> builder::UpdateScheduleRotation {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationActiveDay`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "active_time_attributes": {
    ///              "description": "Schedule rotation active times per day",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "properties": {
    ///                  "end_time": {
    ///                    "description": "End time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  },
    ///                  "start_time": {
    ///                    "description": "Start time for schedule rotation active time",
    ///                    "type": "string",
    ///                    "format": "time"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "day_name": {
    ///              "description": "Schedule rotation day name for which active times to be created",
    ///              "type": "string",
    ///              "enum": [
    ///                "S",
    ///                "M",
    ///                "T",
    ///                "W",
    ///                "R",
    ///                "F",
    ///                "U"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotation_active_days"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationActiveDay {
        pub data: UpdateScheduleRotationActiveDayData,
    }
    impl UpdateScheduleRotationActiveDay {
        pub fn builder() -> builder::UpdateScheduleRotationActiveDay {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationActiveDayData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "active_time_attributes": {
    ///          "description": "Schedule rotation active times per day",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "properties": {
    ///              "end_time": {
    ///                "description": "End time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              },
    ///              "start_time": {
    ///                "description": "Start time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "day_name": {
    ///          "description": "Schedule rotation day name for which active times to be created",
    ///          "type": "string",
    ///          "enum": [
    ///            "S",
    ///            "M",
    ///            "T",
    ///            "W",
    ///            "R",
    ///            "F",
    ///            "U"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_active_days"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationActiveDayData {
        pub attributes: UpdateScheduleRotationActiveDayDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateScheduleRotationActiveDayDataType,
    }
    impl UpdateScheduleRotationActiveDayData {
        pub fn builder() -> builder::UpdateScheduleRotationActiveDayData {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationActiveDayDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "active_time_attributes": {
    ///      "description": "Schedule rotation active times per day",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "end_time": {
    ///            "description": "End time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          },
    ///          "start_time": {
    ///            "description": "Start time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "day_name": {
    ///      "description": "Schedule rotation day name for which active times to be created",
    ///      "type": "string",
    ///      "enum": [
    ///        "S",
    ///        "M",
    ///        "T",
    ///        "W",
    ///        "R",
    ///        "F",
    ///        "U"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateScheduleRotationActiveDayDataAttributes {
        ///Schedule rotation active times per day
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_time_attributes: ::std::vec::Vec<
            UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
        >,
        ///Schedule rotation day name for which active times to be created
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub day_name: ::std::option::Option<
            UpdateScheduleRotationActiveDayDataAttributesDayName,
        >,
    }
    impl ::std::default::Default for UpdateScheduleRotationActiveDayDataAttributes {
        fn default() -> Self {
            Self {
                active_time_attributes: Default::default(),
                day_name: Default::default(),
            }
        }
    }
    impl UpdateScheduleRotationActiveDayDataAttributes {
        pub fn builder() -> builder::UpdateScheduleRotationActiveDayDataAttributes {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "end_time": {
    ///      "description": "End time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
        ///End time for schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::std::string::String>,
        ///Start time for schedule rotation active time
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default
    for UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
        fn default() -> Self {
            Self {
                end_time: Default::default(),
                start_time: Default::default(),
            }
        }
    }
    impl UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
        pub fn builder() -> builder::UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            Default::default()
        }
    }
    ///Schedule rotation day name for which active times to be created
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation day name for which active times to be created",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationActiveDayDataAttributesDayName {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for UpdateScheduleRotationActiveDayDataAttributesDayName {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleRotationActiveDayDataAttributesDayName {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationActiveDayDataAttributesDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationActiveDayDataAttributesDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationActiveDayDataAttributesDayName {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotationActiveDayDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_active_days"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationActiveDayDataType {
        #[serde(rename = "schedule_rotation_active_days")]
        ScheduleRotationActiveDays,
    }
    impl ::std::fmt::Display for UpdateScheduleRotationActiveDayDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationActiveDays => {
                    f.write_str("schedule_rotation_active_days")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleRotationActiveDayDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_active_days" => Ok(Self::ScheduleRotationActiveDays),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateScheduleRotationActiveDayDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationActiveDayDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationActiveDayDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotationData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "schedule_rotationable_type"
    ///      ],
    ///      "properties": {
    ///        "active_all_week": {
    ///          "description": "Schedule rotation active all week?",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "active_days": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Schedule rotation active days",
    ///            "type": "string",
    ///            "enum": [
    ///              "S",
    ///              "M",
    ///              "T",
    ///              "W",
    ///              "R",
    ///              "F",
    ///              "U"
    ///            ]
    ///          }
    ///        },
    ///        "active_time_attributes": {
    ///          "description": "Schedule rotation's active times",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "end_time",
    ///              "start_time"
    ///            ],
    ///            "properties": {
    ///              "end_time": {
    ///                "description": "End time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              },
    ///              "start_time": {
    ///                "description": "Start time for schedule rotation active time",
    ///                "type": "string",
    ///                "format": "time"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "active_time_type": {
    ///          "type": "string",
    ///          "items": {
    ///            "description": "Schedule rotation active time type",
    ///            "default": "all_day",
    ///            "type": "string",
    ///            "enum": [
    ///              "all_day",
    ///              "same_time",
    ///              "custom"
    ///            ]
    ///          }
    ///        },
    ///        "end_time": {
    ///          "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "name": {
    ///          "description": "The name of the schedule rotation",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "Position of the schedule rotation",
    ///          "type": "integer"
    ///        },
    ///        "schedule_rotation_members": {
    ///          "description": "You can only update schedule rotation members if your account has schedule nesting feature enabled",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "member_id",
    ///              "member_type"
    ///            ],
    ///            "properties": {
    ///              "member_id": {
    ///                "description": "ID of the member",
    ///                "type": "string"
    ///              },
    ///              "member_type": {
    ///                "description": "Type of member",
    ///                "type": "string",
    ///                "enum": [
    ///                  "User",
    ///                  "Schedule"
    ///                ]
    ///              },
    ///              "position": {
    ///                "description": "Position of the member in rotation",
    ///                "type": "integer"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "schedule_rotationable_attributes": {
    ///          "type": "object",
    ///          "oneOf": [
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_time"
    ///              ],
    ///              "properties": {
    ///                "handoff_time": {
    ///                  "description": "Hand off time for daily rotation",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_day",
    ///                "handoff_time"
    ///              ],
    ///              "properties": {
    ///                "handoff_day": {
    ///                  "description": "Hand off day for weekly/biweekly rotation",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "S",
    ///                    "M",
    ///                    "T",
    ///                    "W",
    ///                    "R",
    ///                    "F",
    ///                    "U"
    ///                  ]
    ///                },
    ///                "handoff_time": {
    ///                  "description": "Hand off time for weekly/biweekly rotation",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_day",
    ///                "handoff_time"
    ///              ],
    ///              "properties": {
    ///                "handoff_day": {
    ///                  "description": "Hand off day for monthly rotation",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "first_day_of_month",
    ///                    "last_day_of_month"
    ///                  ]
    ///                },
    ///                "handoff_time": {
    ///                  "description": "Hand off time for monthly rotation",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            },
    ///            {
    ///              "type": "object",
    ///              "required": [
    ///                "handoff_time",
    ///                "shift_length",
    ///                "shift_length_unit"
    ///              ],
    ///              "properties": {
    ///                "handoff_time": {
    ///                  "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///                  "type": "string",
    ///                  "format": "time"
    ///                },
    ///                "shift_length": {
    ///                  "description": "Shift length for custom rotation",
    ///                  "type": "integer"
    ///                },
    ///                "shift_length_unit": {
    ///                  "description": "Shift length unit for custom rotation",
    ///                  "type": "string",
    ///                  "enum": [
    ///                    "hours",
    ///                    "days",
    ///                    "weeks"
    ///                  ]
    ///                }
    ///              },
    ///              "additionalProperties": false
    ///            }
    ///          ]
    ///        },
    ///        "schedule_rotationable_type": {
    ///          "description": "Schedule rotation type",
    ///          "type": "string",
    ///          "enum": [
    ///            "ScheduleDailyRotation",
    ///            "ScheduleWeeklyRotation",
    ///            "ScheduleBiweeklyRotation",
    ///            "ScheduleMonthlyRotation",
    ///            "ScheduleCustomRotation"
    ///          ]
    ///        },
    ///        "start_time": {
    ///          "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "date-time"
    ///        },
    ///        "time_zone": {
    ///          "description": "A valid IANA time zone name.",
    ///          "default": "Etc/UTC",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotations"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationData {
        pub attributes: UpdateScheduleRotationDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateScheduleRotationDataType,
    }
    impl UpdateScheduleRotationData {
        pub fn builder() -> builder::UpdateScheduleRotationData {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "schedule_rotationable_type"
    ///  ],
    ///  "properties": {
    ///    "active_all_week": {
    ///      "description": "Schedule rotation active all week?",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "active_days": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Schedule rotation active days",
    ///        "type": "string",
    ///        "enum": [
    ///          "S",
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U"
    ///        ]
    ///      }
    ///    },
    ///    "active_time_attributes": {
    ///      "description": "Schedule rotation's active times",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "end_time",
    ///          "start_time"
    ///        ],
    ///        "properties": {
    ///          "end_time": {
    ///            "description": "End time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          },
    ///          "start_time": {
    ///            "description": "Start time for schedule rotation active time",
    ///            "type": "string",
    ///            "format": "time"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "active_time_type": {
    ///      "type": "string",
    ///      "items": {
    ///        "description": "Schedule rotation active time type",
    ///        "default": "all_day",
    ///        "type": "string",
    ///        "enum": [
    ///          "all_day",
    ///          "same_time",
    ///          "custom"
    ///        ]
    ///      }
    ///    },
    ///    "end_time": {
    ///      "description": "RFC3339 date-time when rotation ends. Shifts will only be created before this time.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "name": {
    ///      "description": "The name of the schedule rotation",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "Position of the schedule rotation",
    ///      "type": "integer"
    ///    },
    ///    "schedule_rotation_members": {
    ///      "description": "You can only update schedule rotation members if your account has schedule nesting feature enabled",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "member_id",
    ///          "member_type"
    ///        ],
    ///        "properties": {
    ///          "member_id": {
    ///            "description": "ID of the member",
    ///            "type": "string"
    ///          },
    ///          "member_type": {
    ///            "description": "Type of member",
    ///            "type": "string",
    ///            "enum": [
    ///              "User",
    ///              "Schedule"
    ///            ]
    ///          },
    ///          "position": {
    ///            "description": "Position of the member in rotation",
    ///            "type": "integer"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "schedule_rotationable_attributes": {
    ///      "type": "object",
    ///      "oneOf": [
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_time": {
    ///              "description": "Hand off time for daily rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_day",
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_day": {
    ///              "description": "Hand off day for weekly/biweekly rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "S",
    ///                "M",
    ///                "T",
    ///                "W",
    ///                "R",
    ///                "F",
    ///                "U"
    ///              ]
    ///            },
    ///            "handoff_time": {
    ///              "description": "Hand off time for weekly/biweekly rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_day",
    ///            "handoff_time"
    ///          ],
    ///          "properties": {
    ///            "handoff_day": {
    ///              "description": "Hand off day for monthly rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "first_day_of_month",
    ///                "last_day_of_month"
    ///              ]
    ///            },
    ///            "handoff_time": {
    ///              "description": "Hand off time for monthly rotation",
    ///              "type": "string",
    ///              "format": "time"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        {
    ///          "type": "object",
    ///          "required": [
    ///            "handoff_time",
    ///            "shift_length",
    ///            "shift_length_unit"
    ///          ],
    ///          "properties": {
    ///            "handoff_time": {
    ///              "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///              "type": "string",
    ///              "format": "time"
    ///            },
    ///            "shift_length": {
    ///              "description": "Shift length for custom rotation",
    ///              "type": "integer"
    ///            },
    ///            "shift_length_unit": {
    ///              "description": "Shift length unit for custom rotation",
    ///              "type": "string",
    ///              "enum": [
    ///                "hours",
    ///                "days",
    ///                "weeks"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        }
    ///      ]
    ///    },
    ///    "schedule_rotationable_type": {
    ///      "description": "Schedule rotation type",
    ///      "type": "string",
    ///      "enum": [
    ///        "ScheduleDailyRotation",
    ///        "ScheduleWeeklyRotation",
    ///        "ScheduleBiweeklyRotation",
    ///        "ScheduleMonthlyRotation",
    ///        "ScheduleCustomRotation"
    ///      ]
    ///    },
    ///    "start_time": {
    ///      "description": "RFC3339 date-time when rotation starts. Shifts will only be created after this time.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "default": "Etc/UTC",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateScheduleRotationDataAttributes {
        ///Schedule rotation active all week?
        #[serde(default = "defaults::default_bool::<true>")]
        pub active_all_week: bool,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_days: ::std::vec::Vec<
            UpdateScheduleRotationDataAttributesActiveDaysItem,
        >,
        ///Schedule rotation's active times
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub active_time_attributes: ::std::vec::Vec<
            UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub active_time_type: ::std::option::Option<::std::string::String>,
        ///RFC3339 date-time when rotation ends. Shifts will only be created before this time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub end_time: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///The name of the schedule rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Position of the schedule rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///You can only update schedule rotation members if your account has schedule nesting feature enabled
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_rotation_members: ::std::option::Option<
            ::std::vec::Vec<
                UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
            >,
        >,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub schedule_rotationable_attributes: ::std::option::Option<
            UpdateScheduleRotationDataAttributesScheduleRotationableAttributes,
        >,
        ///Schedule rotation type
        pub schedule_rotationable_type: UpdateScheduleRotationDataAttributesScheduleRotationableType,
        ///RFC3339 date-time when rotation starts. Shifts will only be created after this time.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub start_time: ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
        ///A valid IANA time zone name.
        #[serde(
            default = "defaults::update_schedule_rotation_data_attributes_time_zone"
        )]
        pub time_zone: ::std::string::String,
    }
    impl UpdateScheduleRotationDataAttributes {
        pub fn builder() -> builder::UpdateScheduleRotationDataAttributes {
            Default::default()
        }
    }
    ///Schedule rotation active days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation active days",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataAttributesActiveDaysItem {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for UpdateScheduleRotationDataAttributesActiveDaysItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleRotationDataAttributesActiveDaysItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationDataAttributesActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataAttributesActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataAttributesActiveDaysItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotationDataAttributesActiveTimeAttributesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "end_time",
    ///    "start_time"
    ///  ],
    ///  "properties": {
    ///    "end_time": {
    ///      "description": "End time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    },
    ///    "start_time": {
    ///      "description": "Start time for schedule rotation active time",
    ///      "type": "string",
    ///      "format": "time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
        ///End time for schedule rotation active time
        pub end_time: ::std::string::String,
        ///Start time for schedule rotation active time
        pub start_time: ::std::string::String,
    }
    impl UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
        pub fn builder() -> builder::UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationDataAttributesScheduleRotationMembersItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "member_id",
    ///    "member_type"
    ///  ],
    ///  "properties": {
    ///    "member_id": {
    ///      "description": "ID of the member",
    ///      "type": "string"
    ///    },
    ///    "member_type": {
    ///      "description": "Type of member",
    ///      "type": "string",
    ///      "enum": [
    ///        "User",
    ///        "Schedule"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the member in rotation",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
        ///ID of the member
        pub member_id: ::std::string::String,
        ///Type of member
        pub member_type: UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType,
        ///Position of the member in rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
        pub fn builder() -> builder::UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
            Default::default()
        }
    }
    ///Type of member
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of member",
    ///  "type": "string",
    ///  "enum": [
    ///    "User",
    ///    "Schedule"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        User,
        Schedule,
    }
    impl ::std::fmt::Display
    for UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::User => f.write_str("User"),
                Self::Schedule => f.write_str("Schedule"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "User" => Ok(Self::User),
                "Schedule" => Ok(Self::Schedule),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotationDataAttributesScheduleRotationableAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "oneOf": [
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_time": {
    ///          "description": "Hand off time for daily rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_day",
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_day": {
    ///          "description": "Hand off day for weekly/biweekly rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "S",
    ///            "M",
    ///            "T",
    ///            "W",
    ///            "R",
    ///            "F",
    ///            "U"
    ///          ]
    ///        },
    ///        "handoff_time": {
    ///          "description": "Hand off time for weekly/biweekly rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_day",
    ///        "handoff_time"
    ///      ],
    ///      "properties": {
    ///        "handoff_day": {
    ///          "description": "Hand off day for monthly rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "first_day_of_month",
    ///            "last_day_of_month"
    ///          ]
    ///        },
    ///        "handoff_time": {
    ///          "description": "Hand off time for monthly rotation",
    ///          "type": "string",
    ///          "format": "time"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    {
    ///      "type": "object",
    ///      "required": [
    ///        "handoff_time",
    ///        "shift_length",
    ///        "shift_length_unit"
    ///      ],
    ///      "properties": {
    ///        "handoff_time": {
    ///          "description": "Hand off time for custom rotation. Use minutes for hourly rotation.",
    ///          "type": "string",
    ///          "format": "time"
    ///        },
    ///        "shift_length": {
    ///          "description": "Shift length for custom rotation",
    ///          "type": "integer"
    ///        },
    ///        "shift_length_unit": {
    ///          "description": "Shift length unit for custom rotation",
    ///          "type": "string",
    ///          "enum": [
    ///            "hours",
    ///            "days",
    ///            "weeks"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged, deny_unknown_fields)]
    pub enum UpdateScheduleRotationDataAttributesScheduleRotationableAttributes {
        Variant0 {
            ///Hand off time for daily rotation
            handoff_time: ::std::string::String,
        },
        Variant1 {
            ///Hand off day for weekly/biweekly rotation
            handoff_day: UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay,
            ///Hand off time for weekly/biweekly rotation
            handoff_time: ::std::string::String,
        },
        Variant2 {
            ///Hand off day for monthly rotation
            handoff_day: UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay,
            ///Hand off time for monthly rotation
            handoff_time: ::std::string::String,
        },
        Variant3 {
            ///Hand off time for custom rotation. Use minutes for hourly rotation.
            handoff_time: ::std::string::String,
            ///Shift length for custom rotation
            shift_length: i64,
            ///Shift length unit for custom rotation
            shift_length_unit: UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit,
        },
    }
    ///Hand off day for weekly/biweekly rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Hand off day for weekly/biweekly rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant1HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Hand off day for monthly rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Hand off day for monthly rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "first_day_of_month",
    ///    "last_day_of_month"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        #[serde(rename = "first_day_of_month")]
        FirstDayOfMonth,
        #[serde(rename = "last_day_of_month")]
        LastDayOfMonth,
    }
    impl ::std::fmt::Display
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::FirstDayOfMonth => f.write_str("first_day_of_month"),
                Self::LastDayOfMonth => f.write_str("last_day_of_month"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "first_day_of_month" => Ok(Self::FirstDayOfMonth),
                "last_day_of_month" => Ok(Self::LastDayOfMonth),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant2HandoffDay {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Shift length unit for custom rotation
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Shift length unit for custom rotation",
    ///  "type": "string",
    ///  "enum": [
    ///    "hours",
    ///    "days",
    ///    "weeks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        #[serde(rename = "hours")]
        Hours,
        #[serde(rename = "days")]
        Days,
        #[serde(rename = "weeks")]
        Weeks,
    }
    impl ::std::fmt::Display
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Hours => f.write_str("hours"),
                Self::Days => f.write_str("days"),
                Self::Weeks => f.write_str("weeks"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "hours" => Ok(Self::Hours),
                "days" => Ok(Self::Days),
                "weeks" => Ok(Self::Weeks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableAttributesVariant3ShiftLengthUnit {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Schedule rotation type
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Schedule rotation type",
    ///  "type": "string",
    ///  "enum": [
    ///    "ScheduleDailyRotation",
    ///    "ScheduleWeeklyRotation",
    ///    "ScheduleBiweeklyRotation",
    ///    "ScheduleMonthlyRotation",
    ///    "ScheduleCustomRotation"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataAttributesScheduleRotationableType {
        ScheduleDailyRotation,
        ScheduleWeeklyRotation,
        ScheduleBiweeklyRotation,
        ScheduleMonthlyRotation,
        ScheduleCustomRotation,
    }
    impl ::std::fmt::Display
    for UpdateScheduleRotationDataAttributesScheduleRotationableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleDailyRotation => f.write_str("ScheduleDailyRotation"),
                Self::ScheduleWeeklyRotation => f.write_str("ScheduleWeeklyRotation"),
                Self::ScheduleBiweeklyRotation => f.write_str("ScheduleBiweeklyRotation"),
                Self::ScheduleMonthlyRotation => f.write_str("ScheduleMonthlyRotation"),
                Self::ScheduleCustomRotation => f.write_str("ScheduleCustomRotation"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateScheduleRotationDataAttributesScheduleRotationableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ScheduleDailyRotation" => Ok(Self::ScheduleDailyRotation),
                "ScheduleWeeklyRotation" => Ok(Self::ScheduleWeeklyRotation),
                "ScheduleBiweeklyRotation" => Ok(Self::ScheduleBiweeklyRotation),
                "ScheduleMonthlyRotation" => Ok(Self::ScheduleMonthlyRotation),
                "ScheduleCustomRotation" => Ok(Self::ScheduleCustomRotation),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateScheduleRotationDataAttributesScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataAttributesScheduleRotationableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotationDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotations"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationDataType {
        #[serde(rename = "schedule_rotations")]
        ScheduleRotations,
    }
    impl ::std::fmt::Display for UpdateScheduleRotationDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotations => f.write_str("schedule_rotations"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleRotationDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotations" => Ok(Self::ScheduleRotations),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateScheduleRotationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateScheduleRotationUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "position": {
    ///              "description": "Position of the user inside rotation",
    ///              "type": "integer"
    ///            },
    ///            "user_id": {
    ///              "description": "Schedule rotation user",
    ///              "type": "integer"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "schedule_rotation_users"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationUser {
        pub data: UpdateScheduleRotationUserData,
    }
    impl UpdateScheduleRotationUser {
        pub fn builder() -> builder::UpdateScheduleRotationUser {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "position": {
    ///          "description": "Position of the user inside rotation",
    ///          "type": "integer"
    ///        },
    ///        "user_id": {
    ///          "description": "Schedule rotation user",
    ///          "type": "integer"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "schedule_rotation_users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateScheduleRotationUserData {
        pub attributes: UpdateScheduleRotationUserDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateScheduleRotationUserDataType,
    }
    impl UpdateScheduleRotationUserData {
        pub fn builder() -> builder::UpdateScheduleRotationUserData {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationUserDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "position": {
    ///      "description": "Position of the user inside rotation",
    ///      "type": "integer"
    ///    },
    ///    "user_id": {
    ///      "description": "Schedule rotation user",
    ///      "type": "integer"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateScheduleRotationUserDataAttributes {
        ///Position of the user inside rotation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Schedule rotation user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateScheduleRotationUserDataAttributes {
        fn default() -> Self {
            Self {
                position: Default::default(),
                user_id: Default::default(),
            }
        }
    }
    impl UpdateScheduleRotationUserDataAttributes {
        pub fn builder() -> builder::UpdateScheduleRotationUserDataAttributes {
            Default::default()
        }
    }
    ///`UpdateScheduleRotationUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "schedule_rotation_users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateScheduleRotationUserDataType {
        #[serde(rename = "schedule_rotation_users")]
        ScheduleRotationUsers,
    }
    impl ::std::fmt::Display for UpdateScheduleRotationUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::ScheduleRotationUsers => f.write_str("schedule_rotation_users"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateScheduleRotationUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "schedule_rotation_users" => Ok(Self::ScheduleRotationUsers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateScheduleRotationUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateScheduleRotationUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateScheduleRotationUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSecret`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "name"
    ///          ],
    ///          "properties": {
    ///            "hashicorp_vault_mount": {
    ///              "description": "The HashiCorp Vault secret mount path",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "hashicorp_vault_path": {
    ///              "description": "The HashiCorp Vault secret path",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "hashicorp_vault_version": {
    ///              "description": "The HashiCorp Vault secret version",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the secret",
    ///              "type": "string"
    ///            },
    ///            "secret": {
    ///              "description": "The secret",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "secrets"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSecret {
        pub data: UpdateSecretData,
    }
    impl UpdateSecret {
        pub fn builder() -> builder::UpdateSecret {
            Default::default()
        }
    }
    ///`UpdateSecretData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "name"
    ///      ],
    ///      "properties": {
    ///        "hashicorp_vault_mount": {
    ///          "description": "The HashiCorp Vault secret mount path",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "hashicorp_vault_path": {
    ///          "description": "The HashiCorp Vault secret path",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "hashicorp_vault_version": {
    ///          "description": "The HashiCorp Vault secret version",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the secret",
    ///          "type": "string"
    ///        },
    ///        "secret": {
    ///          "description": "The secret",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "secrets"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSecretData {
        pub attributes: UpdateSecretDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateSecretDataType,
    }
    impl UpdateSecretData {
        pub fn builder() -> builder::UpdateSecretData {
            Default::default()
        }
    }
    ///`UpdateSecretDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "hashicorp_vault_mount": {
    ///      "description": "The HashiCorp Vault secret mount path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "hashicorp_vault_path": {
    ///      "description": "The HashiCorp Vault secret path",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "hashicorp_vault_version": {
    ///      "description": "The HashiCorp Vault secret version",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the secret",
    ///      "type": "string"
    ///    },
    ///    "secret": {
    ///      "description": "The secret",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateSecretDataAttributes {
        ///The HashiCorp Vault secret mount path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_mount: ::std::option::Option<::std::string::String>,
        ///The HashiCorp Vault secret path
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_path: ::std::option::Option<::std::string::String>,
        ///The HashiCorp Vault secret version
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub hashicorp_vault_version: ::std::option::Option<i64>,
        ///The name of the secret
        pub name: ::std::string::String,
        ///The secret
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub secret: ::std::option::Option<::std::string::String>,
    }
    impl UpdateSecretDataAttributes {
        pub fn builder() -> builder::UpdateSecretDataAttributes {
            Default::default()
        }
    }
    ///`UpdateSecretDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "secrets"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSecretDataType {
        #[serde(rename = "secrets")]
        Secrets,
    }
    impl ::std::fmt::Display for UpdateSecretDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Secrets => f.write_str("secrets"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSecretDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "secrets" => Ok(Self::Secrets),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSecretDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateSecretDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateSecretDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateService`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "alert_broadcast_channel": {
    ///              "description": "Slack channel to broadcast alerts to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "alert_broadcast_enabled": {
    ///              "description": "Enable alerts to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "The alert urgency id of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alerts_email_enabled": {
    ///              "description": "Enable alerts through email",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "backstage_id": {
    ///              "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cortex_id": {
    ///              "description": "The Cortex group id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "environment_ids": {
    ///              "description": "Environments associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "escalation_policy_id": {
    ///              "description": "The escalation policy id of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_id": {
    ///              "description": "The external id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "github_repository_branch": {
    ///              "description": "The GitHub repository branch associated to this service. eg: main",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "github_repository_name": {
    ///              "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "gitlab_repository_branch": {
    ///              "description": "The GitLab repository branch associated to this service. eg: main",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "gitlab_repository_name": {
    ///              "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_broadcast_channel": {
    ///              "description": "Slack channel to broadcast incidents to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "incident_broadcast_enabled": {
    ///              "description": "Enable incidents to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "kubernetes_deployment_name": {
    ///              "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the service",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "opsgenie_id": {
    ///              "description": "The Opsgenie service id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "owner_group_ids": {
    ///              "description": "Owner Teams associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "owner_user_ids": {
    ///              "description": "Owner Users associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "pagerduty_id": {
    ///              "description": "The PagerDuty service id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the service",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this service.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "public_description": {
    ///              "description": "The public description of the service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "description": "Services dependent on this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "service_now_ci_sys_id": {
    ///              "description": "The Service Now CI sys id associated to this service",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this service",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "services"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateService {
        pub data: UpdateServiceData,
    }
    impl UpdateService {
        pub fn builder() -> builder::UpdateService {
            Default::default()
        }
    }
    ///`UpdateServiceData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "alert_broadcast_channel": {
    ///          "description": "Slack channel to broadcast alerts to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "alert_broadcast_enabled": {
    ///          "description": "Enable alerts to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "The alert urgency id of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alerts_email_enabled": {
    ///          "description": "Enable alerts through email",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "backstage_id": {
    ///          "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cortex_id": {
    ///          "description": "The Cortex group id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "environment_ids": {
    ///          "description": "Environments associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "escalation_policy_id": {
    ///          "description": "The escalation policy id of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_id": {
    ///          "description": "The external id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "github_repository_branch": {
    ///          "description": "The GitHub repository branch associated to this service. eg: main",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "github_repository_name": {
    ///          "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "gitlab_repository_branch": {
    ///          "description": "The GitLab repository branch associated to this service. eg: main",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "gitlab_repository_name": {
    ///          "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_broadcast_channel": {
    ///          "description": "Slack channel to broadcast incidents to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "incident_broadcast_enabled": {
    ///          "description": "Enable incidents to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "kubernetes_deployment_name": {
    ///          "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the service",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "opsgenie_id": {
    ///          "description": "The Opsgenie service id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "owner_group_ids": {
    ///          "description": "Owner Teams associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "owner_user_ids": {
    ///          "description": "Owner Users associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "pagerduty_id": {
    ///          "description": "The PagerDuty service id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the service",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this service.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "public_description": {
    ///          "description": "The public description of the service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "description": "Services dependent on this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "service_now_ci_sys_id": {
    ///          "description": "The Service Now CI sys id associated to this service",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this service",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "services"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceData {
        pub attributes: UpdateServiceDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateServiceDataType,
    }
    impl UpdateServiceData {
        pub fn builder() -> builder::UpdateServiceData {
            Default::default()
        }
    }
    ///`UpdateServiceDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "alert_broadcast_channel": {
    ///      "description": "Slack channel to broadcast alerts to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "alert_broadcast_enabled": {
    ///      "description": "Enable alerts to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The alert urgency id of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_enabled": {
    ///      "description": "Enable alerts through email",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "environment_ids": {
    ///      "description": "Environments associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "escalation_policy_id": {
    ///      "description": "The escalation policy id of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_repository_branch": {
    ///      "description": "The GitHub repository branch associated to this service. eg: main",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "github_repository_name": {
    ///      "description": "The GitHub repository name associated to this service. eg: rootlyhq/my-service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_repository_branch": {
    ///      "description": "The GitLab repository branch associated to this service. eg: main",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "gitlab_repository_name": {
    ///      "description": "The GitLab repository name associated to this service. eg: rootlyhq/my-service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_broadcast_channel": {
    ///      "description": "Slack channel to broadcast incidents to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_broadcast_enabled": {
    ///      "description": "Enable incidents to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "kubernetes_deployment_name": {
    ///      "description": "The Kubernetes deployment name associated to this service. eg: namespace/deployment-name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the service",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie service id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "owner_group_ids": {
    ///      "description": "Owner Teams associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "owner_user_ids": {
    ///      "description": "Owner Users associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty service id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the service",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this service.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "description": "Services dependent on this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this service",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this service",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateServiceDataAttributes {
        ///Slack channel to broadcast alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_channel: ::std::option::Option<
            UpdateServiceDataAttributesAlertBroadcastChannel,
        >,
        ///Enable alerts to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_enabled: ::std::option::Option<bool>,
        ///The alert urgency id of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Enable alerts through email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_enabled: ::std::option::Option<bool>,
        ///The Backstage entity id associated to this service. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///The description of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Environments associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub environment_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///The escalation policy id of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub escalation_policy_id: ::std::option::Option<::std::string::String>,
        ///The external id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///The GitHub repository branch associated to this service. eg: main
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_repository_branch: ::std::option::Option<::std::string::String>,
        ///The GitHub repository name associated to this service. eg: rootlyhq/my-service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub github_repository_name: ::std::option::Option<::std::string::String>,
        ///The GitLab repository branch associated to this service. eg: main
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_repository_branch: ::std::option::Option<::std::string::String>,
        ///The GitLab repository name associated to this service. eg: rootlyhq/my-service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub gitlab_repository_name: ::std::option::Option<::std::string::String>,
        ///Slack channel to broadcast incidents to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_channel: ::std::option::Option<
            UpdateServiceDataAttributesIncidentBroadcastChannel,
        >,
        ///Enable incidents to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_enabled: ::std::option::Option<bool>,
        ///The Kubernetes deployment name associated to this service. eg: namespace/deployment-name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kubernetes_deployment_name: ::std::option::Option<::std::string::String>,
        ///The name of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Emails to attach to the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie service id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///Owner Teams associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_group_ids: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Owner Users associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub owner_user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The PagerDuty service id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///Position of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this service.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateServiceDataAttributesPropertiesItem>,
        ///The public description of the service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///Services dependent on this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Service Now CI sys id associated to this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<UpdateServiceDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this service
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<UpdateServiceDataAttributesSlackChannelsItem>,
        >,
    }
    impl ::std::default::Default for UpdateServiceDataAttributes {
        fn default() -> Self {
            Self {
                alert_broadcast_channel: Default::default(),
                alert_broadcast_enabled: Default::default(),
                alert_urgency_id: Default::default(),
                alerts_email_enabled: Default::default(),
                backstage_id: Default::default(),
                color: Default::default(),
                cortex_id: Default::default(),
                description: Default::default(),
                environment_ids: Default::default(),
                escalation_policy_id: Default::default(),
                external_id: Default::default(),
                github_repository_branch: Default::default(),
                github_repository_name: Default::default(),
                gitlab_repository_branch: Default::default(),
                gitlab_repository_name: Default::default(),
                incident_broadcast_channel: Default::default(),
                incident_broadcast_enabled: Default::default(),
                kubernetes_deployment_name: Default::default(),
                name: Default::default(),
                notify_emails: Default::default(),
                opsgenie_id: Default::default(),
                owner_group_ids: Default::default(),
                owner_user_ids: Default::default(),
                pagerduty_id: Default::default(),
                position: Default::default(),
                properties: Default::default(),
                public_description: Default::default(),
                service_ids: Default::default(),
                service_now_ci_sys_id: Default::default(),
                slack_aliases: Default::default(),
                slack_channels: Default::default(),
            }
        }
    }
    impl UpdateServiceDataAttributes {
        pub fn builder() -> builder::UpdateServiceDataAttributes {
            Default::default()
        }
    }
    ///Slack channel to broadcast alerts to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast alerts to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceDataAttributesAlertBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl UpdateServiceDataAttributesAlertBroadcastChannel {
        pub fn builder() -> builder::UpdateServiceDataAttributesAlertBroadcastChannel {
            Default::default()
        }
    }
    ///Slack channel to broadcast incidents to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast incidents to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceDataAttributesIncidentBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl UpdateServiceDataAttributesIncidentBroadcastChannel {
        pub fn builder() -> builder::UpdateServiceDataAttributesIncidentBroadcastChannel {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl UpdateServiceDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateServiceDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateServiceDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl UpdateServiceDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::UpdateServiceDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`UpdateServiceDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl UpdateServiceDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::UpdateServiceDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateServiceDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "services"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateServiceDataType {
        #[serde(rename = "services")]
        Services,
    }
    impl ::std::fmt::Display for UpdateServiceDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Services => f.write_str("services"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateServiceDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "services" => Ok(Self::Services),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateServiceDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateServiceNowIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "incident_id"
    ///  ],
    ///  "properties": {
    ///    "completion": {
    ///      "description": "The completion id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The incident description",
    ///      "type": "string"
    ///    },
    ///    "incident_id": {
    ///      "description": "The incident id",
    ///      "type": "string"
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_service_now_incident"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceNowIncidentTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion: ::std::option::Option<
            UpdateServiceNowIncidentTaskParamsCompletion,
        >,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        ///The incident description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The incident id
        pub incident_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateServiceNowIncidentTaskParamsPriority>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateServiceNowIncidentTaskParamsTaskType>,
        ///The incident title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateServiceNowIncidentTaskParams {
        pub fn builder() -> builder::UpdateServiceNowIncidentTaskParams {
            Default::default()
        }
    }
    ///The completion id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The completion id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceNowIncidentTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateServiceNowIncidentTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateServiceNowIncidentTaskParamsCompletion {
        pub fn builder() -> builder::UpdateServiceNowIncidentTaskParamsCompletion {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateServiceNowIncidentTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateServiceNowIncidentTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateServiceNowIncidentTaskParamsPriority {
        pub fn builder() -> builder::UpdateServiceNowIncidentTaskParamsPriority {
            Default::default()
        }
    }
    ///`UpdateServiceNowIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_service_now_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateServiceNowIncidentTaskParamsTaskType {
        #[serde(rename = "update_service_now_incident")]
        UpdateServiceNowIncident,
    }
    impl ::std::fmt::Display for UpdateServiceNowIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateServiceNowIncident => {
                    f.write_str("update_service_now_incident")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateServiceNowIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_service_now_incident" => Ok(Self::UpdateServiceNowIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateServiceNowIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateServiceNowIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateServiceNowIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSeverity`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "color": {
    ///              "description": "The hex color of the severity",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the severity",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the severity",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the severity",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "severity": {
    ///              "description": "The severity of the severity",
    ///              "type": "string",
    ///              "enum": [
    ///                "critical",
    ///                "high",
    ///                "medium",
    ///                "low"
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this severity",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "severities"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSeverity {
        pub data: UpdateSeverityData,
    }
    impl UpdateSeverity {
        pub fn builder() -> builder::UpdateSeverity {
            Default::default()
        }
    }
    ///`UpdateSeverityData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "color": {
    ///          "description": "The hex color of the severity",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the severity",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the severity",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the severity",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "severity": {
    ///          "description": "The severity of the severity",
    ///          "type": "string",
    ///          "enum": [
    ///            "critical",
    ///            "high",
    ///            "medium",
    ///            "low"
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this severity",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "severities"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSeverityData {
        pub attributes: UpdateSeverityDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateSeverityDataType,
    }
    impl UpdateSeverityData {
        pub fn builder() -> builder::UpdateSeverityData {
            Default::default()
        }
    }
    ///`UpdateSeverityDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "color": {
    ///      "description": "The hex color of the severity",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the severity",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the severity",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the severity",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "severity": {
    ///      "description": "The severity of the severity",
    ///      "type": "string",
    ///      "enum": [
    ///        "critical",
    ///        "high",
    ///        "medium",
    ///        "low"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this severity",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateSeverityDataAttributes {
        ///The hex color of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The description of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The name of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Emails to attach to the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///Position of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The severity of the severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub severity: ::std::option::Option<UpdateSeverityDataAttributesSeverity>,
        ///Slack Aliases associated with this severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<UpdateSeverityDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this severity
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<UpdateSeverityDataAttributesSlackChannelsItem>,
        >,
    }
    impl ::std::default::Default for UpdateSeverityDataAttributes {
        fn default() -> Self {
            Self {
                color: Default::default(),
                description: Default::default(),
                name: Default::default(),
                notify_emails: Default::default(),
                position: Default::default(),
                severity: Default::default(),
                slack_aliases: Default::default(),
                slack_channels: Default::default(),
            }
        }
    }
    impl UpdateSeverityDataAttributes {
        pub fn builder() -> builder::UpdateSeverityDataAttributes {
            Default::default()
        }
    }
    ///The severity of the severity
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The severity of the severity",
    ///  "type": "string",
    ///  "enum": [
    ///    "critical",
    ///    "high",
    ///    "medium",
    ///    "low"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSeverityDataAttributesSeverity {
        #[serde(rename = "critical")]
        Critical,
        #[serde(rename = "high")]
        High,
        #[serde(rename = "medium")]
        Medium,
        #[serde(rename = "low")]
        Low,
    }
    impl ::std::fmt::Display for UpdateSeverityDataAttributesSeverity {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Critical => f.write_str("critical"),
                Self::High => f.write_str("high"),
                Self::Medium => f.write_str("medium"),
                Self::Low => f.write_str("low"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSeverityDataAttributesSeverity {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "critical" => Ok(Self::Critical),
                "high" => Ok(Self::High),
                "medium" => Ok(Self::Medium),
                "low" => Ok(Self::Low),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSeverityDataAttributesSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSeverityDataAttributesSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSeverityDataAttributesSeverity {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSeverityDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSeverityDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl UpdateSeverityDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::UpdateSeverityDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`UpdateSeverityDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSeverityDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl UpdateSeverityDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::UpdateSeverityDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateSeverityDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "severities"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSeverityDataType {
        #[serde(rename = "severities")]
        Severities,
    }
    impl ::std::fmt::Display for UpdateSeverityDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severities => f.write_str("severities"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSeverityDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severities" => Ok(Self::Severities),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSeverityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateSeverityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateSeverityDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSharepointPageTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "file_id"
    ///  ],
    ///  "properties": {
    ///    "content": {
    ///      "description": "The SharePoint document content",
    ///      "type": "string"
    ///    },
    ///    "file_id": {
    ///      "description": "The SharePoint file ID",
    ///      "type": "string"
    ///    },
    ///    "post_mortem_template_id": {
    ///      "description": "Retrospective template to use when updating document, if desired",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_sharepoint_page"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The SharePoint document title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSharepointPageTaskParams {
        ///The SharePoint document content
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub content: ::std::option::Option<::std::string::String>,
        ///The SharePoint file ID
        pub file_id: ::std::string::String,
        ///Retrospective template to use when updating document, if desired
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_template_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateSharepointPageTaskParamsTaskType>,
        ///The SharePoint document title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateSharepointPageTaskParams {
        pub fn builder() -> builder::UpdateSharepointPageTaskParams {
            Default::default()
        }
    }
    ///`UpdateSharepointPageTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_sharepoint_page"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSharepointPageTaskParamsTaskType {
        #[serde(rename = "update_sharepoint_page")]
        UpdateSharepointPage,
    }
    impl ::std::fmt::Display for UpdateSharepointPageTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateSharepointPage => f.write_str("update_sharepoint_page"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSharepointPageTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_sharepoint_page" => Ok(Self::UpdateSharepointPage),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSharepointPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSharepointPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSharepointPageTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateShortcutStoryTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "archivation",
    ///    "story_id"
    ///  ],
    ///  "properties": {
    ///    "archivation": {
    ///      "description": "The archivation id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The incident description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "description": "The story labels",
    ///      "type": "string"
    ///    },
    ///    "story_id": {
    ///      "description": "The story id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_shortcut_story"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The incident title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateShortcutStoryTaskParams {
        pub archivation: UpdateShortcutStoryTaskParamsArchivation,
        ///The incident description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        ///The story labels
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub labels: ::std::option::Option<::std::string::String>,
        ///The story id
        pub story_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateShortcutStoryTaskParamsTaskType>,
        ///The incident title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateShortcutStoryTaskParams {
        pub fn builder() -> builder::UpdateShortcutStoryTaskParams {
            Default::default()
        }
    }
    ///The archivation id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The archivation id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateShortcutStoryTaskParamsArchivation {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateShortcutStoryTaskParamsArchivation {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateShortcutStoryTaskParamsArchivation {
        pub fn builder() -> builder::UpdateShortcutStoryTaskParamsArchivation {
            Default::default()
        }
    }
    ///`UpdateShortcutStoryTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_shortcut_story"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateShortcutStoryTaskParamsTaskType {
        #[serde(rename = "update_shortcut_story")]
        UpdateShortcutStory,
    }
    impl ::std::fmt::Display for UpdateShortcutStoryTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateShortcutStory => f.write_str("update_shortcut_story"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateShortcutStoryTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_shortcut_story" => Ok(Self::UpdateShortcutStory),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateShortcutStoryTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateShortcutStoryTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateShortcutStoryTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateShortcutTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "completion",
    ///    "parent_story_id",
    ///    "task_id"
    ///  ],
    ///  "properties": {
    ///    "completion": {
    ///      "description": "The completion id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "The task description",
    ///      "type": "string"
    ///    },
    ///    "parent_story_id": {
    ///      "description": "The parent story",
    ///      "type": "string"
    ///    },
    ///    "task_id": {
    ///      "description": "The task id",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_shortcut_task"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateShortcutTaskTaskParams {
        pub completion: UpdateShortcutTaskTaskParamsCompletion,
        ///The task description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The parent story
        pub parent_story_id: ::std::string::String,
        ///The task id
        pub task_id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateShortcutTaskTaskParamsTaskType>,
    }
    impl UpdateShortcutTaskTaskParams {
        pub fn builder() -> builder::UpdateShortcutTaskTaskParams {
            Default::default()
        }
    }
    ///The completion id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The completion id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateShortcutTaskTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateShortcutTaskTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateShortcutTaskTaskParamsCompletion {
        pub fn builder() -> builder::UpdateShortcutTaskTaskParamsCompletion {
            Default::default()
        }
    }
    ///`UpdateShortcutTaskTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_shortcut_task"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateShortcutTaskTaskParamsTaskType {
        #[serde(rename = "update_shortcut_task")]
        UpdateShortcutTask,
    }
    impl ::std::fmt::Display for UpdateShortcutTaskTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateShortcutTask => f.write_str("update_shortcut_task"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateShortcutTaskTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_shortcut_task" => Ok(Self::UpdateShortcutTask),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateShortcutTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateShortcutTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateShortcutTaskTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSla`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "assignment_deadline_days": {
    ///              "description": "Number of days for the assignment deadline",
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                2,
    ///                3,
    ///                4,
    ///                5,
    ///                6,
    ///                7,
    ///                14,
    ///                21,
    ///                30
    ///              ]
    ///            },
    ///            "assignment_deadline_parent_status": {
    ///              "description": "The incident parent status that triggers the assignment deadline",
    ///              "type": "string",
    ///              "enum": [
    ///                "in_triage",
    ///                "started",
    ///                "mitigated",
    ///                "resolved",
    ///                "closed",
    ///                "cancelled"
    ///              ]
    ///            },
    ///            "assignment_deadline_sub_status_id": {
    ///              "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "uuid"
    ///            },
    ///            "assignment_skip_weekends": {
    ///              "description": "Whether to skip weekends when calculating the assignment deadline",
    ///              "type": "boolean"
    ///            },
    ///            "completion_deadline_days": {
    ///              "description": "Number of days for the completion deadline",
    ///              "type": "integer",
    ///              "enum": [
    ///                1,
    ///                2,
    ///                3,
    ///                4,
    ///                5,
    ///                6,
    ///                7,
    ///                14,
    ///                21,
    ///                30
    ///              ]
    ///            },
    ///            "completion_deadline_parent_status": {
    ///              "description": "The incident parent status that triggers the completion deadline",
    ///              "type": "string",
    ///              "enum": [
    ///                "in_triage",
    ///                "started",
    ///                "mitigated",
    ///                "resolved",
    ///                "closed",
    ///                "cancelled"
    ///              ]
    ///            },
    ///            "completion_deadline_sub_status_id": {
    ///              "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "uuid"
    ///            },
    ///            "completion_skip_weekends": {
    ///              "description": "Whether to skip weekends when calculating the completion deadline",
    ///              "type": "boolean"
    ///            },
    ///            "condition_match_type": {
    ///              "description": "Whether all or any conditions must match",
    ///              "type": "string",
    ///              "enum": [
    ///                "ALL",
    ///                "ANY"
    ///              ]
    ///            },
    ///            "conditions": {
    ///              "description": "Conditions that determine which incidents this SLA applies to. Replaces all existing conditions.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "conditionable_type",
    ///                  "operator"
    ///                ],
    ///                "properties": {
    ///                  "conditionable_type": {
    ///                    "description": "The type of condition",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "SLAs::BuiltInFieldCondition",
    ///                      "SLAs::CustomFieldCondition"
    ///                    ]
    ///                  },
    ///                  "form_field_id": {
    ///                    "description": "The ID of the form field (for custom field conditions)",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "format": "uuid"
    ///                  },
    ///                  "operator": {
    ///                    "description": "The comparison operator",
    ///                    "type": "string"
    ///                  },
    ///                  "position": {
    ///                    "description": "The position of the condition for ordering",
    ///                    "type": "integer"
    ///                  },
    ///                  "property": {
    ///                    "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///                    "type": [
    ///                      "string",
    ///                      "null"
    ///                    ],
    ///                    "enum": [
    ///                      "severity",
    ///                      "environment",
    ///                      "service",
    ///                      "functionality",
    ///                      "incident_type",
    ///                      "group",
    ///                      "cause",
    ///                      "sub_status",
    ///                      "incident_role",
    ///                      "status",
    ///                      "kind",
    ///                      "visibility",
    ///                      "summary",
    ///                      "started_at",
    ///                      "detected_at",
    ///                      "acknowledged_at",
    ///                      "mitigated_at",
    ///                      "resolved_at"
    ///                    ]
    ///                  },
    ///                  "values": {
    ///                    "description": "The values to compare against",
    ///                    "type": [
    ///                      "array",
    ///                      "null"
    ///                    ],
    ///                    "items": {
    ///                      "type": "string"
    ///                    }
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "description": {
    ///              "description": "A description of the SLA",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "manager_role_id": {
    ///              "description": "The ID of the incident role responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "format": "uuid"
    ///            },
    ///            "manager_user_id": {
    ///              "description": "The ID of the user responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the SLA",
    ///              "type": "string"
    ///            },
    ///            "notification_configurations": {
    ///              "description": "Notification timing configurations. Replaces all existing configurations.",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "offset_days",
    ///                  "offset_type"
    ///                ],
    ///                "properties": {
    ///                  "offset_days": {
    ///                    "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///                    "type": "integer"
    ///                  },
    ///                  "offset_type": {
    ///                    "description": "When to send the notification relative to the deadline",
    ///                    "type": "string",
    ///                    "enum": [
    ///                      "before_due",
    ///                      "when_due",
    ///                      "after_due"
    ///                    ]
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the SLA for ordering",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "slas"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSla {
        pub data: UpdateSlaData,
    }
    impl UpdateSla {
        pub fn builder() -> builder::UpdateSla {
            Default::default()
        }
    }
    ///`UpdateSlaData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "assignment_deadline_days": {
    ///          "description": "Number of days for the assignment deadline",
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            2,
    ///            3,
    ///            4,
    ///            5,
    ///            6,
    ///            7,
    ///            14,
    ///            21,
    ///            30
    ///          ]
    ///        },
    ///        "assignment_deadline_parent_status": {
    ///          "description": "The incident parent status that triggers the assignment deadline",
    ///          "type": "string",
    ///          "enum": [
    ///            "in_triage",
    ///            "started",
    ///            "mitigated",
    ///            "resolved",
    ///            "closed",
    ///            "cancelled"
    ///          ]
    ///        },
    ///        "assignment_deadline_sub_status_id": {
    ///          "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "uuid"
    ///        },
    ///        "assignment_skip_weekends": {
    ///          "description": "Whether to skip weekends when calculating the assignment deadline",
    ///          "type": "boolean"
    ///        },
    ///        "completion_deadline_days": {
    ///          "description": "Number of days for the completion deadline",
    ///          "type": "integer",
    ///          "enum": [
    ///            1,
    ///            2,
    ///            3,
    ///            4,
    ///            5,
    ///            6,
    ///            7,
    ///            14,
    ///            21,
    ///            30
    ///          ]
    ///        },
    ///        "completion_deadline_parent_status": {
    ///          "description": "The incident parent status that triggers the completion deadline",
    ///          "type": "string",
    ///          "enum": [
    ///            "in_triage",
    ///            "started",
    ///            "mitigated",
    ///            "resolved",
    ///            "closed",
    ///            "cancelled"
    ///          ]
    ///        },
    ///        "completion_deadline_sub_status_id": {
    ///          "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "uuid"
    ///        },
    ///        "completion_skip_weekends": {
    ///          "description": "Whether to skip weekends when calculating the completion deadline",
    ///          "type": "boolean"
    ///        },
    ///        "condition_match_type": {
    ///          "description": "Whether all or any conditions must match",
    ///          "type": "string",
    ///          "enum": [
    ///            "ALL",
    ///            "ANY"
    ///          ]
    ///        },
    ///        "conditions": {
    ///          "description": "Conditions that determine which incidents this SLA applies to. Replaces all existing conditions.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "conditionable_type",
    ///              "operator"
    ///            ],
    ///            "properties": {
    ///              "conditionable_type": {
    ///                "description": "The type of condition",
    ///                "type": "string",
    ///                "enum": [
    ///                  "SLAs::BuiltInFieldCondition",
    ///                  "SLAs::CustomFieldCondition"
    ///                ]
    ///              },
    ///              "form_field_id": {
    ///                "description": "The ID of the form field (for custom field conditions)",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "format": "uuid"
    ///              },
    ///              "operator": {
    ///                "description": "The comparison operator",
    ///                "type": "string"
    ///              },
    ///              "position": {
    ///                "description": "The position of the condition for ordering",
    ///                "type": "integer"
    ///              },
    ///              "property": {
    ///                "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///                "type": [
    ///                  "string",
    ///                  "null"
    ///                ],
    ///                "enum": [
    ///                  "severity",
    ///                  "environment",
    ///                  "service",
    ///                  "functionality",
    ///                  "incident_type",
    ///                  "group",
    ///                  "cause",
    ///                  "sub_status",
    ///                  "incident_role",
    ///                  "status",
    ///                  "kind",
    ///                  "visibility",
    ///                  "summary",
    ///                  "started_at",
    ///                  "detected_at",
    ///                  "acknowledged_at",
    ///                  "mitigated_at",
    ///                  "resolved_at"
    ///                ]
    ///              },
    ///              "values": {
    ///                "description": "The values to compare against",
    ///                "type": [
    ///                  "array",
    ///                  "null"
    ///                ],
    ///                "items": {
    ///                  "type": "string"
    ///                }
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "description": {
    ///          "description": "A description of the SLA",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "manager_role_id": {
    ///          "description": "The ID of the incident role responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "format": "uuid"
    ///        },
    ///        "manager_user_id": {
    ///          "description": "The ID of the user responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the SLA",
    ///          "type": "string"
    ///        },
    ///        "notification_configurations": {
    ///          "description": "Notification timing configurations. Replaces all existing configurations.",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "offset_days",
    ///              "offset_type"
    ///            ],
    ///            "properties": {
    ///              "offset_days": {
    ///                "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///                "type": "integer"
    ///              },
    ///              "offset_type": {
    ///                "description": "When to send the notification relative to the deadline",
    ///                "type": "string",
    ///                "enum": [
    ///                  "before_due",
    ///                  "when_due",
    ///                  "after_due"
    ///                ]
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the SLA for ordering",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "slas"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSlaData {
        pub attributes: UpdateSlaDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateSlaDataType,
    }
    impl UpdateSlaData {
        pub fn builder() -> builder::UpdateSlaData {
            Default::default()
        }
    }
    ///`UpdateSlaDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "assignment_deadline_days": {
    ///      "description": "Number of days for the assignment deadline",
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        2,
    ///        3,
    ///        4,
    ///        5,
    ///        6,
    ///        7,
    ///        14,
    ///        21,
    ///        30
    ///      ]
    ///    },
    ///    "assignment_deadline_parent_status": {
    ///      "description": "The incident parent status that triggers the assignment deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled"
    ///      ]
    ///    },
    ///    "assignment_deadline_sub_status_id": {
    ///      "description": "Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "assignment_skip_weekends": {
    ///      "description": "Whether to skip weekends when calculating the assignment deadline",
    ///      "type": "boolean"
    ///    },
    ///    "completion_deadline_days": {
    ///      "description": "Number of days for the completion deadline",
    ///      "type": "integer",
    ///      "enum": [
    ///        1,
    ///        2,
    ///        3,
    ///        4,
    ///        5,
    ///        6,
    ///        7,
    ///        14,
    ///        21,
    ///        30
    ///      ]
    ///    },
    ///    "completion_deadline_parent_status": {
    ///      "description": "The incident parent status that triggers the completion deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled"
    ///      ]
    ///    },
    ///    "completion_deadline_sub_status_id": {
    ///      "description": "Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "completion_skip_weekends": {
    ///      "description": "Whether to skip weekends when calculating the completion deadline",
    ///      "type": "boolean"
    ///    },
    ///    "condition_match_type": {
    ///      "description": "Whether all or any conditions must match",
    ///      "type": "string",
    ///      "enum": [
    ///        "ALL",
    ///        "ANY"
    ///      ]
    ///    },
    ///    "conditions": {
    ///      "description": "Conditions that determine which incidents this SLA applies to. Replaces all existing conditions.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "conditionable_type",
    ///          "operator"
    ///        ],
    ///        "properties": {
    ///          "conditionable_type": {
    ///            "description": "The type of condition",
    ///            "type": "string",
    ///            "enum": [
    ///              "SLAs::BuiltInFieldCondition",
    ///              "SLAs::CustomFieldCondition"
    ///            ]
    ///          },
    ///          "form_field_id": {
    ///            "description": "The ID of the form field (for custom field conditions)",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "format": "uuid"
    ///          },
    ///          "operator": {
    ///            "description": "The comparison operator",
    ///            "type": "string"
    ///          },
    ///          "position": {
    ///            "description": "The position of the condition for ordering",
    ///            "type": "integer"
    ///          },
    ///          "property": {
    ///            "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///            "type": [
    ///              "string",
    ///              "null"
    ///            ],
    ///            "enum": [
    ///              "severity",
    ///              "environment",
    ///              "service",
    ///              "functionality",
    ///              "incident_type",
    ///              "group",
    ///              "cause",
    ///              "sub_status",
    ///              "incident_role",
    ///              "status",
    ///              "kind",
    ///              "visibility",
    ///              "summary",
    ///              "started_at",
    ///              "detected_at",
    ///              "acknowledged_at",
    ///              "mitigated_at",
    ///              "resolved_at"
    ///            ]
    ///          },
    ///          "values": {
    ///            "description": "The values to compare against",
    ///            "type": [
    ///              "array",
    ///              "null"
    ///            ],
    ///            "items": {
    ///              "type": "string"
    ///            }
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "description": {
    ///      "description": "A description of the SLA",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "manager_role_id": {
    ///      "description": "The ID of the incident role responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "manager_user_id": {
    ///      "description": "The ID of the user responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the SLA",
    ///      "type": "string"
    ///    },
    ///    "notification_configurations": {
    ///      "description": "Notification timing configurations. Replaces all existing configurations.",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "offset_days",
    ///          "offset_type"
    ///        ],
    ///        "properties": {
    ///          "offset_days": {
    ///            "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///            "type": "integer"
    ///          },
    ///          "offset_type": {
    ///            "description": "When to send the notification relative to the deadline",
    ///            "type": "string",
    ///            "enum": [
    ///              "before_due",
    ///              "when_due",
    ///              "after_due"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the SLA for ordering",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateSlaDataAttributes {
        ///Number of days for the assignment deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_deadline_days: ::std::option::Option<
            UpdateSlaDataAttributesAssignmentDeadlineDays,
        >,
        ///The incident parent status that triggers the assignment deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_deadline_parent_status: ::std::option::Option<
            UpdateSlaDataAttributesAssignmentDeadlineParentStatus,
        >,
        ///Sub-status for the assignment deadline. Required when custom lifecycle statuses are enabled on the team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_deadline_sub_status_id: ::std::option::Option<::uuid::Uuid>,
        ///Whether to skip weekends when calculating the assignment deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub assignment_skip_weekends: ::std::option::Option<bool>,
        ///Number of days for the completion deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_deadline_days: ::std::option::Option<
            UpdateSlaDataAttributesCompletionDeadlineDays,
        >,
        ///The incident parent status that triggers the completion deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_deadline_parent_status: ::std::option::Option<
            UpdateSlaDataAttributesCompletionDeadlineParentStatus,
        >,
        ///Sub-status for the completion deadline. Required when custom lifecycle statuses are enabled on the team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_deadline_sub_status_id: ::std::option::Option<::uuid::Uuid>,
        ///Whether to skip weekends when calculating the completion deadline
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion_skip_weekends: ::std::option::Option<bool>,
        ///Whether all or any conditions must match
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub condition_match_type: ::std::option::Option<
            UpdateSlaDataAttributesConditionMatchType,
        >,
        ///Conditions that determine which incidents this SLA applies to. Replaces all existing conditions.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub conditions: ::std::vec::Vec<UpdateSlaDataAttributesConditionsItem>,
        ///A description of the SLA
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The ID of the incident role responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub manager_role_id: ::std::option::Option<::uuid::Uuid>,
        ///The ID of the user responsible for this SLA. Exactly one of `manager_role_id` or `manager_user_id` must be provided.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub manager_user_id: ::std::option::Option<i64>,
        ///The name of the SLA
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Notification timing configurations. Replaces all existing configurations.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub notification_configurations: ::std::vec::Vec<
            UpdateSlaDataAttributesNotificationConfigurationsItem,
        >,
        ///Position of the SLA for ordering
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateSlaDataAttributes {
        fn default() -> Self {
            Self {
                assignment_deadline_days: Default::default(),
                assignment_deadline_parent_status: Default::default(),
                assignment_deadline_sub_status_id: Default::default(),
                assignment_skip_weekends: Default::default(),
                completion_deadline_days: Default::default(),
                completion_deadline_parent_status: Default::default(),
                completion_deadline_sub_status_id: Default::default(),
                completion_skip_weekends: Default::default(),
                condition_match_type: Default::default(),
                conditions: Default::default(),
                description: Default::default(),
                manager_role_id: Default::default(),
                manager_user_id: Default::default(),
                name: Default::default(),
                notification_configurations: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateSlaDataAttributes {
        pub fn builder() -> builder::UpdateSlaDataAttributes {
            Default::default()
        }
    }
    ///Number of days for the assignment deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Number of days for the assignment deadline",
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    2,
    ///    3,
    ///    4,
    ///    5,
    ///    6,
    ///    7,
    ///    14,
    ///    21,
    ///    30
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct UpdateSlaDataAttributesAssignmentDeadlineDays(i64);
    impl ::std::ops::Deref for UpdateSlaDataAttributesAssignmentDeadlineDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<UpdateSlaDataAttributesAssignmentDeadlineDays> for i64 {
        fn from(value: UpdateSlaDataAttributesAssignmentDeadlineDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for UpdateSlaDataAttributesAssignmentDeadlineDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 2_i64, 3_i64, 4_i64, 5_i64, 6_i64, 7_i64, 14_i64, 21_i64, 30_i64]
                .contains(&value)
            {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for UpdateSlaDataAttributesAssignmentDeadlineDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///The incident parent status that triggers the assignment deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The incident parent status that triggers the assignment deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataAttributesAssignmentDeadlineParentStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
    }
    impl ::std::fmt::Display for UpdateSlaDataAttributesAssignmentDeadlineParentStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlaDataAttributesAssignmentDeadlineParentStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateSlaDataAttributesAssignmentDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlaDataAttributesAssignmentDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlaDataAttributesAssignmentDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Number of days for the completion deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Number of days for the completion deadline",
    ///  "type": "integer",
    ///  "enum": [
    ///    1,
    ///    2,
    ///    3,
    ///    4,
    ///    5,
    ///    6,
    ///    7,
    ///    14,
    ///    21,
    ///    30
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct UpdateSlaDataAttributesCompletionDeadlineDays(i64);
    impl ::std::ops::Deref for UpdateSlaDataAttributesCompletionDeadlineDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<UpdateSlaDataAttributesCompletionDeadlineDays> for i64 {
        fn from(value: UpdateSlaDataAttributesCompletionDeadlineDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64> for UpdateSlaDataAttributesCompletionDeadlineDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![1_i64, 2_i64, 3_i64, 4_i64, 5_i64, 6_i64, 7_i64, 14_i64, 21_i64, 30_i64]
                .contains(&value)
            {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for UpdateSlaDataAttributesCompletionDeadlineDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///The incident parent status that triggers the completion deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The incident parent status that triggers the completion deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataAttributesCompletionDeadlineParentStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
    }
    impl ::std::fmt::Display for UpdateSlaDataAttributesCompletionDeadlineParentStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlaDataAttributesCompletionDeadlineParentStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateSlaDataAttributesCompletionDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlaDataAttributesCompletionDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlaDataAttributesCompletionDeadlineParentStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Whether all or any conditions must match
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Whether all or any conditions must match",
    ///  "type": "string",
    ///  "enum": [
    ///    "ALL",
    ///    "ANY"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataAttributesConditionMatchType {
        #[serde(rename = "ALL")]
        All,
        #[serde(rename = "ANY")]
        Any,
    }
    impl ::std::fmt::Display for UpdateSlaDataAttributesConditionMatchType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::All => f.write_str("ALL"),
                Self::Any => f.write_str("ANY"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlaDataAttributesConditionMatchType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "ALL" => Ok(Self::All),
                "ANY" => Ok(Self::Any),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSlaDataAttributesConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlaDataAttributesConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlaDataAttributesConditionMatchType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSlaDataAttributesConditionsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "conditionable_type",
    ///    "operator"
    ///  ],
    ///  "properties": {
    ///    "conditionable_type": {
    ///      "description": "The type of condition",
    ///      "type": "string",
    ///      "enum": [
    ///        "SLAs::BuiltInFieldCondition",
    ///        "SLAs::CustomFieldCondition"
    ///      ]
    ///    },
    ///    "form_field_id": {
    ///      "description": "The ID of the form field (for custom field conditions)",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "uuid"
    ///    },
    ///    "operator": {
    ///      "description": "The comparison operator",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the condition for ordering",
    ///      "type": "integer"
    ///    },
    ///    "property": {
    ///      "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "severity",
    ///        "environment",
    ///        "service",
    ///        "functionality",
    ///        "incident_type",
    ///        "group",
    ///        "cause",
    ///        "sub_status",
    ///        "incident_role",
    ///        "status",
    ///        "kind",
    ///        "visibility",
    ///        "summary",
    ///        "started_at",
    ///        "detected_at",
    ///        "acknowledged_at",
    ///        "mitigated_at",
    ///        "resolved_at"
    ///      ]
    ///    },
    ///    "values": {
    ///      "description": "The values to compare against",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSlaDataAttributesConditionsItem {
        ///The type of condition
        pub conditionable_type: UpdateSlaDataAttributesConditionsItemConditionableType,
        ///The ID of the form field (for custom field conditions)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub form_field_id: ::std::option::Option<::uuid::Uuid>,
        ///The comparison operator
        pub operator: ::std::string::String,
        ///The position of the condition for ordering
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub property: ::std::option::Option<
            UpdateSlaDataAttributesConditionsItemProperty,
        >,
        ///The values to compare against
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub values: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    }
    impl UpdateSlaDataAttributesConditionsItem {
        pub fn builder() -> builder::UpdateSlaDataAttributesConditionsItem {
            Default::default()
        }
    }
    ///The type of condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The type of condition",
    ///  "type": "string",
    ///  "enum": [
    ///    "SLAs::BuiltInFieldCondition",
    ///    "SLAs::CustomFieldCondition"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataAttributesConditionsItemConditionableType {
        #[serde(rename = "SLAs::BuiltInFieldCondition")]
        SlAsBuiltInFieldCondition,
        #[serde(rename = "SLAs::CustomFieldCondition")]
        SlAsCustomFieldCondition,
    }
    impl ::std::fmt::Display for UpdateSlaDataAttributesConditionsItemConditionableType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SlAsBuiltInFieldCondition => {
                    f.write_str("SLAs::BuiltInFieldCondition")
                }
                Self::SlAsCustomFieldCondition => {
                    f.write_str("SLAs::CustomFieldCondition")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlaDataAttributesConditionsItemConditionableType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "SLAs::BuiltInFieldCondition" => Ok(Self::SlAsBuiltInFieldCondition),
                "SLAs::CustomFieldCondition" => Ok(Self::SlAsCustomFieldCondition),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateSlaDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlaDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlaDataAttributesConditionsItemConditionableType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The property to evaluate (for built-in field conditions). When the team has custom lifecycle statuses enabled, use 'sub_status' (with sub-status IDs as values); otherwise use 'status' (with parent status names). Sending the wrong one will return a validation error.",
    ///  "type": "string",
    ///  "enum": [
    ///    "severity",
    ///    "environment",
    ///    "service",
    ///    "functionality",
    ///    "incident_type",
    ///    "group",
    ///    "cause",
    ///    "sub_status",
    ///    "incident_role",
    ///    "status",
    ///    "kind",
    ///    "visibility",
    ///    "summary",
    ///    "started_at",
    ///    "detected_at",
    ///    "acknowledged_at",
    ///    "mitigated_at",
    ///    "resolved_at"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataAttributesConditionsItemProperty {
        #[serde(rename = "severity")]
        Severity,
        #[serde(rename = "environment")]
        Environment,
        #[serde(rename = "service")]
        Service,
        #[serde(rename = "functionality")]
        Functionality,
        #[serde(rename = "incident_type")]
        IncidentType,
        #[serde(rename = "group")]
        Group,
        #[serde(rename = "cause")]
        Cause,
        #[serde(rename = "sub_status")]
        SubStatus,
        #[serde(rename = "incident_role")]
        IncidentRole,
        #[serde(rename = "status")]
        Status,
        #[serde(rename = "kind")]
        Kind,
        #[serde(rename = "visibility")]
        Visibility,
        #[serde(rename = "summary")]
        Summary,
        #[serde(rename = "started_at")]
        StartedAt,
        #[serde(rename = "detected_at")]
        DetectedAt,
        #[serde(rename = "acknowledged_at")]
        AcknowledgedAt,
        #[serde(rename = "mitigated_at")]
        MitigatedAt,
        #[serde(rename = "resolved_at")]
        ResolvedAt,
    }
    impl ::std::fmt::Display for UpdateSlaDataAttributesConditionsItemProperty {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Severity => f.write_str("severity"),
                Self::Environment => f.write_str("environment"),
                Self::Service => f.write_str("service"),
                Self::Functionality => f.write_str("functionality"),
                Self::IncidentType => f.write_str("incident_type"),
                Self::Group => f.write_str("group"),
                Self::Cause => f.write_str("cause"),
                Self::SubStatus => f.write_str("sub_status"),
                Self::IncidentRole => f.write_str("incident_role"),
                Self::Status => f.write_str("status"),
                Self::Kind => f.write_str("kind"),
                Self::Visibility => f.write_str("visibility"),
                Self::Summary => f.write_str("summary"),
                Self::StartedAt => f.write_str("started_at"),
                Self::DetectedAt => f.write_str("detected_at"),
                Self::AcknowledgedAt => f.write_str("acknowledged_at"),
                Self::MitigatedAt => f.write_str("mitigated_at"),
                Self::ResolvedAt => f.write_str("resolved_at"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlaDataAttributesConditionsItemProperty {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "severity" => Ok(Self::Severity),
                "environment" => Ok(Self::Environment),
                "service" => Ok(Self::Service),
                "functionality" => Ok(Self::Functionality),
                "incident_type" => Ok(Self::IncidentType),
                "group" => Ok(Self::Group),
                "cause" => Ok(Self::Cause),
                "sub_status" => Ok(Self::SubStatus),
                "incident_role" => Ok(Self::IncidentRole),
                "status" => Ok(Self::Status),
                "kind" => Ok(Self::Kind),
                "visibility" => Ok(Self::Visibility),
                "summary" => Ok(Self::Summary),
                "started_at" => Ok(Self::StartedAt),
                "detected_at" => Ok(Self::DetectedAt),
                "acknowledged_at" => Ok(Self::AcknowledgedAt),
                "mitigated_at" => Ok(Self::MitigatedAt),
                "resolved_at" => Ok(Self::ResolvedAt),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateSlaDataAttributesConditionsItemProperty {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlaDataAttributesConditionsItemProperty {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlaDataAttributesConditionsItemProperty {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSlaDataAttributesNotificationConfigurationsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "offset_days",
    ///    "offset_type"
    ///  ],
    ///  "properties": {
    ///    "offset_days": {
    ///      "description": "Number of days before or after the deadline. Must be 0 for when_due.",
    ///      "type": "integer"
    ///    },
    ///    "offset_type": {
    ///      "description": "When to send the notification relative to the deadline",
    ///      "type": "string",
    ///      "enum": [
    ///        "before_due",
    ///        "when_due",
    ///        "after_due"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSlaDataAttributesNotificationConfigurationsItem {
        ///Number of days before or after the deadline. Must be 0 for when_due.
        pub offset_days: i64,
        ///When to send the notification relative to the deadline
        pub offset_type: UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType,
    }
    impl UpdateSlaDataAttributesNotificationConfigurationsItem {
        pub fn builder() -> builder::UpdateSlaDataAttributesNotificationConfigurationsItem {
            Default::default()
        }
    }
    ///When to send the notification relative to the deadline
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "When to send the notification relative to the deadline",
    ///  "type": "string",
    ///  "enum": [
    ///    "before_due",
    ///    "when_due",
    ///    "after_due"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType {
        #[serde(rename = "before_due")]
        BeforeDue,
        #[serde(rename = "when_due")]
        WhenDue,
        #[serde(rename = "after_due")]
        AfterDue,
    }
    impl ::std::fmt::Display
    for UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::BeforeDue => f.write_str("before_due"),
                Self::WhenDue => f.write_str("when_due"),
                Self::AfterDue => f.write_str("after_due"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "before_due" => Ok(Self::BeforeDue),
                "when_due" => Ok(Self::WhenDue),
                "after_due" => Ok(Self::AfterDue),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSlaDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "slas"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlaDataType {
        #[serde(rename = "slas")]
        Slas,
    }
    impl ::std::fmt::Display for UpdateSlaDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Slas => f.write_str("slas"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlaDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "slas" => Ok(Self::Slas),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSlaDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateSlaDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateSlaDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSlackChannelTopicTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "channel",
    ///    "topic"
    ///  ],
    ///  "properties": {
    ///    "channel": {
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_slack_channel_topic"
    ///      ]
    ///    },
    ///    "topic": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSlackChannelTopicTaskParams {
        pub channel: UpdateSlackChannelTopicTaskParamsChannel,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateSlackChannelTopicTaskParamsTaskType>,
        pub topic: ::std::string::String,
    }
    impl UpdateSlackChannelTopicTaskParams {
        pub fn builder() -> builder::UpdateSlackChannelTopicTaskParams {
            Default::default()
        }
    }
    ///`UpdateSlackChannelTopicTaskParamsChannel`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSlackChannelTopicTaskParamsChannel {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateSlackChannelTopicTaskParamsChannel {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateSlackChannelTopicTaskParamsChannel {
        pub fn builder() -> builder::UpdateSlackChannelTopicTaskParamsChannel {
            Default::default()
        }
    }
    ///`UpdateSlackChannelTopicTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_slack_channel_topic"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSlackChannelTopicTaskParamsTaskType {
        #[serde(rename = "update_slack_channel_topic")]
        UpdateSlackChannelTopic,
    }
    impl ::std::fmt::Display for UpdateSlackChannelTopicTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateSlackChannelTopic => {
                    f.write_str("update_slack_channel_topic")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateSlackChannelTopicTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_slack_channel_topic" => Ok(Self::UpdateSlackChannelTopic),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSlackChannelTopicTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateSlackChannelTopicTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateSlackChannelTopicTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateStatusPage`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "allow_search_engine_index": {
    ///              "description": "Allow search engines to include your public status page in search results",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "authentication_enabled": {
    ///              "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///              "deprecated": true,
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "authentication_method": {
    ///              "description": "Authentication method",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "none",
    ///                "password",
    ///                "saml"
    ///              ]
    ///            },
    ///            "authentication_password": {
    ///              "description": "Authentication password",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the status page",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "description": "Enabled / Disable the status page",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_domain_names": {
    ///              "description": "External domain names attached to the status page",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "failure_message": {
    ///              "description": "Message showing when at least one component is not operational",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "footer_color": {
    ///              "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "functionality_ids": {
    ///              "description": "Functionalities attached to the status page",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "ga_tracking_id": {
    ///              "description": "Google Analytics tracking ID",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "header_color": {
    ///              "description": "The color of the header. Eg. \"#0061F2\"",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "public": {
    ///              "description": "Make the status page accessible to the public",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "public_description": {
    ///              "description": "The public description of the status page",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "public_title": {
    ///              "description": "The public title of the status page",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_idp_cert": {
    ///              "description": "SAML IdP certificate",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_idp_slo_service_url": {
    ///              "description": "SAML IdP SLO service URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_idp_sso_service_url": {
    ///              "description": "SAML IdP SSO service URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "saml_name_identifier_format": {
    ///              "description": "SAML name identifier format",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///                "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///                "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///                "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///              ]
    ///            },
    ///            "section_order": {
    ///              "description": "Order of sections on the status page",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "maintenance",
    ///                  "system_status",
    ///                  "incidents"
    ///                ]
    ///              }
    ///            },
    ///            "service_ids": {
    ///              "description": "Services attached to the status page",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "show_uptime": {
    ///              "description": "Show uptime",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "show_uptime_last_days": {
    ///              "description": "Show uptime over x days",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                30,
    ///                60,
    ///                90
    ///              ]
    ///            },
    ///            "success_message": {
    ///              "description": "Message showing when all components are operational",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "time_zone": {
    ///              "description": "A valid IANA time zone name.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "The title of the status page",
    ///              "type": "string"
    ///            },
    ///            "website_privacy_url": {
    ///              "description": "Website Privacy URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "website_support_url": {
    ///              "description": "Website Support URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "website_url": {
    ///              "description": "Website URL",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "status_pages"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateStatusPage {
        pub data: UpdateStatusPageData,
    }
    impl UpdateStatusPage {
        pub fn builder() -> builder::UpdateStatusPage {
            Default::default()
        }
    }
    ///`UpdateStatusPageData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "allow_search_engine_index": {
    ///          "description": "Allow search engines to include your public status page in search results",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "authentication_enabled": {
    ///          "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///          "deprecated": true,
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "authentication_method": {
    ///          "description": "Authentication method",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "none",
    ///            "password",
    ///            "saml"
    ///          ]
    ///        },
    ///        "authentication_password": {
    ///          "description": "Authentication password",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the status page",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "description": "Enabled / Disable the status page",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_domain_names": {
    ///          "description": "External domain names attached to the status page",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "failure_message": {
    ///          "description": "Message showing when at least one component is not operational",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "footer_color": {
    ///          "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "functionality_ids": {
    ///          "description": "Functionalities attached to the status page",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "ga_tracking_id": {
    ///          "description": "Google Analytics tracking ID",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "header_color": {
    ///          "description": "The color of the header. Eg. \"#0061F2\"",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "public": {
    ///          "description": "Make the status page accessible to the public",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "public_description": {
    ///          "description": "The public description of the status page",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "public_title": {
    ///          "description": "The public title of the status page",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_idp_cert": {
    ///          "description": "SAML IdP certificate",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_idp_slo_service_url": {
    ///          "description": "SAML IdP SLO service URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_idp_sso_service_url": {
    ///          "description": "SAML IdP SSO service URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "saml_name_identifier_format": {
    ///          "description": "SAML name identifier format",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///            "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///            "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///            "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///          ]
    ///        },
    ///        "section_order": {
    ///          "description": "Order of sections on the status page",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "maintenance",
    ///              "system_status",
    ///              "incidents"
    ///            ]
    ///          }
    ///        },
    ///        "service_ids": {
    ///          "description": "Services attached to the status page",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "show_uptime": {
    ///          "description": "Show uptime",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "show_uptime_last_days": {
    ///          "description": "Show uptime over x days",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            30,
    ///            60,
    ///            90
    ///          ]
    ///        },
    ///        "success_message": {
    ///          "description": "Message showing when all components are operational",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "time_zone": {
    ///          "description": "A valid IANA time zone name.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "The title of the status page",
    ///          "type": "string"
    ///        },
    ///        "website_privacy_url": {
    ///          "description": "Website Privacy URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "website_support_url": {
    ///          "description": "Website Support URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "website_url": {
    ///          "description": "Website URL",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_pages"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateStatusPageData {
        pub attributes: UpdateStatusPageDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateStatusPageDataType,
    }
    impl UpdateStatusPageData {
        pub fn builder() -> builder::UpdateStatusPageData {
            Default::default()
        }
    }
    ///`UpdateStatusPageDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "allow_search_engine_index": {
    ///      "description": "Allow search engines to include your public status page in search results",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "authentication_enabled": {
    ///      "description": "Enable authentication (deprecated - use authentication_method instead)",
    ///      "deprecated": true,
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "authentication_method": {
    ///      "description": "Authentication method",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "none",
    ///        "password",
    ///        "saml"
    ///      ]
    ///    },
    ///    "authentication_password": {
    ///      "description": "Authentication password",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "description": "Enabled / Disable the status page",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_domain_names": {
    ///      "description": "External domain names attached to the status page",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "failure_message": {
    ///      "description": "Message showing when at least one component is not operational",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "footer_color": {
    ///      "description": "The color of the footer. Eg. \"#1F2F41\"",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "functionality_ids": {
    ///      "description": "Functionalities attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "ga_tracking_id": {
    ///      "description": "Google Analytics tracking ID",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "header_color": {
    ///      "description": "The color of the header. Eg. \"#0061F2\"",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public": {
    ///      "description": "Make the status page accessible to the public",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_description": {
    ///      "description": "The public description of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "public_title": {
    ///      "description": "The public title of the status page",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_cert": {
    ///      "description": "SAML IdP certificate",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_slo_service_url": {
    ///      "description": "SAML IdP SLO service URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_idp_sso_service_url": {
    ///      "description": "SAML IdP SSO service URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "saml_name_identifier_format": {
    ///      "description": "SAML name identifier format",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///        "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///        "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///        "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///      ]
    ///    },
    ///    "section_order": {
    ///      "description": "Order of sections on the status page",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "maintenance",
    ///          "system_status",
    ///          "incidents"
    ///        ]
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "description": "Services attached to the status page",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "show_uptime": {
    ///      "description": "Show uptime",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "show_uptime_last_days": {
    ///      "description": "Show uptime over x days",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        30,
    ///        60,
    ///        90
    ///      ]
    ///    },
    ///    "success_message": {
    ///      "description": "Message showing when all components are operational",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "A valid IANA time zone name.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The title of the status page",
    ///      "type": "string"
    ///    },
    ///    "website_privacy_url": {
    ///      "description": "Website Privacy URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "website_support_url": {
    ///      "description": "Website Support URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "website_url": {
    ///      "description": "Website URL",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateStatusPageDataAttributes {
        ///Allow search engines to include your public status page in search results
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub allow_search_engine_index: ::std::option::Option<bool>,
        ///Enable authentication (deprecated - use authentication_method instead)
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_enabled: ::std::option::Option<bool>,
        ///Authentication method
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_method: ::std::option::Option<
            UpdateStatusPageDataAttributesAuthenticationMethod,
        >,
        ///Authentication password
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub authentication_password: ::std::option::Option<::std::string::String>,
        ///The description of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Enabled / Disable the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///External domain names attached to the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_domain_names: ::std::option::Option<
            ::std::vec::Vec<::std::string::String>,
        >,
        ///Message showing when at least one component is not operational
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub failure_message: ::std::option::Option<::std::string::String>,
        ///The color of the footer. Eg. "#1F2F41"
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub footer_color: ::std::option::Option<::std::string::String>,
        ///Functionalities attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        ///Google Analytics tracking ID
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ga_tracking_id: ::std::option::Option<::std::string::String>,
        ///The color of the header. Eg. "#0061F2"
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub header_color: ::std::option::Option<::std::string::String>,
        ///Make the status page accessible to the public
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public: ::std::option::Option<bool>,
        ///The public description of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_description: ::std::option::Option<::std::string::String>,
        ///The public title of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub public_title: ::std::option::Option<::std::string::String>,
        ///SAML IdP certificate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_cert: ::std::option::Option<::std::string::String>,
        ///SAML IdP SLO service URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_slo_service_url: ::std::option::Option<::std::string::String>,
        ///SAML IdP SSO service URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_idp_sso_service_url: ::std::option::Option<::std::string::String>,
        ///SAML name identifier format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub saml_name_identifier_format: ::std::option::Option<
            UpdateStatusPageDataAttributesSamlNameIdentifierFormat,
        >,
        ///Order of sections on the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub section_order: ::std::option::Option<
            ::std::vec::Vec<UpdateStatusPageDataAttributesSectionOrderItem>,
        >,
        ///Services attached to the status page
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        ///Show uptime
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime: ::std::option::Option<bool>,
        ///Show uptime over x days
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub show_uptime_last_days: ::std::option::Option<
            UpdateStatusPageDataAttributesShowUptimeLastDays,
        >,
        ///Message showing when all components are operational
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub success_message: ::std::option::Option<::std::string::String>,
        ///A valid IANA time zone name.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///The title of the status page
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
        ///Website Privacy URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_privacy_url: ::std::option::Option<::std::string::String>,
        ///Website Support URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_support_url: ::std::option::Option<::std::string::String>,
        ///Website URL
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub website_url: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateStatusPageDataAttributes {
        fn default() -> Self {
            Self {
                allow_search_engine_index: Default::default(),
                authentication_enabled: Default::default(),
                authentication_method: Default::default(),
                authentication_password: Default::default(),
                description: Default::default(),
                enabled: Default::default(),
                external_domain_names: Default::default(),
                failure_message: Default::default(),
                footer_color: Default::default(),
                functionality_ids: Default::default(),
                ga_tracking_id: Default::default(),
                header_color: Default::default(),
                public: Default::default(),
                public_description: Default::default(),
                public_title: Default::default(),
                saml_idp_cert: Default::default(),
                saml_idp_slo_service_url: Default::default(),
                saml_idp_sso_service_url: Default::default(),
                saml_name_identifier_format: Default::default(),
                section_order: Default::default(),
                service_ids: Default::default(),
                show_uptime: Default::default(),
                show_uptime_last_days: Default::default(),
                success_message: Default::default(),
                time_zone: Default::default(),
                title: Default::default(),
                website_privacy_url: Default::default(),
                website_support_url: Default::default(),
                website_url: Default::default(),
            }
        }
    }
    impl UpdateStatusPageDataAttributes {
        pub fn builder() -> builder::UpdateStatusPageDataAttributes {
            Default::default()
        }
    }
    ///Authentication method
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Authentication method",
    ///  "type": "string",
    ///  "enum": [
    ///    "none",
    ///    "password",
    ///    "saml"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageDataAttributesAuthenticationMethod {
        #[serde(rename = "none")]
        None,
        #[serde(rename = "password")]
        Password,
        #[serde(rename = "saml")]
        Saml,
    }
    impl ::std::fmt::Display for UpdateStatusPageDataAttributesAuthenticationMethod {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::None => f.write_str("none"),
                Self::Password => f.write_str("password"),
                Self::Saml => f.write_str("saml"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageDataAttributesAuthenticationMethod {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "none" => Ok(Self::None),
                "password" => Ok(Self::Password),
                "saml" => Ok(Self::Saml),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateStatusPageDataAttributesAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusPageDataAttributesAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusPageDataAttributesAuthenticationMethod {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///SAML name identifier format
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "SAML name identifier format",
    ///  "type": "string",
    ///  "enum": [
    ///    "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
    ///    "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    ///    "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
    ///    "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageDataAttributesSamlNameIdentifierFormat {
        #[serde(rename = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")]
        UrnOasisNamesTcSaml11NameidFormatEmailAddress,
        #[serde(rename = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")]
        UrnOasisNamesTcSaml20NameidFormatPersistent,
        #[serde(rename = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient")]
        UrnOasisNamesTcSaml20NameidFormatTransient,
        #[serde(rename = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")]
        UrnOasisNamesTcSaml11NameidFormatUnspecified,
    }
    impl ::std::fmt::Display for UpdateStatusPageDataAttributesSamlNameIdentifierFormat {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UrnOasisNamesTcSaml11NameidFormatEmailAddress => {
                    f.write_str("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")
                }
                Self::UrnOasisNamesTcSaml20NameidFormatPersistent => {
                    f.write_str("urn:oasis:names:tc:SAML:2.0:nameid-format:persistent")
                }
                Self::UrnOasisNamesTcSaml20NameidFormatTransient => {
                    f.write_str("urn:oasis:names:tc:SAML:2.0:nameid-format:transient")
                }
                Self::UrnOasisNamesTcSaml11NameidFormatUnspecified => {
                    f.write_str("urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageDataAttributesSamlNameIdentifierFormat {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" => {
                    Ok(Self::UrnOasisNamesTcSaml11NameidFormatEmailAddress)
                }
                "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" => {
                    Ok(Self::UrnOasisNamesTcSaml20NameidFormatPersistent)
                }
                "urn:oasis:names:tc:SAML:2.0:nameid-format:transient" => {
                    Ok(Self::UrnOasisNamesTcSaml20NameidFormatTransient)
                }
                "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" => {
                    Ok(Self::UrnOasisNamesTcSaml11NameidFormatUnspecified)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateStatusPageDataAttributesSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusPageDataAttributesSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusPageDataAttributesSamlNameIdentifierFormat {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateStatusPageDataAttributesSectionOrderItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "maintenance",
    ///    "system_status",
    ///    "incidents"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageDataAttributesSectionOrderItem {
        #[serde(rename = "maintenance")]
        Maintenance,
        #[serde(rename = "system_status")]
        SystemStatus,
        #[serde(rename = "incidents")]
        Incidents,
    }
    impl ::std::fmt::Display for UpdateStatusPageDataAttributesSectionOrderItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Maintenance => f.write_str("maintenance"),
                Self::SystemStatus => f.write_str("system_status"),
                Self::Incidents => f.write_str("incidents"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageDataAttributesSectionOrderItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "maintenance" => Ok(Self::Maintenance),
                "system_status" => Ok(Self::SystemStatus),
                "incidents" => Ok(Self::Incidents),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateStatusPageDataAttributesSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusPageDataAttributesSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusPageDataAttributesSectionOrderItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Show uptime over x days
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Show uptime over x days",
    ///  "type": "integer",
    ///  "enum": [
    ///    30,
    ///    60,
    ///    90
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug)]
    #[serde(transparent)]
    pub struct UpdateStatusPageDataAttributesShowUptimeLastDays(i64);
    impl ::std::ops::Deref for UpdateStatusPageDataAttributesShowUptimeLastDays {
        type Target = i64;
        fn deref(&self) -> &i64 {
            &self.0
        }
    }
    impl ::std::convert::From<UpdateStatusPageDataAttributesShowUptimeLastDays> for i64 {
        fn from(value: UpdateStatusPageDataAttributesShowUptimeLastDays) -> Self {
            value.0
        }
    }
    impl ::std::convert::TryFrom<i64>
    for UpdateStatusPageDataAttributesShowUptimeLastDays {
        type Error = self::error::ConversionError;
        fn try_from(
            value: i64,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            if ![30_i64, 60_i64, 90_i64].contains(&value) {
                Err("invalid value".into())
            } else {
                Ok(Self(value))
            }
        }
    }
    impl<'de> ::serde::Deserialize<'de>
    for UpdateStatusPageDataAttributesShowUptimeLastDays {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            Self::try_from(<i64>::deserialize(deserializer)?)
                .map_err(|e| { <D::Error as ::serde::de::Error>::custom(e.to_string()) })
        }
    }
    ///`UpdateStatusPageDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_pages"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageDataType {
        #[serde(rename = "status_pages")]
        StatusPages,
    }
    impl ::std::fmt::Display for UpdateStatusPageDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPages => f.write_str("status_pages"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_pages" => Ok(Self::StatusPages),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateStatusPageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateStatusPageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateStatusPageDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateStatusPageTemplate`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "required": [
    ///            "body",
    ///            "title"
    ///          ],
    ///          "properties": {
    ///            "body": {
    ///              "description": "Description of the event the template will populate",
    ///              "type": "string"
    ///            },
    ///            "enabled": {
    ///              "description": "Enable / Disable the status page template",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the status page template",
    ///              "type": "string",
    ///              "enum": [
    ///                "normal",
    ///                "scheduled"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the workflow task",
    ///              "type": "integer"
    ///            },
    ///            "should_notify_subscribers": {
    ///              "description": "Controls if incident subscribers should be notified",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "title": {
    ///              "description": "Title of the template",
    ///              "type": "string"
    ///            },
    ///            "update_status": {
    ///              "description": "Status of the event the template will populate",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "investigating",
    ///                "identified",
    ///                "monitoring",
    ///                "resolved",
    ///                "scheduled",
    ///                "in_progress",
    ///                "completed"
    ///              ]
    ///            },
    ///            "update_title": {
    ///              "description": "Title that will be used for the status page update",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "status_page_templates"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateStatusPageTemplate {
        pub data: UpdateStatusPageTemplateData,
    }
    impl UpdateStatusPageTemplate {
        pub fn builder() -> builder::UpdateStatusPageTemplate {
            Default::default()
        }
    }
    ///`UpdateStatusPageTemplateData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "required": [
    ///        "body",
    ///        "title"
    ///      ],
    ///      "properties": {
    ///        "body": {
    ///          "description": "Description of the event the template will populate",
    ///          "type": "string"
    ///        },
    ///        "enabled": {
    ///          "description": "Enable / Disable the status page template",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the status page template",
    ///          "type": "string",
    ///          "enum": [
    ///            "normal",
    ///            "scheduled"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the workflow task",
    ///          "type": "integer"
    ///        },
    ///        "should_notify_subscribers": {
    ///          "description": "Controls if incident subscribers should be notified",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "title": {
    ///          "description": "Title of the template",
    ///          "type": "string"
    ///        },
    ///        "update_status": {
    ///          "description": "Status of the event the template will populate",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "investigating",
    ///            "identified",
    ///            "monitoring",
    ///            "resolved",
    ///            "scheduled",
    ///            "in_progress",
    ///            "completed"
    ///          ]
    ///        },
    ///        "update_title": {
    ///          "description": "Title that will be used for the status page update",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "status_page_templates"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateStatusPageTemplateData {
        pub attributes: UpdateStatusPageTemplateDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateStatusPageTemplateDataType,
    }
    impl UpdateStatusPageTemplateData {
        pub fn builder() -> builder::UpdateStatusPageTemplateData {
            Default::default()
        }
    }
    ///`UpdateStatusPageTemplateDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "body",
    ///    "title"
    ///  ],
    ///  "properties": {
    ///    "body": {
    ///      "description": "Description of the event the template will populate",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "description": "Enable / Disable the status page template",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the status page template",
    ///      "type": "string",
    ///      "enum": [
    ///        "normal",
    ///        "scheduled"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the workflow task",
    ///      "type": "integer"
    ///    },
    ///    "should_notify_subscribers": {
    ///      "description": "Controls if incident subscribers should be notified",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "Title of the template",
    ///      "type": "string"
    ///    },
    ///    "update_status": {
    ///      "description": "Status of the event the template will populate",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "investigating",
    ///        "identified",
    ///        "monitoring",
    ///        "resolved",
    ///        "scheduled",
    ///        "in_progress",
    ///        "completed"
    ///      ]
    ///    },
    ///    "update_title": {
    ///      "description": "Title that will be used for the status page update",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateStatusPageTemplateDataAttributes {
        ///Description of the event the template will populate
        pub body: ::std::string::String,
        ///Enable / Disable the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        ///The kind of the status page template
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateStatusPageTemplateDataAttributesKind>,
        ///Position of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Controls if incident subscribers should be notified
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub should_notify_subscribers: ::std::option::Option<bool>,
        ///Title of the template
        pub title: ::std::string::String,
        ///Status of the event the template will populate
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_status: ::std::option::Option<
            UpdateStatusPageTemplateDataAttributesUpdateStatus,
        >,
        ///Title that will be used for the status page update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub update_title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateStatusPageTemplateDataAttributes {
        pub fn builder() -> builder::UpdateStatusPageTemplateDataAttributes {
            Default::default()
        }
    }
    ///The kind of the status page template
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the status page template",
    ///  "type": "string",
    ///  "enum": [
    ///    "normal",
    ///    "scheduled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageTemplateDataAttributesKind {
        #[serde(rename = "normal")]
        Normal,
        #[serde(rename = "scheduled")]
        Scheduled,
    }
    impl ::std::fmt::Display for UpdateStatusPageTemplateDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Normal => f.write_str("normal"),
                Self::Scheduled => f.write_str("scheduled"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageTemplateDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "normal" => Ok(Self::Normal),
                "scheduled" => Ok(Self::Scheduled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateStatusPageTemplateDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusPageTemplateDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusPageTemplateDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Status of the event the template will populate
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Status of the event the template will populate",
    ///  "type": "string",
    ///  "enum": [
    ///    "investigating",
    ///    "identified",
    ///    "monitoring",
    ///    "resolved",
    ///    "scheduled",
    ///    "in_progress",
    ///    "completed"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageTemplateDataAttributesUpdateStatus {
        #[serde(rename = "investigating")]
        Investigating,
        #[serde(rename = "identified")]
        Identified,
        #[serde(rename = "monitoring")]
        Monitoring,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "scheduled")]
        Scheduled,
        #[serde(rename = "in_progress")]
        InProgress,
        #[serde(rename = "completed")]
        Completed,
    }
    impl ::std::fmt::Display for UpdateStatusPageTemplateDataAttributesUpdateStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Investigating => f.write_str("investigating"),
                Self::Identified => f.write_str("identified"),
                Self::Monitoring => f.write_str("monitoring"),
                Self::Resolved => f.write_str("resolved"),
                Self::Scheduled => f.write_str("scheduled"),
                Self::InProgress => f.write_str("in_progress"),
                Self::Completed => f.write_str("completed"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageTemplateDataAttributesUpdateStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "investigating" => Ok(Self::Investigating),
                "identified" => Ok(Self::Identified),
                "monitoring" => Ok(Self::Monitoring),
                "resolved" => Ok(Self::Resolved),
                "scheduled" => Ok(Self::Scheduled),
                "in_progress" => Ok(Self::InProgress),
                "completed" => Ok(Self::Completed),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateStatusPageTemplateDataAttributesUpdateStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusPageTemplateDataAttributesUpdateStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusPageTemplateDataAttributesUpdateStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateStatusPageTemplateDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "status_page_templates"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusPageTemplateDataType {
        #[serde(rename = "status_page_templates")]
        StatusPageTemplates,
    }
    impl ::std::fmt::Display for UpdateStatusPageTemplateDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::StatusPageTemplates => f.write_str("status_page_templates"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusPageTemplateDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "status_page_templates" => Ok(Self::StatusPageTemplates),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateStatusPageTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusPageTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusPageTemplateDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateStatusTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status"
    ///  ],
    ///  "properties": {
    ///    "inactivity_timeout": {
    ///      "description": "In format '1 hour', '1 day', etc",
    ///      "examples": [
    ///        "1 hour"
    ///      ],
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "in_triage",
    ///        "started",
    ///        "mitigated",
    ///        "resolved",
    ///        "closed",
    ///        "cancelled"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_status"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateStatusTaskParams {
        ///In format '1 hour', '1 day', etc
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub inactivity_timeout: ::std::option::Option<::std::string::String>,
        pub status: UpdateStatusTaskParamsStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateStatusTaskParamsTaskType>,
    }
    impl UpdateStatusTaskParams {
        pub fn builder() -> builder::UpdateStatusTaskParams {
            Default::default()
        }
    }
    ///`UpdateStatusTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "in_triage",
    ///    "started",
    ///    "mitigated",
    ///    "resolved",
    ///    "closed",
    ///    "cancelled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusTaskParamsStatus {
        #[serde(rename = "in_triage")]
        InTriage,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "mitigated")]
        Mitigated,
        #[serde(rename = "resolved")]
        Resolved,
        #[serde(rename = "closed")]
        Closed,
        #[serde(rename = "cancelled")]
        Cancelled,
    }
    impl ::std::fmt::Display for UpdateStatusTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::InTriage => f.write_str("in_triage"),
                Self::Started => f.write_str("started"),
                Self::Mitigated => f.write_str("mitigated"),
                Self::Resolved => f.write_str("resolved"),
                Self::Closed => f.write_str("closed"),
                Self::Cancelled => f.write_str("cancelled"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "in_triage" => Ok(Self::InTriage),
                "started" => Ok(Self::Started),
                "mitigated" => Ok(Self::Mitigated),
                "resolved" => Ok(Self::Resolved),
                "closed" => Ok(Self::Closed),
                "cancelled" => Ok(Self::Cancelled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateStatusTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateStatusTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_status"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateStatusTaskParamsTaskType {
        #[serde(rename = "update_status")]
        UpdateStatus,
    }
    impl ::std::fmt::Display for UpdateStatusTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateStatus => f.write_str("update_status"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateStatusTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_status" => Ok(Self::UpdateStatus),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateStatusTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateStatusTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateStatusTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateSubStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "sub_statuses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSubStatus {
        pub data: UpdateSubStatusData,
    }
    impl UpdateSubStatus {
        pub fn builder() -> builder::UpdateSubStatus {
            Default::default()
        }
    }
    ///`UpdateSubStatusData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "sub_statuses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateSubStatusData {
        pub attributes: UpdateSubStatusDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateSubStatusDataType,
    }
    impl UpdateSubStatusData {
        pub fn builder() -> builder::UpdateSubStatusData {
            Default::default()
        }
    }
    ///`UpdateSubStatusDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateSubStatusDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateSubStatusDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateSubStatusDataAttributes {
        pub fn builder() -> builder::UpdateSubStatusDataAttributes {
            Default::default()
        }
    }
    ///`UpdateSubStatusDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "sub_statuses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateSubStatusDataType {
        #[serde(rename = "sub_statuses")]
        SubStatuses,
    }
    impl ::std::fmt::Display for UpdateSubStatusDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::SubStatuses => f.write_str("sub_statuses"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateSubStatusDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "sub_statuses" => Ok(Self::SubStatuses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateSubStatusDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateTeam`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "admin_ids": {
    ///              "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "alert_broadcast_channel": {
    ///              "description": "Slack channel to broadcast alerts to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "alert_broadcast_enabled": {
    ///              "description": "Enable alerts to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "alert_urgency_id": {
    ///              "description": "The alert urgency id of the team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "alerts_email_enabled": {
    ///              "description": "Enable alerts through email",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "auto_add_members_scope": {
    ///              "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "off",
    ///                "public_only",
    ///                "public_and_test",
    ///                "all"
    ///              ]
    ///            },
    ///            "auto_add_members_when_attached": {
    ///              "description": "Auto add members to incident channel when team is attached",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "backstage_id": {
    ///              "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "color": {
    ///              "description": "The hex color of the team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "cortex_id": {
    ///              "description": "The Cortex group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "description": {
    ///              "description": "The description of the team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "external_id": {
    ///              "description": "The external id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "incident_broadcast_channel": {
    ///              "description": "Slack channel to broadcast incidents to",
    ///              "type": [
    ///                "object",
    ///                "null"
    ///              ],
    ///              "required": [
    ///                "id"
    ///              ],
    ///              "properties": {
    ///                "id": {
    ///                  "description": "Slack channel ID",
    ///                  "type": "string"
    ///                },
    ///                "name": {
    ///                  "description": "Slack channel name",
    ///                  "type": "string"
    ///                }
    ///              }
    ///            },
    ///            "incident_broadcast_enabled": {
    ///              "description": "Enable incidents to be broadcasted to a specific channel",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the team",
    ///              "type": "string"
    ///            },
    ///            "notify_emails": {
    ///              "description": "Emails to attach to the team",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "opsgenie_id": {
    ///              "description": "The Opsgenie group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "pagerduty_id": {
    ///              "description": "The PagerDuty group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "pagerduty_service_id": {
    ///              "description": "The PagerDuty service id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "pagertree_id": {
    ///              "description": "The PagerTree group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "position": {
    ///              "description": "Position of the team",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "properties": {
    ///              "description": "Array of property values for this team.",
    ///              "type": "array",
    ///              "items": {
    ///                "description": "Set a value for a catalog property",
    ///                "type": "object",
    ///                "required": [
    ///                  "catalog_property_id",
    ///                  "value"
    ///                ],
    ///                "properties": {
    ///                  "catalog_property_id": {
    ///                    "description": "Catalog property ID",
    ///                    "type": "string"
    ///                  },
    ///                  "value": {
    ///                    "description": "The property value",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "service_now_ci_sys_id": {
    ///              "description": "The Service Now CI sys id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "slack_aliases": {
    ///              "description": "Slack Aliases associated with this team",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack alias ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack alias name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "slack_channels": {
    ///              "description": "Slack Channels associated with this team",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "object",
    ///                "required": [
    ///                  "id",
    ///                  "name"
    ///                ],
    ///                "properties": {
    ///                  "id": {
    ///                    "description": "Slack channel ID",
    ///                    "type": "string"
    ///                  },
    ///                  "name": {
    ///                    "description": "Slack channel name",
    ///                    "type": "string"
    ///                  }
    ///                }
    ///              }
    ///            },
    ///            "user_ids": {
    ///              "description": "The user ids of the members of this team.",
    ///              "type": [
    ///                "array",
    ///                "null"
    ///              ],
    ///              "items": {
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "victor_ops_id": {
    ///              "description": "The VictorOps group id associated to this team",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeam {
        pub data: UpdateTeamData,
    }
    impl UpdateTeam {
        pub fn builder() -> builder::UpdateTeam {
            Default::default()
        }
    }
    ///`UpdateTeamData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "admin_ids": {
    ///          "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "alert_broadcast_channel": {
    ///          "description": "Slack channel to broadcast alerts to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "alert_broadcast_enabled": {
    ///          "description": "Enable alerts to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "alert_urgency_id": {
    ///          "description": "The alert urgency id of the team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "alerts_email_enabled": {
    ///          "description": "Enable alerts through email",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "auto_add_members_scope": {
    ///          "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "off",
    ///            "public_only",
    ///            "public_and_test",
    ///            "all"
    ///          ]
    ///        },
    ///        "auto_add_members_when_attached": {
    ///          "description": "Auto add members to incident channel when team is attached",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "backstage_id": {
    ///          "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "color": {
    ///          "description": "The hex color of the team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "cortex_id": {
    ///          "description": "The Cortex group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "description": {
    ///          "description": "The description of the team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "external_id": {
    ///          "description": "The external id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "incident_broadcast_channel": {
    ///          "description": "Slack channel to broadcast incidents to",
    ///          "type": [
    ///            "object",
    ///            "null"
    ///          ],
    ///          "required": [
    ///            "id"
    ///          ],
    ///          "properties": {
    ///            "id": {
    ///              "description": "Slack channel ID",
    ///              "type": "string"
    ///            },
    ///            "name": {
    ///              "description": "Slack channel name",
    ///              "type": "string"
    ///            }
    ///          }
    ///        },
    ///        "incident_broadcast_enabled": {
    ///          "description": "Enable incidents to be broadcasted to a specific channel",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the team",
    ///          "type": "string"
    ///        },
    ///        "notify_emails": {
    ///          "description": "Emails to attach to the team",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "opsgenie_id": {
    ///          "description": "The Opsgenie group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "pagerduty_id": {
    ///          "description": "The PagerDuty group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "pagerduty_service_id": {
    ///          "description": "The PagerDuty service id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "pagertree_id": {
    ///          "description": "The PagerTree group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "position": {
    ///          "description": "Position of the team",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "properties": {
    ///          "description": "Array of property values for this team.",
    ///          "type": "array",
    ///          "items": {
    ///            "description": "Set a value for a catalog property",
    ///            "type": "object",
    ///            "required": [
    ///              "catalog_property_id",
    ///              "value"
    ///            ],
    ///            "properties": {
    ///              "catalog_property_id": {
    ///                "description": "Catalog property ID",
    ///                "type": "string"
    ///              },
    ///              "value": {
    ///                "description": "The property value",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "service_now_ci_sys_id": {
    ///          "description": "The Service Now CI sys id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "slack_aliases": {
    ///          "description": "Slack Aliases associated with this team",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack alias ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack alias name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "slack_channels": {
    ///          "description": "Slack Channels associated with this team",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "object",
    ///            "required": [
    ///              "id",
    ///              "name"
    ///            ],
    ///            "properties": {
    ///              "id": {
    ///                "description": "Slack channel ID",
    ///                "type": "string"
    ///              },
    ///              "name": {
    ///                "description": "Slack channel name",
    ///                "type": "string"
    ///              }
    ///            }
    ///          }
    ///        },
    ///        "user_ids": {
    ///          "description": "The user ids of the members of this team.",
    ///          "type": [
    ///            "array",
    ///            "null"
    ///          ],
    ///          "items": {
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "victor_ops_id": {
    ///          "description": "The VictorOps group id associated to this team",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeamData {
        pub attributes: UpdateTeamDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateTeamDataType,
    }
    impl UpdateTeamData {
        pub fn builder() -> builder::UpdateTeamData {
            Default::default()
        }
    }
    ///`UpdateTeamDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "admin_ids": {
    ///      "description": "The user ids of the admins of this team. These users must also be present in user_ids attribute.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "alert_broadcast_channel": {
    ///      "description": "Slack channel to broadcast alerts to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "alert_broadcast_enabled": {
    ///      "description": "Enable alerts to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_urgency_id": {
    ///      "description": "The alert urgency id of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alerts_email_enabled": {
    ///      "description": "Enable alerts through email",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "auto_add_members_scope": {
    ///      "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "off",
    ///        "public_only",
    ///        "public_and_test",
    ///        "all"
    ///      ]
    ///    },
    ///    "auto_add_members_when_attached": {
    ///      "description": "Auto add members to incident channel when team is attached",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "backstage_id": {
    ///      "description": "The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "color": {
    ///      "description": "The hex color of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "cortex_id": {
    ///      "description": "The Cortex group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "description": {
    ///      "description": "The description of the team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "external_id": {
    ///      "description": "The external id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_broadcast_channel": {
    ///      "description": "Slack channel to broadcast incidents to",
    ///      "type": [
    ///        "object",
    ///        "null"
    ///      ],
    ///      "required": [
    ///        "id"
    ///      ],
    ///      "properties": {
    ///        "id": {
    ///          "description": "Slack channel ID",
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "description": "Slack channel name",
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "incident_broadcast_enabled": {
    ///      "description": "Enable incidents to be broadcasted to a specific channel",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the team",
    ///      "type": "string"
    ///    },
    ///    "notify_emails": {
    ///      "description": "Emails to attach to the team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "opsgenie_id": {
    ///      "description": "The Opsgenie group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_id": {
    ///      "description": "The PagerDuty group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagerduty_service_id": {
    ///      "description": "The PagerDuty service id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pagertree_id": {
    ///      "description": "The PagerTree group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the team",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "properties": {
    ///      "description": "Array of property values for this team.",
    ///      "type": "array",
    ///      "items": {
    ///        "description": "Set a value for a catalog property",
    ///        "type": "object",
    ///        "required": [
    ///          "catalog_property_id",
    ///          "value"
    ///        ],
    ///        "properties": {
    ///          "catalog_property_id": {
    ///            "description": "Catalog property ID",
    ///            "type": "string"
    ///          },
    ///          "value": {
    ///            "description": "The property value",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "service_now_ci_sys_id": {
    ///      "description": "The Service Now CI sys id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "slack_aliases": {
    ///      "description": "Slack Aliases associated with this team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack alias ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack alias name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "slack_channels": {
    ///      "description": "Slack Channels associated with this team",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "id",
    ///          "name"
    ///        ],
    ///        "properties": {
    ///          "id": {
    ///            "description": "Slack channel ID",
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "description": "Slack channel name",
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "user_ids": {
    ///      "description": "The user ids of the members of this team.",
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "victor_ops_id": {
    ///      "description": "The VictorOps group id associated to this team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateTeamDataAttributes {
        ///The user ids of the admins of this team. These users must also be present in user_ids attribute.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub admin_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///Slack channel to broadcast alerts to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_channel: ::std::option::Option<
            UpdateTeamDataAttributesAlertBroadcastChannel,
        >,
        ///Enable alerts to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_broadcast_enabled: ::std::option::Option<bool>,
        ///The alert urgency id of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_urgency_id: ::std::option::Option<::std::string::String>,
        ///Enable alerts through email
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alerts_email_enabled: ::std::option::Option<bool>,
        ///Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_add_members_scope: ::std::option::Option<
            UpdateTeamDataAttributesAutoAddMembersScope,
        >,
        ///Auto add members to incident channel when team is attached
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub auto_add_members_when_attached: ::std::option::Option<bool>,
        ///The Backstage entity id associated to this team. eg: :namespace/:kind/:entity_name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub backstage_id: ::std::option::Option<::std::string::String>,
        ///The hex color of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub color: ::std::option::Option<::std::string::String>,
        ///The Cortex group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub cortex_id: ::std::option::Option<::std::string::String>,
        ///The description of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The external id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub external_id: ::std::option::Option<::std::string::String>,
        ///Slack channel to broadcast incidents to
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_channel: ::std::option::Option<
            UpdateTeamDataAttributesIncidentBroadcastChannel,
        >,
        ///Enable incidents to be broadcasted to a specific channel
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_broadcast_enabled: ::std::option::Option<bool>,
        ///The name of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///Emails to attach to the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notify_emails: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
        ///The Opsgenie group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub opsgenie_id: ::std::option::Option<::std::string::String>,
        ///The PagerDuty group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_id: ::std::option::Option<::std::string::String>,
        ///The PagerDuty service id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagerduty_service_id: ::std::option::Option<::std::string::String>,
        ///The PagerTree group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pagertree_id: ::std::option::Option<::std::string::String>,
        ///Position of the team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Array of property values for this team.
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub properties: ::std::vec::Vec<UpdateTeamDataAttributesPropertiesItem>,
        ///The Service Now CI sys id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub service_now_ci_sys_id: ::std::option::Option<::std::string::String>,
        ///Slack Aliases associated with this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_aliases: ::std::option::Option<
            ::std::vec::Vec<UpdateTeamDataAttributesSlackAliasesItem>,
        >,
        ///Slack Channels associated with this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slack_channels: ::std::option::Option<
            ::std::vec::Vec<UpdateTeamDataAttributesSlackChannelsItem>,
        >,
        ///The user ids of the members of this team.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_ids: ::std::option::Option<::std::vec::Vec<i64>>,
        ///The VictorOps group id associated to this team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub victor_ops_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateTeamDataAttributes {
        fn default() -> Self {
            Self {
                admin_ids: Default::default(),
                alert_broadcast_channel: Default::default(),
                alert_broadcast_enabled: Default::default(),
                alert_urgency_id: Default::default(),
                alerts_email_enabled: Default::default(),
                auto_add_members_scope: Default::default(),
                auto_add_members_when_attached: Default::default(),
                backstage_id: Default::default(),
                color: Default::default(),
                cortex_id: Default::default(),
                description: Default::default(),
                external_id: Default::default(),
                incident_broadcast_channel: Default::default(),
                incident_broadcast_enabled: Default::default(),
                name: Default::default(),
                notify_emails: Default::default(),
                opsgenie_id: Default::default(),
                pagerduty_id: Default::default(),
                pagerduty_service_id: Default::default(),
                pagertree_id: Default::default(),
                position: Default::default(),
                properties: Default::default(),
                service_now_ci_sys_id: Default::default(),
                slack_aliases: Default::default(),
                slack_channels: Default::default(),
                user_ids: Default::default(),
                victor_ops_id: Default::default(),
            }
        }
    }
    impl UpdateTeamDataAttributes {
        pub fn builder() -> builder::UpdateTeamDataAttributes {
            Default::default()
        }
    }
    ///Slack channel to broadcast alerts to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast alerts to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeamDataAttributesAlertBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl UpdateTeamDataAttributesAlertBroadcastChannel {
        pub fn builder() -> builder::UpdateTeamDataAttributesAlertBroadcastChannel {
            Default::default()
        }
    }
    ///Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Visibility-scoped auto-add behavior. Only present when the `enable_scoped_incident_channel_auto_add` feature flag is on for the organization. When set, it overrides `auto_add_members_when_attached`.",
    ///  "type": "string",
    ///  "enum": [
    ///    "off",
    ///    "public_only",
    ///    "public_and_test",
    ///    "all"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateTeamDataAttributesAutoAddMembersScope {
        #[serde(rename = "off")]
        Off,
        #[serde(rename = "public_only")]
        PublicOnly,
        #[serde(rename = "public_and_test")]
        PublicAndTest,
        #[serde(rename = "all")]
        All,
    }
    impl ::std::fmt::Display for UpdateTeamDataAttributesAutoAddMembersScope {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Off => f.write_str("off"),
                Self::PublicOnly => f.write_str("public_only"),
                Self::PublicAndTest => f.write_str("public_and_test"),
                Self::All => f.write_str("all"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateTeamDataAttributesAutoAddMembersScope {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "off" => Ok(Self::Off),
                "public_only" => Ok(Self::PublicOnly),
                "public_and_test" => Ok(Self::PublicAndTest),
                "all" => Ok(Self::All),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateTeamDataAttributesAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateTeamDataAttributesAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateTeamDataAttributesAutoAddMembersScope {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Slack channel to broadcast incidents to
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Slack channel to broadcast incidents to",
    ///  "type": "object",
    ///  "required": [
    ///    "id"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeamDataAttributesIncidentBroadcastChannel {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl UpdateTeamDataAttributesIncidentBroadcastChannel {
        pub fn builder() -> builder::UpdateTeamDataAttributesIncidentBroadcastChannel {
            Default::default()
        }
    }
    ///Set a value for a catalog property
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Set a value for a catalog property",
    ///  "type": "object",
    ///  "required": [
    ///    "catalog_property_id",
    ///    "value"
    ///  ],
    ///  "properties": {
    ///    "catalog_property_id": {
    ///      "description": "Catalog property ID",
    ///      "type": "string"
    ///    },
    ///    "value": {
    ///      "description": "The property value",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeamDataAttributesPropertiesItem {
        ///Catalog property ID
        pub catalog_property_id: ::std::string::String,
        ///The property value
        pub value: ::std::string::String,
    }
    impl UpdateTeamDataAttributesPropertiesItem {
        pub fn builder() -> builder::UpdateTeamDataAttributesPropertiesItem {
            Default::default()
        }
    }
    ///`UpdateTeamDataAttributesSlackAliasesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack alias ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack alias name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeamDataAttributesSlackAliasesItem {
        ///Slack alias ID
        pub id: ::std::string::String,
        ///Slack alias name
        pub name: ::std::string::String,
    }
    impl UpdateTeamDataAttributesSlackAliasesItem {
        pub fn builder() -> builder::UpdateTeamDataAttributesSlackAliasesItem {
            Default::default()
        }
    }
    ///`UpdateTeamDataAttributesSlackChannelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "id",
    ///    "name"
    ///  ],
    ///  "properties": {
    ///    "id": {
    ///      "description": "Slack channel ID",
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "description": "Slack channel name",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTeamDataAttributesSlackChannelsItem {
        ///Slack channel ID
        pub id: ::std::string::String,
        ///Slack channel name
        pub name: ::std::string::String,
    }
    impl UpdateTeamDataAttributesSlackChannelsItem {
        pub fn builder() -> builder::UpdateTeamDataAttributesSlackChannelsItem {
            Default::default()
        }
    }
    ///`UpdateTeamDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateTeamDataType {
        #[serde(rename = "groups")]
        Groups,
    }
    impl ::std::fmt::Display for UpdateTeamDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Groups => f.write_str("groups"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateTeamDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "groups" => Ok(Self::Groups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateTeamDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateTeamDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateTeamDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateTrelloCardTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "archivation",
    ///    "card_id"
    ///  ],
    ///  "properties": {
    ///    "archivation": {
    ///      "description": "The archivation id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "board": {
    ///      "description": "The board id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "card_id": {
    ///      "description": "The card id",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The card description",
    ///      "type": "string"
    ///    },
    ///    "due_date": {
    ///      "description": "The due date",
    ///      "type": "string"
    ///    },
    ///    "labels": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "properties": {
    ///          "id": {
    ///            "type": "string"
    ///          },
    ///          "name": {
    ///            "type": "string"
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "list": {
    ///      "description": "The list id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_trello_card"
    ///      ]
    ///    },
    ///    "title": {
    ///      "description": "The card title",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTrelloCardTaskParams {
        pub archivation: UpdateTrelloCardTaskParamsArchivation,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub board: ::std::option::Option<UpdateTrelloCardTaskParamsBoard>,
        ///The card id
        pub card_id: ::std::string::String,
        ///The card description
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///The due date
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub due_date: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub labels: ::std::vec::Vec<UpdateTrelloCardTaskParamsLabelsItem>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub list: ::std::option::Option<UpdateTrelloCardTaskParamsList>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateTrelloCardTaskParamsTaskType>,
        ///The card title
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub title: ::std::option::Option<::std::string::String>,
    }
    impl UpdateTrelloCardTaskParams {
        pub fn builder() -> builder::UpdateTrelloCardTaskParams {
            Default::default()
        }
    }
    ///The archivation id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The archivation id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTrelloCardTaskParamsArchivation {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateTrelloCardTaskParamsArchivation {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateTrelloCardTaskParamsArchivation {
        pub fn builder() -> builder::UpdateTrelloCardTaskParamsArchivation {
            Default::default()
        }
    }
    ///The board id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The board id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTrelloCardTaskParamsBoard {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateTrelloCardTaskParamsBoard {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateTrelloCardTaskParamsBoard {
        pub fn builder() -> builder::UpdateTrelloCardTaskParamsBoard {
            Default::default()
        }
    }
    ///`UpdateTrelloCardTaskParamsLabelsItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTrelloCardTaskParamsLabelsItem {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateTrelloCardTaskParamsLabelsItem {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateTrelloCardTaskParamsLabelsItem {
        pub fn builder() -> builder::UpdateTrelloCardTaskParamsLabelsItem {
            Default::default()
        }
    }
    ///The list id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The list id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateTrelloCardTaskParamsList {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateTrelloCardTaskParamsList {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateTrelloCardTaskParamsList {
        pub fn builder() -> builder::UpdateTrelloCardTaskParamsList {
            Default::default()
        }
    }
    ///`UpdateTrelloCardTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_trello_card"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateTrelloCardTaskParamsTaskType {
        #[serde(rename = "update_trello_card")]
        UpdateTrelloCard,
    }
    impl ::std::fmt::Display for UpdateTrelloCardTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateTrelloCard => f.write_str("update_trello_card"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateTrelloCardTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_trello_card" => Ok(Self::UpdateTrelloCard),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateTrelloCardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateTrelloCardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateTrelloCardTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateUser`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "first_name": {
    ///              "description": "First name of the user",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "last_name": {
    ///              "description": "Last name of the user",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "on_call_role_id": {
    ///              "description": "ID of the on-call role to assign",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "role_id": {
    ///              "description": "ID of the role to assign",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "users"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUser {
        pub data: UpdateUserData,
    }
    impl UpdateUser {
        pub fn builder() -> builder::UpdateUser {
            Default::default()
        }
    }
    ///`UpdateUserData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "first_name": {
    ///          "description": "First name of the user",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "last_name": {
    ///          "description": "Last name of the user",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "on_call_role_id": {
    ///          "description": "ID of the on-call role to assign",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "role_id": {
    ///          "description": "ID of the role to assign",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserData {
        pub attributes: UpdateUserDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateUserDataType,
    }
    impl UpdateUserData {
        pub fn builder() -> builder::UpdateUserData {
            Default::default()
        }
    }
    ///`UpdateUserDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "first_name": {
    ///      "description": "First name of the user",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "last_name": {
    ///      "description": "Last name of the user",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "on_call_role_id": {
    ///      "description": "ID of the on-call role to assign",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "role_id": {
    ///      "description": "ID of the role to assign",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateUserDataAttributes {
        ///First name of the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub first_name: ::std::option::Option<::std::string::String>,
        ///Last name of the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_name: ::std::option::Option<::std::string::String>,
        ///ID of the on-call role to assign
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub on_call_role_id: ::std::option::Option<::std::string::String>,
        ///ID of the role to assign
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub role_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateUserDataAttributes {
        fn default() -> Self {
            Self {
                first_name: Default::default(),
                last_name: Default::default(),
                on_call_role_id: Default::default(),
                role_id: Default::default(),
            }
        }
    }
    impl UpdateUserDataAttributes {
        pub fn builder() -> builder::UpdateUserDataAttributes {
            Default::default()
        }
    }
    ///`UpdateUserDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateUserDataType {
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display for UpdateUserDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateUserDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateUserDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateUserEmailAddress`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "email": {
    ///              "description": "Email address",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_email_addresses"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserEmailAddress {
        pub data: UpdateUserEmailAddressData,
    }
    impl UpdateUserEmailAddress {
        pub fn builder() -> builder::UpdateUserEmailAddress {
            Default::default()
        }
    }
    ///`UpdateUserEmailAddressData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "email": {
    ///          "description": "Email address",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_email_addresses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserEmailAddressData {
        pub attributes: UpdateUserEmailAddressDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateUserEmailAddressDataType,
    }
    impl UpdateUserEmailAddressData {
        pub fn builder() -> builder::UpdateUserEmailAddressData {
            Default::default()
        }
    }
    ///`UpdateUserEmailAddressDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "email": {
    ///      "description": "Email address",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateUserEmailAddressDataAttributes {
        ///Email address
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateUserEmailAddressDataAttributes {
        fn default() -> Self {
            Self { email: Default::default() }
        }
    }
    impl UpdateUserEmailAddressDataAttributes {
        pub fn builder() -> builder::UpdateUserEmailAddressDataAttributes {
            Default::default()
        }
    }
    ///`UpdateUserEmailAddressDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_email_addresses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateUserEmailAddressDataType {
        #[serde(rename = "user_email_addresses")]
        UserEmailAddresses,
    }
    impl ::std::fmt::Display for UpdateUserEmailAddressDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserEmailAddresses => f.write_str("user_email_addresses"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateUserEmailAddressDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_email_addresses" => Ok(Self::UserEmailAddresses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateUserEmailAddressDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateUserEmailAddressDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateUserEmailAddressDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateUserNotificationRule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "delay": {
    ///              "description": "Delay after which rule gets triggered",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled_contact_types": {
    ///              "description": "Contact types for which notification needs to be enabled",
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "email",
    ///                  "sms",
    ///                  "call",
    ///                  "device",
    ///                  "non_critical_device",
    ///                  "slack",
    ///                  "google_chat"
    ///                ]
    ///              }
    ///            },
    ///            "position": {
    ///              "description": "Position of the rule",
    ///              "type": [
    ///                "integer",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_call_number_id": {
    ///              "description": "User phone number to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_device_id": {
    ///              "description": "User device to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_email_address_id": {
    ///              "description": "User email address to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "user_sms_number_id": {
    ///              "description": "User sms number to which notification to be sent",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_notification_rules"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserNotificationRule {
        pub data: UpdateUserNotificationRuleData,
    }
    impl UpdateUserNotificationRule {
        pub fn builder() -> builder::UpdateUserNotificationRule {
            Default::default()
        }
    }
    ///`UpdateUserNotificationRuleData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "delay": {
    ///          "description": "Delay after which rule gets triggered",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled_contact_types": {
    ///          "description": "Contact types for which notification needs to be enabled",
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "email",
    ///              "sms",
    ///              "call",
    ///              "device",
    ///              "non_critical_device",
    ///              "slack",
    ///              "google_chat"
    ///            ]
    ///          }
    ///        },
    ///        "position": {
    ///          "description": "Position of the rule",
    ///          "type": [
    ///            "integer",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_call_number_id": {
    ///          "description": "User phone number to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_device_id": {
    ///          "description": "User device to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_email_address_id": {
    ///          "description": "User email address to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "user_sms_number_id": {
    ///          "description": "User sms number to which notification to be sent",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_notification_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserNotificationRuleData {
        pub attributes: UpdateUserNotificationRuleDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateUserNotificationRuleDataType,
    }
    impl UpdateUserNotificationRuleData {
        pub fn builder() -> builder::UpdateUserNotificationRuleData {
            Default::default()
        }
    }
    ///`UpdateUserNotificationRuleDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "delay": {
    ///      "description": "Delay after which rule gets triggered",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled_contact_types": {
    ///      "description": "Contact types for which notification needs to be enabled",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "email",
    ///          "sms",
    ///          "call",
    ///          "device",
    ///          "non_critical_device",
    ///          "slack",
    ///          "google_chat"
    ///        ]
    ///      }
    ///    },
    ///    "position": {
    ///      "description": "Position of the rule",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_call_number_id": {
    ///      "description": "User phone number to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_device_id": {
    ///      "description": "User device to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_email_address_id": {
    ///      "description": "User email address to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_sms_number_id": {
    ///      "description": "User sms number to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateUserNotificationRuleDataAttributes {
        ///Delay after which rule gets triggered
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub delay: ::std::option::Option<i64>,
        ///Contact types for which notification needs to be enabled
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub enabled_contact_types: ::std::vec::Vec<
            UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem,
        >,
        ///Position of the rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///User phone number to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_call_number_id: ::std::option::Option<::std::string::String>,
        ///User device to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_device_id: ::std::option::Option<::std::string::String>,
        ///User email address to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_email_address_id: ::std::option::Option<::std::string::String>,
        ///User sms number to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_sms_number_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateUserNotificationRuleDataAttributes {
        fn default() -> Self {
            Self {
                delay: Default::default(),
                enabled_contact_types: Default::default(),
                position: Default::default(),
                user_call_number_id: Default::default(),
                user_device_id: Default::default(),
                user_email_address_id: Default::default(),
                user_sms_number_id: Default::default(),
            }
        }
    }
    impl UpdateUserNotificationRuleDataAttributes {
        pub fn builder() -> builder::UpdateUserNotificationRuleDataAttributes {
            Default::default()
        }
    }
    ///`UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "email",
    ///    "sms",
    ///    "call",
    ///    "device",
    ///    "non_critical_device",
    ///    "slack",
    ///    "google_chat"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem {
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "sms")]
        Sms,
        #[serde(rename = "call")]
        Call,
        #[serde(rename = "device")]
        Device,
        #[serde(rename = "non_critical_device")]
        NonCriticalDevice,
        #[serde(rename = "slack")]
        Slack,
        #[serde(rename = "google_chat")]
        GoogleChat,
    }
    impl ::std::fmt::Display
    for UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Email => f.write_str("email"),
                Self::Sms => f.write_str("sms"),
                Self::Call => f.write_str("call"),
                Self::Device => f.write_str("device"),
                Self::NonCriticalDevice => f.write_str("non_critical_device"),
                Self::Slack => f.write_str("slack"),
                Self::GoogleChat => f.write_str("google_chat"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email" => Ok(Self::Email),
                "sms" => Ok(Self::Sms),
                "call" => Ok(Self::Call),
                "device" => Ok(Self::Device),
                "non_critical_device" => Ok(Self::NonCriticalDevice),
                "slack" => Ok(Self::Slack),
                "google_chat" => Ok(Self::GoogleChat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateUserNotificationRuleDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_notification_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateUserNotificationRuleDataType {
        #[serde(rename = "user_notification_rules")]
        UserNotificationRules,
    }
    impl ::std::fmt::Display for UpdateUserNotificationRuleDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserNotificationRules => f.write_str("user_notification_rules"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateUserNotificationRuleDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_notification_rules" => Ok(Self::UserNotificationRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateUserNotificationRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateUserNotificationRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateUserNotificationRuleDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateUserPhoneNumber`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "phone": {
    ///              "description": "Phone number in international format",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_phone_numbers"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserPhoneNumber {
        pub data: UpdateUserPhoneNumberData,
    }
    impl UpdateUserPhoneNumber {
        pub fn builder() -> builder::UpdateUserPhoneNumber {
            Default::default()
        }
    }
    ///`UpdateUserPhoneNumberData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "phone": {
    ///          "description": "Phone number in international format",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_phone_numbers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateUserPhoneNumberData {
        pub attributes: UpdateUserPhoneNumberDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateUserPhoneNumberDataType,
    }
    impl UpdateUserPhoneNumberData {
        pub fn builder() -> builder::UpdateUserPhoneNumberData {
            Default::default()
        }
    }
    ///`UpdateUserPhoneNumberDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "phone": {
    ///      "description": "Phone number in international format",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateUserPhoneNumberDataAttributes {
        ///Phone number in international format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateUserPhoneNumberDataAttributes {
        fn default() -> Self {
            Self { phone: Default::default() }
        }
    }
    impl UpdateUserPhoneNumberDataAttributes {
        pub fn builder() -> builder::UpdateUserPhoneNumberDataAttributes {
            Default::default()
        }
    }
    ///`UpdateUserPhoneNumberDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_phone_numbers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateUserPhoneNumberDataType {
        #[serde(rename = "user_phone_numbers")]
        UserPhoneNumbers,
    }
    impl ::std::fmt::Display for UpdateUserPhoneNumberDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserPhoneNumbers => f.write_str("user_phone_numbers"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateUserPhoneNumberDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_phone_numbers" => Ok(Self::UserPhoneNumbers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateUserPhoneNumberDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateUserPhoneNumberDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateUserPhoneNumberDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateVictorOpsIncidentTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status",
    ///    "victor_ops_incident_id"
    ///  ],
    ///  "properties": {
    ///    "resolution_message": {
    ///      "description": "Resolution message",
    ///      "type": "string"
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "resolve",
    ///        "ack",
    ///        "auto"
    ///      ]
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_victor_ops_incident"
    ///      ]
    ///    },
    ///    "victor_ops_incident_id": {
    ///      "description": "The victor_ops incident ID, this can also be a Rootly incident variable ex. {{ incident.victor_ops_incident_id }}",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateVictorOpsIncidentTaskParams {
        ///Resolution message
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub resolution_message: ::std::option::Option<::std::string::String>,
        pub status: UpdateVictorOpsIncidentTaskParamsStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateVictorOpsIncidentTaskParamsTaskType>,
        ///The victor_ops incident ID, this can also be a Rootly incident variable ex. {{ incident.victor_ops_incident_id }}
        pub victor_ops_incident_id: ::std::string::String,
    }
    impl UpdateVictorOpsIncidentTaskParams {
        pub fn builder() -> builder::UpdateVictorOpsIncidentTaskParams {
            Default::default()
        }
    }
    ///`UpdateVictorOpsIncidentTaskParamsStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "resolve",
    ///    "ack",
    ///    "auto"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateVictorOpsIncidentTaskParamsStatus {
        #[serde(rename = "resolve")]
        Resolve,
        #[serde(rename = "ack")]
        Ack,
        #[serde(rename = "auto")]
        Auto,
    }
    impl ::std::fmt::Display for UpdateVictorOpsIncidentTaskParamsStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Resolve => f.write_str("resolve"),
                Self::Ack => f.write_str("ack"),
                Self::Auto => f.write_str("auto"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateVictorOpsIncidentTaskParamsStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "resolve" => Ok(Self::Resolve),
                "ack" => Ok(Self::Ack),
                "auto" => Ok(Self::Auto),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateVictorOpsIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateVictorOpsIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateVictorOpsIncidentTaskParamsStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateVictorOpsIncidentTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_victor_ops_incident"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateVictorOpsIncidentTaskParamsTaskType {
        #[serde(rename = "update_victor_ops_incident")]
        UpdateVictorOpsIncident,
    }
    impl ::std::fmt::Display for UpdateVictorOpsIncidentTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateVictorOpsIncident => {
                    f.write_str("update_victor_ops_incident")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateVictorOpsIncidentTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_victor_ops_incident" => Ok(Self::UpdateVictorOpsIncident),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateVictorOpsIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateVictorOpsIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateVictorOpsIncidentTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWebhooksEndpoint`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "event_types": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string",
    ///                "enum": [
    ///                  "incident.created",
    ///                  "incident.updated",
    ///                  "incident.in_triage",
    ///                  "incident.mitigated",
    ///                  "incident.resolved",
    ///                  "incident.cancelled",
    ///                  "incident.deleted",
    ///                  "incident.scheduled.created",
    ///                  "incident.scheduled.updated",
    ///                  "incident.scheduled.in_progress",
    ///                  "incident.scheduled.completed",
    ///                  "incident.scheduled.deleted",
    ///                  "incident_post_mortem.created",
    ///                  "incident_post_mortem.updated",
    ///                  "incident_post_mortem.published",
    ///                  "incident_post_mortem.deleted",
    ///                  "incident_status_page_event.created",
    ///                  "incident_status_page_event.updated",
    ///                  "incident_status_page_event.deleted",
    ///                  "incident_event.created",
    ///                  "incident_event.updated",
    ///                  "incident_event.deleted",
    ///                  "alert.created",
    ///                  "pulse.created",
    ///                  "shift.started",
    ///                  "genius_workflow_run.queued",
    ///                  "genius_workflow_run.started",
    ///                  "genius_workflow_run.completed",
    ///                  "genius_workflow_run.failed",
    ///                  "genius_workflow_run.canceled",
    ///                  "audit_log.created"
    ///                ]
    ///              }
    ///            },
    ///            "name": {
    ///              "description": "The name of the endpoint",
    ///              "type": "string"
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "webhooks_endpoints"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWebhooksEndpoint {
        pub data: UpdateWebhooksEndpointData,
    }
    impl UpdateWebhooksEndpoint {
        pub fn builder() -> builder::UpdateWebhooksEndpoint {
            Default::default()
        }
    }
    ///`UpdateWebhooksEndpointData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "event_types": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string",
    ///            "enum": [
    ///              "incident.created",
    ///              "incident.updated",
    ///              "incident.in_triage",
    ///              "incident.mitigated",
    ///              "incident.resolved",
    ///              "incident.cancelled",
    ///              "incident.deleted",
    ///              "incident.scheduled.created",
    ///              "incident.scheduled.updated",
    ///              "incident.scheduled.in_progress",
    ///              "incident.scheduled.completed",
    ///              "incident.scheduled.deleted",
    ///              "incident_post_mortem.created",
    ///              "incident_post_mortem.updated",
    ///              "incident_post_mortem.published",
    ///              "incident_post_mortem.deleted",
    ///              "incident_status_page_event.created",
    ///              "incident_status_page_event.updated",
    ///              "incident_status_page_event.deleted",
    ///              "incident_event.created",
    ///              "incident_event.updated",
    ///              "incident_event.deleted",
    ///              "alert.created",
    ///              "pulse.created",
    ///              "shift.started",
    ///              "genius_workflow_run.queued",
    ///              "genius_workflow_run.started",
    ///              "genius_workflow_run.completed",
    ///              "genius_workflow_run.failed",
    ///              "genius_workflow_run.canceled",
    ///              "audit_log.created"
    ///            ]
    ///          }
    ///        },
    ///        "name": {
    ///          "description": "The name of the endpoint",
    ///          "type": "string"
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "webhooks_endpoints"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWebhooksEndpointData {
        pub attributes: UpdateWebhooksEndpointDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateWebhooksEndpointDataType,
    }
    impl UpdateWebhooksEndpointData {
        pub fn builder() -> builder::UpdateWebhooksEndpointData {
            Default::default()
        }
    }
    ///`UpdateWebhooksEndpointDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "event_types": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "incident.created",
    ///          "incident.updated",
    ///          "incident.in_triage",
    ///          "incident.mitigated",
    ///          "incident.resolved",
    ///          "incident.cancelled",
    ///          "incident.deleted",
    ///          "incident.scheduled.created",
    ///          "incident.scheduled.updated",
    ///          "incident.scheduled.in_progress",
    ///          "incident.scheduled.completed",
    ///          "incident.scheduled.deleted",
    ///          "incident_post_mortem.created",
    ///          "incident_post_mortem.updated",
    ///          "incident_post_mortem.published",
    ///          "incident_post_mortem.deleted",
    ///          "incident_status_page_event.created",
    ///          "incident_status_page_event.updated",
    ///          "incident_status_page_event.deleted",
    ///          "incident_event.created",
    ///          "incident_event.updated",
    ///          "incident_event.deleted",
    ///          "alert.created",
    ///          "pulse.created",
    ///          "shift.started",
    ///          "genius_workflow_run.queued",
    ///          "genius_workflow_run.started",
    ///          "genius_workflow_run.completed",
    ///          "genius_workflow_run.failed",
    ///          "genius_workflow_run.canceled",
    ///          "audit_log.created"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the endpoint",
    ///      "type": "string"
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateWebhooksEndpointDataAttributes {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub event_types: ::std::vec::Vec<
            UpdateWebhooksEndpointDataAttributesEventTypesItem,
        >,
        ///The name of the endpoint
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateWebhooksEndpointDataAttributes {
        fn default() -> Self {
            Self {
                enabled: Default::default(),
                event_types: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateWebhooksEndpointDataAttributes {
        pub fn builder() -> builder::UpdateWebhooksEndpointDataAttributes {
            Default::default()
        }
    }
    ///`UpdateWebhooksEndpointDataAttributesEventTypesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident.created",
    ///    "incident.updated",
    ///    "incident.in_triage",
    ///    "incident.mitigated",
    ///    "incident.resolved",
    ///    "incident.cancelled",
    ///    "incident.deleted",
    ///    "incident.scheduled.created",
    ///    "incident.scheduled.updated",
    ///    "incident.scheduled.in_progress",
    ///    "incident.scheduled.completed",
    ///    "incident.scheduled.deleted",
    ///    "incident_post_mortem.created",
    ///    "incident_post_mortem.updated",
    ///    "incident_post_mortem.published",
    ///    "incident_post_mortem.deleted",
    ///    "incident_status_page_event.created",
    ///    "incident_status_page_event.updated",
    ///    "incident_status_page_event.deleted",
    ///    "incident_event.created",
    ///    "incident_event.updated",
    ///    "incident_event.deleted",
    ///    "alert.created",
    ///    "pulse.created",
    ///    "shift.started",
    ///    "genius_workflow_run.queued",
    ///    "genius_workflow_run.started",
    ///    "genius_workflow_run.completed",
    ///    "genius_workflow_run.failed",
    ///    "genius_workflow_run.canceled",
    ///    "audit_log.created"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWebhooksEndpointDataAttributesEventTypesItem {
        #[serde(rename = "incident.created")]
        IncidentCreated,
        #[serde(rename = "incident.updated")]
        IncidentUpdated,
        #[serde(rename = "incident.in_triage")]
        IncidentInTriage,
        #[serde(rename = "incident.mitigated")]
        IncidentMitigated,
        #[serde(rename = "incident.resolved")]
        IncidentResolved,
        #[serde(rename = "incident.cancelled")]
        IncidentCancelled,
        #[serde(rename = "incident.deleted")]
        IncidentDeleted,
        #[serde(rename = "incident.scheduled.created")]
        IncidentScheduledCreated,
        #[serde(rename = "incident.scheduled.updated")]
        IncidentScheduledUpdated,
        #[serde(rename = "incident.scheduled.in_progress")]
        IncidentScheduledInProgress,
        #[serde(rename = "incident.scheduled.completed")]
        IncidentScheduledCompleted,
        #[serde(rename = "incident.scheduled.deleted")]
        IncidentScheduledDeleted,
        #[serde(rename = "incident_post_mortem.created")]
        IncidentPostMortemCreated,
        #[serde(rename = "incident_post_mortem.updated")]
        IncidentPostMortemUpdated,
        #[serde(rename = "incident_post_mortem.published")]
        IncidentPostMortemPublished,
        #[serde(rename = "incident_post_mortem.deleted")]
        IncidentPostMortemDeleted,
        #[serde(rename = "incident_status_page_event.created")]
        IncidentStatusPageEventCreated,
        #[serde(rename = "incident_status_page_event.updated")]
        IncidentStatusPageEventUpdated,
        #[serde(rename = "incident_status_page_event.deleted")]
        IncidentStatusPageEventDeleted,
        #[serde(rename = "incident_event.created")]
        IncidentEventCreated,
        #[serde(rename = "incident_event.updated")]
        IncidentEventUpdated,
        #[serde(rename = "incident_event.deleted")]
        IncidentEventDeleted,
        #[serde(rename = "alert.created")]
        AlertCreated,
        #[serde(rename = "pulse.created")]
        PulseCreated,
        #[serde(rename = "shift.started")]
        ShiftStarted,
        #[serde(rename = "genius_workflow_run.queued")]
        GeniusWorkflowRunQueued,
        #[serde(rename = "genius_workflow_run.started")]
        GeniusWorkflowRunStarted,
        #[serde(rename = "genius_workflow_run.completed")]
        GeniusWorkflowRunCompleted,
        #[serde(rename = "genius_workflow_run.failed")]
        GeniusWorkflowRunFailed,
        #[serde(rename = "genius_workflow_run.canceled")]
        GeniusWorkflowRunCanceled,
        #[serde(rename = "audit_log.created")]
        AuditLogCreated,
    }
    impl ::std::fmt::Display for UpdateWebhooksEndpointDataAttributesEventTypesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCreated => f.write_str("incident.created"),
                Self::IncidentUpdated => f.write_str("incident.updated"),
                Self::IncidentInTriage => f.write_str("incident.in_triage"),
                Self::IncidentMitigated => f.write_str("incident.mitigated"),
                Self::IncidentResolved => f.write_str("incident.resolved"),
                Self::IncidentCancelled => f.write_str("incident.cancelled"),
                Self::IncidentDeleted => f.write_str("incident.deleted"),
                Self::IncidentScheduledCreated => {
                    f.write_str("incident.scheduled.created")
                }
                Self::IncidentScheduledUpdated => {
                    f.write_str("incident.scheduled.updated")
                }
                Self::IncidentScheduledInProgress => {
                    f.write_str("incident.scheduled.in_progress")
                }
                Self::IncidentScheduledCompleted => {
                    f.write_str("incident.scheduled.completed")
                }
                Self::IncidentScheduledDeleted => {
                    f.write_str("incident.scheduled.deleted")
                }
                Self::IncidentPostMortemCreated => {
                    f.write_str("incident_post_mortem.created")
                }
                Self::IncidentPostMortemUpdated => {
                    f.write_str("incident_post_mortem.updated")
                }
                Self::IncidentPostMortemPublished => {
                    f.write_str("incident_post_mortem.published")
                }
                Self::IncidentPostMortemDeleted => {
                    f.write_str("incident_post_mortem.deleted")
                }
                Self::IncidentStatusPageEventCreated => {
                    f.write_str("incident_status_page_event.created")
                }
                Self::IncidentStatusPageEventUpdated => {
                    f.write_str("incident_status_page_event.updated")
                }
                Self::IncidentStatusPageEventDeleted => {
                    f.write_str("incident_status_page_event.deleted")
                }
                Self::IncidentEventCreated => f.write_str("incident_event.created"),
                Self::IncidentEventUpdated => f.write_str("incident_event.updated"),
                Self::IncidentEventDeleted => f.write_str("incident_event.deleted"),
                Self::AlertCreated => f.write_str("alert.created"),
                Self::PulseCreated => f.write_str("pulse.created"),
                Self::ShiftStarted => f.write_str("shift.started"),
                Self::GeniusWorkflowRunQueued => {
                    f.write_str("genius_workflow_run.queued")
                }
                Self::GeniusWorkflowRunStarted => {
                    f.write_str("genius_workflow_run.started")
                }
                Self::GeniusWorkflowRunCompleted => {
                    f.write_str("genius_workflow_run.completed")
                }
                Self::GeniusWorkflowRunFailed => {
                    f.write_str("genius_workflow_run.failed")
                }
                Self::GeniusWorkflowRunCanceled => {
                    f.write_str("genius_workflow_run.canceled")
                }
                Self::AuditLogCreated => f.write_str("audit_log.created"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateWebhooksEndpointDataAttributesEventTypesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident.created" => Ok(Self::IncidentCreated),
                "incident.updated" => Ok(Self::IncidentUpdated),
                "incident.in_triage" => Ok(Self::IncidentInTriage),
                "incident.mitigated" => Ok(Self::IncidentMitigated),
                "incident.resolved" => Ok(Self::IncidentResolved),
                "incident.cancelled" => Ok(Self::IncidentCancelled),
                "incident.deleted" => Ok(Self::IncidentDeleted),
                "incident.scheduled.created" => Ok(Self::IncidentScheduledCreated),
                "incident.scheduled.updated" => Ok(Self::IncidentScheduledUpdated),
                "incident.scheduled.in_progress" => Ok(Self::IncidentScheduledInProgress),
                "incident.scheduled.completed" => Ok(Self::IncidentScheduledCompleted),
                "incident.scheduled.deleted" => Ok(Self::IncidentScheduledDeleted),
                "incident_post_mortem.created" => Ok(Self::IncidentPostMortemCreated),
                "incident_post_mortem.updated" => Ok(Self::IncidentPostMortemUpdated),
                "incident_post_mortem.published" => Ok(Self::IncidentPostMortemPublished),
                "incident_post_mortem.deleted" => Ok(Self::IncidentPostMortemDeleted),
                "incident_status_page_event.created" => {
                    Ok(Self::IncidentStatusPageEventCreated)
                }
                "incident_status_page_event.updated" => {
                    Ok(Self::IncidentStatusPageEventUpdated)
                }
                "incident_status_page_event.deleted" => {
                    Ok(Self::IncidentStatusPageEventDeleted)
                }
                "incident_event.created" => Ok(Self::IncidentEventCreated),
                "incident_event.updated" => Ok(Self::IncidentEventUpdated),
                "incident_event.deleted" => Ok(Self::IncidentEventDeleted),
                "alert.created" => Ok(Self::AlertCreated),
                "pulse.created" => Ok(Self::PulseCreated),
                "shift.started" => Ok(Self::ShiftStarted),
                "genius_workflow_run.queued" => Ok(Self::GeniusWorkflowRunQueued),
                "genius_workflow_run.started" => Ok(Self::GeniusWorkflowRunStarted),
                "genius_workflow_run.completed" => Ok(Self::GeniusWorkflowRunCompleted),
                "genius_workflow_run.failed" => Ok(Self::GeniusWorkflowRunFailed),
                "genius_workflow_run.canceled" => Ok(Self::GeniusWorkflowRunCanceled),
                "audit_log.created" => Ok(Self::AuditLogCreated),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateWebhooksEndpointDataAttributesEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWebhooksEndpointDataAttributesEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWebhooksEndpointDataAttributesEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWebhooksEndpointDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "webhooks_endpoints"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWebhooksEndpointDataType {
        #[serde(rename = "webhooks_endpoints")]
        WebhooksEndpoints,
    }
    impl ::std::fmt::Display for UpdateWebhooksEndpointDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebhooksEndpoints => f.write_str("webhooks_endpoints"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateWebhooksEndpointDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "webhooks_endpoints" => Ok(Self::WebhooksEndpoints),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWebhooksEndpointDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWebhooksEndpointDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWebhooksEndpointDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWorkflow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "cause_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "command": {
    ///              "description": "Workflow command",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "command_feedback_enabled": {
    ///              "description": "This will notify you back when the workflow is starting",
    ///              "type": [
    ///                "boolean",
    ///                "null"
    ///              ]
    ///            },
    ///            "continuously_repeat": {
    ///              "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///              "type": "boolean"
    ///            },
    ///            "description": {
    ///              "description": "The description of the workflow",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "enabled": {
    ///              "type": "boolean"
    ///            },
    ///            "environment_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "functionality_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "group_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_role_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "incident_type_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "locked": {
    ///              "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "The title of the workflow",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The order which the workflow should run with other workflows.",
    ///              "type": "integer"
    ///            },
    ///            "repeat_condition_duration_since_first_run": {
    ///              "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "repeat_condition_number_of_repeats": {
    ///              "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///              "type": "integer"
    ///            },
    ///            "repeat_every_duration": {
    ///              "description": "Repeat workflow every duration",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "service_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "severity_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "sub_status_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "type": "string"
    ///              }
    ///            },
    ///            "trigger_params": {
    ///              "oneOf": [
    ///                {
    ///                  "$ref": "#/components/schemas/incident_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/action_item_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/alert_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/pulse_trigger_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/simple_trigger_params"
    ///                }
    ///              ]
    ///            },
    ///            "wait": {
    ///              "description": "Wait this duration before executing",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "workflow_group_id": {
    ///              "description": "The group this workflow belongs to.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflows"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflow {
        pub data: UpdateWorkflowData,
    }
    impl UpdateWorkflow {
        pub fn builder() -> builder::UpdateWorkflow {
            Default::default()
        }
    }
    ///`UpdateWorkflowCustomFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "incident_condition": {
    ///              "description": "The trigger condition",
    ///              "default": "ANY",
    ///              "type": "string",
    ///              "enum": [
    ///                "IS",
    ///                "IS NOT",
    ///                "ANY",
    ///                "CONTAINS",
    ///                "CONTAINS_ALL",
    ///                "CONTAINS_NONE",
    ///                "NONE",
    ///                "SET",
    ///                "UNSET"
    ///              ]
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected option id for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "values": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value to associate with the custom field trigger",
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_custom_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowCustomFieldSelection {
        pub data: UpdateWorkflowCustomFieldSelectionData,
    }
    impl UpdateWorkflowCustomFieldSelection {
        pub fn builder() -> builder::UpdateWorkflowCustomFieldSelection {
            Default::default()
        }
    }
    ///`UpdateWorkflowCustomFieldSelectionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "incident_condition": {
    ///          "description": "The trigger condition",
    ///          "default": "ANY",
    ///          "type": "string",
    ///          "enum": [
    ///            "IS",
    ///            "IS NOT",
    ///            "ANY",
    ///            "CONTAINS",
    ///            "CONTAINS_ALL",
    ///            "CONTAINS_NONE",
    ///            "NONE",
    ///            "SET",
    ///            "UNSET"
    ///          ]
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected option id for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "values": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value to associate with the custom field trigger",
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowCustomFieldSelectionData {
        pub attributes: UpdateWorkflowCustomFieldSelectionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateWorkflowCustomFieldSelectionDataType,
    }
    impl UpdateWorkflowCustomFieldSelectionData {
        pub fn builder() -> builder::UpdateWorkflowCustomFieldSelectionData {
            Default::default()
        }
    }
    ///`UpdateWorkflowCustomFieldSelectionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "incident_condition": {
    ///      "description": "The trigger condition",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value to associate with the custom field trigger",
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateWorkflowCustomFieldSelectionDataAttributes {
        ///The trigger condition
        #[serde(
            default = "defaults::update_workflow_custom_field_selection_data_attributes_incident_condition"
        )]
        pub incident_condition: UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<i64>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateWorkflowCustomFieldSelectionDataAttributes {
        fn default() -> Self {
            Self {
                incident_condition: defaults::update_workflow_custom_field_selection_data_attributes_incident_condition(),
                selected_option_ids: Default::default(),
                values: Default::default(),
            }
        }
    }
    impl UpdateWorkflowCustomFieldSelectionDataAttributes {
        pub fn builder() -> builder::UpdateWorkflowCustomFieldSelectionDataAttributes {
            Default::default()
        }
    }
    ///The trigger condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The trigger condition",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
        fn default() -> Self {
            UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition::Any
        }
    }
    ///`UpdateWorkflowCustomFieldSelectionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowCustomFieldSelectionDataType {
        #[serde(rename = "workflow_custom_field_selections")]
        WorkflowCustomFieldSelections,
    }
    impl ::std::fmt::Display for UpdateWorkflowCustomFieldSelectionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowCustomFieldSelections => {
                    f.write_str("workflow_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateWorkflowCustomFieldSelectionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_custom_field_selections" => {
                    Ok(Self::WorkflowCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWorkflowCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWorkflowCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWorkflowCustomFieldSelectionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWorkflowData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "cause_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "command": {
    ///          "description": "Workflow command",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "command_feedback_enabled": {
    ///          "description": "This will notify you back when the workflow is starting",
    ///          "type": [
    ///            "boolean",
    ///            "null"
    ///          ]
    ///        },
    ///        "continuously_repeat": {
    ///          "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///          "type": "boolean"
    ///        },
    ///        "description": {
    ///          "description": "The description of the workflow",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "enabled": {
    ///          "type": "boolean"
    ///        },
    ///        "environment_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "functionality_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "group_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_role_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "incident_type_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "locked": {
    ///          "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "The title of the workflow",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The order which the workflow should run with other workflows.",
    ///          "type": "integer"
    ///        },
    ///        "repeat_condition_duration_since_first_run": {
    ///          "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "repeat_condition_number_of_repeats": {
    ///          "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///          "type": "integer"
    ///        },
    ///        "repeat_every_duration": {
    ///          "description": "Repeat workflow every duration",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "severity_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "sub_status_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "type": "string"
    ///          }
    ///        },
    ///        "trigger_params": {
    ///          "oneOf": [
    ///            {
    ///              "$ref": "#/components/schemas/incident_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/action_item_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/alert_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/pulse_trigger_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/simple_trigger_params"
    ///            }
    ///          ]
    ///        },
    ///        "wait": {
    ///          "description": "Wait this duration before executing",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "workflow_group_id": {
    ///          "description": "The group this workflow belongs to.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowData {
        pub attributes: UpdateWorkflowDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateWorkflowDataType,
    }
    impl UpdateWorkflowData {
        pub fn builder() -> builder::UpdateWorkflowData {
            Default::default()
        }
    }
    ///`UpdateWorkflowDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "command": {
    ///      "description": "Workflow command",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "command_feedback_enabled": {
    ///      "description": "This will notify you back when the workflow is starting",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "continuously_repeat": {
    ///      "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///      "type": "boolean"
    ///    },
    ///    "description": {
    ///      "description": "The description of the workflow",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_role_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "locked": {
    ///      "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The title of the workflow",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The order which the workflow should run with other workflows.",
    ///      "type": "integer"
    ///    },
    ///    "repeat_condition_duration_since_first_run": {
    ///      "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_condition_number_of_repeats": {
    ///      "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///      "type": "integer"
    ///    },
    ///    "repeat_every_duration": {
    ///      "description": "Repeat workflow every duration",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "sub_status_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "trigger_params": {
    ///      "oneOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/action_item_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/alert_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/pulse_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/simple_trigger_params"
    ///        }
    ///      ]
    ///    },
    ///    "wait": {
    ///      "description": "Wait this duration before executing",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "workflow_group_id": {
    ///      "description": "The group this workflow belongs to.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateWorkflowDataAttributes {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub cause_ids: ::std::vec::Vec<::std::string::String>,
        ///Workflow command
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command: ::std::option::Option<::std::string::String>,
        ///This will notify you back when the workflow is starting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command_feedback_enabled: ::std::option::Option<bool>,
        ///When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub continuously_repeat: ::std::option::Option<bool>,
        ///The description of the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_role_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_type_ids: ::std::vec::Vec<::std::string::String>,
        ///Restricts workflow edits to admins when turned on. Only admins can set this field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub locked: ::std::option::Option<bool>,
        ///The title of the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The order which the workflow should run with other workflows.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_condition_duration_since_first_run: ::std::option::Option<
            ::std::string::String,
        >,
        ///The workflow will stop repeating if the number of repeats exceeds the value set in this field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_condition_number_of_repeats: ::std::option::Option<i64>,
        ///Repeat workflow every duration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_every_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub severity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sub_status_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub trigger_params: ::std::option::Option<
            UpdateWorkflowDataAttributesTriggerParams,
        >,
        ///Wait this duration before executing
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub wait: ::std::option::Option<::std::string::String>,
        ///The group this workflow belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub workflow_group_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateWorkflowDataAttributes {
        fn default() -> Self {
            Self {
                cause_ids: Default::default(),
                command: Default::default(),
                command_feedback_enabled: Default::default(),
                continuously_repeat: Default::default(),
                description: Default::default(),
                enabled: Default::default(),
                environment_ids: Default::default(),
                functionality_ids: Default::default(),
                group_ids: Default::default(),
                incident_role_ids: Default::default(),
                incident_type_ids: Default::default(),
                locked: Default::default(),
                name: Default::default(),
                position: Default::default(),
                repeat_condition_duration_since_first_run: Default::default(),
                repeat_condition_number_of_repeats: Default::default(),
                repeat_every_duration: Default::default(),
                service_ids: Default::default(),
                severity_ids: Default::default(),
                sub_status_ids: Default::default(),
                trigger_params: Default::default(),
                wait: Default::default(),
                workflow_group_id: Default::default(),
            }
        }
    }
    impl UpdateWorkflowDataAttributes {
        pub fn builder() -> builder::UpdateWorkflowDataAttributes {
            Default::default()
        }
    }
    ///`UpdateWorkflowDataAttributesTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "$ref": "#/components/schemas/incident_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/action_item_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/alert_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/pulse_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/simple_trigger_params"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum UpdateWorkflowDataAttributesTriggerParams {
        IncidentTriggerParams(IncidentTriggerParams),
        ActionItemTriggerParams(ActionItemTriggerParams),
        AlertTriggerParams(AlertTriggerParams),
        PulseTriggerParams(PulseTriggerParams),
        SimpleTriggerParams(SimpleTriggerParams),
    }
    impl ::std::convert::From<IncidentTriggerParams>
    for UpdateWorkflowDataAttributesTriggerParams {
        fn from(value: IncidentTriggerParams) -> Self {
            Self::IncidentTriggerParams(value)
        }
    }
    impl ::std::convert::From<ActionItemTriggerParams>
    for UpdateWorkflowDataAttributesTriggerParams {
        fn from(value: ActionItemTriggerParams) -> Self {
            Self::ActionItemTriggerParams(value)
        }
    }
    impl ::std::convert::From<AlertTriggerParams>
    for UpdateWorkflowDataAttributesTriggerParams {
        fn from(value: AlertTriggerParams) -> Self {
            Self::AlertTriggerParams(value)
        }
    }
    impl ::std::convert::From<PulseTriggerParams>
    for UpdateWorkflowDataAttributesTriggerParams {
        fn from(value: PulseTriggerParams) -> Self {
            Self::PulseTriggerParams(value)
        }
    }
    impl ::std::convert::From<SimpleTriggerParams>
    for UpdateWorkflowDataAttributesTriggerParams {
        fn from(value: SimpleTriggerParams) -> Self {
            Self::SimpleTriggerParams(value)
        }
    }
    ///`UpdateWorkflowDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowDataType {
        #[serde(rename = "workflows")]
        Workflows,
    }
    impl ::std::fmt::Display for UpdateWorkflowDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Workflows => f.write_str("workflows"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateWorkflowDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflows" => Ok(Self::Workflows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWorkflowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateWorkflowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateWorkflowDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWorkflowFormFieldCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "incident_condition": {
    ///              "description": "The trigger condition",
    ///              "default": "ANY",
    ///              "type": "string",
    ///              "enum": [
    ///                "IS",
    ///                "IS NOT",
    ///                "ANY",
    ///                "CONTAINS",
    ///                "CONTAINS_ALL",
    ///                "CONTAINS_NONE",
    ///                "NONE",
    ///                "SET",
    ///                "UNSET"
    ///              ]
    ///            },
    ///            "selected_catalog_entity_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected catalog entities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_cause_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected causes for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_environment_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected environments for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_functionality_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected functionalities for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_group_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected groups (teams) for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_incident_type_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected incident types for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_option_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected option id for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_service_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected services for select and multi_select kinds",
    ///                "type": "string"
    ///              }
    ///            },
    ///            "selected_user_ids": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The selected user id for select and multi_select kinds",
    ///                "type": "integer"
    ///              }
    ///            },
    ///            "values": {
    ///              "type": "array",
    ///              "items": {
    ///                "description": "The value to associate with the custom field trigger",
    ///                "type": "string"
    ///              }
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_form_field_conditions"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowFormFieldCondition {
        pub data: UpdateWorkflowFormFieldConditionData,
    }
    impl UpdateWorkflowFormFieldCondition {
        pub fn builder() -> builder::UpdateWorkflowFormFieldCondition {
            Default::default()
        }
    }
    ///`UpdateWorkflowFormFieldConditionData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "incident_condition": {
    ///          "description": "The trigger condition",
    ///          "default": "ANY",
    ///          "type": "string",
    ///          "enum": [
    ///            "IS",
    ///            "IS NOT",
    ///            "ANY",
    ///            "CONTAINS",
    ///            "CONTAINS_ALL",
    ///            "CONTAINS_NONE",
    ///            "NONE",
    ///            "SET",
    ///            "UNSET"
    ///          ]
    ///        },
    ///        "selected_catalog_entity_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected catalog entities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_cause_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected causes for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_environment_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected environments for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_functionality_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected functionalities for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_group_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected groups (teams) for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_incident_type_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected incident types for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_option_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected option id for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_service_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected services for select and multi_select kinds",
    ///            "type": "string"
    ///          }
    ///        },
    ///        "selected_user_ids": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The selected user id for select and multi_select kinds",
    ///            "type": "integer"
    ///          }
    ///        },
    ///        "values": {
    ///          "type": "array",
    ///          "items": {
    ///            "description": "The value to associate with the custom field trigger",
    ///            "type": "string"
    ///          }
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_form_field_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowFormFieldConditionData {
        pub attributes: UpdateWorkflowFormFieldConditionDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateWorkflowFormFieldConditionDataType,
    }
    impl UpdateWorkflowFormFieldConditionData {
        pub fn builder() -> builder::UpdateWorkflowFormFieldConditionData {
            Default::default()
        }
    }
    ///`UpdateWorkflowFormFieldConditionDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "incident_condition": {
    ///      "description": "The trigger condition",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected catalog entities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected causes for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected environments for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected functionalities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected groups (teams) for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected incident types for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected services for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected user id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value to associate with the custom field trigger",
    ///        "type": "string"
    ///      }
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateWorkflowFormFieldConditionDataAttributes {
        ///The trigger condition
        #[serde(
            default = "defaults::update_workflow_form_field_condition_data_attributes_incident_condition"
        )]
        pub incident_condition: UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_user_ids: ::std::vec::Vec<i64>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
    }
    impl ::std::default::Default for UpdateWorkflowFormFieldConditionDataAttributes {
        fn default() -> Self {
            Self {
                incident_condition: defaults::update_workflow_form_field_condition_data_attributes_incident_condition(),
                selected_catalog_entity_ids: Default::default(),
                selected_cause_ids: Default::default(),
                selected_environment_ids: Default::default(),
                selected_functionality_ids: Default::default(),
                selected_group_ids: Default::default(),
                selected_incident_type_ids: Default::default(),
                selected_option_ids: Default::default(),
                selected_service_ids: Default::default(),
                selected_user_ids: Default::default(),
                values: Default::default(),
            }
        }
    }
    impl UpdateWorkflowFormFieldConditionDataAttributes {
        pub fn builder() -> builder::UpdateWorkflowFormFieldConditionDataAttributes {
            Default::default()
        }
    }
    ///The trigger condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The trigger condition",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display
    for UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr
    for UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default
    for UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
        fn default() -> Self {
            UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition::Any
        }
    }
    ///`UpdateWorkflowFormFieldConditionDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_form_field_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowFormFieldConditionDataType {
        #[serde(rename = "workflow_form_field_conditions")]
        WorkflowFormFieldConditions,
    }
    impl ::std::fmt::Display for UpdateWorkflowFormFieldConditionDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowFormFieldConditions => {
                    f.write_str("workflow_form_field_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for UpdateWorkflowFormFieldConditionDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_form_field_conditions" => Ok(Self::WorkflowFormFieldConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWorkflowFormFieldConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWorkflowFormFieldConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWorkflowFormFieldConditionDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWorkflowGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "description": {
    ///              "description": "A description of the workflow group.",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ]
    ///            },
    ///            "expanded": {
    ///              "description": "Whether the group is expanded or collapsed.",
    ///              "type": "boolean"
    ///            },
    ///            "icon": {
    ///              "description": "An emoji icon displayed next to the workflow group.",
    ///              "type": "string"
    ///            },
    ///            "kind": {
    ///              "description": "The kind of the workflow group",
    ///              "type": [
    ///                "string",
    ///                "null"
    ///              ],
    ///              "enum": [
    ///                "simple",
    ///                "incident",
    ///                "post_mortem",
    ///                "action_item",
    ///                "pulse",
    ///                "alert"
    ///              ]
    ///            },
    ///            "name": {
    ///              "description": "The name of the workflow group.",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the workflow group",
    ///              "type": "integer"
    ///            }
    ///          }
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_groups"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowGroup {
        pub data: UpdateWorkflowGroupData,
    }
    impl UpdateWorkflowGroup {
        pub fn builder() -> builder::UpdateWorkflowGroup {
            Default::default()
        }
    }
    ///`UpdateWorkflowGroupData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "description": {
    ///          "description": "A description of the workflow group.",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ]
    ///        },
    ///        "expanded": {
    ///          "description": "Whether the group is expanded or collapsed.",
    ///          "type": "boolean"
    ///        },
    ///        "icon": {
    ///          "description": "An emoji icon displayed next to the workflow group.",
    ///          "type": "string"
    ///        },
    ///        "kind": {
    ///          "description": "The kind of the workflow group",
    ///          "type": [
    ///            "string",
    ///            "null"
    ///          ],
    ///          "enum": [
    ///            "simple",
    ///            "incident",
    ///            "post_mortem",
    ///            "action_item",
    ///            "pulse",
    ///            "alert"
    ///          ]
    ///        },
    ///        "name": {
    ///          "description": "The name of the workflow group.",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the workflow group",
    ///          "type": "integer"
    ///        }
    ///      }
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowGroupData {
        pub attributes: UpdateWorkflowGroupDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateWorkflowGroupDataType,
    }
    impl UpdateWorkflowGroupData {
        pub fn builder() -> builder::UpdateWorkflowGroupData {
            Default::default()
        }
    }
    ///`UpdateWorkflowGroupDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "description": {
    ///      "description": "A description of the workflow group.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "expanded": {
    ///      "description": "Whether the group is expanded or collapsed.",
    ///      "type": "boolean"
    ///    },
    ///    "icon": {
    ///      "description": "An emoji icon displayed next to the workflow group.",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the workflow group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "simple",
    ///        "incident",
    ///        "post_mortem",
    ///        "action_item",
    ///        "pulse",
    ///        "alert"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the workflow group.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the workflow group",
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowGroupDataAttributes {
        ///A description of the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the group is expanded or collapsed.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expanded: ::std::option::Option<bool>,
        ///An emoji icon displayed next to the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<::std::string::String>,
        ///The kind of the workflow group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<UpdateWorkflowGroupDataAttributesKind>,
        ///The name of the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The position of the workflow group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UpdateWorkflowGroupDataAttributes {
        fn default() -> Self {
            Self {
                description: Default::default(),
                expanded: Default::default(),
                icon: Default::default(),
                kind: Default::default(),
                name: Default::default(),
                position: Default::default(),
            }
        }
    }
    impl UpdateWorkflowGroupDataAttributes {
        pub fn builder() -> builder::UpdateWorkflowGroupDataAttributes {
            Default::default()
        }
    }
    ///The kind of the workflow group
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the workflow group",
    ///  "type": "string",
    ///  "enum": [
    ///    "simple",
    ///    "incident",
    ///    "post_mortem",
    ///    "action_item",
    ///    "pulse",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowGroupDataAttributesKind {
        #[serde(rename = "simple")]
        Simple,
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "post_mortem")]
        PostMortem,
        #[serde(rename = "action_item")]
        ActionItem,
        #[serde(rename = "pulse")]
        Pulse,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display for UpdateWorkflowGroupDataAttributesKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Simple => f.write_str("simple"),
                Self::Incident => f.write_str("incident"),
                Self::PostMortem => f.write_str("post_mortem"),
                Self::ActionItem => f.write_str("action_item"),
                Self::Pulse => f.write_str("pulse"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateWorkflowGroupDataAttributesKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "simple" => Ok(Self::Simple),
                "incident" => Ok(Self::Incident),
                "post_mortem" => Ok(Self::PostMortem),
                "action_item" => Ok(Self::ActionItem),
                "pulse" => Ok(Self::Pulse),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWorkflowGroupDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWorkflowGroupDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateWorkflowGroupDataAttributesKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWorkflowGroupDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowGroupDataType {
        #[serde(rename = "workflow_groups")]
        WorkflowGroups,
    }
    impl ::std::fmt::Display for UpdateWorkflowGroupDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowGroups => f.write_str("workflow_groups"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateWorkflowGroupDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_groups" => Ok(Self::WorkflowGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWorkflowGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateWorkflowGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateWorkflowGroupDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateWorkflowTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "properties": {
    ///            "enabled": {
    ///              "description": "Enable/disable workflow task",
    ///              "default": true,
    ///              "type": "boolean"
    ///            },
    ///            "name": {
    ///              "description": "Name of the workflow task",
    ///              "type": "string"
    ///            },
    ///            "position": {
    ///              "description": "The position of the workflow task",
    ///              "type": "integer"
    ///            },
    ///            "skip_on_failure": {
    ///              "description": "Skip workflow task if any failures",
    ///              "type": "boolean"
    ///            },
    ///            "task_params": {
    ///              "anyOf": [
    ///                {
    ///                  "$ref": "#/components/schemas/add_action_item_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_action_item_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_role_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_team_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/call_people_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_asana_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_coda_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_github_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_coda_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_quip_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_notion_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_notion_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_quip_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_trello_card_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_motion_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_github_commits_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_pulses_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/get_alerts_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/http_client_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/print_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/publish_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/redis_client_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_email_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_slack_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_sms_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_asana_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_github_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_status_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_trello_card_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_motion_task_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///                },
    ///                {
    ///                  "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///                }
    ///              ]
    ///            }
    ///          },
    ///          "additionalProperties": false
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_tasks"
    ///          ]
    ///        }
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowTask {
        pub data: UpdateWorkflowTaskData,
    }
    impl UpdateWorkflowTask {
        pub fn builder() -> builder::UpdateWorkflowTask {
            Default::default()
        }
    }
    ///`UpdateWorkflowTaskData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "properties": {
    ///        "enabled": {
    ///          "description": "Enable/disable workflow task",
    ///          "default": true,
    ///          "type": "boolean"
    ///        },
    ///        "name": {
    ///          "description": "Name of the workflow task",
    ///          "type": "string"
    ///        },
    ///        "position": {
    ///          "description": "The position of the workflow task",
    ///          "type": "integer"
    ///        },
    ///        "skip_on_failure": {
    ///          "description": "Skip workflow task if any failures",
    ///          "type": "boolean"
    ///        },
    ///        "task_params": {
    ///          "anyOf": [
    ///            {
    ///              "$ref": "#/components/schemas/add_action_item_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_action_item_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_role_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_team_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/call_people_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_asana_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_coda_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_github_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_coda_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_quip_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_notion_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_notion_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_quip_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_trello_card_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_motion_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_github_commits_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_pulses_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/get_alerts_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/http_client_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/print_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/publish_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/redis_client_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_email_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_slack_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_sms_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_asana_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_github_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_status_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_trello_card_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_motion_task_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///            },
    ///            {
    ///              "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///            }
    ///          ]
    ///        }
    ///      },
    ///      "additionalProperties": false
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowTaskData {
        pub attributes: UpdateWorkflowTaskDataAttributes,
        #[serde(rename = "type")]
        pub type_: UpdateWorkflowTaskDataType,
    }
    impl UpdateWorkflowTaskData {
        pub fn builder() -> builder::UpdateWorkflowTaskData {
            Default::default()
        }
    }
    ///`UpdateWorkflowTaskDataAttributes`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "enabled": {
    ///      "description": "Enable/disable workflow task",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "Name of the workflow task",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the workflow task",
    ///      "type": "integer"
    ///    },
    ///    "skip_on_failure": {
    ///      "description": "Skip workflow task if any failures",
    ///      "type": "boolean"
    ///    },
    ///    "task_params": {
    ///      "anyOf": [
    ///        {
    ///          "$ref": "#/components/schemas/add_action_item_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_action_item_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_role_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_team_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/call_people_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_asana_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_coda_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_github_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_coda_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_quip_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_notion_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_notion_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_quip_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_trello_card_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_motion_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_github_commits_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_pulses_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_alerts_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/http_client_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/print_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/publish_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/redis_client_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_email_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_slack_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_sms_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_asana_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_github_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_status_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_trello_card_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_motion_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///        }
    ///      ]
    ///    }
    ///  },
    ///  "additionalProperties": false
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(deny_unknown_fields)]
    pub struct UpdateWorkflowTaskDataAttributes {
        ///Enable/disable workflow task
        #[serde(default = "defaults::default_bool::<true>")]
        pub enabled: bool,
        ///Name of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The position of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Skip workflow task if any failures
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub skip_on_failure: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_params: ::std::option::Option<
            UpdateWorkflowTaskDataAttributesTaskParams,
        >,
    }
    impl ::std::default::Default for UpdateWorkflowTaskDataAttributes {
        fn default() -> Self {
            Self {
                enabled: defaults::default_bool::<true>(),
                name: Default::default(),
                position: Default::default(),
                skip_on_failure: Default::default(),
                task_params: Default::default(),
            }
        }
    }
    impl UpdateWorkflowTaskDataAttributes {
        pub fn builder() -> builder::UpdateWorkflowTaskDataAttributes {
            Default::default()
        }
    }
    ///`UpdateWorkflowTaskDataAttributesTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "anyOf": [
    ///    {
    ///      "$ref": "#/components/schemas/add_action_item_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_action_item_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_role_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_team_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/call_people_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_asana_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_coda_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_github_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_coda_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_quip_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_notion_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_notion_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_quip_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_trello_card_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_motion_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_github_commits_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_pulses_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_alerts_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/http_client_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/print_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/publish_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/redis_client_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_email_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_slack_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_sms_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_asana_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_github_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_status_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_trello_card_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_motion_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateWorkflowTaskDataAttributesTaskParams {
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_0: ::std::option::Option<AddActionItemTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_1: ::std::option::Option<UpdateActionItemTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_2: ::std::option::Option<AddRoleTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_3: ::std::option::Option<AddSlackBookmarkTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_4: ::std::option::Option<AddTeamTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_5: ::std::option::Option<AddToTimelineTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_6: ::std::option::Option<ArchiveSlackChannelsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_7: ::std::option::Option<AttachDatadogDashboardsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_8: ::std::option::Option<AutoAssignRoleOpsgenieTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_9: ::std::option::Option<AutoAssignRoleRootlyTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_10: ::std::option::Option<AutoAssignRolePagerdutyTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_11: ::std::option::Option<UpdatePagerdutyIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_12: ::std::option::Option<CreatePagerdutyStatusUpdateTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_13: ::std::option::Option<CreatePagertreeAlertTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_14: ::std::option::Option<UpdatePagertreeAlertTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_15: ::std::option::Option<AutoAssignRoleVictorOpsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_16: ::std::option::Option<CallPeopleTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_17: ::std::option::Option<CreateAirtableTableRecordTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_18: ::std::option::Option<CreateAsanaSubtaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_19: ::std::option::Option<CreateAsanaTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_20: ::std::option::Option<CreateConfluencePageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_21: ::std::option::Option<CreateDatadogNotebookTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_22: ::std::option::Option<CreateCodaPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_23: ::std::option::Option<CreateDropboxPaperPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_24: ::std::option::Option<CreateGithubIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_25: ::std::option::Option<CreateGitlabIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_26: ::std::option::Option<CreateOutlookEventTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_27: ::std::option::Option<CreateGoogleCalendarEventTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_28: ::std::option::Option<UpdateGoogleDocsPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_29: ::std::option::Option<UpdateCodaPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_30: ::std::option::Option<UpdateGoogleCalendarEventTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_31: ::std::option::Option<CreateSharepointPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_32: ::std::option::Option<CreateGoogleDocsPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_33: ::std::option::Option<CreateGoogleDocsPermissionsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_34: ::std::option::Option<RemoveGoogleDocsPermissionsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_35: ::std::option::Option<CreateQuipPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_36: ::std::option::Option<CreateGoogleMeetingTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_37: ::std::option::Option<CreateGoToMeetingTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_38: ::std::option::Option<CreateIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_39: ::std::option::Option<CreateSubIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_40: ::std::option::Option<CreateIncidentPostmortemTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_41: ::std::option::Option<CreateJiraIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_42: ::std::option::Option<CreateJiraSubtaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_43: ::std::option::Option<CreateLinearIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_44: ::std::option::Option<CreateLinearSubtaskIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_45: ::std::option::Option<CreateLinearIssueCommentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_46: ::std::option::Option<CreateMicrosoftTeamsMeetingTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_47: ::std::option::Option<CreateMicrosoftTeamsChannelTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_48: ::std::option::Option<CreateMicrosoftTeamsChatTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_49: ::std::option::Option<AddMicrosoftTeamsTabTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_50: ::std::option::Option<AddMicrosoftTeamsChatTabTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_51: ::std::option::Option<CreateGoogleChatSpaceTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_52: ::std::option::Option<SendGoogleChatMessageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_53: ::std::option::Option<SendGoogleChatAttachmentsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_54: ::std::option::Option<InviteToGoogleChatSpaceTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_55: ::std::option::Option<ArchiveGoogleChatSpacesTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_56: ::std::option::Option<RenameGoogleChatSpaceTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_57: ::std::option::Option<
            UpdateGoogleChatSpaceDescriptionTaskParams,
        >,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_58: ::std::option::Option<ChangeGoogleChatSpacePrivacyTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_59: ::std::option::Option<ArchiveMicrosoftTeamsChannelsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_60: ::std::option::Option<RenameMicrosoftTeamsChannelTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_61: ::std::option::Option<InviteToMicrosoftTeamsChannelTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_62: ::std::option::Option<CreateNotionPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_63: ::std::option::Option<SendMicrosoftTeamsMessageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_64: ::std::option::Option<SendMicrosoftTeamsChatMessageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_65: ::std::option::Option<SendMicrosoftTeamsBlocksTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_66: ::std::option::Option<UpdateNotionPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_67: ::std::option::Option<UpdateQuipPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_68: ::std::option::Option<UpdateConfluencePageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_69: ::std::option::Option<UpdateSharepointPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_70: ::std::option::Option<UpdateDropboxPaperPageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_71: ::std::option::Option<UpdateDatadogNotebookTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_72: ::std::option::Option<CreateServiceNowIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_73: ::std::option::Option<CreateShortcutStoryTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_74: ::std::option::Option<CreateShortcutTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_75: ::std::option::Option<CreateTrelloCardTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_76: ::std::option::Option<CreateWebexMeetingTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_77: ::std::option::Option<CreateZendeskTicketTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_78: ::std::option::Option<CreateZendeskJiraLinkTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_79: ::std::option::Option<CreateClickupTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_80: ::std::option::Option<CreateMotionTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_81: ::std::option::Option<CreateZoomMeetingTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_82: ::std::option::Option<GetGithubCommitsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_83: ::std::option::Option<GetGitlabCommitsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_84: ::std::option::Option<GetPulsesTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_85: ::std::option::Option<GetAlertsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_86: ::std::option::Option<HttpClientTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_87: ::std::option::Option<InviteToSlackChannelOpsgenieTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_88: ::std::option::Option<InviteToSlackChannelRootlyTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_89: ::std::option::Option<InviteToSlackChannelPagerdutyTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_90: ::std::option::Option<InviteToSlackChannelTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_91: ::std::option::Option<InviteToSlackChannelVictorOpsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_92: ::std::option::Option<PageOpsgenieOnCallRespondersTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_93: ::std::option::Option<CreateOpsgenieAlertTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_94: ::std::option::Option<CreateJsmopsAlertTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_95: ::std::option::Option<PageJsmopsOnCallRespondersTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_96: ::std::option::Option<UpdateOpsgenieAlertTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_97: ::std::option::Option<UpdateOpsgenieIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_98: ::std::option::Option<PageRootlyOnCallRespondersTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_99: ::std::option::Option<PagePagerdutyOnCallRespondersTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_100: ::std::option::Option<PageVictorOpsOnCallRespondersTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_101: ::std::option::Option<UpdateVictorOpsIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_102: ::std::option::Option<PrintTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_103: ::std::option::Option<PublishIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_104: ::std::option::Option<RedisClientTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_105: ::std::option::Option<RenameSlackChannelTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_106: ::std::option::Option<ChangeSlackChannelPrivacyTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_107: ::std::option::Option<RunCommandHerokuTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_108: ::std::option::Option<SendEmailTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_109: ::std::option::Option<SendDashboardReportTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_110: ::std::option::Option<CreateSlackChannelTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_111: ::std::option::Option<SendSlackMessageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_112: ::std::option::Option<SendSmsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_113: ::std::option::Option<SendWhatsappMessageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_114: ::std::option::Option<SnapshotDatadogGraphTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_115: ::std::option::Option<SnapshotGrafanaDashboardTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_116: ::std::option::Option<SnapshotLookerLookTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_117: ::std::option::Option<SnapshotNewRelicGraphTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_118: ::std::option::Option<TweetTwitterMessageTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_119: ::std::option::Option<UpdateAirtableTableRecordTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_120: ::std::option::Option<UpdateAsanaTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_121: ::std::option::Option<UpdateGithubIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_122: ::std::option::Option<UpdateGitlabIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_123: ::std::option::Option<UpdateIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_124: ::std::option::Option<UpdateIncidentPostmortemTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_125: ::std::option::Option<UpdateJiraIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_126: ::std::option::Option<UpdateLinearIssueTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_127: ::std::option::Option<UpdateServiceNowIncidentTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_128: ::std::option::Option<UpdateShortcutStoryTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_129: ::std::option::Option<UpdateShortcutTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_130: ::std::option::Option<UpdateSlackChannelTopicTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_131: ::std::option::Option<UpdateStatusTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_132: ::std::option::Option<UpdateIncidentStatusTimestampTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_133: ::std::option::Option<UpdateTrelloCardTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_134: ::std::option::Option<UpdateClickupTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_135: ::std::option::Option<UpdateMotionTaskTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_136: ::std::option::Option<UpdateZendeskTicketTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_137: ::std::option::Option<UpdateAttachedAlertsTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_138: ::std::option::Option<TriggerWorkflowTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_139: ::std::option::Option<SendSlackBlocksTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_140: ::std::option::Option<CreateOpenaiChatCompletionTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_141: ::std::option::Option<CreateWatsonxChatCompletionTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_142: ::std::option::Option<
            CreateGoogleGeminiChatCompletionTaskParams,
        >,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_143: ::std::option::Option<CreateMistralChatCompletionTaskParams>,
        #[serde(
            flatten,
            default,
            skip_serializing_if = "::std::option::Option::is_none"
        )]
        pub subtype_144: ::std::option::Option<CreateAnthropicChatCompletionTaskParams>,
    }
    impl ::std::default::Default for UpdateWorkflowTaskDataAttributesTaskParams {
        fn default() -> Self {
            Self {
                subtype_0: Default::default(),
                subtype_1: Default::default(),
                subtype_2: Default::default(),
                subtype_3: Default::default(),
                subtype_4: Default::default(),
                subtype_5: Default::default(),
                subtype_6: Default::default(),
                subtype_7: Default::default(),
                subtype_8: Default::default(),
                subtype_9: Default::default(),
                subtype_10: Default::default(),
                subtype_11: Default::default(),
                subtype_12: Default::default(),
                subtype_13: Default::default(),
                subtype_14: Default::default(),
                subtype_15: Default::default(),
                subtype_16: Default::default(),
                subtype_17: Default::default(),
                subtype_18: Default::default(),
                subtype_19: Default::default(),
                subtype_20: Default::default(),
                subtype_21: Default::default(),
                subtype_22: Default::default(),
                subtype_23: Default::default(),
                subtype_24: Default::default(),
                subtype_25: Default::default(),
                subtype_26: Default::default(),
                subtype_27: Default::default(),
                subtype_28: Default::default(),
                subtype_29: Default::default(),
                subtype_30: Default::default(),
                subtype_31: Default::default(),
                subtype_32: Default::default(),
                subtype_33: Default::default(),
                subtype_34: Default::default(),
                subtype_35: Default::default(),
                subtype_36: Default::default(),
                subtype_37: Default::default(),
                subtype_38: Default::default(),
                subtype_39: Default::default(),
                subtype_40: Default::default(),
                subtype_41: Default::default(),
                subtype_42: Default::default(),
                subtype_43: Default::default(),
                subtype_44: Default::default(),
                subtype_45: Default::default(),
                subtype_46: Default::default(),
                subtype_47: Default::default(),
                subtype_48: Default::default(),
                subtype_49: Default::default(),
                subtype_50: Default::default(),
                subtype_51: Default::default(),
                subtype_52: Default::default(),
                subtype_53: Default::default(),
                subtype_54: Default::default(),
                subtype_55: Default::default(),
                subtype_56: Default::default(),
                subtype_57: Default::default(),
                subtype_58: Default::default(),
                subtype_59: Default::default(),
                subtype_60: Default::default(),
                subtype_61: Default::default(),
                subtype_62: Default::default(),
                subtype_63: Default::default(),
                subtype_64: Default::default(),
                subtype_65: Default::default(),
                subtype_66: Default::default(),
                subtype_67: Default::default(),
                subtype_68: Default::default(),
                subtype_69: Default::default(),
                subtype_70: Default::default(),
                subtype_71: Default::default(),
                subtype_72: Default::default(),
                subtype_73: Default::default(),
                subtype_74: Default::default(),
                subtype_75: Default::default(),
                subtype_76: Default::default(),
                subtype_77: Default::default(),
                subtype_78: Default::default(),
                subtype_79: Default::default(),
                subtype_80: Default::default(),
                subtype_81: Default::default(),
                subtype_82: Default::default(),
                subtype_83: Default::default(),
                subtype_84: Default::default(),
                subtype_85: Default::default(),
                subtype_86: Default::default(),
                subtype_87: Default::default(),
                subtype_88: Default::default(),
                subtype_89: Default::default(),
                subtype_90: Default::default(),
                subtype_91: Default::default(),
                subtype_92: Default::default(),
                subtype_93: Default::default(),
                subtype_94: Default::default(),
                subtype_95: Default::default(),
                subtype_96: Default::default(),
                subtype_97: Default::default(),
                subtype_98: Default::default(),
                subtype_99: Default::default(),
                subtype_100: Default::default(),
                subtype_101: Default::default(),
                subtype_102: Default::default(),
                subtype_103: Default::default(),
                subtype_104: Default::default(),
                subtype_105: Default::default(),
                subtype_106: Default::default(),
                subtype_107: Default::default(),
                subtype_108: Default::default(),
                subtype_109: Default::default(),
                subtype_110: Default::default(),
                subtype_111: Default::default(),
                subtype_112: Default::default(),
                subtype_113: Default::default(),
                subtype_114: Default::default(),
                subtype_115: Default::default(),
                subtype_116: Default::default(),
                subtype_117: Default::default(),
                subtype_118: Default::default(),
                subtype_119: Default::default(),
                subtype_120: Default::default(),
                subtype_121: Default::default(),
                subtype_122: Default::default(),
                subtype_123: Default::default(),
                subtype_124: Default::default(),
                subtype_125: Default::default(),
                subtype_126: Default::default(),
                subtype_127: Default::default(),
                subtype_128: Default::default(),
                subtype_129: Default::default(),
                subtype_130: Default::default(),
                subtype_131: Default::default(),
                subtype_132: Default::default(),
                subtype_133: Default::default(),
                subtype_134: Default::default(),
                subtype_135: Default::default(),
                subtype_136: Default::default(),
                subtype_137: Default::default(),
                subtype_138: Default::default(),
                subtype_139: Default::default(),
                subtype_140: Default::default(),
                subtype_141: Default::default(),
                subtype_142: Default::default(),
                subtype_143: Default::default(),
                subtype_144: Default::default(),
            }
        }
    }
    impl UpdateWorkflowTaskDataAttributesTaskParams {
        pub fn builder() -> builder::UpdateWorkflowTaskDataAttributesTaskParams {
            Default::default()
        }
    }
    ///`UpdateWorkflowTaskDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateWorkflowTaskDataType {
        #[serde(rename = "workflow_tasks")]
        WorkflowTasks,
    }
    impl ::std::fmt::Display for UpdateWorkflowTaskDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowTasks => f.write_str("workflow_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateWorkflowTaskDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_tasks" => Ok(Self::WorkflowTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateWorkflowTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UpdateWorkflowTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UpdateWorkflowTaskDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UpdateZendeskTicketTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "ticket_id"
    ///  ],
    ///  "properties": {
    ///    "completion": {
    ///      "description": "The completion id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "custom_fields_mapping": {
    ///      "description": "Custom field mappings. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "priority": {
    ///      "description": "The priority id and display name",
    ///      "type": "object",
    ///      "properties": {
    ///        "id": {
    ///          "type": "string"
    ///        },
    ///        "name": {
    ///          "type": "string"
    ///        }
    ///      }
    ///    },
    ///    "subject": {
    ///      "description": "The ticket subject",
    ///      "type": "string"
    ///    },
    ///    "tags": {
    ///      "description": "The ticket tags",
    ///      "type": "string"
    ///    },
    ///    "task_type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "update_zendesk_ticket"
    ///      ]
    ///    },
    ///    "ticket_id": {
    ///      "description": "The ticket id",
    ///      "type": "string"
    ///    },
    ///    "ticket_payload": {
    ///      "description": "Additional Zendesk ticket attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateZendeskTicketTaskParams {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completion: ::std::option::Option<UpdateZendeskTicketTaskParamsCompletion>,
        ///Custom field mappings. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub custom_fields_mapping: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub priority: ::std::option::Option<UpdateZendeskTicketTaskParamsPriority>,
        ///The ticket subject
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub subject: ::std::option::Option<::std::string::String>,
        ///The ticket tags
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub tags: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub task_type: ::std::option::Option<UpdateZendeskTicketTaskParamsTaskType>,
        ///The ticket id
        pub ticket_id: ::std::string::String,
        ///Additional Zendesk ticket attributes. Will be merged into whatever was specified in this tasks current parameters. Can contain liquid markup and need to be valid JSON
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub ticket_payload: ::std::option::Option<::std::string::String>,
    }
    impl UpdateZendeskTicketTaskParams {
        pub fn builder() -> builder::UpdateZendeskTicketTaskParams {
            Default::default()
        }
    }
    ///The completion id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The completion id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateZendeskTicketTaskParamsCompletion {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateZendeskTicketTaskParamsCompletion {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateZendeskTicketTaskParamsCompletion {
        pub fn builder() -> builder::UpdateZendeskTicketTaskParamsCompletion {
            Default::default()
        }
    }
    ///The priority id and display name
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The priority id and display name",
    ///  "type": "object",
    ///  "properties": {
    ///    "id": {
    ///      "type": "string"
    ///    },
    ///    "name": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UpdateZendeskTicketTaskParamsPriority {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UpdateZendeskTicketTaskParamsPriority {
        fn default() -> Self {
            Self {
                id: Default::default(),
                name: Default::default(),
            }
        }
    }
    impl UpdateZendeskTicketTaskParamsPriority {
        pub fn builder() -> builder::UpdateZendeskTicketTaskParamsPriority {
            Default::default()
        }
    }
    ///`UpdateZendeskTicketTaskParamsTaskType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "update_zendesk_ticket"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UpdateZendeskTicketTaskParamsTaskType {
        #[serde(rename = "update_zendesk_ticket")]
        UpdateZendeskTicket,
    }
    impl ::std::fmt::Display for UpdateZendeskTicketTaskParamsTaskType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UpdateZendeskTicket => f.write_str("update_zendesk_ticket"),
            }
        }
    }
    impl ::std::str::FromStr for UpdateZendeskTicketTaskParamsTaskType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "update_zendesk_ticket" => Ok(Self::UpdateZendeskTicket),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UpdateZendeskTicketTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UpdateZendeskTicketTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UpdateZendeskTicketTaskParamsTaskType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UptimeChartResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UptimeChartResponse {
        pub data: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
    }
    impl UptimeChartResponse {
        pub fn builder() -> builder::UptimeChartResponse {
            Default::default()
        }
    }
    ///`User`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "email",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "email": {
    ///      "description": "The email of the user",
    ///      "type": "string"
    ///    },
    ///    "first_name": {
    ///      "description": "First name of the user",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "full_name": {
    ///      "description": "The full name of the user",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "full_name_with_team": {
    ///      "description": "The full name with team of the user",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "last_name": {
    ///      "description": "Last name of the user",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "Configured time zone",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct User {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The email of the user
        pub email: ::std::string::String,
        ///First name of the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub first_name: ::std::option::Option<::std::string::String>,
        ///The full name of the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub full_name: ::std::option::Option<::std::string::String>,
        ///The full name with team of the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub full_name_with_team: ::std::option::Option<::std::string::String>,
        ///Last name of the user
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_name: ::std::option::Option<::std::string::String>,
        ///Configured time zone
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl User {
        pub fn builder() -> builder::User {
            Default::default()
        }
    }
    ///`UserEmailAddress`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "email": {
    ///      "description": "Email address",
    ///      "type": "string"
    ///    },
    ///    "primary": {
    ///      "description": "Whether this is the primary email address",
    ///      "type": "boolean"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "type": "integer"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserEmailAddress {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Email address
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub email: ::std::option::Option<::std::string::String>,
        ///Whether this is the primary email address
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub primary: ::std::option::Option<bool>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
    }
    impl ::std::default::Default for UserEmailAddress {
        fn default() -> Self {
            Self {
                created_at: Default::default(),
                email: Default::default(),
                primary: Default::default(),
                updated_at: Default::default(),
                user_id: Default::default(),
            }
        }
    }
    impl UserEmailAddress {
        pub fn builder() -> builder::UserEmailAddress {
            Default::default()
        }
    }
    ///`UserEmailAddressList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/user_email_address"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the email address",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "user_email_addresses"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserEmailAddressList {
        pub data: ::std::vec::Vec<UserEmailAddressListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl UserEmailAddressList {
        pub fn builder() -> builder::UserEmailAddressList {
            Default::default()
        }
    }
    ///`UserEmailAddressListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_email_address"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the email address",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_email_addresses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserEmailAddressListDataItem {
        pub attributes: UserEmailAddress,
        ///Unique ID of the email address
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: UserEmailAddressListDataItemType,
    }
    impl UserEmailAddressListDataItem {
        pub fn builder() -> builder::UserEmailAddressListDataItem {
            Default::default()
        }
    }
    ///`UserEmailAddressListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_email_addresses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserEmailAddressListDataItemType {
        #[serde(rename = "user_email_addresses")]
        UserEmailAddresses,
    }
    impl ::std::fmt::Display for UserEmailAddressListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserEmailAddresses => f.write_str("user_email_addresses"),
            }
        }
    }
    impl ::std::str::FromStr for UserEmailAddressListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_email_addresses" => Ok(Self::UserEmailAddresses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserEmailAddressListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserEmailAddressListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserEmailAddressListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserEmailAddressResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/user_email_address"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the email address",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_email_addresses"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserEmailAddressResponse {
        pub data: UserEmailAddressResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl UserEmailAddressResponse {
        pub fn builder() -> builder::UserEmailAddressResponse {
            Default::default()
        }
    }
    ///`UserEmailAddressResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_email_address"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the email address",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_email_addresses"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserEmailAddressResponseData {
        pub attributes: UserEmailAddress,
        ///Unique ID of the email address
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: UserEmailAddressResponseDataType,
    }
    impl UserEmailAddressResponseData {
        pub fn builder() -> builder::UserEmailAddressResponseData {
            Default::default()
        }
    }
    ///`UserEmailAddressResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_email_addresses"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserEmailAddressResponseDataType {
        #[serde(rename = "user_email_addresses")]
        UserEmailAddresses,
    }
    impl ::std::fmt::Display for UserEmailAddressResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserEmailAddresses => f.write_str("user_email_addresses"),
            }
        }
    }
    impl ::std::str::FromStr for UserEmailAddressResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_email_addresses" => Ok(Self::UserEmailAddresses),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserEmailAddressResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserEmailAddressResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserEmailAddressResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Flat user object as returned by serializer
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Flat user object as returned by serializer",
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "email",
    ///    "id",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "User creation timestamp",
    ///      "type": "string"
    ///    },
    ///    "email": {
    ///      "description": "User email",
    ///      "type": "string"
    ///    },
    ///    "first_name": {
    ///      "description": "User first name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "full_name": {
    ///      "description": "User full name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "full_name_with_team": {
    ///      "description": "User full name with team",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "User ID",
    ///      "type": "integer"
    ///    },
    ///    "last_name": {
    ///      "description": "User last name",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "time_zone": {
    ///      "description": "User time zone",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "User last update timestamp",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserFlatResponse {
        ///User creation timestamp
        pub created_at: ::std::string::String,
        ///User email
        pub email: ::std::string::String,
        ///User first name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub first_name: ::std::option::Option<::std::string::String>,
        ///User full name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub full_name: ::std::option::Option<::std::string::String>,
        ///User full name with team
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub full_name_with_team: ::std::option::Option<::std::string::String>,
        ///User ID
        pub id: i64,
        ///User last name
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub last_name: ::std::option::Option<::std::string::String>,
        ///User time zone
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub time_zone: ::std::option::Option<::std::string::String>,
        ///User last update timestamp
        pub updated_at: ::std::string::String,
    }
    impl UserFlatResponse {
        pub fn builder() -> builder::UserFlatResponse {
            Default::default()
        }
    }
    ///`UserList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/user"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the user",
    ///            "type": "string"
    ///          },
    ///          "relationships": {
    ///            "$ref": "#/components/schemas/user_relationships"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "users"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserList {
        pub data: ::std::vec::Vec<UserListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl UserList {
        pub fn builder() -> builder::UserList {
            Default::default()
        }
    }
    ///`UserListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the user",
    ///      "type": "string"
    ///    },
    ///    "relationships": {
    ///      "$ref": "#/components/schemas/user_relationships"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserListDataItem {
        pub attributes: User,
        ///Unique ID of the user
        pub id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub relationships: ::std::option::Option<UserRelationships>,
        #[serde(rename = "type")]
        pub type_: UserListDataItemType,
    }
    impl UserListDataItem {
        pub fn builder() -> builder::UserListDataItem {
            Default::default()
        }
    }
    ///`UserListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserListDataItemType {
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display for UserListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr for UserListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UserListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UserListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserNotificationRule`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "delay": {
    ///      "description": "Delay after which rule gets triggered",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled_contact_types": {
    ///      "description": "Contact types for which notification needs to be enabled",
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "email",
    ///          "sms",
    ///          "call",
    ///          "device",
    ///          "non_critical_device",
    ///          "slack",
    ///          "google_chat"
    ///        ]
    ///      }
    ///    },
    ///    "notification_type": {
    ///      "description": "Type of notification rule (audible or quiet). Audible notifications use sound/vibration to alert users, while quiet notifications are silent.",
    ///      "type": "string",
    ///      "enum": [
    ///        "audible",
    ///        "quiet"
    ///      ]
    ///    },
    ///    "position": {
    ///      "description": "Position of the rule",
    ///      "type": [
    ///        "integer",
    ///        "null"
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user_call_number_id": {
    ///      "description": "User phone number to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_device_id": {
    ///      "description": "User device to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_email_address_id": {
    ///      "description": "User email address to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "user_id": {
    ///      "type": "integer"
    ///    },
    ///    "user_sms_number_id": {
    ///      "description": "User sms number to which notification to be sent",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserNotificationRule {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Delay after which rule gets triggered
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub delay: ::std::option::Option<i64>,
        ///Contact types for which notification needs to be enabled
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub enabled_contact_types: ::std::vec::Vec<
            UserNotificationRuleEnabledContactTypesItem,
        >,
        ///Type of notification rule (audible or quiet). Audible notifications use sound/vibration to alert users, while quiet notifications are silent.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub notification_type: ::std::option::Option<
            UserNotificationRuleNotificationType,
        >,
        ///Position of the rule
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
        ///User phone number to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_call_number_id: ::std::option::Option<::std::string::String>,
        ///User device to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_device_id: ::std::option::Option<::std::string::String>,
        ///User email address to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_email_address_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
        ///User sms number to which notification to be sent
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_sms_number_id: ::std::option::Option<::std::string::String>,
    }
    impl ::std::default::Default for UserNotificationRule {
        fn default() -> Self {
            Self {
                created_at: Default::default(),
                delay: Default::default(),
                enabled_contact_types: Default::default(),
                notification_type: Default::default(),
                position: Default::default(),
                updated_at: Default::default(),
                user_call_number_id: Default::default(),
                user_device_id: Default::default(),
                user_email_address_id: Default::default(),
                user_id: Default::default(),
                user_sms_number_id: Default::default(),
            }
        }
    }
    impl UserNotificationRule {
        pub fn builder() -> builder::UserNotificationRule {
            Default::default()
        }
    }
    ///`UserNotificationRuleEnabledContactTypesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "email",
    ///    "sms",
    ///    "call",
    ///    "device",
    ///    "non_critical_device",
    ///    "slack",
    ///    "google_chat"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserNotificationRuleEnabledContactTypesItem {
        #[serde(rename = "email")]
        Email,
        #[serde(rename = "sms")]
        Sms,
        #[serde(rename = "call")]
        Call,
        #[serde(rename = "device")]
        Device,
        #[serde(rename = "non_critical_device")]
        NonCriticalDevice,
        #[serde(rename = "slack")]
        Slack,
        #[serde(rename = "google_chat")]
        GoogleChat,
    }
    impl ::std::fmt::Display for UserNotificationRuleEnabledContactTypesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Email => f.write_str("email"),
                Self::Sms => f.write_str("sms"),
                Self::Call => f.write_str("call"),
                Self::Device => f.write_str("device"),
                Self::NonCriticalDevice => f.write_str("non_critical_device"),
                Self::Slack => f.write_str("slack"),
                Self::GoogleChat => f.write_str("google_chat"),
            }
        }
    }
    impl ::std::str::FromStr for UserNotificationRuleEnabledContactTypesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "email" => Ok(Self::Email),
                "sms" => Ok(Self::Sms),
                "call" => Ok(Self::Call),
                "device" => Ok(Self::Device),
                "non_critical_device" => Ok(Self::NonCriticalDevice),
                "slack" => Ok(Self::Slack),
                "google_chat" => Ok(Self::GoogleChat),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserNotificationRuleEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserNotificationRuleEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserNotificationRuleEnabledContactTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserNotificationRuleList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/user_notification_rule"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the rule",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "user_notification_rules"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserNotificationRuleList {
        pub data: ::std::vec::Vec<UserNotificationRuleListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl UserNotificationRuleList {
        pub fn builder() -> builder::UserNotificationRuleList {
            Default::default()
        }
    }
    ///`UserNotificationRuleListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_notification_rule"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the rule",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_notification_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserNotificationRuleListDataItem {
        pub attributes: UserNotificationRule,
        ///Unique ID of the rule
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: UserNotificationRuleListDataItemType,
    }
    impl UserNotificationRuleListDataItem {
        pub fn builder() -> builder::UserNotificationRuleListDataItem {
            Default::default()
        }
    }
    ///`UserNotificationRuleListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_notification_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserNotificationRuleListDataItemType {
        #[serde(rename = "user_notification_rules")]
        UserNotificationRules,
    }
    impl ::std::fmt::Display for UserNotificationRuleListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserNotificationRules => f.write_str("user_notification_rules"),
            }
        }
    }
    impl ::std::str::FromStr for UserNotificationRuleListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_notification_rules" => Ok(Self::UserNotificationRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserNotificationRuleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserNotificationRuleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserNotificationRuleListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Type of notification rule (audible or quiet). Audible notifications use sound/vibration to alert users, while quiet notifications are silent.
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Type of notification rule (audible or quiet). Audible notifications use sound/vibration to alert users, while quiet notifications are silent.",
    ///  "type": "string",
    ///  "enum": [
    ///    "audible",
    ///    "quiet"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserNotificationRuleNotificationType {
        #[serde(rename = "audible")]
        Audible,
        #[serde(rename = "quiet")]
        Quiet,
    }
    impl ::std::fmt::Display for UserNotificationRuleNotificationType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Audible => f.write_str("audible"),
                Self::Quiet => f.write_str("quiet"),
            }
        }
    }
    impl ::std::str::FromStr for UserNotificationRuleNotificationType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "audible" => Ok(Self::Audible),
                "quiet" => Ok(Self::Quiet),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserNotificationRuleNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserNotificationRuleNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserNotificationRuleNotificationType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserNotificationRuleResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/user_notification_rule"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the rule",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_notification_rules"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserNotificationRuleResponse {
        pub data: UserNotificationRuleResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl UserNotificationRuleResponse {
        pub fn builder() -> builder::UserNotificationRuleResponse {
            Default::default()
        }
    }
    ///`UserNotificationRuleResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_notification_rule"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the rule",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_notification_rules"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserNotificationRuleResponseData {
        pub attributes: UserNotificationRule,
        ///Unique ID of the rule
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: UserNotificationRuleResponseDataType,
    }
    impl UserNotificationRuleResponseData {
        pub fn builder() -> builder::UserNotificationRuleResponseData {
            Default::default()
        }
    }
    ///`UserNotificationRuleResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_notification_rules"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserNotificationRuleResponseDataType {
        #[serde(rename = "user_notification_rules")]
        UserNotificationRules,
    }
    impl ::std::fmt::Display for UserNotificationRuleResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserNotificationRules => f.write_str("user_notification_rules"),
            }
        }
    }
    impl ::std::str::FromStr for UserNotificationRuleResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_notification_rules" => Ok(Self::UserNotificationRules),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserNotificationRuleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserNotificationRuleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserNotificationRuleResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserPhoneNumber`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "phone": {
    ///      "description": "Phone number in international format",
    ///      "type": "string"
    ///    },
    ///    "primary": {
    ///      "description": "Whether this is the primary phone number",
    ///      "type": "boolean"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "user_id": {
    ///      "type": "integer"
    ///    },
    ///    "verification_attempts_today": {
    ///      "description": "Number of verification attempts made today",
    ///      "type": "integer"
    ///    },
    ///    "verified_at": {
    ///      "description": "Date when phone number was verified",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "format": "date-time"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserPhoneNumber {
        ///Date of creation
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub created_at: ::std::option::Option<::std::string::String>,
        ///Phone number in international format
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub phone: ::std::option::Option<::std::string::String>,
        ///Whether this is the primary phone number
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub primary: ::std::option::Option<bool>,
        ///Date of last update
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub updated_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub user_id: ::std::option::Option<i64>,
        ///Number of verification attempts made today
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub verification_attempts_today: ::std::option::Option<i64>,
        ///Date when phone number was verified
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub verified_at: ::std::option::Option<
            ::chrono::DateTime<::chrono::offset::Utc>,
        >,
    }
    impl ::std::default::Default for UserPhoneNumber {
        fn default() -> Self {
            Self {
                created_at: Default::default(),
                phone: Default::default(),
                primary: Default::default(),
                updated_at: Default::default(),
                user_id: Default::default(),
                verification_attempts_today: Default::default(),
                verified_at: Default::default(),
            }
        }
    }
    impl UserPhoneNumber {
        pub fn builder() -> builder::UserPhoneNumber {
            Default::default()
        }
    }
    ///`UserPhoneNumberList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/user_phone_number"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the phone number",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "user_phone_numbers"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserPhoneNumberList {
        pub data: ::std::vec::Vec<UserPhoneNumberListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl UserPhoneNumberList {
        pub fn builder() -> builder::UserPhoneNumberList {
            Default::default()
        }
    }
    ///`UserPhoneNumberListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_phone_number"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the phone number",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_phone_numbers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserPhoneNumberListDataItem {
        pub attributes: UserPhoneNumber,
        ///Unique ID of the phone number
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: UserPhoneNumberListDataItemType,
    }
    impl UserPhoneNumberListDataItem {
        pub fn builder() -> builder::UserPhoneNumberListDataItem {
            Default::default()
        }
    }
    ///`UserPhoneNumberListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_phone_numbers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserPhoneNumberListDataItemType {
        #[serde(rename = "user_phone_numbers")]
        UserPhoneNumbers,
    }
    impl ::std::fmt::Display for UserPhoneNumberListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserPhoneNumbers => f.write_str("user_phone_numbers"),
            }
        }
    }
    impl ::std::str::FromStr for UserPhoneNumberListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_phone_numbers" => Ok(Self::UserPhoneNumbers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserPhoneNumberListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserPhoneNumberListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserPhoneNumberListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserPhoneNumberResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/user_phone_number"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the phone number",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "user_phone_numbers"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserPhoneNumberResponse {
        pub data: UserPhoneNumberResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl UserPhoneNumberResponse {
        pub fn builder() -> builder::UserPhoneNumberResponse {
            Default::default()
        }
    }
    ///`UserPhoneNumberResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user_phone_number"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the phone number",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "user_phone_numbers"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserPhoneNumberResponseData {
        pub attributes: UserPhoneNumber,
        ///Unique ID of the phone number
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: UserPhoneNumberResponseDataType,
    }
    impl UserPhoneNumberResponseData {
        pub fn builder() -> builder::UserPhoneNumberResponseData {
            Default::default()
        }
    }
    ///`UserPhoneNumberResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "user_phone_numbers"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserPhoneNumberResponseDataType {
        #[serde(rename = "user_phone_numbers")]
        UserPhoneNumbers,
    }
    impl ::std::fmt::Display for UserPhoneNumberResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::UserPhoneNumbers => f.write_str("user_phone_numbers"),
            }
        }
    }
    impl ::std::str::FromStr for UserPhoneNumberResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "user_phone_numbers" => Ok(Self::UserPhoneNumbers),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserPhoneNumberResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for UserPhoneNumberResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for UserPhoneNumberResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`UserRelationships`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "properties": {
    ///    "on_call_role": {
    ///      "$ref": "#/components/schemas/on_call_role_relationship"
    ///    },
    ///    "role": {
    ///      "$ref": "#/components/schemas/role_relationship"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserRelationships {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub on_call_role: ::std::option::Option<OnCallRoleRelationship>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub role: ::std::option::Option<RoleRelationship>,
    }
    impl ::std::default::Default for UserRelationships {
        fn default() -> Self {
            Self {
                on_call_role: Default::default(),
                role: Default::default(),
            }
        }
    }
    impl UserRelationships {
        pub fn builder() -> builder::UserRelationships {
            Default::default()
        }
    }
    ///`UserResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/user"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the user",
    ///          "type": "string"
    ///        },
    ///        "relationships": {
    ///          "$ref": "#/components/schemas/user_relationships"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "users"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserResponse {
        pub data: UserResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl UserResponse {
        pub fn builder() -> builder::UserResponse {
            Default::default()
        }
    }
    ///`UserResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/user"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the user",
    ///      "type": "string"
    ///    },
    ///    "relationships": {
    ///      "$ref": "#/components/schemas/user_relationships"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "users"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct UserResponseData {
        pub attributes: User,
        ///Unique ID of the user
        pub id: ::std::string::String,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub relationships: ::std::option::Option<UserRelationships>,
        #[serde(rename = "type")]
        pub type_: UserResponseDataType,
    }
    impl UserResponseData {
        pub fn builder() -> builder::UserResponseData {
            Default::default()
        }
    }
    ///`UserResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "users"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum UserResponseDataType {
        #[serde(rename = "users")]
        Users,
    }
    impl ::std::fmt::Display for UserResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Users => f.write_str("users"),
            }
        }
    }
    impl ::std::str::FromStr for UserResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "users" => Ok(Self::Users),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for UserResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for UserResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for UserResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`VerifyPhoneNumberRequest`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "code"
    ///  ],
    ///  "properties": {
    ///    "code": {
    ///      "description": "6-digit verification code",
    ///      "type": "string",
    ///      "pattern": "^[0-9]{6}$"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct VerifyPhoneNumberRequest {
        ///6-digit verification code
        pub code: VerifyPhoneNumberRequestCode,
    }
    impl VerifyPhoneNumberRequest {
        pub fn builder() -> builder::VerifyPhoneNumberRequest {
            Default::default()
        }
    }
    ///6-digit verification code
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "6-digit verification code",
    ///  "type": "string",
    ///  "pattern": "^[0-9]{6}$"
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Serialize, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
    #[serde(transparent)]
    pub struct VerifyPhoneNumberRequestCode(::std::string::String);
    impl ::std::ops::Deref for VerifyPhoneNumberRequestCode {
        type Target = ::std::string::String;
        fn deref(&self) -> &::std::string::String {
            &self.0
        }
    }
    impl ::std::convert::From<VerifyPhoneNumberRequestCode> for ::std::string::String {
        fn from(value: VerifyPhoneNumberRequestCode) -> Self {
            value.0
        }
    }
    impl ::std::str::FromStr for VerifyPhoneNumberRequestCode {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            static PATTERN: ::std::sync::LazyLock<::regress::Regex> = ::std::sync::LazyLock::new(||
            { ::regress::Regex::new("^[0-9]{6}$").unwrap() });
            if PATTERN.find(value).is_none() {
                return Err("doesn't match pattern \"^[0-9]{6}$\"".into());
            }
            Ok(Self(value.to_string()))
        }
    }
    impl ::std::convert::TryFrom<&str> for VerifyPhoneNumberRequestCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for VerifyPhoneNumberRequestCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for VerifyPhoneNumberRequestCode {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl<'de> ::serde::Deserialize<'de> for VerifyPhoneNumberRequestCode {
        fn deserialize<D>(deserializer: D) -> ::std::result::Result<Self, D::Error>
        where
            D: ::serde::Deserializer<'de>,
        {
            ::std::string::String::deserialize(deserializer)?
                .parse()
                .map_err(|e: self::error::ConversionError| {
                    <D::Error as ::serde::de::Error>::custom(e.to_string())
                })
        }
    }
    ///`WebhooksDelivery`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "delivered_at",
    ///    "endpoint_id",
    ///    "payload",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "delivered_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "endpoint_id": {
    ///      "type": "string"
    ///    },
    ///    "payload": {
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksDelivery {
        ///Date of creation
        pub created_at: ::std::string::String,
        pub delivered_at: ::std::option::Option<::std::string::String>,
        pub endpoint_id: ::std::string::String,
        pub payload: ::std::string::String,
        ///Date of last update
        pub updated_at: ::std::string::String,
    }
    impl WebhooksDelivery {
        pub fn builder() -> builder::WebhooksDelivery {
            Default::default()
        }
    }
    ///`WebhooksDeliveryList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/webhooks_delivery"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the webhooks_delivery",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "webhooks_deliveries"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksDeliveryList {
        pub data: ::std::vec::Vec<WebhooksDeliveryListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl WebhooksDeliveryList {
        pub fn builder() -> builder::WebhooksDeliveryList {
            Default::default()
        }
    }
    ///`WebhooksDeliveryListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/webhooks_delivery"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the webhooks_delivery",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "webhooks_deliveries"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksDeliveryListDataItem {
        pub attributes: WebhooksDelivery,
        ///Unique ID of the webhooks_delivery
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WebhooksDeliveryListDataItemType,
    }
    impl WebhooksDeliveryListDataItem {
        pub fn builder() -> builder::WebhooksDeliveryListDataItem {
            Default::default()
        }
    }
    ///`WebhooksDeliveryListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "webhooks_deliveries"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WebhooksDeliveryListDataItemType {
        #[serde(rename = "webhooks_deliveries")]
        WebhooksDeliveries,
    }
    impl ::std::fmt::Display for WebhooksDeliveryListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebhooksDeliveries => f.write_str("webhooks_deliveries"),
            }
        }
    }
    impl ::std::str::FromStr for WebhooksDeliveryListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "webhooks_deliveries" => Ok(Self::WebhooksDeliveries),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WebhooksDeliveryListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WebhooksDeliveryListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WebhooksDeliveryListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WebhooksDeliveryResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/webhooks_delivery"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the webhooks_delivery",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "webhooks_deliveries"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksDeliveryResponse {
        pub data: WebhooksDeliveryResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WebhooksDeliveryResponse {
        pub fn builder() -> builder::WebhooksDeliveryResponse {
            Default::default()
        }
    }
    ///`WebhooksDeliveryResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/webhooks_delivery"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the webhooks_delivery",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "webhooks_deliveries"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksDeliveryResponseData {
        pub attributes: WebhooksDelivery,
        ///Unique ID of the webhooks_delivery
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WebhooksDeliveryResponseDataType,
    }
    impl WebhooksDeliveryResponseData {
        pub fn builder() -> builder::WebhooksDeliveryResponseData {
            Default::default()
        }
    }
    ///`WebhooksDeliveryResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "webhooks_deliveries"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WebhooksDeliveryResponseDataType {
        #[serde(rename = "webhooks_deliveries")]
        WebhooksDeliveries,
    }
    impl ::std::fmt::Display for WebhooksDeliveryResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebhooksDeliveries => f.write_str("webhooks_deliveries"),
            }
        }
    }
    impl ::std::str::FromStr for WebhooksDeliveryResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "webhooks_deliveries" => Ok(Self::WebhooksDeliveries),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WebhooksDeliveryResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WebhooksDeliveryResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WebhooksDeliveryResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WebhooksEndpoint`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "enabled",
    ///    "event_types",
    ///    "name",
    ///    "secret",
    ///    "updated_at",
    ///    "url"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "event_types": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string",
    ///        "enum": [
    ///          "incident.created",
    ///          "incident.updated",
    ///          "incident.in_triage",
    ///          "incident.mitigated",
    ///          "incident.resolved",
    ///          "incident.cancelled",
    ///          "incident.deleted",
    ///          "incident.scheduled.created",
    ///          "incident.scheduled.updated",
    ///          "incident.scheduled.in_progress",
    ///          "incident.scheduled.completed",
    ///          "incident.scheduled.deleted",
    ///          "incident_post_mortem.created",
    ///          "incident_post_mortem.updated",
    ///          "incident_post_mortem.published",
    ///          "incident_post_mortem.deleted",
    ///          "incident_status_page_event.created",
    ///          "incident_status_page_event.updated",
    ///          "incident_status_page_event.deleted",
    ///          "incident_event.created",
    ///          "incident_event.updated",
    ///          "incident_event.deleted",
    ///          "alert.created",
    ///          "pulse.created",
    ///          "shift.started",
    ///          "genius_workflow_run.queued",
    ///          "genius_workflow_run.started",
    ///          "genius_workflow_run.completed",
    ///          "genius_workflow_run.failed",
    ///          "genius_workflow_run.canceled",
    ///          "audit_log.created"
    ///        ]
    ///      }
    ///    },
    ///    "name": {
    ///      "description": "The name of the endpoint",
    ///      "type": "string"
    ///    },
    ///    "secret": {
    ///      "description": "The webhook signing secret used to verify webhook requests.",
    ///      "type": "string"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the endpoint",
    ///      "type": "string"
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "url": {
    ///      "description": "The URL of the endpoint.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksEndpoint {
        ///Date of creation
        pub created_at: ::std::string::String,
        pub enabled: bool,
        pub event_types: ::std::vec::Vec<WebhooksEndpointEventTypesItem>,
        ///The name of the endpoint
        pub name: ::std::string::String,
        ///The webhook signing secret used to verify webhook requests.
        pub secret: ::std::string::String,
        ///The slug of the endpoint
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The URL of the endpoint.
        pub url: ::std::string::String,
    }
    impl WebhooksEndpoint {
        pub fn builder() -> builder::WebhooksEndpoint {
            Default::default()
        }
    }
    ///`WebhooksEndpointEventTypesItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "incident.created",
    ///    "incident.updated",
    ///    "incident.in_triage",
    ///    "incident.mitigated",
    ///    "incident.resolved",
    ///    "incident.cancelled",
    ///    "incident.deleted",
    ///    "incident.scheduled.created",
    ///    "incident.scheduled.updated",
    ///    "incident.scheduled.in_progress",
    ///    "incident.scheduled.completed",
    ///    "incident.scheduled.deleted",
    ///    "incident_post_mortem.created",
    ///    "incident_post_mortem.updated",
    ///    "incident_post_mortem.published",
    ///    "incident_post_mortem.deleted",
    ///    "incident_status_page_event.created",
    ///    "incident_status_page_event.updated",
    ///    "incident_status_page_event.deleted",
    ///    "incident_event.created",
    ///    "incident_event.updated",
    ///    "incident_event.deleted",
    ///    "alert.created",
    ///    "pulse.created",
    ///    "shift.started",
    ///    "genius_workflow_run.queued",
    ///    "genius_workflow_run.started",
    ///    "genius_workflow_run.completed",
    ///    "genius_workflow_run.failed",
    ///    "genius_workflow_run.canceled",
    ///    "audit_log.created"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WebhooksEndpointEventTypesItem {
        #[serde(rename = "incident.created")]
        IncidentCreated,
        #[serde(rename = "incident.updated")]
        IncidentUpdated,
        #[serde(rename = "incident.in_triage")]
        IncidentInTriage,
        #[serde(rename = "incident.mitigated")]
        IncidentMitigated,
        #[serde(rename = "incident.resolved")]
        IncidentResolved,
        #[serde(rename = "incident.cancelled")]
        IncidentCancelled,
        #[serde(rename = "incident.deleted")]
        IncidentDeleted,
        #[serde(rename = "incident.scheduled.created")]
        IncidentScheduledCreated,
        #[serde(rename = "incident.scheduled.updated")]
        IncidentScheduledUpdated,
        #[serde(rename = "incident.scheduled.in_progress")]
        IncidentScheduledInProgress,
        #[serde(rename = "incident.scheduled.completed")]
        IncidentScheduledCompleted,
        #[serde(rename = "incident.scheduled.deleted")]
        IncidentScheduledDeleted,
        #[serde(rename = "incident_post_mortem.created")]
        IncidentPostMortemCreated,
        #[serde(rename = "incident_post_mortem.updated")]
        IncidentPostMortemUpdated,
        #[serde(rename = "incident_post_mortem.published")]
        IncidentPostMortemPublished,
        #[serde(rename = "incident_post_mortem.deleted")]
        IncidentPostMortemDeleted,
        #[serde(rename = "incident_status_page_event.created")]
        IncidentStatusPageEventCreated,
        #[serde(rename = "incident_status_page_event.updated")]
        IncidentStatusPageEventUpdated,
        #[serde(rename = "incident_status_page_event.deleted")]
        IncidentStatusPageEventDeleted,
        #[serde(rename = "incident_event.created")]
        IncidentEventCreated,
        #[serde(rename = "incident_event.updated")]
        IncidentEventUpdated,
        #[serde(rename = "incident_event.deleted")]
        IncidentEventDeleted,
        #[serde(rename = "alert.created")]
        AlertCreated,
        #[serde(rename = "pulse.created")]
        PulseCreated,
        #[serde(rename = "shift.started")]
        ShiftStarted,
        #[serde(rename = "genius_workflow_run.queued")]
        GeniusWorkflowRunQueued,
        #[serde(rename = "genius_workflow_run.started")]
        GeniusWorkflowRunStarted,
        #[serde(rename = "genius_workflow_run.completed")]
        GeniusWorkflowRunCompleted,
        #[serde(rename = "genius_workflow_run.failed")]
        GeniusWorkflowRunFailed,
        #[serde(rename = "genius_workflow_run.canceled")]
        GeniusWorkflowRunCanceled,
        #[serde(rename = "audit_log.created")]
        AuditLogCreated,
    }
    impl ::std::fmt::Display for WebhooksEndpointEventTypesItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::IncidentCreated => f.write_str("incident.created"),
                Self::IncidentUpdated => f.write_str("incident.updated"),
                Self::IncidentInTriage => f.write_str("incident.in_triage"),
                Self::IncidentMitigated => f.write_str("incident.mitigated"),
                Self::IncidentResolved => f.write_str("incident.resolved"),
                Self::IncidentCancelled => f.write_str("incident.cancelled"),
                Self::IncidentDeleted => f.write_str("incident.deleted"),
                Self::IncidentScheduledCreated => {
                    f.write_str("incident.scheduled.created")
                }
                Self::IncidentScheduledUpdated => {
                    f.write_str("incident.scheduled.updated")
                }
                Self::IncidentScheduledInProgress => {
                    f.write_str("incident.scheduled.in_progress")
                }
                Self::IncidentScheduledCompleted => {
                    f.write_str("incident.scheduled.completed")
                }
                Self::IncidentScheduledDeleted => {
                    f.write_str("incident.scheduled.deleted")
                }
                Self::IncidentPostMortemCreated => {
                    f.write_str("incident_post_mortem.created")
                }
                Self::IncidentPostMortemUpdated => {
                    f.write_str("incident_post_mortem.updated")
                }
                Self::IncidentPostMortemPublished => {
                    f.write_str("incident_post_mortem.published")
                }
                Self::IncidentPostMortemDeleted => {
                    f.write_str("incident_post_mortem.deleted")
                }
                Self::IncidentStatusPageEventCreated => {
                    f.write_str("incident_status_page_event.created")
                }
                Self::IncidentStatusPageEventUpdated => {
                    f.write_str("incident_status_page_event.updated")
                }
                Self::IncidentStatusPageEventDeleted => {
                    f.write_str("incident_status_page_event.deleted")
                }
                Self::IncidentEventCreated => f.write_str("incident_event.created"),
                Self::IncidentEventUpdated => f.write_str("incident_event.updated"),
                Self::IncidentEventDeleted => f.write_str("incident_event.deleted"),
                Self::AlertCreated => f.write_str("alert.created"),
                Self::PulseCreated => f.write_str("pulse.created"),
                Self::ShiftStarted => f.write_str("shift.started"),
                Self::GeniusWorkflowRunQueued => {
                    f.write_str("genius_workflow_run.queued")
                }
                Self::GeniusWorkflowRunStarted => {
                    f.write_str("genius_workflow_run.started")
                }
                Self::GeniusWorkflowRunCompleted => {
                    f.write_str("genius_workflow_run.completed")
                }
                Self::GeniusWorkflowRunFailed => {
                    f.write_str("genius_workflow_run.failed")
                }
                Self::GeniusWorkflowRunCanceled => {
                    f.write_str("genius_workflow_run.canceled")
                }
                Self::AuditLogCreated => f.write_str("audit_log.created"),
            }
        }
    }
    impl ::std::str::FromStr for WebhooksEndpointEventTypesItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "incident.created" => Ok(Self::IncidentCreated),
                "incident.updated" => Ok(Self::IncidentUpdated),
                "incident.in_triage" => Ok(Self::IncidentInTriage),
                "incident.mitigated" => Ok(Self::IncidentMitigated),
                "incident.resolved" => Ok(Self::IncidentResolved),
                "incident.cancelled" => Ok(Self::IncidentCancelled),
                "incident.deleted" => Ok(Self::IncidentDeleted),
                "incident.scheduled.created" => Ok(Self::IncidentScheduledCreated),
                "incident.scheduled.updated" => Ok(Self::IncidentScheduledUpdated),
                "incident.scheduled.in_progress" => Ok(Self::IncidentScheduledInProgress),
                "incident.scheduled.completed" => Ok(Self::IncidentScheduledCompleted),
                "incident.scheduled.deleted" => Ok(Self::IncidentScheduledDeleted),
                "incident_post_mortem.created" => Ok(Self::IncidentPostMortemCreated),
                "incident_post_mortem.updated" => Ok(Self::IncidentPostMortemUpdated),
                "incident_post_mortem.published" => Ok(Self::IncidentPostMortemPublished),
                "incident_post_mortem.deleted" => Ok(Self::IncidentPostMortemDeleted),
                "incident_status_page_event.created" => {
                    Ok(Self::IncidentStatusPageEventCreated)
                }
                "incident_status_page_event.updated" => {
                    Ok(Self::IncidentStatusPageEventUpdated)
                }
                "incident_status_page_event.deleted" => {
                    Ok(Self::IncidentStatusPageEventDeleted)
                }
                "incident_event.created" => Ok(Self::IncidentEventCreated),
                "incident_event.updated" => Ok(Self::IncidentEventUpdated),
                "incident_event.deleted" => Ok(Self::IncidentEventDeleted),
                "alert.created" => Ok(Self::AlertCreated),
                "pulse.created" => Ok(Self::PulseCreated),
                "shift.started" => Ok(Self::ShiftStarted),
                "genius_workflow_run.queued" => Ok(Self::GeniusWorkflowRunQueued),
                "genius_workflow_run.started" => Ok(Self::GeniusWorkflowRunStarted),
                "genius_workflow_run.completed" => Ok(Self::GeniusWorkflowRunCompleted),
                "genius_workflow_run.failed" => Ok(Self::GeniusWorkflowRunFailed),
                "genius_workflow_run.canceled" => Ok(Self::GeniusWorkflowRunCanceled),
                "audit_log.created" => Ok(Self::AuditLogCreated),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WebhooksEndpointEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WebhooksEndpointEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WebhooksEndpointEventTypesItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WebhooksEndpointList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/webhooks_endpoint"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the webhooks_endpoint",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "webhooks_endpoints"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksEndpointList {
        pub data: ::std::vec::Vec<WebhooksEndpointListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub links: ::std::option::Option<Links>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub meta: ::std::option::Option<Meta>,
    }
    impl WebhooksEndpointList {
        pub fn builder() -> builder::WebhooksEndpointList {
            Default::default()
        }
    }
    ///`WebhooksEndpointListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/webhooks_endpoint"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the webhooks_endpoint",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "webhooks_endpoints"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksEndpointListDataItem {
        pub attributes: WebhooksEndpoint,
        ///Unique ID of the webhooks_endpoint
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WebhooksEndpointListDataItemType,
    }
    impl WebhooksEndpointListDataItem {
        pub fn builder() -> builder::WebhooksEndpointListDataItem {
            Default::default()
        }
    }
    ///`WebhooksEndpointListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "webhooks_endpoints"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WebhooksEndpointListDataItemType {
        #[serde(rename = "webhooks_endpoints")]
        WebhooksEndpoints,
    }
    impl ::std::fmt::Display for WebhooksEndpointListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebhooksEndpoints => f.write_str("webhooks_endpoints"),
            }
        }
    }
    impl ::std::str::FromStr for WebhooksEndpointListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "webhooks_endpoints" => Ok(Self::WebhooksEndpoints),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WebhooksEndpointListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WebhooksEndpointListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WebhooksEndpointListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WebhooksEndpointResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/webhooks_endpoint"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the webhooks_endpoint",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "webhooks_endpoints"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksEndpointResponse {
        pub data: WebhooksEndpointResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WebhooksEndpointResponse {
        pub fn builder() -> builder::WebhooksEndpointResponse {
            Default::default()
        }
    }
    ///`WebhooksEndpointResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/webhooks_endpoint"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the webhooks_endpoint",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "webhooks_endpoints"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WebhooksEndpointResponseData {
        pub attributes: WebhooksEndpoint,
        ///Unique ID of the webhooks_endpoint
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WebhooksEndpointResponseDataType,
    }
    impl WebhooksEndpointResponseData {
        pub fn builder() -> builder::WebhooksEndpointResponseData {
            Default::default()
        }
    }
    ///`WebhooksEndpointResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "webhooks_endpoints"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WebhooksEndpointResponseDataType {
        #[serde(rename = "webhooks_endpoints")]
        WebhooksEndpoints,
    }
    impl ::std::fmt::Display for WebhooksEndpointResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WebhooksEndpoints => f.write_str("webhooks_endpoints"),
            }
        }
    }
    impl ::std::str::FromStr for WebhooksEndpointResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "webhooks_endpoints" => Ok(Self::WebhooksEndpoints),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WebhooksEndpointResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WebhooksEndpointResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WebhooksEndpointResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`Workflow`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "name",
    ///    "updated_at"
    ///  ],
    ///  "properties": {
    ///    "cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "command": {
    ///      "description": "Workflow command",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "command_feedback_enabled": {
    ///      "description": "This will notify you back when the workflow is starting",
    ///      "type": [
    ///        "boolean",
    ///        "null"
    ///      ]
    ///    },
    ///    "continuously_repeat": {
    ///      "description": "When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.",
    ///      "type": "boolean"
    ///    },
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "description": {
    ///      "description": "The description of the workflow",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "enabled": {
    ///      "type": "boolean"
    ///    },
    ///    "environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_role_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "locked": {
    ///      "description": "Restricts workflow edits to admins when turned on. Only admins can set this field.",
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "The title of the workflow",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The order which the workflow should run with other workflows.",
    ///      "type": "integer"
    ///    },
    ///    "repeat_condition_duration_since_first_run": {
    ///      "description": "The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_condition_number_of_repeats": {
    ///      "description": "The workflow will stop repeating if the number of repeats exceeds the value set in this field",
    ///      "type": "integer"
    ///    },
    ///    "repeat_every_duration": {
    ///      "description": "Repeat workflow every duration",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "repeat_on": {
    ///      "type": [
    ///        "array",
    ///        "null"
    ///      ],
    ///      "items": {
    ///        "description": "Repeat on weekdays",
    ///        "type": "string",
    ///        "enum": [
    ///          "S",
    ///          "M",
    ///          "T",
    ///          "W",
    ///          "R",
    ///          "F",
    ///          "U"
    ///        ]
    ///      }
    ///    },
    ///    "service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "severity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the workflow",
    ///      "type": "string"
    ///    },
    ///    "sub_status_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "string"
    ///      }
    ///    },
    ///    "trigger_params": {
    ///      "oneOf": [
    ///        {
    ///          "$ref": "#/components/schemas/incident_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/action_item_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/alert_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/pulse_trigger_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/simple_trigger_params"
    ///        }
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "wait": {
    ///      "description": "Wait this duration before executing",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "workflow_group_id": {
    ///      "description": "The group this workflow belongs to.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct Workflow {
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub cause_ids: ::std::vec::Vec<::std::string::String>,
        ///Workflow command
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command: ::std::option::Option<::std::string::String>,
        ///This will notify you back when the workflow is starting
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub command_feedback_enabled: ::std::option::Option<bool>,
        ///When continuously repeat is true, repeat workflows aren't automatically stopped when conditions aren't met. This setting won't override your conditions set by repeat_condition_duration_since_first_run and repeat_condition_number_of_repeats parameters.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub continuously_repeat: ::std::option::Option<bool>,
        ///Date of creation
        pub created_at: ::std::string::String,
        ///The description of the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub enabled: ::std::option::Option<bool>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_role_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub incident_type_ids: ::std::vec::Vec<::std::string::String>,
        ///Restricts workflow edits to admins when turned on. Only admins can set this field.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub locked: ::std::option::Option<bool>,
        ///The title of the workflow
        pub name: ::std::string::String,
        ///The order which the workflow should run with other workflows.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub position: ::std::option::Option<i64>,
        ///The workflow will stop repeating if its runtime since it's first workflow run exceeds the duration set in this field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_condition_duration_since_first_run: ::std::option::Option<
            ::std::string::String,
        >,
        ///The workflow will stop repeating if the number of repeats exceeds the value set in this field
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_condition_number_of_repeats: ::std::option::Option<i64>,
        ///Repeat workflow every duration
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_every_duration: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub repeat_on: ::std::option::Option<::std::vec::Vec<WorkflowRepeatOnItem>>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub service_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub severity_ids: ::std::vec::Vec<::std::string::String>,
        ///The slug of the workflow
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub sub_status_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub trigger_params: ::std::option::Option<WorkflowTriggerParams>,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///Wait this duration before executing
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub wait: ::std::option::Option<::std::string::String>,
        ///The group this workflow belongs to.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub workflow_group_id: ::std::option::Option<::std::string::String>,
    }
    impl Workflow {
        pub fn builder() -> builder::Workflow {
            Default::default()
        }
    }
    ///`WorkflowCustomFieldSelection`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "custom_field_id",
    ///    "incident_condition",
    ///    "selected_option_ids",
    ///    "workflow_id"
    ///  ],
    ///  "properties": {
    ///    "custom_field_id": {
    ///      "description": "The custom field for this selection",
    ///      "type": "integer"
    ///    },
    ///    "incident_condition": {
    ///      "description": "The trigger condition",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value to associate with the custom field trigger",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "workflow_id": {
    ///      "description": "The workflow for this selection",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowCustomFieldSelection {
        ///The custom field for this selection
        pub custom_field_id: i64,
        ///The trigger condition
        pub incident_condition: WorkflowCustomFieldSelectionIncidentCondition,
        pub selected_option_ids: ::std::vec::Vec<i64>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
        ///The workflow for this selection
        pub workflow_id: ::std::string::String,
    }
    impl WorkflowCustomFieldSelection {
        pub fn builder() -> builder::WorkflowCustomFieldSelection {
            Default::default()
        }
    }
    ///The trigger condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The trigger condition",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowCustomFieldSelectionIncidentCondition {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for WorkflowCustomFieldSelectionIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowCustomFieldSelectionIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str>
    for WorkflowCustomFieldSelectionIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowCustomFieldSelectionIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowCustomFieldSelectionIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for WorkflowCustomFieldSelectionIncidentCondition {
        fn default() -> Self {
            WorkflowCustomFieldSelectionIncidentCondition::Any
        }
    }
    ///`WorkflowCustomFieldSelectionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/workflow_custom_field_selection"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the workflow_custom_field_selection",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "workflow_custom_field_selections"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowCustomFieldSelectionList {
        pub data: ::std::vec::Vec<WorkflowCustomFieldSelectionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl WorkflowCustomFieldSelectionList {
        pub fn builder() -> builder::WorkflowCustomFieldSelectionList {
            Default::default()
        }
    }
    ///`WorkflowCustomFieldSelectionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_custom_field_selection"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow_custom_field_selection",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowCustomFieldSelectionListDataItem {
        pub attributes: WorkflowCustomFieldSelection,
        ///Unique ID of the workflow_custom_field_selection
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowCustomFieldSelectionListDataItemType,
    }
    impl WorkflowCustomFieldSelectionListDataItem {
        pub fn builder() -> builder::WorkflowCustomFieldSelectionListDataItem {
            Default::default()
        }
    }
    ///`WorkflowCustomFieldSelectionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowCustomFieldSelectionListDataItemType {
        #[serde(rename = "workflow_custom_field_selections")]
        WorkflowCustomFieldSelections,
    }
    impl ::std::fmt::Display for WorkflowCustomFieldSelectionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowCustomFieldSelections => {
                    f.write_str("workflow_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for WorkflowCustomFieldSelectionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_custom_field_selections" => {
                    Ok(Self::WorkflowCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowCustomFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowCustomFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowCustomFieldSelectionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowCustomFieldSelectionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/workflow_custom_field_selection"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the workflow_custom_field_selection",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_custom_field_selections"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowCustomFieldSelectionResponse {
        pub data: WorkflowCustomFieldSelectionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WorkflowCustomFieldSelectionResponse {
        pub fn builder() -> builder::WorkflowCustomFieldSelectionResponse {
            Default::default()
        }
    }
    ///`WorkflowCustomFieldSelectionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_custom_field_selection"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow_custom_field_selection",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_custom_field_selections"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowCustomFieldSelectionResponseData {
        pub attributes: WorkflowCustomFieldSelection,
        ///Unique ID of the workflow_custom_field_selection
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowCustomFieldSelectionResponseDataType,
    }
    impl WorkflowCustomFieldSelectionResponseData {
        pub fn builder() -> builder::WorkflowCustomFieldSelectionResponseData {
            Default::default()
        }
    }
    ///`WorkflowCustomFieldSelectionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_custom_field_selections"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowCustomFieldSelectionResponseDataType {
        #[serde(rename = "workflow_custom_field_selections")]
        WorkflowCustomFieldSelections,
    }
    impl ::std::fmt::Display for WorkflowCustomFieldSelectionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowCustomFieldSelections => {
                    f.write_str("workflow_custom_field_selections")
                }
            }
        }
    }
    impl ::std::str::FromStr for WorkflowCustomFieldSelectionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_custom_field_selections" => {
                    Ok(Self::WorkflowCustomFieldSelections)
                }
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowCustomFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowCustomFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowCustomFieldSelectionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowFormFieldCondition`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "form_field_id",
    ///    "incident_condition",
    ///    "selected_catalog_entity_ids",
    ///    "selected_option_ids",
    ///    "selected_user_ids",
    ///    "workflow_id"
    ///  ],
    ///  "properties": {
    ///    "form_field_id": {
    ///      "description": "The custom field for this condition",
    ///      "type": "string"
    ///    },
    ///    "incident_condition": {
    ///      "description": "The trigger condition",
    ///      "default": "ANY",
    ///      "type": "string",
    ///      "enum": [
    ///        "IS",
    ///        "IS NOT",
    ///        "ANY",
    ///        "CONTAINS",
    ///        "CONTAINS_ALL",
    ///        "CONTAINS_NONE",
    ///        "NONE",
    ///        "SET",
    ///        "UNSET"
    ///      ]
    ///    },
    ///    "selected_catalog_entity_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected catalog entities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_cause_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected causes for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_environment_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected environments for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_functionality_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected functionalities for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_group_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected groups (teams) for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_incident_type_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected incident types for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_option_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected option id for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_service_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected services for select and multi_select kinds",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "selected_user_ids": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The selected user id for select and multi_select kinds",
    ///        "type": "integer"
    ///      }
    ///    },
    ///    "values": {
    ///      "type": "array",
    ///      "items": {
    ///        "description": "The value to associate with the custom field trigger",
    ///        "type": "string"
    ///      }
    ///    },
    ///    "workflow_id": {
    ///      "description": "The workflow for this condition",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowFormFieldCondition {
        ///The custom field for this condition
        pub form_field_id: ::std::string::String,
        ///The trigger condition
        pub incident_condition: WorkflowFormFieldConditionIncidentCondition,
        pub selected_catalog_entity_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_cause_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_environment_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_functionality_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_group_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_incident_type_ids: ::std::vec::Vec<::std::string::String>,
        pub selected_option_ids: ::std::vec::Vec<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub selected_service_ids: ::std::vec::Vec<::std::string::String>,
        pub selected_user_ids: ::std::vec::Vec<i64>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub values: ::std::vec::Vec<::std::string::String>,
        ///The workflow for this condition
        pub workflow_id: ::std::string::String,
    }
    impl WorkflowFormFieldCondition {
        pub fn builder() -> builder::WorkflowFormFieldCondition {
            Default::default()
        }
    }
    ///The trigger condition
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The trigger condition",
    ///  "default": "ANY",
    ///  "type": "string",
    ///  "enum": [
    ///    "IS",
    ///    "IS NOT",
    ///    "ANY",
    ///    "CONTAINS",
    ///    "CONTAINS_ALL",
    ///    "CONTAINS_NONE",
    ///    "NONE",
    ///    "SET",
    ///    "UNSET"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowFormFieldConditionIncidentCondition {
        #[serde(rename = "IS")]
        Is,
        #[serde(rename = "IS NOT")]
        IsNot,
        #[serde(rename = "ANY")]
        Any,
        #[serde(rename = "CONTAINS")]
        Contains,
        #[serde(rename = "CONTAINS_ALL")]
        ContainsAll,
        #[serde(rename = "CONTAINS_NONE")]
        ContainsNone,
        #[serde(rename = "NONE")]
        None,
        #[serde(rename = "SET")]
        Set,
        #[serde(rename = "UNSET")]
        Unset,
    }
    impl ::std::fmt::Display for WorkflowFormFieldConditionIncidentCondition {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Is => f.write_str("IS"),
                Self::IsNot => f.write_str("IS NOT"),
                Self::Any => f.write_str("ANY"),
                Self::Contains => f.write_str("CONTAINS"),
                Self::ContainsAll => f.write_str("CONTAINS_ALL"),
                Self::ContainsNone => f.write_str("CONTAINS_NONE"),
                Self::None => f.write_str("NONE"),
                Self::Set => f.write_str("SET"),
                Self::Unset => f.write_str("UNSET"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowFormFieldConditionIncidentCondition {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "IS" => Ok(Self::Is),
                "IS NOT" => Ok(Self::IsNot),
                "ANY" => Ok(Self::Any),
                "CONTAINS" => Ok(Self::Contains),
                "CONTAINS_ALL" => Ok(Self::ContainsAll),
                "CONTAINS_NONE" => Ok(Self::ContainsNone),
                "NONE" => Ok(Self::None),
                "SET" => Ok(Self::Set),
                "UNSET" => Ok(Self::Unset),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowFormFieldConditionIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowFormFieldConditionIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowFormFieldConditionIncidentCondition {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::default::Default for WorkflowFormFieldConditionIncidentCondition {
        fn default() -> Self {
            WorkflowFormFieldConditionIncidentCondition::Any
        }
    }
    ///`WorkflowFormFieldConditionList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/workflow_form_field_condition"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the workflow_form_field_condition",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "workflow_form_field_conditions"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowFormFieldConditionList {
        pub data: ::std::vec::Vec<WorkflowFormFieldConditionListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl WorkflowFormFieldConditionList {
        pub fn builder() -> builder::WorkflowFormFieldConditionList {
            Default::default()
        }
    }
    ///`WorkflowFormFieldConditionListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_form_field_condition"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow_form_field_condition",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_form_field_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowFormFieldConditionListDataItem {
        pub attributes: WorkflowFormFieldCondition,
        ///Unique ID of the workflow_form_field_condition
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowFormFieldConditionListDataItemType,
    }
    impl WorkflowFormFieldConditionListDataItem {
        pub fn builder() -> builder::WorkflowFormFieldConditionListDataItem {
            Default::default()
        }
    }
    ///`WorkflowFormFieldConditionListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_form_field_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowFormFieldConditionListDataItemType {
        #[serde(rename = "workflow_form_field_conditions")]
        WorkflowFormFieldConditions,
    }
    impl ::std::fmt::Display for WorkflowFormFieldConditionListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowFormFieldConditions => {
                    f.write_str("workflow_form_field_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for WorkflowFormFieldConditionListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_form_field_conditions" => Ok(Self::WorkflowFormFieldConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowFormFieldConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowFormFieldConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowFormFieldConditionListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowFormFieldConditionResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/workflow_form_field_condition"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the workflow_form_field_condition",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_form_field_conditions"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowFormFieldConditionResponse {
        pub data: WorkflowFormFieldConditionResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WorkflowFormFieldConditionResponse {
        pub fn builder() -> builder::WorkflowFormFieldConditionResponse {
            Default::default()
        }
    }
    ///`WorkflowFormFieldConditionResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_form_field_condition"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow_form_field_condition",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_form_field_conditions"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowFormFieldConditionResponseData {
        pub attributes: WorkflowFormFieldCondition,
        ///Unique ID of the workflow_form_field_condition
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowFormFieldConditionResponseDataType,
    }
    impl WorkflowFormFieldConditionResponseData {
        pub fn builder() -> builder::WorkflowFormFieldConditionResponseData {
            Default::default()
        }
    }
    ///`WorkflowFormFieldConditionResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_form_field_conditions"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowFormFieldConditionResponseDataType {
        #[serde(rename = "workflow_form_field_conditions")]
        WorkflowFormFieldConditions,
    }
    impl ::std::fmt::Display for WorkflowFormFieldConditionResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowFormFieldConditions => {
                    f.write_str("workflow_form_field_conditions")
                }
            }
        }
    }
    impl ::std::str::FromStr for WorkflowFormFieldConditionResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_form_field_conditions" => Ok(Self::WorkflowFormFieldConditions),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowFormFieldConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowFormFieldConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowFormFieldConditionResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowGroup`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "name",
    ///    "position"
    ///  ],
    ///  "properties": {
    ///    "description": {
    ///      "description": "A description of the workflow group.",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "expanded": {
    ///      "description": "Whether the group is expanded or collapsed.",
    ///      "type": "boolean"
    ///    },
    ///    "icon": {
    ///      "description": "An emoji icon displayed next to the workflow group.",
    ///      "type": "string"
    ///    },
    ///    "kind": {
    ///      "description": "The kind of the workflow group",
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ],
    ///      "enum": [
    ///        "simple",
    ///        "incident",
    ///        "post_mortem",
    ///        "action_item",
    ///        "pulse",
    ///        "alert"
    ///      ]
    ///    },
    ///    "name": {
    ///      "description": "The name of the workflow group.",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the workflow group",
    ///      "type": "integer"
    ///    },
    ///    "slug": {
    ///      "description": "The slug of the workflow group.",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowGroup {
        ///A description of the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub description: ::std::option::Option<::std::string::String>,
        ///Whether the group is expanded or collapsed.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub expanded: ::std::option::Option<bool>,
        ///An emoji icon displayed next to the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub icon: ::std::option::Option<::std::string::String>,
        ///The kind of the workflow group
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub kind: ::std::option::Option<WorkflowGroupKind>,
        ///The name of the workflow group.
        pub name: ::std::string::String,
        ///The position of the workflow group
        pub position: i64,
        ///The slug of the workflow group.
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub slug: ::std::option::Option<::std::string::String>,
    }
    impl WorkflowGroup {
        pub fn builder() -> builder::WorkflowGroup {
            Default::default()
        }
    }
    ///The kind of the workflow group
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "The kind of the workflow group",
    ///  "type": "string",
    ///  "enum": [
    ///    "simple",
    ///    "incident",
    ///    "post_mortem",
    ///    "action_item",
    ///    "pulse",
    ///    "alert"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowGroupKind {
        #[serde(rename = "simple")]
        Simple,
        #[serde(rename = "incident")]
        Incident,
        #[serde(rename = "post_mortem")]
        PostMortem,
        #[serde(rename = "action_item")]
        ActionItem,
        #[serde(rename = "pulse")]
        Pulse,
        #[serde(rename = "alert")]
        Alert,
    }
    impl ::std::fmt::Display for WorkflowGroupKind {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Simple => f.write_str("simple"),
                Self::Incident => f.write_str("incident"),
                Self::PostMortem => f.write_str("post_mortem"),
                Self::ActionItem => f.write_str("action_item"),
                Self::Pulse => f.write_str("pulse"),
                Self::Alert => f.write_str("alert"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowGroupKind {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "simple" => Ok(Self::Simple),
                "incident" => Ok(Self::Incident),
                "post_mortem" => Ok(Self::PostMortem),
                "action_item" => Ok(Self::ActionItem),
                "pulse" => Ok(Self::Pulse),
                "alert" => Ok(Self::Alert),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowGroupKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for WorkflowGroupKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowGroupKind {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowGroupList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/workflow_group"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the workflow group",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "workflow_groups"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowGroupList {
        pub data: ::std::vec::Vec<WorkflowGroupListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl WorkflowGroupList {
        pub fn builder() -> builder::WorkflowGroupList {
            Default::default()
        }
    }
    ///`WorkflowGroupListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowGroupListDataItem {
        pub attributes: WorkflowGroup,
        ///Unique ID of the workflow group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowGroupListDataItemType,
    }
    impl WorkflowGroupListDataItem {
        pub fn builder() -> builder::WorkflowGroupListDataItem {
            Default::default()
        }
    }
    ///`WorkflowGroupListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowGroupListDataItemType {
        #[serde(rename = "workflow_groups")]
        WorkflowGroups,
    }
    impl ::std::fmt::Display for WorkflowGroupListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowGroups => f.write_str("workflow_groups"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowGroupListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_groups" => Ok(Self::WorkflowGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowGroupListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowGroupResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/workflow_group"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the workflow group",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_groups"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowGroupResponse {
        pub data: WorkflowGroupResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WorkflowGroupResponse {
        pub fn builder() -> builder::WorkflowGroupResponse {
            Default::default()
        }
    }
    ///`WorkflowGroupResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_group"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow group",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_groups"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowGroupResponseData {
        pub attributes: WorkflowGroup,
        ///Unique ID of the workflow group
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowGroupResponseDataType,
    }
    impl WorkflowGroupResponseData {
        pub fn builder() -> builder::WorkflowGroupResponseData {
            Default::default()
        }
    }
    ///`WorkflowGroupResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_groups"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowGroupResponseDataType {
        #[serde(rename = "workflow_groups")]
        WorkflowGroups,
    }
    impl ::std::fmt::Display for WorkflowGroupResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowGroups => f.write_str("workflow_groups"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowGroupResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_groups" => Ok(Self::WorkflowGroups),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowGroupResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/workflow"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the workflow",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "workflows"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowList {
        pub data: ::std::vec::Vec<WorkflowListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl WorkflowList {
        pub fn builder() -> builder::WorkflowList {
            Default::default()
        }
    }
    ///`WorkflowListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowListDataItem {
        pub attributes: Workflow,
        ///Unique ID of the workflow
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowListDataItemType,
    }
    impl WorkflowListDataItem {
        pub fn builder() -> builder::WorkflowListDataItem {
            Default::default()
        }
    }
    ///`WorkflowListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowListDataItemType {
        #[serde(rename = "workflows")]
        Workflows,
    }
    impl ::std::fmt::Display for WorkflowListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Workflows => f.write_str("workflows"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflows" => Ok(Self::Workflows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for WorkflowListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///Repeat on weekdays
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "description": "Repeat on weekdays",
    ///  "type": "string",
    ///  "enum": [
    ///    "S",
    ///    "M",
    ///    "T",
    ///    "W",
    ///    "R",
    ///    "F",
    ///    "U"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowRepeatOnItem {
        S,
        M,
        T,
        W,
        R,
        F,
        U,
    }
    impl ::std::fmt::Display for WorkflowRepeatOnItem {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::S => f.write_str("S"),
                Self::M => f.write_str("M"),
                Self::T => f.write_str("T"),
                Self::W => f.write_str("W"),
                Self::R => f.write_str("R"),
                Self::F => f.write_str("F"),
                Self::U => f.write_str("U"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowRepeatOnItem {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "S" => Ok(Self::S),
                "M" => Ok(Self::M),
                "T" => Ok(Self::T),
                "W" => Ok(Self::W),
                "R" => Ok(Self::R),
                "F" => Ok(Self::F),
                "U" => Ok(Self::U),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowRepeatOnItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for WorkflowRepeatOnItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowRepeatOnItem {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/workflow"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the workflow",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflows"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowResponse {
        pub data: WorkflowResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WorkflowResponse {
        pub fn builder() -> builder::WorkflowResponse {
            Default::default()
        }
    }
    ///`WorkflowResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflows"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowResponseData {
        pub attributes: Workflow,
        ///Unique ID of the workflow
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowResponseDataType,
    }
    impl WorkflowResponseData {
        pub fn builder() -> builder::WorkflowResponseData {
            Default::default()
        }
    }
    ///`WorkflowResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflows"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowResponseDataType {
        #[serde(rename = "workflows")]
        Workflows,
    }
    impl ::std::fmt::Display for WorkflowResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Workflows => f.write_str("workflows"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflows" => Ok(Self::Workflows),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for WorkflowResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowRun`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "status",
    ///    "triggered_by",
    ///    "workflow_id"
    ///  ],
    ///  "properties": {
    ///    "action_item_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "alert_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "canceled_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "completed_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "context": {
    ///      "type": "object",
    ///      "additionalProperties": true
    ///    },
    ///    "failed_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "incident_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "post_mortem_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "pulse_id": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "started_at": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "status": {
    ///      "type": "string",
    ///      "enum": [
    ///        "queued",
    ///        "started",
    ///        "completed",
    ///        "completed_with_errors",
    ///        "failed",
    ///        "canceled"
    ///      ]
    ///    },
    ///    "status_message": {
    ///      "type": [
    ///        "string",
    ///        "null"
    ///      ]
    ///    },
    ///    "triggered_by": {
    ///      "type": "string",
    ///      "enum": [
    ///        "system",
    ///        "user",
    ///        "workflow"
    ///      ]
    ///    },
    ///    "workflow_id": {
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowRun {
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub action_item_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub alert_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub canceled_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub completed_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::serde_json::Map::is_empty")]
        pub context: ::serde_json::Map<::std::string::String, ::serde_json::Value>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub failed_at: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub incident_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub post_mortem_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub pulse_id: ::std::option::Option<::std::string::String>,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub started_at: ::std::option::Option<::std::string::String>,
        pub status: WorkflowRunStatus,
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub status_message: ::std::option::Option<::std::string::String>,
        pub triggered_by: WorkflowRunTriggeredBy,
        pub workflow_id: ::std::string::String,
    }
    impl WorkflowRun {
        pub fn builder() -> builder::WorkflowRun {
            Default::default()
        }
    }
    ///`WorkflowRunResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/workflow_run"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the workflow run",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_runs"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowRunResponse {
        pub data: WorkflowRunResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WorkflowRunResponse {
        pub fn builder() -> builder::WorkflowRunResponse {
            Default::default()
        }
    }
    ///`WorkflowRunResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_run"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow run",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_runs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowRunResponseData {
        pub attributes: WorkflowRun,
        ///Unique ID of the workflow run
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowRunResponseDataType,
    }
    impl WorkflowRunResponseData {
        pub fn builder() -> builder::WorkflowRunResponseData {
            Default::default()
        }
    }
    ///`WorkflowRunResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_runs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowRunResponseDataType {
        #[serde(rename = "workflow_runs")]
        WorkflowRuns,
    }
    impl ::std::fmt::Display for WorkflowRunResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowRuns => f.write_str("workflow_runs"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowRunResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_runs" => Ok(Self::WorkflowRuns),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowRunResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowRunResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowRunResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowRunStatus`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "queued",
    ///    "started",
    ///    "completed",
    ///    "completed_with_errors",
    ///    "failed",
    ///    "canceled"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowRunStatus {
        #[serde(rename = "queued")]
        Queued,
        #[serde(rename = "started")]
        Started,
        #[serde(rename = "completed")]
        Completed,
        #[serde(rename = "completed_with_errors")]
        CompletedWithErrors,
        #[serde(rename = "failed")]
        Failed,
        #[serde(rename = "canceled")]
        Canceled,
    }
    impl ::std::fmt::Display for WorkflowRunStatus {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::Queued => f.write_str("queued"),
                Self::Started => f.write_str("started"),
                Self::Completed => f.write_str("completed"),
                Self::CompletedWithErrors => f.write_str("completed_with_errors"),
                Self::Failed => f.write_str("failed"),
                Self::Canceled => f.write_str("canceled"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowRunStatus {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "queued" => Ok(Self::Queued),
                "started" => Ok(Self::Started),
                "completed" => Ok(Self::Completed),
                "completed_with_errors" => Ok(Self::CompletedWithErrors),
                "failed" => Ok(Self::Failed),
                "canceled" => Ok(Self::Canceled),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowRunStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for WorkflowRunStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowRunStatus {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowRunTriggeredBy`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "system",
    ///    "user",
    ///    "workflow"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowRunTriggeredBy {
        #[serde(rename = "system")]
        System,
        #[serde(rename = "user")]
        User,
        #[serde(rename = "workflow")]
        Workflow,
    }
    impl ::std::fmt::Display for WorkflowRunTriggeredBy {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::System => f.write_str("system"),
                Self::User => f.write_str("user"),
                Self::Workflow => f.write_str("workflow"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowRunTriggeredBy {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "system" => Ok(Self::System),
                "user" => Ok(Self::User),
                "workflow" => Ok(Self::Workflow),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowRunTriggeredBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String> for WorkflowRunTriggeredBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String> for WorkflowRunTriggeredBy {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowRunsList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/workflow_run"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the workflow run",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "workflow_runs"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowRunsList {
        pub data: ::std::vec::Vec<WorkflowRunsListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl WorkflowRunsList {
        pub fn builder() -> builder::WorkflowRunsList {
            Default::default()
        }
    }
    ///`WorkflowRunsListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_run"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow run",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_runs"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowRunsListDataItem {
        pub attributes: WorkflowRun,
        ///Unique ID of the workflow run
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowRunsListDataItemType,
    }
    impl WorkflowRunsListDataItem {
        pub fn builder() -> builder::WorkflowRunsListDataItem {
            Default::default()
        }
    }
    ///`WorkflowRunsListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_runs"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowRunsListDataItemType {
        #[serde(rename = "workflow_runs")]
        WorkflowRuns,
    }
    impl ::std::fmt::Display for WorkflowRunsListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowRuns => f.write_str("workflow_runs"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowRunsListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_runs" => Ok(Self::WorkflowRuns),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowRunsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowRunsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowRunsListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowTask`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "created_at",
    ///    "enabled",
    ///    "position",
    ///    "skip_on_failure",
    ///    "task_params",
    ///    "updated_at",
    ///    "workflow_id"
    ///  ],
    ///  "properties": {
    ///    "created_at": {
    ///      "description": "Date of creation",
    ///      "type": "string"
    ///    },
    ///    "enabled": {
    ///      "description": "Enable/disable workflow task",
    ///      "default": true,
    ///      "type": "boolean"
    ///    },
    ///    "name": {
    ///      "description": "Name of the workflow task",
    ///      "type": "string"
    ///    },
    ///    "position": {
    ///      "description": "The position of the workflow task",
    ///      "type": "integer"
    ///    },
    ///    "skip_on_failure": {
    ///      "description": "Skip workflow task if any failures",
    ///      "type": "boolean"
    ///    },
    ///    "task_params": {
    ///      "oneOf": [
    ///        {
    ///          "$ref": "#/components/schemas/add_action_item_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_action_item_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_role_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_team_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/call_people_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_asana_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_coda_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_github_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_coda_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_quip_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_notion_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_notion_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_quip_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_trello_card_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_motion_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_github_commits_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_pulses_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/get_alerts_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/http_client_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/print_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/publish_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/redis_client_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_email_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_slack_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_sms_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_asana_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_github_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_status_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_trello_card_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_motion_task_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///        },
    ///        {
    ///          "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///        }
    ///      ]
    ///    },
    ///    "updated_at": {
    ///      "description": "Date of last update",
    ///      "type": "string"
    ///    },
    ///    "workflow_id": {
    ///      "description": "The ID of the parent workflow",
    ///      "type": "string"
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowTask {
        ///Date of creation
        pub created_at: ::std::string::String,
        ///Enable/disable workflow task
        pub enabled: bool,
        ///Name of the workflow task
        #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
        pub name: ::std::option::Option<::std::string::String>,
        ///The position of the workflow task
        pub position: i64,
        ///Skip workflow task if any failures
        pub skip_on_failure: bool,
        pub task_params: WorkflowTaskTaskParams,
        ///Date of last update
        pub updated_at: ::std::string::String,
        ///The ID of the parent workflow
        pub workflow_id: ::std::string::String,
    }
    impl WorkflowTask {
        pub fn builder() -> builder::WorkflowTask {
            Default::default()
        }
    }
    ///`WorkflowTaskList`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data",
    ///    "links",
    ///    "meta"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "array",
    ///      "items": {
    ///        "type": "object",
    ///        "required": [
    ///          "attributes",
    ///          "id",
    ///          "type"
    ///        ],
    ///        "properties": {
    ///          "attributes": {
    ///            "type": "object",
    ///            "allOf": [
    ///              {
    ///                "$ref": "#/components/schemas/workflow_task"
    ///              }
    ///            ]
    ///          },
    ///          "id": {
    ///            "description": "Unique ID of the workflow task",
    ///            "type": "string"
    ///          },
    ///          "type": {
    ///            "type": "string",
    ///            "enum": [
    ///              "workflow_tasks"
    ///            ]
    ///          }
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    },
    ///    "links": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/links"
    ///        }
    ///      ]
    ///    },
    ///    "meta": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/meta"
    ///        }
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowTaskList {
        pub data: ::std::vec::Vec<WorkflowTaskListDataItem>,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
        pub links: Links,
        pub meta: Meta,
    }
    impl WorkflowTaskList {
        pub fn builder() -> builder::WorkflowTaskList {
            Default::default()
        }
    }
    ///`WorkflowTaskListDataItem`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_task"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow task",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowTaskListDataItem {
        pub attributes: WorkflowTask,
        ///Unique ID of the workflow task
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowTaskListDataItemType,
    }
    impl WorkflowTaskListDataItem {
        pub fn builder() -> builder::WorkflowTaskListDataItem {
            Default::default()
        }
    }
    ///`WorkflowTaskListDataItemType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowTaskListDataItemType {
        #[serde(rename = "workflow_tasks")]
        WorkflowTasks,
    }
    impl ::std::fmt::Display for WorkflowTaskListDataItemType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowTasks => f.write_str("workflow_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowTaskListDataItemType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_tasks" => Ok(Self::WorkflowTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowTaskListDataItemType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowTaskResponse`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "data"
    ///  ],
    ///  "properties": {
    ///    "data": {
    ///      "type": "object",
    ///      "required": [
    ///        "attributes",
    ///        "id",
    ///        "type"
    ///      ],
    ///      "properties": {
    ///        "attributes": {
    ///          "type": "object",
    ///          "allOf": [
    ///            {
    ///              "$ref": "#/components/schemas/workflow_task"
    ///            }
    ///          ]
    ///        },
    ///        "id": {
    ///          "description": "Unique ID of the workflow task",
    ///          "type": "string"
    ///        },
    ///        "type": {
    ///          "type": "string",
    ///          "enum": [
    ///            "workflow_tasks"
    ///          ]
    ///        }
    ///      }
    ///    },
    ///    "included": {
    ///      "type": "array",
    ///      "items": {
    ///        "$ref": "#/components/schemas/jsonapi_included_resource"
    ///      }
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowTaskResponse {
        pub data: WorkflowTaskResponseData,
        #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
        pub included: ::std::vec::Vec<JsonapiIncludedResource>,
    }
    impl WorkflowTaskResponse {
        pub fn builder() -> builder::WorkflowTaskResponse {
            Default::default()
        }
    }
    ///`WorkflowTaskResponseData`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "object",
    ///  "required": [
    ///    "attributes",
    ///    "id",
    ///    "type"
    ///  ],
    ///  "properties": {
    ///    "attributes": {
    ///      "type": "object",
    ///      "allOf": [
    ///        {
    ///          "$ref": "#/components/schemas/workflow_task"
    ///        }
    ///      ]
    ///    },
    ///    "id": {
    ///      "description": "Unique ID of the workflow task",
    ///      "type": "string"
    ///    },
    ///    "type": {
    ///      "type": "string",
    ///      "enum": [
    ///        "workflow_tasks"
    ///      ]
    ///    }
    ///  }
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    pub struct WorkflowTaskResponseData {
        pub attributes: WorkflowTask,
        ///Unique ID of the workflow task
        pub id: ::std::string::String,
        #[serde(rename = "type")]
        pub type_: WorkflowTaskResponseDataType,
    }
    impl WorkflowTaskResponseData {
        pub fn builder() -> builder::WorkflowTaskResponseData {
            Default::default()
        }
    }
    ///`WorkflowTaskResponseDataType`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "type": "string",
    ///  "enum": [
    ///    "workflow_tasks"
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(
        ::serde::Deserialize,
        ::serde::Serialize,
        Clone,
        Copy,
        Debug,
        Eq,
        Hash,
        Ord,
        PartialEq,
        PartialOrd
    )]
    pub enum WorkflowTaskResponseDataType {
        #[serde(rename = "workflow_tasks")]
        WorkflowTasks,
    }
    impl ::std::fmt::Display for WorkflowTaskResponseDataType {
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
            match *self {
                Self::WorkflowTasks => f.write_str("workflow_tasks"),
            }
        }
    }
    impl ::std::str::FromStr for WorkflowTaskResponseDataType {
        type Err = self::error::ConversionError;
        fn from_str(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            match value {
                "workflow_tasks" => Ok(Self::WorkflowTasks),
                _ => Err("invalid value".into()),
            }
        }
    }
    impl ::std::convert::TryFrom<&str> for WorkflowTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &str,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<&::std::string::String>
    for WorkflowTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: &::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    impl ::std::convert::TryFrom<::std::string::String>
    for WorkflowTaskResponseDataType {
        type Error = self::error::ConversionError;
        fn try_from(
            value: ::std::string::String,
        ) -> ::std::result::Result<Self, self::error::ConversionError> {
            value.parse()
        }
    }
    ///`WorkflowTaskTaskParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "$ref": "#/components/schemas/add_action_item_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_action_item_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_role_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_slack_bookmark_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_team_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_to_timeline_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_slack_channels_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/attach_datadog_dashboards_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_opsgenie_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_rootly_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_pagerduty_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_pagerduty_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_pagerduty_status_update_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_pagertree_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_pagertree_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/auto_assign_role_victor_ops_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/call_people_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_airtable_table_record_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_asana_subtask_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_asana_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_confluence_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_datadog_notebook_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_coda_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_dropbox_paper_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_github_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_gitlab_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_outlook_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_calendar_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_docs_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_coda_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_calendar_event_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_sharepoint_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_docs_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_docs_permissions_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/remove_google_docs_permissions_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_quip_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_go_to_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_sub_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_incident_postmortem_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jira_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jira_subtask_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_subtask_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_linear_issue_comment_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_microsoft_teams_chat_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_microsoft_teams_tab_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/add_microsoft_teams_chat_tab_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_google_chat_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_google_chat_attachments_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_google_chat_spaces_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_google_chat_space_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_google_chat_space_description_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/change_google_chat_space_privacy_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/archive_microsoft_teams_channels_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_microsoft_teams_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_notion_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_chat_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_microsoft_teams_blocks_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_notion_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_quip_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_confluence_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_sharepoint_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_dropbox_paper_page_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_datadog_notebook_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_service_now_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_shortcut_story_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_shortcut_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_trello_card_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_webex_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zendesk_ticket_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zendesk_jira_link_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_clickup_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_motion_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_zoom_meeting_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_github_commits_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_gitlab_commits_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_pulses_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/get_alerts_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/http_client_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_opsgenie_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_rootly_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_pagerduty_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/invite_to_slack_channel_victor_ops_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_opsgenie_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_opsgenie_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_jsmops_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_jsmops_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_opsgenie_alert_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_opsgenie_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_rootly_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_pagerduty_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/page_victor_ops_on_call_responders_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_victor_ops_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/print_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/publish_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/redis_client_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/rename_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/change_slack_channel_privacy_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/run_command_heroku_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_email_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_dashboard_report_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_slack_channel_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_slack_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_sms_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_whatsapp_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_datadog_graph_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_grafana_dashboard_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_looker_look_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/snapshot_new_relic_graph_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/tweet_twitter_message_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_airtable_table_record_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_asana_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_github_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_gitlab_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_postmortem_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_jira_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_linear_issue_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_service_now_incident_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_shortcut_story_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_shortcut_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_slack_channel_topic_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_status_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_incident_status_timestamp_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_trello_card_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_clickup_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_motion_task_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_zendesk_ticket_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/update_attached_alerts_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/trigger_workflow_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/send_slack_blocks_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_openai_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_watsonx_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_google_gemini_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_mistral_chat_completion_task_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/create_anthropic_chat_completion_task_params"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum WorkflowTaskTaskParams {
        AddActionItemTaskParams(AddActionItemTaskParams),
        UpdateActionItemTaskParams(UpdateActionItemTaskParams),
        AddRoleTaskParams(AddRoleTaskParams),
        AddSlackBookmarkTaskParams(AddSlackBookmarkTaskParams),
        AddTeamTaskParams(AddTeamTaskParams),
        AddToTimelineTaskParams(AddToTimelineTaskParams),
        ArchiveSlackChannelsTaskParams(ArchiveSlackChannelsTaskParams),
        AttachDatadogDashboardsTaskParams(AttachDatadogDashboardsTaskParams),
        AutoAssignRoleOpsgenieTaskParams(AutoAssignRoleOpsgenieTaskParams),
        AutoAssignRoleRootlyTaskParams(AutoAssignRoleRootlyTaskParams),
        AutoAssignRolePagerdutyTaskParams(AutoAssignRolePagerdutyTaskParams),
        UpdatePagerdutyIncidentTaskParams(UpdatePagerdutyIncidentTaskParams),
        CreatePagerdutyStatusUpdateTaskParams(CreatePagerdutyStatusUpdateTaskParams),
        CreatePagertreeAlertTaskParams(CreatePagertreeAlertTaskParams),
        UpdatePagertreeAlertTaskParams(UpdatePagertreeAlertTaskParams),
        AutoAssignRoleVictorOpsTaskParams(AutoAssignRoleVictorOpsTaskParams),
        CallPeopleTaskParams(CallPeopleTaskParams),
        CreateAirtableTableRecordTaskParams(CreateAirtableTableRecordTaskParams),
        CreateAsanaSubtaskTaskParams(CreateAsanaSubtaskTaskParams),
        CreateAsanaTaskTaskParams(CreateAsanaTaskTaskParams),
        CreateConfluencePageTaskParams(CreateConfluencePageTaskParams),
        CreateDatadogNotebookTaskParams(CreateDatadogNotebookTaskParams),
        CreateCodaPageTaskParams(CreateCodaPageTaskParams),
        CreateDropboxPaperPageTaskParams(CreateDropboxPaperPageTaskParams),
        CreateGithubIssueTaskParams(CreateGithubIssueTaskParams),
        CreateGitlabIssueTaskParams(CreateGitlabIssueTaskParams),
        CreateOutlookEventTaskParams(CreateOutlookEventTaskParams),
        CreateGoogleCalendarEventTaskParams(CreateGoogleCalendarEventTaskParams),
        UpdateGoogleDocsPageTaskParams(UpdateGoogleDocsPageTaskParams),
        UpdateCodaPageTaskParams(UpdateCodaPageTaskParams),
        UpdateGoogleCalendarEventTaskParams(UpdateGoogleCalendarEventTaskParams),
        CreateSharepointPageTaskParams(CreateSharepointPageTaskParams),
        CreateGoogleDocsPageTaskParams(CreateGoogleDocsPageTaskParams),
        CreateGoogleDocsPermissionsTaskParams(CreateGoogleDocsPermissionsTaskParams),
        RemoveGoogleDocsPermissionsTaskParams(RemoveGoogleDocsPermissionsTaskParams),
        CreateQuipPageTaskParams(CreateQuipPageTaskParams),
        CreateGoogleMeetingTaskParams(CreateGoogleMeetingTaskParams),
        CreateGoToMeetingTaskParams(CreateGoToMeetingTaskParams),
        CreateIncidentTaskParams(CreateIncidentTaskParams),
        CreateSubIncidentTaskParams(CreateSubIncidentTaskParams),
        CreateIncidentPostmortemTaskParams(CreateIncidentPostmortemTaskParams),
        CreateJiraIssueTaskParams(CreateJiraIssueTaskParams),
        CreateJiraSubtaskTaskParams(CreateJiraSubtaskTaskParams),
        CreateLinearIssueTaskParams(CreateLinearIssueTaskParams),
        CreateLinearSubtaskIssueTaskParams(CreateLinearSubtaskIssueTaskParams),
        CreateLinearIssueCommentTaskParams(CreateLinearIssueCommentTaskParams),
        CreateMicrosoftTeamsMeetingTaskParams(CreateMicrosoftTeamsMeetingTaskParams),
        CreateMicrosoftTeamsChannelTaskParams(CreateMicrosoftTeamsChannelTaskParams),
        CreateMicrosoftTeamsChatTaskParams(CreateMicrosoftTeamsChatTaskParams),
        AddMicrosoftTeamsTabTaskParams(AddMicrosoftTeamsTabTaskParams),
        AddMicrosoftTeamsChatTabTaskParams(AddMicrosoftTeamsChatTabTaskParams),
        CreateGoogleChatSpaceTaskParams(CreateGoogleChatSpaceTaskParams),
        SendGoogleChatMessageTaskParams(SendGoogleChatMessageTaskParams),
        SendGoogleChatAttachmentsTaskParams(SendGoogleChatAttachmentsTaskParams),
        InviteToGoogleChatSpaceTaskParams(InviteToGoogleChatSpaceTaskParams),
        ArchiveGoogleChatSpacesTaskParams(ArchiveGoogleChatSpacesTaskParams),
        RenameGoogleChatSpaceTaskParams(RenameGoogleChatSpaceTaskParams),
        UpdateGoogleChatSpaceDescriptionTaskParams(
            UpdateGoogleChatSpaceDescriptionTaskParams,
        ),
        ChangeGoogleChatSpacePrivacyTaskParams(ChangeGoogleChatSpacePrivacyTaskParams),
        ArchiveMicrosoftTeamsChannelsTaskParams(ArchiveMicrosoftTeamsChannelsTaskParams),
        RenameMicrosoftTeamsChannelTaskParams(RenameMicrosoftTeamsChannelTaskParams),
        InviteToMicrosoftTeamsChannelTaskParams(InviteToMicrosoftTeamsChannelTaskParams),
        CreateNotionPageTaskParams(CreateNotionPageTaskParams),
        SendMicrosoftTeamsMessageTaskParams(SendMicrosoftTeamsMessageTaskParams),
        SendMicrosoftTeamsChatMessageTaskParams(SendMicrosoftTeamsChatMessageTaskParams),
        SendMicrosoftTeamsBlocksTaskParams(SendMicrosoftTeamsBlocksTaskParams),
        UpdateNotionPageTaskParams(UpdateNotionPageTaskParams),
        UpdateQuipPageTaskParams(UpdateQuipPageTaskParams),
        UpdateConfluencePageTaskParams(UpdateConfluencePageTaskParams),
        UpdateSharepointPageTaskParams(UpdateSharepointPageTaskParams),
        UpdateDropboxPaperPageTaskParams(UpdateDropboxPaperPageTaskParams),
        UpdateDatadogNotebookTaskParams(UpdateDatadogNotebookTaskParams),
        CreateServiceNowIncidentTaskParams(CreateServiceNowIncidentTaskParams),
        CreateShortcutStoryTaskParams(CreateShortcutStoryTaskParams),
        CreateShortcutTaskTaskParams(CreateShortcutTaskTaskParams),
        CreateTrelloCardTaskParams(CreateTrelloCardTaskParams),
        CreateWebexMeetingTaskParams(CreateWebexMeetingTaskParams),
        CreateZendeskTicketTaskParams(CreateZendeskTicketTaskParams),
        CreateZendeskJiraLinkTaskParams(CreateZendeskJiraLinkTaskParams),
        CreateClickupTaskTaskParams(CreateClickupTaskTaskParams),
        CreateMotionTaskTaskParams(CreateMotionTaskTaskParams),
        CreateZoomMeetingTaskParams(CreateZoomMeetingTaskParams),
        GetGithubCommitsTaskParams(GetGithubCommitsTaskParams),
        GetGitlabCommitsTaskParams(GetGitlabCommitsTaskParams),
        GetPulsesTaskParams(GetPulsesTaskParams),
        GetAlertsTaskParams(GetAlertsTaskParams),
        HttpClientTaskParams(HttpClientTaskParams),
        InviteToSlackChannelOpsgenieTaskParams(InviteToSlackChannelOpsgenieTaskParams),
        InviteToSlackChannelRootlyTaskParams(InviteToSlackChannelRootlyTaskParams),
        InviteToSlackChannelPagerdutyTaskParams(InviteToSlackChannelPagerdutyTaskParams),
        InviteToSlackChannelTaskParams(InviteToSlackChannelTaskParams),
        InviteToSlackChannelVictorOpsTaskParams(InviteToSlackChannelVictorOpsTaskParams),
        PageOpsgenieOnCallRespondersTaskParams(PageOpsgenieOnCallRespondersTaskParams),
        CreateOpsgenieAlertTaskParams(CreateOpsgenieAlertTaskParams),
        CreateJsmopsAlertTaskParams(CreateJsmopsAlertTaskParams),
        PageJsmopsOnCallRespondersTaskParams(PageJsmopsOnCallRespondersTaskParams),
        UpdateOpsgenieAlertTaskParams(UpdateOpsgenieAlertTaskParams),
        UpdateOpsgenieIncidentTaskParams(UpdateOpsgenieIncidentTaskParams),
        PageRootlyOnCallRespondersTaskParams(PageRootlyOnCallRespondersTaskParams),
        PagePagerdutyOnCallRespondersTaskParams(PagePagerdutyOnCallRespondersTaskParams),
        PageVictorOpsOnCallRespondersTaskParams(PageVictorOpsOnCallRespondersTaskParams),
        UpdateVictorOpsIncidentTaskParams(UpdateVictorOpsIncidentTaskParams),
        PrintTaskParams(PrintTaskParams),
        PublishIncidentTaskParams(PublishIncidentTaskParams),
        RedisClientTaskParams(RedisClientTaskParams),
        RenameSlackChannelTaskParams(RenameSlackChannelTaskParams),
        ChangeSlackChannelPrivacyTaskParams(ChangeSlackChannelPrivacyTaskParams),
        RunCommandHerokuTaskParams(RunCommandHerokuTaskParams),
        SendEmailTaskParams(SendEmailTaskParams),
        SendDashboardReportTaskParams(SendDashboardReportTaskParams),
        CreateSlackChannelTaskParams(CreateSlackChannelTaskParams),
        SendSlackMessageTaskParams(SendSlackMessageTaskParams),
        SendSmsTaskParams(SendSmsTaskParams),
        SendWhatsappMessageTaskParams(SendWhatsappMessageTaskParams),
        SnapshotDatadogGraphTaskParams(SnapshotDatadogGraphTaskParams),
        SnapshotGrafanaDashboardTaskParams(SnapshotGrafanaDashboardTaskParams),
        SnapshotLookerLookTaskParams(SnapshotLookerLookTaskParams),
        SnapshotNewRelicGraphTaskParams(SnapshotNewRelicGraphTaskParams),
        TweetTwitterMessageTaskParams(TweetTwitterMessageTaskParams),
        UpdateAirtableTableRecordTaskParams(UpdateAirtableTableRecordTaskParams),
        UpdateAsanaTaskTaskParams(UpdateAsanaTaskTaskParams),
        UpdateGithubIssueTaskParams(UpdateGithubIssueTaskParams),
        UpdateGitlabIssueTaskParams(UpdateGitlabIssueTaskParams),
        UpdateIncidentTaskParams(UpdateIncidentTaskParams),
        UpdateIncidentPostmortemTaskParams(UpdateIncidentPostmortemTaskParams),
        UpdateJiraIssueTaskParams(UpdateJiraIssueTaskParams),
        UpdateLinearIssueTaskParams(UpdateLinearIssueTaskParams),
        UpdateServiceNowIncidentTaskParams(UpdateServiceNowIncidentTaskParams),
        UpdateShortcutStoryTaskParams(UpdateShortcutStoryTaskParams),
        UpdateShortcutTaskTaskParams(UpdateShortcutTaskTaskParams),
        UpdateSlackChannelTopicTaskParams(UpdateSlackChannelTopicTaskParams),
        UpdateStatusTaskParams(UpdateStatusTaskParams),
        UpdateIncidentStatusTimestampTaskParams(UpdateIncidentStatusTimestampTaskParams),
        UpdateTrelloCardTaskParams(UpdateTrelloCardTaskParams),
        UpdateClickupTaskTaskParams(UpdateClickupTaskTaskParams),
        UpdateMotionTaskTaskParams(UpdateMotionTaskTaskParams),
        UpdateZendeskTicketTaskParams(UpdateZendeskTicketTaskParams),
        UpdateAttachedAlertsTaskParams(UpdateAttachedAlertsTaskParams),
        TriggerWorkflowTaskParams(TriggerWorkflowTaskParams),
        SendSlackBlocksTaskParams(SendSlackBlocksTaskParams),
        CreateOpenaiChatCompletionTaskParams(CreateOpenaiChatCompletionTaskParams),
        CreateWatsonxChatCompletionTaskParams(CreateWatsonxChatCompletionTaskParams),
        CreateGoogleGeminiChatCompletionTaskParams(
            CreateGoogleGeminiChatCompletionTaskParams,
        ),
        CreateMistralChatCompletionTaskParams(CreateMistralChatCompletionTaskParams),
        CreateAnthropicChatCompletionTaskParams(CreateAnthropicChatCompletionTaskParams),
    }
    impl ::std::convert::From<AddActionItemTaskParams> for WorkflowTaskTaskParams {
        fn from(value: AddActionItemTaskParams) -> Self {
            Self::AddActionItemTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateActionItemTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateActionItemTaskParams) -> Self {
            Self::UpdateActionItemTaskParams(value)
        }
    }
    impl ::std::convert::From<AddRoleTaskParams> for WorkflowTaskTaskParams {
        fn from(value: AddRoleTaskParams) -> Self {
            Self::AddRoleTaskParams(value)
        }
    }
    impl ::std::convert::From<AddSlackBookmarkTaskParams> for WorkflowTaskTaskParams {
        fn from(value: AddSlackBookmarkTaskParams) -> Self {
            Self::AddSlackBookmarkTaskParams(value)
        }
    }
    impl ::std::convert::From<AddTeamTaskParams> for WorkflowTaskTaskParams {
        fn from(value: AddTeamTaskParams) -> Self {
            Self::AddTeamTaskParams(value)
        }
    }
    impl ::std::convert::From<AddToTimelineTaskParams> for WorkflowTaskTaskParams {
        fn from(value: AddToTimelineTaskParams) -> Self {
            Self::AddToTimelineTaskParams(value)
        }
    }
    impl ::std::convert::From<ArchiveSlackChannelsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: ArchiveSlackChannelsTaskParams) -> Self {
            Self::ArchiveSlackChannelsTaskParams(value)
        }
    }
    impl ::std::convert::From<AttachDatadogDashboardsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AttachDatadogDashboardsTaskParams) -> Self {
            Self::AttachDatadogDashboardsTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRoleOpsgenieTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AutoAssignRoleOpsgenieTaskParams) -> Self {
            Self::AutoAssignRoleOpsgenieTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRoleRootlyTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AutoAssignRoleRootlyTaskParams) -> Self {
            Self::AutoAssignRoleRootlyTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRolePagerdutyTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AutoAssignRolePagerdutyTaskParams) -> Self {
            Self::AutoAssignRolePagerdutyTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdatePagerdutyIncidentTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdatePagerdutyIncidentTaskParams) -> Self {
            Self::UpdatePagerdutyIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreatePagerdutyStatusUpdateTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreatePagerdutyStatusUpdateTaskParams) -> Self {
            Self::CreatePagerdutyStatusUpdateTaskParams(value)
        }
    }
    impl ::std::convert::From<CreatePagertreeAlertTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreatePagertreeAlertTaskParams) -> Self {
            Self::CreatePagertreeAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdatePagertreeAlertTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdatePagertreeAlertTaskParams) -> Self {
            Self::UpdatePagertreeAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<AutoAssignRoleVictorOpsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AutoAssignRoleVictorOpsTaskParams) -> Self {
            Self::AutoAssignRoleVictorOpsTaskParams(value)
        }
    }
    impl ::std::convert::From<CallPeopleTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CallPeopleTaskParams) -> Self {
            Self::CallPeopleTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAirtableTableRecordTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateAirtableTableRecordTaskParams) -> Self {
            Self::CreateAirtableTableRecordTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAsanaSubtaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateAsanaSubtaskTaskParams) -> Self {
            Self::CreateAsanaSubtaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAsanaTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateAsanaTaskTaskParams) -> Self {
            Self::CreateAsanaTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateConfluencePageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateConfluencePageTaskParams) -> Self {
            Self::CreateConfluencePageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateDatadogNotebookTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateDatadogNotebookTaskParams) -> Self {
            Self::CreateDatadogNotebookTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateCodaPageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateCodaPageTaskParams) -> Self {
            Self::CreateCodaPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateDropboxPaperPageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateDropboxPaperPageTaskParams) -> Self {
            Self::CreateDropboxPaperPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGithubIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateGithubIssueTaskParams) -> Self {
            Self::CreateGithubIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGitlabIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateGitlabIssueTaskParams) -> Self {
            Self::CreateGitlabIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateOutlookEventTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateOutlookEventTaskParams) -> Self {
            Self::CreateOutlookEventTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleCalendarEventTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateGoogleCalendarEventTaskParams) -> Self {
            Self::CreateGoogleCalendarEventTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGoogleDocsPageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateGoogleDocsPageTaskParams) -> Self {
            Self::UpdateGoogleDocsPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateCodaPageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateCodaPageTaskParams) -> Self {
            Self::UpdateCodaPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGoogleCalendarEventTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateGoogleCalendarEventTaskParams) -> Self {
            Self::UpdateGoogleCalendarEventTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateSharepointPageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateSharepointPageTaskParams) -> Self {
            Self::CreateSharepointPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleDocsPageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateGoogleDocsPageTaskParams) -> Self {
            Self::CreateGoogleDocsPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleDocsPermissionsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateGoogleDocsPermissionsTaskParams) -> Self {
            Self::CreateGoogleDocsPermissionsTaskParams(value)
        }
    }
    impl ::std::convert::From<RemoveGoogleDocsPermissionsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: RemoveGoogleDocsPermissionsTaskParams) -> Self {
            Self::RemoveGoogleDocsPermissionsTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateQuipPageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateQuipPageTaskParams) -> Self {
            Self::CreateQuipPageTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleMeetingTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateGoogleMeetingTaskParams) -> Self {
            Self::CreateGoogleMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoToMeetingTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateGoToMeetingTaskParams) -> Self {
            Self::CreateGoToMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateIncidentTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateIncidentTaskParams) -> Self {
            Self::CreateIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateSubIncidentTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateSubIncidentTaskParams) -> Self {
            Self::CreateSubIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateIncidentPostmortemTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateIncidentPostmortemTaskParams) -> Self {
            Self::CreateIncidentPostmortemTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateJiraIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateJiraIssueTaskParams) -> Self {
            Self::CreateJiraIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateJiraSubtaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateJiraSubtaskTaskParams) -> Self {
            Self::CreateJiraSubtaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateLinearIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateLinearIssueTaskParams) -> Self {
            Self::CreateLinearIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateLinearSubtaskIssueTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateLinearSubtaskIssueTaskParams) -> Self {
            Self::CreateLinearSubtaskIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateLinearIssueCommentTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateLinearIssueCommentTaskParams) -> Self {
            Self::CreateLinearIssueCommentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMicrosoftTeamsMeetingTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateMicrosoftTeamsMeetingTaskParams) -> Self {
            Self::CreateMicrosoftTeamsMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMicrosoftTeamsChannelTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateMicrosoftTeamsChannelTaskParams) -> Self {
            Self::CreateMicrosoftTeamsChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMicrosoftTeamsChatTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateMicrosoftTeamsChatTaskParams) -> Self {
            Self::CreateMicrosoftTeamsChatTaskParams(value)
        }
    }
    impl ::std::convert::From<AddMicrosoftTeamsTabTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AddMicrosoftTeamsTabTaskParams) -> Self {
            Self::AddMicrosoftTeamsTabTaskParams(value)
        }
    }
    impl ::std::convert::From<AddMicrosoftTeamsChatTabTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: AddMicrosoftTeamsChatTabTaskParams) -> Self {
            Self::AddMicrosoftTeamsChatTabTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleChatSpaceTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateGoogleChatSpaceTaskParams) -> Self {
            Self::CreateGoogleChatSpaceTaskParams(value)
        }
    }
    impl ::std::convert::From<SendGoogleChatMessageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SendGoogleChatMessageTaskParams) -> Self {
            Self::SendGoogleChatMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendGoogleChatAttachmentsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SendGoogleChatAttachmentsTaskParams) -> Self {
            Self::SendGoogleChatAttachmentsTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToGoogleChatSpaceTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToGoogleChatSpaceTaskParams) -> Self {
            Self::InviteToGoogleChatSpaceTaskParams(value)
        }
    }
    impl ::std::convert::From<ArchiveGoogleChatSpacesTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: ArchiveGoogleChatSpacesTaskParams) -> Self {
            Self::ArchiveGoogleChatSpacesTaskParams(value)
        }
    }
    impl ::std::convert::From<RenameGoogleChatSpaceTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: RenameGoogleChatSpaceTaskParams) -> Self {
            Self::RenameGoogleChatSpaceTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGoogleChatSpaceDescriptionTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateGoogleChatSpaceDescriptionTaskParams) -> Self {
            Self::UpdateGoogleChatSpaceDescriptionTaskParams(value)
        }
    }
    impl ::std::convert::From<ChangeGoogleChatSpacePrivacyTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: ChangeGoogleChatSpacePrivacyTaskParams) -> Self {
            Self::ChangeGoogleChatSpacePrivacyTaskParams(value)
        }
    }
    impl ::std::convert::From<ArchiveMicrosoftTeamsChannelsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: ArchiveMicrosoftTeamsChannelsTaskParams) -> Self {
            Self::ArchiveMicrosoftTeamsChannelsTaskParams(value)
        }
    }
    impl ::std::convert::From<RenameMicrosoftTeamsChannelTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: RenameMicrosoftTeamsChannelTaskParams) -> Self {
            Self::RenameMicrosoftTeamsChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToMicrosoftTeamsChannelTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToMicrosoftTeamsChannelTaskParams) -> Self {
            Self::InviteToMicrosoftTeamsChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateNotionPageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateNotionPageTaskParams) -> Self {
            Self::CreateNotionPageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendMicrosoftTeamsMessageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SendMicrosoftTeamsMessageTaskParams) -> Self {
            Self::SendMicrosoftTeamsMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendMicrosoftTeamsChatMessageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SendMicrosoftTeamsChatMessageTaskParams) -> Self {
            Self::SendMicrosoftTeamsChatMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendMicrosoftTeamsBlocksTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SendMicrosoftTeamsBlocksTaskParams) -> Self {
            Self::SendMicrosoftTeamsBlocksTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateNotionPageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateNotionPageTaskParams) -> Self {
            Self::UpdateNotionPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateQuipPageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateQuipPageTaskParams) -> Self {
            Self::UpdateQuipPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateConfluencePageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateConfluencePageTaskParams) -> Self {
            Self::UpdateConfluencePageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateSharepointPageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateSharepointPageTaskParams) -> Self {
            Self::UpdateSharepointPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateDropboxPaperPageTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateDropboxPaperPageTaskParams) -> Self {
            Self::UpdateDropboxPaperPageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateDatadogNotebookTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateDatadogNotebookTaskParams) -> Self {
            Self::UpdateDatadogNotebookTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateServiceNowIncidentTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateServiceNowIncidentTaskParams) -> Self {
            Self::CreateServiceNowIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateShortcutStoryTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateShortcutStoryTaskParams) -> Self {
            Self::CreateShortcutStoryTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateShortcutTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateShortcutTaskTaskParams) -> Self {
            Self::CreateShortcutTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateTrelloCardTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateTrelloCardTaskParams) -> Self {
            Self::CreateTrelloCardTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateWebexMeetingTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateWebexMeetingTaskParams) -> Self {
            Self::CreateWebexMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateZendeskTicketTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateZendeskTicketTaskParams) -> Self {
            Self::CreateZendeskTicketTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateZendeskJiraLinkTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateZendeskJiraLinkTaskParams) -> Self {
            Self::CreateZendeskJiraLinkTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateClickupTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateClickupTaskTaskParams) -> Self {
            Self::CreateClickupTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMotionTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateMotionTaskTaskParams) -> Self {
            Self::CreateMotionTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateZoomMeetingTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateZoomMeetingTaskParams) -> Self {
            Self::CreateZoomMeetingTaskParams(value)
        }
    }
    impl ::std::convert::From<GetGithubCommitsTaskParams> for WorkflowTaskTaskParams {
        fn from(value: GetGithubCommitsTaskParams) -> Self {
            Self::GetGithubCommitsTaskParams(value)
        }
    }
    impl ::std::convert::From<GetGitlabCommitsTaskParams> for WorkflowTaskTaskParams {
        fn from(value: GetGitlabCommitsTaskParams) -> Self {
            Self::GetGitlabCommitsTaskParams(value)
        }
    }
    impl ::std::convert::From<GetPulsesTaskParams> for WorkflowTaskTaskParams {
        fn from(value: GetPulsesTaskParams) -> Self {
            Self::GetPulsesTaskParams(value)
        }
    }
    impl ::std::convert::From<GetAlertsTaskParams> for WorkflowTaskTaskParams {
        fn from(value: GetAlertsTaskParams) -> Self {
            Self::GetAlertsTaskParams(value)
        }
    }
    impl ::std::convert::From<HttpClientTaskParams> for WorkflowTaskTaskParams {
        fn from(value: HttpClientTaskParams) -> Self {
            Self::HttpClientTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelOpsgenieTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToSlackChannelOpsgenieTaskParams) -> Self {
            Self::InviteToSlackChannelOpsgenieTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelRootlyTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToSlackChannelRootlyTaskParams) -> Self {
            Self::InviteToSlackChannelRootlyTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelPagerdutyTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToSlackChannelPagerdutyTaskParams) -> Self {
            Self::InviteToSlackChannelPagerdutyTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToSlackChannelTaskParams) -> Self {
            Self::InviteToSlackChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<InviteToSlackChannelVictorOpsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: InviteToSlackChannelVictorOpsTaskParams) -> Self {
            Self::InviteToSlackChannelVictorOpsTaskParams(value)
        }
    }
    impl ::std::convert::From<PageOpsgenieOnCallRespondersTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: PageOpsgenieOnCallRespondersTaskParams) -> Self {
            Self::PageOpsgenieOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateOpsgenieAlertTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateOpsgenieAlertTaskParams) -> Self {
            Self::CreateOpsgenieAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateJsmopsAlertTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateJsmopsAlertTaskParams) -> Self {
            Self::CreateJsmopsAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<PageJsmopsOnCallRespondersTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: PageJsmopsOnCallRespondersTaskParams) -> Self {
            Self::PageJsmopsOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateOpsgenieAlertTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateOpsgenieAlertTaskParams) -> Self {
            Self::UpdateOpsgenieAlertTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateOpsgenieIncidentTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateOpsgenieIncidentTaskParams) -> Self {
            Self::UpdateOpsgenieIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<PageRootlyOnCallRespondersTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: PageRootlyOnCallRespondersTaskParams) -> Self {
            Self::PageRootlyOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<PagePagerdutyOnCallRespondersTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: PagePagerdutyOnCallRespondersTaskParams) -> Self {
            Self::PagePagerdutyOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<PageVictorOpsOnCallRespondersTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: PageVictorOpsOnCallRespondersTaskParams) -> Self {
            Self::PageVictorOpsOnCallRespondersTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateVictorOpsIncidentTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateVictorOpsIncidentTaskParams) -> Self {
            Self::UpdateVictorOpsIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<PrintTaskParams> for WorkflowTaskTaskParams {
        fn from(value: PrintTaskParams) -> Self {
            Self::PrintTaskParams(value)
        }
    }
    impl ::std::convert::From<PublishIncidentTaskParams> for WorkflowTaskTaskParams {
        fn from(value: PublishIncidentTaskParams) -> Self {
            Self::PublishIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<RedisClientTaskParams> for WorkflowTaskTaskParams {
        fn from(value: RedisClientTaskParams) -> Self {
            Self::RedisClientTaskParams(value)
        }
    }
    impl ::std::convert::From<RenameSlackChannelTaskParams> for WorkflowTaskTaskParams {
        fn from(value: RenameSlackChannelTaskParams) -> Self {
            Self::RenameSlackChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<ChangeSlackChannelPrivacyTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: ChangeSlackChannelPrivacyTaskParams) -> Self {
            Self::ChangeSlackChannelPrivacyTaskParams(value)
        }
    }
    impl ::std::convert::From<RunCommandHerokuTaskParams> for WorkflowTaskTaskParams {
        fn from(value: RunCommandHerokuTaskParams) -> Self {
            Self::RunCommandHerokuTaskParams(value)
        }
    }
    impl ::std::convert::From<SendEmailTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SendEmailTaskParams) -> Self {
            Self::SendEmailTaskParams(value)
        }
    }
    impl ::std::convert::From<SendDashboardReportTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SendDashboardReportTaskParams) -> Self {
            Self::SendDashboardReportTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateSlackChannelTaskParams> for WorkflowTaskTaskParams {
        fn from(value: CreateSlackChannelTaskParams) -> Self {
            Self::CreateSlackChannelTaskParams(value)
        }
    }
    impl ::std::convert::From<SendSlackMessageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SendSlackMessageTaskParams) -> Self {
            Self::SendSlackMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SendSmsTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SendSmsTaskParams) -> Self {
            Self::SendSmsTaskParams(value)
        }
    }
    impl ::std::convert::From<SendWhatsappMessageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SendWhatsappMessageTaskParams) -> Self {
            Self::SendWhatsappMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotDatadogGraphTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SnapshotDatadogGraphTaskParams) -> Self {
            Self::SnapshotDatadogGraphTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotGrafanaDashboardTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SnapshotGrafanaDashboardTaskParams) -> Self {
            Self::SnapshotGrafanaDashboardTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotLookerLookTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SnapshotLookerLookTaskParams) -> Self {
            Self::SnapshotLookerLookTaskParams(value)
        }
    }
    impl ::std::convert::From<SnapshotNewRelicGraphTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: SnapshotNewRelicGraphTaskParams) -> Self {
            Self::SnapshotNewRelicGraphTaskParams(value)
        }
    }
    impl ::std::convert::From<TweetTwitterMessageTaskParams> for WorkflowTaskTaskParams {
        fn from(value: TweetTwitterMessageTaskParams) -> Self {
            Self::TweetTwitterMessageTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateAirtableTableRecordTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateAirtableTableRecordTaskParams) -> Self {
            Self::UpdateAirtableTableRecordTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateAsanaTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateAsanaTaskTaskParams) -> Self {
            Self::UpdateAsanaTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGithubIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateGithubIssueTaskParams) -> Self {
            Self::UpdateGithubIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateGitlabIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateGitlabIssueTaskParams) -> Self {
            Self::UpdateGitlabIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateIncidentTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateIncidentTaskParams) -> Self {
            Self::UpdateIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateIncidentPostmortemTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateIncidentPostmortemTaskParams) -> Self {
            Self::UpdateIncidentPostmortemTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateJiraIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateJiraIssueTaskParams) -> Self {
            Self::UpdateJiraIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateLinearIssueTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateLinearIssueTaskParams) -> Self {
            Self::UpdateLinearIssueTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateServiceNowIncidentTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateServiceNowIncidentTaskParams) -> Self {
            Self::UpdateServiceNowIncidentTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateShortcutStoryTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateShortcutStoryTaskParams) -> Self {
            Self::UpdateShortcutStoryTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateShortcutTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateShortcutTaskTaskParams) -> Self {
            Self::UpdateShortcutTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateSlackChannelTopicTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateSlackChannelTopicTaskParams) -> Self {
            Self::UpdateSlackChannelTopicTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateStatusTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateStatusTaskParams) -> Self {
            Self::UpdateStatusTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateIncidentStatusTimestampTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateIncidentStatusTimestampTaskParams) -> Self {
            Self::UpdateIncidentStatusTimestampTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateTrelloCardTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateTrelloCardTaskParams) -> Self {
            Self::UpdateTrelloCardTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateClickupTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateClickupTaskTaskParams) -> Self {
            Self::UpdateClickupTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateMotionTaskTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateMotionTaskTaskParams) -> Self {
            Self::UpdateMotionTaskTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateZendeskTicketTaskParams> for WorkflowTaskTaskParams {
        fn from(value: UpdateZendeskTicketTaskParams) -> Self {
            Self::UpdateZendeskTicketTaskParams(value)
        }
    }
    impl ::std::convert::From<UpdateAttachedAlertsTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: UpdateAttachedAlertsTaskParams) -> Self {
            Self::UpdateAttachedAlertsTaskParams(value)
        }
    }
    impl ::std::convert::From<TriggerWorkflowTaskParams> for WorkflowTaskTaskParams {
        fn from(value: TriggerWorkflowTaskParams) -> Self {
            Self::TriggerWorkflowTaskParams(value)
        }
    }
    impl ::std::convert::From<SendSlackBlocksTaskParams> for WorkflowTaskTaskParams {
        fn from(value: SendSlackBlocksTaskParams) -> Self {
            Self::SendSlackBlocksTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateOpenaiChatCompletionTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateOpenaiChatCompletionTaskParams) -> Self {
            Self::CreateOpenaiChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateWatsonxChatCompletionTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateWatsonxChatCompletionTaskParams) -> Self {
            Self::CreateWatsonxChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateGoogleGeminiChatCompletionTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateGoogleGeminiChatCompletionTaskParams) -> Self {
            Self::CreateGoogleGeminiChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateMistralChatCompletionTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateMistralChatCompletionTaskParams) -> Self {
            Self::CreateMistralChatCompletionTaskParams(value)
        }
    }
    impl ::std::convert::From<CreateAnthropicChatCompletionTaskParams>
    for WorkflowTaskTaskParams {
        fn from(value: CreateAnthropicChatCompletionTaskParams) -> Self {
            Self::CreateAnthropicChatCompletionTaskParams(value)
        }
    }
    ///`WorkflowTriggerParams`
    ///
    /// <details><summary>JSON schema</summary>
    ///
    /// ```json
    ///{
    ///  "oneOf": [
    ///    {
    ///      "$ref": "#/components/schemas/incident_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/action_item_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/alert_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/pulse_trigger_params"
    ///    },
    ///    {
    ///      "$ref": "#/components/schemas/simple_trigger_params"
    ///    }
    ///  ]
    ///}
    /// ```
    /// </details>
    #[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
    #[serde(untagged)]
    pub enum WorkflowTriggerParams {
        IncidentTriggerParams(IncidentTriggerParams),
        ActionItemTriggerParams(ActionItemTriggerParams),
        AlertTriggerParams(AlertTriggerParams),
        PulseTriggerParams(PulseTriggerParams),
        SimpleTriggerParams(SimpleTriggerParams),
    }
    impl ::std::convert::From<IncidentTriggerParams> for WorkflowTriggerParams {
        fn from(value: IncidentTriggerParams) -> Self {
            Self::IncidentTriggerParams(value)
        }
    }
    impl ::std::convert::From<ActionItemTriggerParams> for WorkflowTriggerParams {
        fn from(value: ActionItemTriggerParams) -> Self {
            Self::ActionItemTriggerParams(value)
        }
    }
    impl ::std::convert::From<AlertTriggerParams> for WorkflowTriggerParams {
        fn from(value: AlertTriggerParams) -> Self {
            Self::AlertTriggerParams(value)
        }
    }
    impl ::std::convert::From<PulseTriggerParams> for WorkflowTriggerParams {
        fn from(value: PulseTriggerParams) -> Self {
            Self::PulseTriggerParams(value)
        }
    }
    impl ::std::convert::From<SimpleTriggerParams> for WorkflowTriggerParams {
        fn from(value: SimpleTriggerParams) -> Self {
            Self::SimpleTriggerParams(value)
        }
    }
    /// Types for composing complex structures.
    pub mod builder {
        #[derive(Clone, Debug)]
        pub struct ActionItemTriggerParams {
            incident_action_item_condition: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentActionItemCondition,
                >,
                ::std::string::String,
            >,
            incident_action_item_condition_group: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentActionItemConditionGroup,
                ::std::string::String,
            >,
            incident_action_item_condition_kind: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentActionItemConditionKind,
                ::std::string::String,
            >,
            incident_action_item_condition_priority: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentActionItemConditionPriority,
                ::std::string::String,
            >,
            incident_action_item_condition_status: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentActionItemConditionStatus,
                ::std::string::String,
            >,
            incident_action_item_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_action_item_kinds: ::std::result::Result<
                ::std::vec::Vec<
                    super::ActionItemTriggerParamsIncidentActionItemKindsItem,
                >,
                ::std::string::String,
            >,
            incident_action_item_priorities: ::std::result::Result<
                ::std::vec::Vec<
                    super::ActionItemTriggerParamsIncidentActionItemPrioritiesItem,
                >,
                ::std::string::String,
            >,
            incident_action_item_statuses: ::std::result::Result<
                ::std::vec::Vec<
                    super::ActionItemTriggerParamsIncidentActionItemStatusesItem,
                >,
                ::std::string::String,
            >,
            incident_condition: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentCondition,
                ::std::string::String,
            >,
            incident_condition_acknowledged_at: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionAcknowledgedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_detected_at: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionDetectedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_environment: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionEnvironment,
                ::std::string::String,
            >,
            incident_condition_functionality: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionFunctionality,
                ::std::string::String,
            >,
            incident_condition_group: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionGroup,
                ::std::string::String,
            >,
            incident_condition_incident_roles: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionIncidentRoles,
                ::std::string::String,
            >,
            incident_condition_incident_type: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionIncidentType,
                ::std::string::String,
            >,
            incident_condition_kind: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionKind,
                ::std::string::String,
            >,
            incident_condition_mitigated_at: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionMitigatedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_resolved_at: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionResolvedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_service: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionService,
                ::std::string::String,
            >,
            incident_condition_severity: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionSeverity,
                ::std::string::String,
            >,
            incident_condition_started_at: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionStartedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_status: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionStatus,
                ::std::string::String,
            >,
            incident_condition_sub_status: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionSubStatus,
                ::std::string::String,
            >,
            incident_condition_summary: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionSummary,
                >,
                ::std::string::String,
            >,
            incident_condition_visibility: ::std::result::Result<
                super::ActionItemTriggerParamsIncidentConditionVisibility,
                ::std::string::String,
            >,
            incident_conditional_inactivity: ::std::result::Result<
                ::std::option::Option<
                    super::ActionItemTriggerParamsIncidentConditionalInactivity,
                >,
                ::std::string::String,
            >,
            incident_inactivity_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_kinds: ::std::result::Result<
                ::std::vec::Vec<super::ActionItemTriggerParamsIncidentKindsItem>,
                ::std::string::String,
            >,
            incident_statuses: ::std::result::Result<
                ::std::vec::Vec<super::ActionItemTriggerParamsIncidentStatusesItem>,
                ::std::string::String,
            >,
            incident_visibilities: ::std::result::Result<
                ::std::vec::Vec<bool>,
                ::std::string::String,
            >,
            trigger_type: ::std::result::Result<
                super::ActionItemTriggerParamsTriggerType,
                ::std::string::String,
            >,
            triggers: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ActionItemTriggerParams {
            fn default() -> Self {
                Self {
                    incident_action_item_condition: Ok(Default::default()),
                    incident_action_item_condition_group: Ok(
                        super::defaults::action_item_trigger_params_incident_action_item_condition_group(),
                    ),
                    incident_action_item_condition_kind: Ok(
                        super::defaults::action_item_trigger_params_incident_action_item_condition_kind(),
                    ),
                    incident_action_item_condition_priority: Ok(
                        super::defaults::action_item_trigger_params_incident_action_item_condition_priority(),
                    ),
                    incident_action_item_condition_status: Ok(
                        super::defaults::action_item_trigger_params_incident_action_item_condition_status(),
                    ),
                    incident_action_item_group_ids: Ok(Default::default()),
                    incident_action_item_kinds: Ok(Default::default()),
                    incident_action_item_priorities: Ok(Default::default()),
                    incident_action_item_statuses: Ok(Default::default()),
                    incident_condition: Ok(
                        super::defaults::action_item_trigger_params_incident_condition(),
                    ),
                    incident_condition_acknowledged_at: Ok(Default::default()),
                    incident_condition_detected_at: Ok(Default::default()),
                    incident_condition_environment: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_environment(),
                    ),
                    incident_condition_functionality: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_functionality(),
                    ),
                    incident_condition_group: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_group(),
                    ),
                    incident_condition_incident_roles: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_incident_roles(),
                    ),
                    incident_condition_incident_type: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_incident_type(),
                    ),
                    incident_condition_kind: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_kind(),
                    ),
                    incident_condition_mitigated_at: Ok(Default::default()),
                    incident_condition_resolved_at: Ok(Default::default()),
                    incident_condition_service: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_service(),
                    ),
                    incident_condition_severity: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_severity(),
                    ),
                    incident_condition_started_at: Ok(Default::default()),
                    incident_condition_status: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_status(),
                    ),
                    incident_condition_sub_status: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_sub_status(),
                    ),
                    incident_condition_summary: Ok(Default::default()),
                    incident_condition_visibility: Ok(
                        super::defaults::action_item_trigger_params_incident_condition_visibility(),
                    ),
                    incident_conditional_inactivity: Ok(Default::default()),
                    incident_inactivity_duration: Ok(Default::default()),
                    incident_kinds: Ok(Default::default()),
                    incident_statuses: Ok(Default::default()),
                    incident_visibilities: Ok(Default::default()),
                    trigger_type: Err("no value supplied for trigger_type".to_string()),
                    triggers: Ok(Default::default()),
                }
            }
        }
        impl ActionItemTriggerParams {
            pub fn incident_action_item_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentActionItemCondition,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_condition: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_condition_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentActionItemConditionGroup,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_condition_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_condition_group: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_condition_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentActionItemConditionKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_condition_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_condition_kind: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_condition_priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentActionItemConditionPriority,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_condition_priority = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_condition_priority: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_condition_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentActionItemConditionStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_condition_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_condition_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_kinds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::ActionItemTriggerParamsIncidentActionItemKindsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_kinds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_kinds: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_priorities<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::ActionItemTriggerParamsIncidentActionItemPrioritiesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_priorities = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_priorities: {e}"
                        )
                    });
                self
            }
            pub fn incident_action_item_statuses<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::ActionItemTriggerParamsIncidentActionItemStatusesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_action_item_statuses = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_action_item_statuses: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionAcknowledgedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionDetectedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_detected_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_environment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionEnvironment,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_environment = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_environment: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_functionality<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionFunctionality,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_functionality = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_functionality: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionGroup,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_group: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_incident_roles<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionIncidentRoles,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_incident_roles = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_incident_roles: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_incident_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionIncidentType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_incident_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_incident_type: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_kind: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionMitigatedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_mitigated_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionResolvedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_resolved_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_service<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionService,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_service = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_service: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionSeverity,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_severity = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_severity: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionStartedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_started_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_sub_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionSubStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_sub_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_sub_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionSummary,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_summary: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_visibility<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ActionItemTriggerParamsIncidentConditionVisibility,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_visibility = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_visibility: {e}"
                        )
                    });
                self
            }
            pub fn incident_conditional_inactivity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ActionItemTriggerParamsIncidentConditionalInactivity,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_conditional_inactivity = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_conditional_inactivity: {e}"
                        )
                    });
                self
            }
            pub fn incident_inactivity_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_inactivity_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_inactivity_duration: {e}"
                        )
                    });
                self
            }
            pub fn incident_kinds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ActionItemTriggerParamsIncidentKindsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_kinds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_kinds: {e}"
                        )
                    });
                self
            }
            pub fn incident_statuses<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ActionItemTriggerParamsIncidentStatusesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_statuses = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_statuses: {e}"
                        )
                    });
                self
            }
            pub fn incident_visibilities<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_visibilities = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_visibilities: {e}"
                        )
                    });
                self
            }
            pub fn trigger_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ActionItemTriggerParamsTriggerType>,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for trigger_type: {e}")
                    });
                self
            }
            pub fn triggers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.triggers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggers: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ActionItemTriggerParams>
        for super::ActionItemTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ActionItemTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_action_item_condition: value
                        .incident_action_item_condition?,
                    incident_action_item_condition_group: value
                        .incident_action_item_condition_group?,
                    incident_action_item_condition_kind: value
                        .incident_action_item_condition_kind?,
                    incident_action_item_condition_priority: value
                        .incident_action_item_condition_priority?,
                    incident_action_item_condition_status: value
                        .incident_action_item_condition_status?,
                    incident_action_item_group_ids: value
                        .incident_action_item_group_ids?,
                    incident_action_item_kinds: value.incident_action_item_kinds?,
                    incident_action_item_priorities: value
                        .incident_action_item_priorities?,
                    incident_action_item_statuses: value.incident_action_item_statuses?,
                    incident_condition: value.incident_condition?,
                    incident_condition_acknowledged_at: value
                        .incident_condition_acknowledged_at?,
                    incident_condition_detected_at: value
                        .incident_condition_detected_at?,
                    incident_condition_environment: value
                        .incident_condition_environment?,
                    incident_condition_functionality: value
                        .incident_condition_functionality?,
                    incident_condition_group: value.incident_condition_group?,
                    incident_condition_incident_roles: value
                        .incident_condition_incident_roles?,
                    incident_condition_incident_type: value
                        .incident_condition_incident_type?,
                    incident_condition_kind: value.incident_condition_kind?,
                    incident_condition_mitigated_at: value
                        .incident_condition_mitigated_at?,
                    incident_condition_resolved_at: value
                        .incident_condition_resolved_at?,
                    incident_condition_service: value.incident_condition_service?,
                    incident_condition_severity: value.incident_condition_severity?,
                    incident_condition_started_at: value.incident_condition_started_at?,
                    incident_condition_status: value.incident_condition_status?,
                    incident_condition_sub_status: value.incident_condition_sub_status?,
                    incident_condition_summary: value.incident_condition_summary?,
                    incident_condition_visibility: value.incident_condition_visibility?,
                    incident_conditional_inactivity: value
                        .incident_conditional_inactivity?,
                    incident_inactivity_duration: value.incident_inactivity_duration?,
                    incident_kinds: value.incident_kinds?,
                    incident_statuses: value.incident_statuses?,
                    incident_visibilities: value.incident_visibilities?,
                    trigger_type: value.trigger_type?,
                    triggers: value.triggers?,
                })
            }
        }
        impl ::std::convert::From<super::ActionItemTriggerParams>
        for ActionItemTriggerParams {
            fn from(value: super::ActionItemTriggerParams) -> Self {
                Self {
                    incident_action_item_condition: Ok(
                        value.incident_action_item_condition,
                    ),
                    incident_action_item_condition_group: Ok(
                        value.incident_action_item_condition_group,
                    ),
                    incident_action_item_condition_kind: Ok(
                        value.incident_action_item_condition_kind,
                    ),
                    incident_action_item_condition_priority: Ok(
                        value.incident_action_item_condition_priority,
                    ),
                    incident_action_item_condition_status: Ok(
                        value.incident_action_item_condition_status,
                    ),
                    incident_action_item_group_ids: Ok(
                        value.incident_action_item_group_ids,
                    ),
                    incident_action_item_kinds: Ok(value.incident_action_item_kinds),
                    incident_action_item_priorities: Ok(
                        value.incident_action_item_priorities,
                    ),
                    incident_action_item_statuses: Ok(
                        value.incident_action_item_statuses,
                    ),
                    incident_condition: Ok(value.incident_condition),
                    incident_condition_acknowledged_at: Ok(
                        value.incident_condition_acknowledged_at,
                    ),
                    incident_condition_detected_at: Ok(
                        value.incident_condition_detected_at,
                    ),
                    incident_condition_environment: Ok(
                        value.incident_condition_environment,
                    ),
                    incident_condition_functionality: Ok(
                        value.incident_condition_functionality,
                    ),
                    incident_condition_group: Ok(value.incident_condition_group),
                    incident_condition_incident_roles: Ok(
                        value.incident_condition_incident_roles,
                    ),
                    incident_condition_incident_type: Ok(
                        value.incident_condition_incident_type,
                    ),
                    incident_condition_kind: Ok(value.incident_condition_kind),
                    incident_condition_mitigated_at: Ok(
                        value.incident_condition_mitigated_at,
                    ),
                    incident_condition_resolved_at: Ok(
                        value.incident_condition_resolved_at,
                    ),
                    incident_condition_service: Ok(value.incident_condition_service),
                    incident_condition_severity: Ok(value.incident_condition_severity),
                    incident_condition_started_at: Ok(
                        value.incident_condition_started_at,
                    ),
                    incident_condition_status: Ok(value.incident_condition_status),
                    incident_condition_sub_status: Ok(
                        value.incident_condition_sub_status,
                    ),
                    incident_condition_summary: Ok(value.incident_condition_summary),
                    incident_condition_visibility: Ok(
                        value.incident_condition_visibility,
                    ),
                    incident_conditional_inactivity: Ok(
                        value.incident_conditional_inactivity,
                    ),
                    incident_inactivity_duration: Ok(value.incident_inactivity_duration),
                    incident_kinds: Ok(value.incident_kinds),
                    incident_statuses: Ok(value.incident_statuses),
                    incident_visibilities: Ok(value.incident_visibilities),
                    trigger_type: Ok(value.trigger_type),
                    triggers: Ok(value.triggers),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddActionItemTaskParams {
            assigned_to_user: ::std::result::Result<
                ::std::option::Option<super::AddActionItemTaskParamsAssignedToUser>,
                ::std::string::String,
            >,
            assigned_to_user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            attribute_to_query_by: ::std::result::Result<
                ::std::option::Option<super::AddActionItemTaskParamsAttributeToQueryBy>,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<super::AddActionItemTaskParamsPostToSlackChannelsItem>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                super::AddActionItemTaskParamsPriority,
                ::std::string::String,
            >,
            query_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::AddActionItemTaskParamsStatus,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AddActionItemTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddActionItemTaskParams {
            fn default() -> Self {
                Self {
                    assigned_to_user: Ok(Default::default()),
                    assigned_to_user_id: Ok(Default::default()),
                    attribute_to_query_by: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    incident_role_id: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    priority: Err("no value supplied for priority".to_string()),
                    query_value: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    summary: Err("no value supplied for summary".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl AddActionItemTaskParams {
            pub fn assigned_to_user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddActionItemTaskParamsAssignedToUser>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user: {e}"
                        )
                    });
                self
            }
            pub fn assigned_to_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user_id: {e}"
                        )
                    });
                self
            }
            pub fn attribute_to_query_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AddActionItemTaskParamsAttributeToQueryBy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attribute_to_query_by = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for attribute_to_query_by: {e}"
                        )
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AddActionItemTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AddActionItemTaskParamsPriority>,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn query_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.query_value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for query_value: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AddActionItemTaskParamsStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddActionItemTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddActionItemTaskParams>
        for super::AddActionItemTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddActionItemTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_to_user: value.assigned_to_user?,
                    assigned_to_user_id: value.assigned_to_user_id?,
                    attribute_to_query_by: value.attribute_to_query_by?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    incident_role_id: value.incident_role_id?,
                    kind: value.kind?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    priority: value.priority?,
                    query_value: value.query_value?,
                    status: value.status?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::AddActionItemTaskParams>
        for AddActionItemTaskParams {
            fn from(value: super::AddActionItemTaskParams) -> Self {
                Self {
                    assigned_to_user: Ok(value.assigned_to_user),
                    assigned_to_user_id: Ok(value.assigned_to_user_id),
                    attribute_to_query_by: Ok(value.attribute_to_query_by),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    incident_role_id: Ok(value.incident_role_id),
                    kind: Ok(value.kind),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    priority: Ok(value.priority),
                    query_value: Ok(value.query_value),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddActionItemTaskParamsAssignedToUser {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddActionItemTaskParamsAssignedToUser {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddActionItemTaskParamsAssignedToUser {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddActionItemTaskParamsAssignedToUser>
        for super::AddActionItemTaskParamsAssignedToUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddActionItemTaskParamsAssignedToUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddActionItemTaskParamsAssignedToUser>
        for AddActionItemTaskParamsAssignedToUser {
            fn from(value: super::AddActionItemTaskParamsAssignedToUser) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddActionItemTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddActionItemTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddActionItemTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddActionItemTaskParamsPostToSlackChannelsItem>
        for super::AddActionItemTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddActionItemTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddActionItemTaskParamsPostToSlackChannelsItem>
        for AddActionItemTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::AddActionItemTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddMicrosoftTeamsChatTabTaskParams {
            chat: ::std::result::Result<
                super::AddMicrosoftTeamsChatTabTaskParamsChat,
                ::std::string::String,
            >,
            link: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AddMicrosoftTeamsChatTabTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for AddMicrosoftTeamsChatTabTaskParams {
            fn default() -> Self {
                Self {
                    chat: Err("no value supplied for chat".to_string()),
                    link: Err("no value supplied for link".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl AddMicrosoftTeamsChatTabTaskParams {
            pub fn chat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AddMicrosoftTeamsChatTabTaskParamsChat,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.chat = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for chat: {e}")
                    });
                self
            }
            pub fn link<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.link = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for link: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AddMicrosoftTeamsChatTabTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddMicrosoftTeamsChatTabTaskParams>
        for super::AddMicrosoftTeamsChatTabTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddMicrosoftTeamsChatTabTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    chat: value.chat?,
                    link: value.link?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::AddMicrosoftTeamsChatTabTaskParams>
        for AddMicrosoftTeamsChatTabTaskParams {
            fn from(value: super::AddMicrosoftTeamsChatTabTaskParams) -> Self {
                Self {
                    chat: Ok(value.chat),
                    link: Ok(value.link),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddMicrosoftTeamsChatTabTaskParamsChat {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddMicrosoftTeamsChatTabTaskParamsChat {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddMicrosoftTeamsChatTabTaskParamsChat {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddMicrosoftTeamsChatTabTaskParamsChat>
        for super::AddMicrosoftTeamsChatTabTaskParamsChat {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddMicrosoftTeamsChatTabTaskParamsChat,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddMicrosoftTeamsChatTabTaskParamsChat>
        for AddMicrosoftTeamsChatTabTaskParamsChat {
            fn from(value: super::AddMicrosoftTeamsChatTabTaskParamsChat) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddMicrosoftTeamsTabTaskParamsVariant0Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant0Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddMicrosoftTeamsTabTaskParamsVariant0Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddMicrosoftTeamsTabTaskParamsVariant0Channel>
        for super::AddMicrosoftTeamsTabTaskParamsVariant0Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddMicrosoftTeamsTabTaskParamsVariant0Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddMicrosoftTeamsTabTaskParamsVariant0Channel>
        for AddMicrosoftTeamsTabTaskParamsVariant0Channel {
            fn from(
                value: super::AddMicrosoftTeamsTabTaskParamsVariant0Channel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddMicrosoftTeamsTabTaskParamsVariant0Team {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant0Team {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddMicrosoftTeamsTabTaskParamsVariant0Team {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddMicrosoftTeamsTabTaskParamsVariant0Team>
        for super::AddMicrosoftTeamsTabTaskParamsVariant0Team {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddMicrosoftTeamsTabTaskParamsVariant0Team,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddMicrosoftTeamsTabTaskParamsVariant0Team>
        for AddMicrosoftTeamsTabTaskParamsVariant0Team {
            fn from(value: super::AddMicrosoftTeamsTabTaskParamsVariant0Team) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddMicrosoftTeamsTabTaskParamsVariant1Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant1Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddMicrosoftTeamsTabTaskParamsVariant1Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddMicrosoftTeamsTabTaskParamsVariant1Channel>
        for super::AddMicrosoftTeamsTabTaskParamsVariant1Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddMicrosoftTeamsTabTaskParamsVariant1Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddMicrosoftTeamsTabTaskParamsVariant1Channel>
        for AddMicrosoftTeamsTabTaskParamsVariant1Channel {
            fn from(
                value: super::AddMicrosoftTeamsTabTaskParamsVariant1Channel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddMicrosoftTeamsTabTaskParamsVariant1Team {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddMicrosoftTeamsTabTaskParamsVariant1Team {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddMicrosoftTeamsTabTaskParamsVariant1Team {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddMicrosoftTeamsTabTaskParamsVariant1Team>
        for super::AddMicrosoftTeamsTabTaskParamsVariant1Team {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddMicrosoftTeamsTabTaskParamsVariant1Team,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddMicrosoftTeamsTabTaskParamsVariant1Team>
        for AddMicrosoftTeamsTabTaskParamsVariant1Team {
            fn from(value: super::AddMicrosoftTeamsTabTaskParamsVariant1Team) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddRoleTaskParams {
            assigned_to_user: ::std::result::Result<
                ::std::option::Option<super::AddRoleTaskParamsAssignedToUser>,
                ::std::string::String,
            >,
            assigned_to_user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AddRoleTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddRoleTaskParams {
            fn default() -> Self {
                Self {
                    assigned_to_user: Ok(Default::default()),
                    assigned_to_user_id: Ok(Default::default()),
                    incident_role_id: Err(
                        "no value supplied for incident_role_id".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl AddRoleTaskParams {
            pub fn assigned_to_user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddRoleTaskParamsAssignedToUser>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user: {e}"
                        )
                    });
                self
            }
            pub fn assigned_to_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddRoleTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddRoleTaskParams> for super::AddRoleTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddRoleTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_to_user: value.assigned_to_user?,
                    assigned_to_user_id: value.assigned_to_user_id?,
                    incident_role_id: value.incident_role_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::AddRoleTaskParams> for AddRoleTaskParams {
            fn from(value: super::AddRoleTaskParams) -> Self {
                Self {
                    assigned_to_user: Ok(value.assigned_to_user),
                    assigned_to_user_id: Ok(value.assigned_to_user_id),
                    incident_role_id: Ok(value.incident_role_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddRoleTaskParamsAssignedToUser {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddRoleTaskParamsAssignedToUser {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddRoleTaskParamsAssignedToUser {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddRoleTaskParamsAssignedToUser>
        for super::AddRoleTaskParamsAssignedToUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddRoleTaskParamsAssignedToUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddRoleTaskParamsAssignedToUser>
        for AddRoleTaskParamsAssignedToUser {
            fn from(value: super::AddRoleTaskParamsAssignedToUser) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddSlackBookmarkTaskParamsVariant0Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddSlackBookmarkTaskParamsVariant0Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddSlackBookmarkTaskParamsVariant0Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddSlackBookmarkTaskParamsVariant0Channel>
        for super::AddSlackBookmarkTaskParamsVariant0Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddSlackBookmarkTaskParamsVariant0Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddSlackBookmarkTaskParamsVariant0Channel>
        for AddSlackBookmarkTaskParamsVariant0Channel {
            fn from(value: super::AddSlackBookmarkTaskParamsVariant0Channel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddSlackBookmarkTaskParamsVariant1Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddSlackBookmarkTaskParamsVariant1Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddSlackBookmarkTaskParamsVariant1Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddSlackBookmarkTaskParamsVariant1Channel>
        for super::AddSlackBookmarkTaskParamsVariant1Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddSlackBookmarkTaskParamsVariant1Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddSlackBookmarkTaskParamsVariant1Channel>
        for AddSlackBookmarkTaskParamsVariant1Channel {
            fn from(value: super::AddSlackBookmarkTaskParamsVariant1Channel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddSubscribers {
            data: ::std::result::Result<
                super::AddSubscribersData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddSubscribers {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl AddSubscribers {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AddSubscribersData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddSubscribers> for super::AddSubscribers {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddSubscribers,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::AddSubscribers> for AddSubscribers {
            fn from(value: super::AddSubscribers) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddSubscribersData {
            attributes: ::std::result::Result<
                super::AddSubscribersDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::AddSubscribersDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddSubscribersData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AddSubscribersData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AddSubscribersDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AddSubscribersDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddSubscribersData> for super::AddSubscribersData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddSubscribersData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AddSubscribersData> for AddSubscribersData {
            fn from(value: super::AddSubscribersData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddSubscribersDataAttributes {
            remove_users_with_no_private_incident_access: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddSubscribersDataAttributes {
            fn default() -> Self {
                Self {
                    remove_users_with_no_private_incident_access: Ok(Default::default()),
                    user_ids: Ok(Default::default()),
                }
            }
        }
        impl AddSubscribersDataAttributes {
            pub fn remove_users_with_no_private_incident_access<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.remove_users_with_no_private_incident_access = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for remove_users_with_no_private_incident_access: {e}"
                        )
                    });
                self
            }
            pub fn user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddSubscribersDataAttributes>
        for super::AddSubscribersDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddSubscribersDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    remove_users_with_no_private_incident_access: value
                        .remove_users_with_no_private_incident_access?,
                    user_ids: value.user_ids?,
                })
            }
        }
        impl ::std::convert::From<super::AddSubscribersDataAttributes>
        for AddSubscribersDataAttributes {
            fn from(value: super::AddSubscribersDataAttributes) -> Self {
                Self {
                    remove_users_with_no_private_incident_access: Ok(
                        value.remove_users_with_no_private_incident_access,
                    ),
                    user_ids: Ok(value.user_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddTeamTaskParams {
            group_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AddTeamTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddTeamTaskParams {
            fn default() -> Self {
                Self {
                    group_id: Err("no value supplied for group_id".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl AddTeamTaskParams {
            pub fn group_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.group_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddTeamTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddTeamTaskParams> for super::AddTeamTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddTeamTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    group_id: value.group_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::AddTeamTaskParams> for AddTeamTaskParams {
            fn from(value: super::AddTeamTaskParams) -> Self {
                Self {
                    group_id: Ok(value.group_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddToTimelineTaskParams {
            event: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<super::AddToTimelineTaskParamsPostToSlackChannelsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AddToTimelineTaskParamsTaskType>,
                ::std::string::String,
            >,
            url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddToTimelineTaskParams {
            fn default() -> Self {
                Self {
                    event: Err("no value supplied for event".to_string()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    url: Ok(Default::default()),
                }
            }
        }
        impl AddToTimelineTaskParams {
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AddToTimelineTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddToTimelineTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddToTimelineTaskParams>
        for super::AddToTimelineTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddToTimelineTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    event: value.event?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                    url: value.url?,
                })
            }
        }
        impl ::std::convert::From<super::AddToTimelineTaskParams>
        for AddToTimelineTaskParams {
            fn from(value: super::AddToTimelineTaskParams) -> Self {
                Self {
                    event: Ok(value.event),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                    url: Ok(value.url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AddToTimelineTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AddToTimelineTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AddToTimelineTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AddToTimelineTaskParamsPostToSlackChannelsItem>
        for super::AddToTimelineTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AddToTimelineTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AddToTimelineTaskParamsPostToSlackChannelsItem>
        for AddToTimelineTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::AddToTimelineTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Alert {
            alert_field_values_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::AlertAlertFieldValuesAttributesItem>,
                >,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            data: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            deduplication_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            environments: ::std::result::Result<
                ::std::vec::Vec<super::Environment>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionalities: ::std::result::Result<
                ::std::vec::Vec<super::Functionality>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_leader_alert_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            groups: ::std::result::Result<
                ::std::vec::Vec<super::Team>,
                ::std::string::String,
            >,
            is_group_leader_alert: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<::std::option::Option<super::AlertLabelsItem>>,
                ::std::string::String,
            >,
            noise: ::std::result::Result<
                ::std::option::Option<super::AlertNoise>,
                ::std::string::String,
            >,
            notification_target_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_type: ::std::result::Result<
                ::std::option::Option<super::AlertNotificationTargetType>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            services: ::std::result::Result<
                ::std::vec::Vec<super::Service>,
                ::std::string::String,
            >,
            short_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            source: ::std::result::Result<super::AlertSource, ::std::string::String>,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::AlertStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Alert {
            fn default() -> Self {
                Self {
                    alert_field_values_attributes: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    data: Ok(Default::default()),
                    deduplication_key: Ok(Default::default()),
                    description: Ok(Default::default()),
                    ended_at: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    environments: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    functionalities: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    group_leader_alert_id: Ok(Default::default()),
                    groups: Ok(Default::default()),
                    is_group_leader_alert: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    noise: Ok(Default::default()),
                    notification_target_id: Ok(Default::default()),
                    notification_target_type: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    services: Ok(Default::default()),
                    short_id: Err("no value supplied for short_id".to_string()),
                    source: Err("no value supplied for source".to_string()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Alert {
            pub fn alert_field_values_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::AlertAlertFieldValuesAttributesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_values_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_values_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn deduplication_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn environments<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::Environment>>,
                T::Error: ::std::fmt::Display,
            {
                self.environments = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for environments: {e}")
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn functionalities<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::Functionality>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionalities = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionalities: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn group_leader_alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_leader_alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_leader_alert_id: {e}"
                        )
                    });
                self
            }
            pub fn groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::Team>>,
                T::Error: ::std::fmt::Display,
            {
                self.groups = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for groups: {e}")
                    });
                self
            }
            pub fn is_group_leader_alert<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_group_leader_alert = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for is_group_leader_alert: {e}"
                        )
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<::std::option::Option<super::AlertLabelsItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn noise<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::AlertNoise>>,
                T::Error: ::std::fmt::Display,
            {
                self.noise = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for noise: {e}")
                    });
                self
            }
            pub fn notification_target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertNotificationTargetType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_type: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn services<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::Service>>,
                T::Error: ::std::fmt::Display,
            {
                self.services = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for services: {e}")
                    });
                self
            }
            pub fn short_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.short_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for short_id: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertSource>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::AlertStatus>>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Alert> for super::Alert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Alert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_values_attributes: value.alert_field_values_attributes?,
                    alert_urgency_id: value.alert_urgency_id?,
                    created_at: value.created_at?,
                    data: value.data?,
                    deduplication_key: value.deduplication_key?,
                    description: value.description?,
                    ended_at: value.ended_at?,
                    environment_ids: value.environment_ids?,
                    environments: value.environments?,
                    external_id: value.external_id?,
                    external_url: value.external_url?,
                    functionalities: value.functionalities?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    group_leader_alert_id: value.group_leader_alert_id?,
                    groups: value.groups?,
                    is_group_leader_alert: value.is_group_leader_alert?,
                    labels: value.labels?,
                    noise: value.noise?,
                    notification_target_id: value.notification_target_id?,
                    notification_target_type: value.notification_target_type?,
                    service_ids: value.service_ids?,
                    services: value.services?,
                    short_id: value.short_id?,
                    source: value.source?,
                    started_at: value.started_at?,
                    status: value.status?,
                    summary: value.summary?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Alert> for Alert {
            fn from(value: super::Alert) -> Self {
                Self {
                    alert_field_values_attributes: Ok(
                        value.alert_field_values_attributes,
                    ),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    created_at: Ok(value.created_at),
                    data: Ok(value.data),
                    deduplication_key: Ok(value.deduplication_key),
                    description: Ok(value.description),
                    ended_at: Ok(value.ended_at),
                    environment_ids: Ok(value.environment_ids),
                    environments: Ok(value.environments),
                    external_id: Ok(value.external_id),
                    external_url: Ok(value.external_url),
                    functionalities: Ok(value.functionalities),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    group_leader_alert_id: Ok(value.group_leader_alert_id),
                    groups: Ok(value.groups),
                    is_group_leader_alert: Ok(value.is_group_leader_alert),
                    labels: Ok(value.labels),
                    noise: Ok(value.noise),
                    notification_target_id: Ok(value.notification_target_id),
                    notification_target_type: Ok(value.notification_target_type),
                    service_ids: Ok(value.service_ids),
                    services: Ok(value.services),
                    short_id: Ok(value.short_id),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertAlertFieldValuesAttributesItem {
            alert_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for AlertAlertFieldValuesAttributesItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Err(
                        "no value supplied for alert_field_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl AlertAlertFieldValuesAttributesItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertAlertFieldValuesAttributesItem>
        for super::AlertAlertFieldValuesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertAlertFieldValuesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::AlertAlertFieldValuesAttributesItem>
        for AlertAlertFieldValuesAttributesItem {
            fn from(value: super::AlertAlertFieldValuesAttributesItem) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEvent {
            action: ::std::result::Result<
                super::AlertEventAction,
                ::std::string::String,
            >,
            alert_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            details: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<super::AlertEventKind, ::std::string::String>,
            source: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEvent {
            fn default() -> Self {
                Self {
                    action: Err("no value supplied for action".to_string()),
                    alert_id: Err("no value supplied for alert_id".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    details: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    source: Err("no value supplied for source".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl AlertEvent {
            pub fn action<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventAction>,
                T::Error: ::std::fmt::Display,
            {
                self.action = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action: {e}")
                    });
                self
            }
            pub fn alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_id: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.details = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for details: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEvent> for super::AlertEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action: value.action?,
                    alert_id: value.alert_id?,
                    created_at: value.created_at?,
                    details: value.details?,
                    kind: value.kind?,
                    source: value.source?,
                    updated_at: value.updated_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEvent> for AlertEvent {
            fn from(value: super::AlertEvent) -> Self {
                Self {
                    action: Ok(value.action),
                    alert_id: Ok(value.alert_id),
                    created_at: Ok(value.created_at),
                    details: Ok(value.details),
                    kind: Ok(value.kind),
                    source: Ok(value.source),
                    updated_at: Ok(value.updated_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventFeedList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertEventFeedListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                super::AlertEventFeedMeta,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEventFeedList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertEventFeedList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertEventFeedListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventFeedMeta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventFeedList> for super::AlertEventFeedList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventFeedList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventFeedList> for AlertEventFeedList {
            fn from(value: super::AlertEventFeedList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventFeedListDataItem {
            attributes: ::std::result::Result<super::AlertEvent, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertEventFeedListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEventFeedListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertEventFeedListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventFeedListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventFeedListDataItem>
        for super::AlertEventFeedListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventFeedListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventFeedListDataItem>
        for AlertEventFeedListDataItem {
            fn from(value: super::AlertEventFeedListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventFeedMeta {
            current_page: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            next_cursor: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            next_page: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            prev_page: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            total_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            total_pages: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEventFeedMeta {
            fn default() -> Self {
                Self {
                    current_page: Ok(Default::default()),
                    next_cursor: Err("no value supplied for next_cursor".to_string()),
                    next_page: Ok(Default::default()),
                    prev_page: Ok(Default::default()),
                    total_count: Ok(Default::default()),
                    total_pages: Ok(Default::default()),
                }
            }
        }
        impl AlertEventFeedMeta {
            pub fn current_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.current_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for current_page: {e}")
                    });
                self
            }
            pub fn next_cursor<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.next_cursor = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for next_cursor: {e}")
                    });
                self
            }
            pub fn next_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.next_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for next_page: {e}")
                    });
                self
            }
            pub fn prev_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.prev_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prev_page: {e}")
                    });
                self
            }
            pub fn total_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.total_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for total_count: {e}")
                    });
                self
            }
            pub fn total_pages<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.total_pages = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for total_pages: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventFeedMeta> for super::AlertEventFeedMeta {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventFeedMeta,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    current_page: value.current_page?,
                    next_cursor: value.next_cursor?,
                    next_page: value.next_page?,
                    prev_page: value.prev_page?,
                    total_count: value.total_count?,
                    total_pages: value.total_pages?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventFeedMeta> for AlertEventFeedMeta {
            fn from(value: super::AlertEventFeedMeta) -> Self {
                Self {
                    current_page: Ok(value.current_page),
                    next_cursor: Ok(value.next_cursor),
                    next_page: Ok(value.next_page),
                    prev_page: Ok(value.prev_page),
                    total_count: Ok(value.total_count),
                    total_pages: Ok(value.total_pages),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertEventListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertEventList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertEventList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertEventListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventList> for super::AlertEventList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventList> for AlertEventList {
            fn from(value: super::AlertEventList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventListDataItem {
            attributes: ::std::result::Result<super::AlertEvent, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertEventListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEventListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertEventListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventListDataItem>
        for super::AlertEventListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventListDataItem>
        for AlertEventListDataItem {
            fn from(value: super::AlertEventListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventResponse {
            data: ::std::result::Result<
                super::AlertEventResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEventResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertEventResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventResponse> for super::AlertEventResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventResponse> for AlertEventResponse {
            fn from(value: super::AlertEventResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertEventResponseData {
            attributes: ::std::result::Result<super::AlertEvent, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertEventResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertEventResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertEventResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertEventResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertEventResponseData>
        for super::AlertEventResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertEventResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertEventResponseData>
        for AlertEventResponseData {
            fn from(value: super::AlertEventResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertField {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertField {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    kind: Err("no value supplied for kind".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl AlertField {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertField> for super::AlertField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    kind: value.kind?,
                    name: value.name?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertField> for AlertField {
            fn from(value: super::AlertField) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertFieldList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertFieldListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertFieldList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertFieldList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertFieldListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertFieldList> for super::AlertFieldList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertFieldList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertFieldList> for AlertFieldList {
            fn from(value: super::AlertFieldList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertFieldListDataItem {
            attributes: ::std::result::Result<super::AlertField, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertFieldListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertFieldListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertFieldListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertFieldListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertFieldListDataItem>
        for super::AlertFieldListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertFieldListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertFieldListDataItem>
        for AlertFieldListDataItem {
            fn from(value: super::AlertFieldListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertFieldResponse {
            data: ::std::result::Result<
                super::AlertFieldResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertFieldResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertFieldResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertFieldResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertFieldResponse> for super::AlertFieldResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertFieldResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertFieldResponse> for AlertFieldResponse {
            fn from(value: super::AlertFieldResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertFieldResponseData {
            attributes: ::std::result::Result<super::AlertField, ::std::string::String>,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::AlertFieldResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertFieldResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertFieldResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertFieldResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertFieldResponseData>
        for super::AlertFieldResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertFieldResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertFieldResponseData>
        for AlertFieldResponseData {
            fn from(value: super::AlertFieldResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroup {
            attributes: ::std::result::Result<
                ::std::vec::Vec<super::AlertGroupAttributesItem>,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::AlertGroupConditionsItem>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            deleted_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_by_alert_title: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            group_by_alert_urgency: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            targets: ::std::result::Result<
                ::std::vec::Vec<super::AlertGroupTargetsItem>,
                ::std::string::String,
            >,
            time_window: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroup {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    condition_type: Err(
                        "no value supplied for condition_type".to_string(),
                    ),
                    conditions: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    deleted_at: Err("no value supplied for deleted_at".to_string()),
                    description: Err("no value supplied for description".to_string()),
                    group_by_alert_title: Ok(Default::default()),
                    group_by_alert_urgency: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    slug: Ok(Default::default()),
                    targets: Ok(Default::default()),
                    time_window: Err("no value supplied for time_window".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl AlertGroup {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertGroupAttributesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertGroupConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn deleted_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deleted_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for deleted_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_by_alert_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_by_alert_title = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_by_alert_title: {e}"
                        )
                    });
                self
            }
            pub fn group_by_alert_urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_by_alert_urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_by_alert_urgency: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn targets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertGroupTargetsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.targets = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for targets: {e}")
                    });
                self
            }
            pub fn time_window<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.time_window = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_window: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroup> for super::AlertGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    condition_type: value.condition_type?,
                    conditions: value.conditions?,
                    created_at: value.created_at?,
                    deleted_at: value.deleted_at?,
                    description: value.description?,
                    group_by_alert_title: value.group_by_alert_title?,
                    group_by_alert_urgency: value.group_by_alert_urgency?,
                    name: value.name?,
                    slug: value.slug?,
                    targets: value.targets?,
                    time_window: value.time_window?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroup> for AlertGroup {
            fn from(value: super::AlertGroup) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    condition_type: Ok(value.condition_type),
                    conditions: Ok(value.conditions),
                    created_at: Ok(value.created_at),
                    deleted_at: Ok(value.deleted_at),
                    description: Ok(value.description),
                    group_by_alert_title: Ok(value.group_by_alert_title),
                    group_by_alert_urgency: Ok(value.group_by_alert_urgency),
                    name: Ok(value.name),
                    slug: Ok(value.slug),
                    targets: Ok(value.targets),
                    time_window: Ok(value.time_window),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupAttributesItem {
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupAttributesItem {
            fn default() -> Self {
                Self {
                    json_path: Ok(Default::default()),
                }
            }
        }
        impl AlertGroupAttributesItem {
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupAttributesItem>
        for super::AlertGroupAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    json_path: value.json_path?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupAttributesItem>
        for AlertGroupAttributesItem {
            fn from(value: super::AlertGroupAttributesItem) -> Self {
                Self {
                    json_path: Ok(value.json_path),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<super::AlertGroupConditionsItemConditionableType>,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::AlertGroupConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::AlertGroupConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::AlertGroupConditionsItemValuesItem>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl AlertGroupConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertGroupConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertGroupConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertGroupConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::AlertGroupConditionsItemValuesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupConditionsItem>
        for super::AlertGroupConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupConditionsItem>
        for AlertGroupConditionsItem {
            fn from(value: super::AlertGroupConditionsItem) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupConditionsItemValuesItem {
            record_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            record_type: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupConditionsItemValuesItem {
            fn default() -> Self {
                Self {
                    record_id: Err("no value supplied for record_id".to_string()),
                    record_type: Err("no value supplied for record_type".to_string()),
                }
            }
        }
        impl AlertGroupConditionsItemValuesItem {
            pub fn record_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.record_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for record_id: {e}")
                    });
                self
            }
            pub fn record_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.record_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for record_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupConditionsItemValuesItem>
        for super::AlertGroupConditionsItemValuesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupConditionsItemValuesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    record_id: value.record_id?,
                    record_type: value.record_type?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupConditionsItemValuesItem>
        for AlertGroupConditionsItemValuesItem {
            fn from(value: super::AlertGroupConditionsItemValuesItem) -> Self {
                Self {
                    record_id: Ok(value.record_id),
                    record_type: Ok(value.record_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertGroupListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertGroupList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertGroupListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupList> for super::AlertGroupList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupList> for AlertGroupList {
            fn from(value: super::AlertGroupList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupListDataItem {
            attributes: ::std::result::Result<super::AlertGroup, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertGroupListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertGroupListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertGroupListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupListDataItem>
        for super::AlertGroupListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupListDataItem>
        for AlertGroupListDataItem {
            fn from(value: super::AlertGroupListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupResponse {
            data: ::std::result::Result<
                super::AlertGroupResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertGroupResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertGroupResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupResponse> for super::AlertGroupResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupResponse> for AlertGroupResponse {
            fn from(value: super::AlertGroupResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupResponseData {
            attributes: ::std::result::Result<super::AlertGroup, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertGroupResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertGroupResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertGroupResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupResponseData>
        for super::AlertGroupResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupResponseData>
        for AlertGroupResponseData {
            fn from(value: super::AlertGroupResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertGroupTargetsItem {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::AlertGroupTargetsItemTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertGroupTargetsItem {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl AlertGroupTargetsItem {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertGroupTargetsItemTargetType>,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertGroupTargetsItem>
        for super::AlertGroupTargetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertGroupTargetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::AlertGroupTargetsItem>
        for AlertGroupTargetsItem {
            fn from(value: super::AlertGroupTargetsItem) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertLabelsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<
                super::AlertLabelsItemValue,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertLabelsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl AlertLabelsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertLabelsItemValue>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertLabelsItem> for super::AlertLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::AlertLabelsItem> for AlertLabelsItem {
            fn from(value: super::AlertLabelsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::AlertListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertList> for super::AlertList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertList> for AlertList {
            fn from(value: super::AlertList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertListDataItem {
            attributes: ::std::result::Result<super::Alert, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            source: ::std::result::Result<
                ::std::option::Option<super::AlertListDataItemSource>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::AlertListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    source: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Alert>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertListDataItemSource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertListDataItem> for super::AlertListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    source: value.source?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertListDataItem> for AlertListDataItem {
            fn from(value: super::AlertListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    source: Ok(value.source),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertResponse {
            data: ::std::result::Result<super::AlertResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertResponse> for super::AlertResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertResponse> for AlertResponse {
            fn from(value: super::AlertResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertResponseData {
            attributes: ::std::result::Result<super::Alert, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            source: ::std::result::Result<
                ::std::option::Option<super::AlertResponseDataSource>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::AlertResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    source: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Alert>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertResponseDataSource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertResponseData> for super::AlertResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    source: value.source?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertResponseData> for AlertResponseData {
            fn from(value: super::AlertResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    source: Ok(value.source),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoute {
            alerts_source_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owning_team_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<super::AlertRouteRulesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoute {
            fn default() -> Self {
                Self {
                    alerts_source_ids: Err(
                        "no value supplied for alerts_source_ids".to_string(),
                    ),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owning_team_ids: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl AlertRoute {
            pub fn alerts_source_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_ids: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owning_team_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.owning_team_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owning_team_ids: {e}"
                        )
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::AlertRouteRulesItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoute> for super::AlertRoute {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoute,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_ids: value.alerts_source_ids?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owning_team_ids: value.owning_team_ids?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoute> for AlertRoute {
            fn from(value: super::AlertRoute) -> Self {
                Self {
                    alerts_source_ids: Ok(value.alerts_source_ids),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owning_team_ids: Ok(value.owning_team_ids),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertRouteListDataItem>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertRouteList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertRouteList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRouteListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteList> for super::AlertRouteList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRouteList> for AlertRouteList {
            fn from(value: super::AlertRouteList) -> Self {
                Self {
                    data: Ok(value.data),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteListDataItem {
            attributes: ::std::result::Result<super::AlertRoute, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertRouteListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRouteListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertRouteListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoute>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRouteListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteListDataItem>
        for super::AlertRouteListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRouteListDataItem>
        for AlertRouteListDataItem {
            fn from(value: super::AlertRouteListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteResponse {
            data: ::std::result::Result<
                super::AlertRouteResponseData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRouteResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl AlertRouteResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRouteResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteResponse> for super::AlertRouteResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::AlertRouteResponse> for AlertRouteResponse {
            fn from(value: super::AlertRouteResponse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteResponseData {
            attributes: ::std::result::Result<super::AlertRoute, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertRouteResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRouteResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertRouteResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoute>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRouteResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteResponseData>
        for super::AlertRouteResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRouteResponseData>
        for AlertRouteResponseData {
            fn from(value: super::AlertRouteResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteRulesItem {
            condition_groups: ::std::result::Result<
                ::std::vec::Vec<super::AlertRouteRulesItemConditionGroupsItem>,
                ::std::string::String,
            >,
            destinations: ::std::result::Result<
                ::std::vec::Vec<super::AlertRouteRulesItemDestinationsItem>,
                ::std::string::String,
            >,
            fallback_rule: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRouteRulesItem {
            fn default() -> Self {
                Self {
                    condition_groups: Err(
                        "no value supplied for condition_groups".to_string(),
                    ),
                    destinations: Err("no value supplied for destinations".to_string()),
                    fallback_rule: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl AlertRouteRulesItem {
            pub fn condition_groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRouteRulesItemConditionGroupsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_groups = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_groups: {e}"
                        )
                    });
                self
            }
            pub fn destinations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRouteRulesItemDestinationsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destinations = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destinations: {e}")
                    });
                self
            }
            pub fn fallback_rule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fallback_rule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fallback_rule: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteRulesItem>
        for super::AlertRouteRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_groups: value.condition_groups?,
                    destinations: value.destinations?,
                    fallback_rule: value.fallback_rule?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRouteRulesItem> for AlertRouteRulesItem {
            fn from(value: super::AlertRouteRulesItem) -> Self {
                Self {
                    condition_groups: Ok(value.condition_groups),
                    destinations: Ok(value.destinations),
                    fallback_rule: Ok(value.fallback_rule),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteRulesItemConditionGroupsItem {
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::AlertRouteRulesItemConditionGroupsItemConditionsItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRouteRulesItemConditionGroupsItem {
            fn default() -> Self {
                Self {
                    conditions: Err("no value supplied for conditions".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl AlertRouteRulesItemConditionGroupsItem {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AlertRouteRulesItemConditionGroupsItemConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteRulesItemConditionGroupsItem>
        for super::AlertRouteRulesItemConditionGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteRulesItemConditionGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRouteRulesItemConditionGroupsItem>
        for AlertRouteRulesItemConditionGroupsItem {
            fn from(value: super::AlertRouteRulesItemConditionGroupsItem) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteRulesItemConditionGroupsItemConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType,
                >,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AlertRouteRulesItemConditionGroupsItemConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl AlertRouteRulesItemConditionGroupsItemConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertRouteRulesItemConditionGroupsItemConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRouteRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AlertRouteRulesItemConditionGroupsItemConditionsItem,
        > for super::AlertRouteRulesItemConditionGroupsItemConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteRulesItemConditionGroupsItemConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<
            super::AlertRouteRulesItemConditionGroupsItemConditionsItem,
        > for AlertRouteRulesItemConditionGroupsItemConditionsItem {
            fn from(
                value: super::AlertRouteRulesItemConditionGroupsItemConditionsItem,
            ) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRouteRulesItemDestinationsItem {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::AlertRouteRulesItemDestinationsItemTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRouteRulesItemDestinationsItem {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl AlertRouteRulesItemDestinationsItem {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRouteRulesItemDestinationsItemTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRouteRulesItemDestinationsItem>
        for super::AlertRouteRulesItemDestinationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRouteRulesItemDestinationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRouteRulesItemDestinationsItem>
        for AlertRouteRulesItemDestinationsItem {
            fn from(value: super::AlertRouteRulesItemDestinationsItem) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRule {
            alerts_source_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            condition_groups: ::std::result::Result<
                ::std::vec::Vec<super::AlertRoutingRuleConditionGroupsItem>,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                super::AlertRoutingRuleConditionType,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::AlertRoutingRuleConditionsItem>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            destination: ::std::result::Result<
                ::std::option::Option<super::AlertRoutingRuleDestination>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRule {
            fn default() -> Self {
                Self {
                    alerts_source_id: Err(
                        "no value supplied for alerts_source_id".to_string(),
                    ),
                    condition_groups: Ok(Default::default()),
                    condition_type: Err(
                        "no value supplied for condition_type".to_string(),
                    ),
                    conditions: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    destination: Ok(Default::default()),
                    enabled: Err("no value supplied for enabled".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl AlertRoutingRule {
            pub fn alerts_source_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRoutingRuleConditionGroupsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_groups = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_groups: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRuleConditionType>,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRoutingRuleConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn destination<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertRoutingRuleDestination>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destination = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destination: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRule> for super::AlertRoutingRule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_id: value.alerts_source_id?,
                    condition_groups: value.condition_groups?,
                    condition_type: value.condition_type?,
                    conditions: value.conditions?,
                    created_at: value.created_at?,
                    destination: value.destination?,
                    enabled: value.enabled?,
                    name: value.name?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRule> for AlertRoutingRule {
            fn from(value: super::AlertRoutingRule) -> Self {
                Self {
                    alerts_source_id: Ok(value.alerts_source_id),
                    condition_groups: Ok(value.condition_groups),
                    condition_type: Ok(value.condition_type),
                    conditions: Ok(value.conditions),
                    created_at: Ok(value.created_at),
                    destination: Ok(value.destination),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleCondition {
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::AlertRoutingRuleConditionPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::AlertRoutingRuleConditionPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleCondition {
            fn default() -> Self {
                Self {
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    id: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Err(
                        "no value supplied for property_field_name".to_string(),
                    ),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl AlertRoutingRuleCondition {
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRoutingRuleConditionPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRoutingRuleConditionPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleCondition>
        for super::AlertRoutingRuleCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    created_at: value.created_at?,
                    id: value.id?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleCondition>
        for AlertRoutingRuleCondition {
            fn from(value: super::AlertRoutingRuleCondition) -> Self {
                Self {
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    created_at: Ok(value.created_at),
                    id: Ok(value.id),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleConditionGroup {
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::AlertRoutingRuleCondition>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleConditionGroup {
            fn default() -> Self {
                Self {
                    conditions: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    id: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl AlertRoutingRuleConditionGroup {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRoutingRuleCondition>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleConditionGroup>
        for super::AlertRoutingRuleConditionGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleConditionGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    created_at: value.created_at?,
                    id: value.id?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleConditionGroup>
        for AlertRoutingRuleConditionGroup {
            fn from(value: super::AlertRoutingRuleConditionGroup) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    created_at: Ok(value.created_at),
                    id: Ok(value.id),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleConditionGroupsItem {
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::AlertRoutingRuleConditionGroupsItemConditionsItem,
                >,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleConditionGroupsItem {
            fn default() -> Self {
                Self {
                    conditions: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    id: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl AlertRoutingRuleConditionGroupsItem {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AlertRoutingRuleConditionGroupsItemConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleConditionGroupsItem>
        for super::AlertRoutingRuleConditionGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleConditionGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    created_at: value.created_at?,
                    id: value.id?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleConditionGroupsItem>
        for AlertRoutingRuleConditionGroupsItem {
            fn from(value: super::AlertRoutingRuleConditionGroupsItem) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    created_at: Ok(value.created_at),
                    id: Ok(value.id),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleConditionGroupsItemConditionsItem {
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AlertRoutingRuleConditionGroupsItemConditionsItem {
            fn default() -> Self {
                Self {
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    id: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Err(
                        "no value supplied for property_field_name".to_string(),
                    ),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl AlertRoutingRuleConditionGroupsItemConditionsItem {
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRoutingRuleConditionGroupsItemConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleConditionGroupsItemConditionsItem>
        for super::AlertRoutingRuleConditionGroupsItemConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleConditionGroupsItemConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    created_at: value.created_at?,
                    id: value.id?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<
            super::AlertRoutingRuleConditionGroupsItemConditionsItem,
        > for AlertRoutingRuleConditionGroupsItemConditionsItem {
            fn from(
                value: super::AlertRoutingRuleConditionGroupsItemConditionsItem,
            ) -> Self {
                Self {
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    created_at: Ok(value.created_at),
                    id: Ok(value.id),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleConditionsItem {
            property_field_condition_type: ::std::result::Result<
                super::AlertRoutingRuleConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::AlertRoutingRuleConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleConditionsItem {
            fn default() -> Self {
                Self {
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Err(
                        "no value supplied for property_field_name".to_string(),
                    ),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl AlertRoutingRuleConditionsItem {
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRoutingRuleConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertRoutingRuleConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleConditionsItem>
        for super::AlertRoutingRuleConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleConditionsItem>
        for AlertRoutingRuleConditionsItem {
            fn from(value: super::AlertRoutingRuleConditionsItem) -> Self {
                Self {
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleDestination {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::AlertRoutingRuleDestinationTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleDestination {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl AlertRoutingRuleDestination {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRuleDestinationTargetType>,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleDestination>
        for super::AlertRoutingRuleDestination {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleDestination,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleDestination>
        for AlertRoutingRuleDestination {
            fn from(value: super::AlertRoutingRuleDestination) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertRoutingRuleListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertRoutingRuleList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertRoutingRuleList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertRoutingRuleListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleList>
        for super::AlertRoutingRuleList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleList> for AlertRoutingRuleList {
            fn from(value: super::AlertRoutingRuleList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleListDataItem {
            attributes: ::std::result::Result<
                super::AlertRoutingRule,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertRoutingRuleListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertRoutingRuleListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRule>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRuleListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleListDataItem>
        for super::AlertRoutingRuleListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleListDataItem>
        for AlertRoutingRuleListDataItem {
            fn from(value: super::AlertRoutingRuleListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleResponse {
            data: ::std::result::Result<
                super::AlertRoutingRuleResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertRoutingRuleResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRuleResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleResponse>
        for super::AlertRoutingRuleResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleResponse>
        for AlertRoutingRuleResponse {
            fn from(value: super::AlertRoutingRuleResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleResponseData {
            attributes: ::std::result::Result<
                super::AlertRoutingRule,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertRoutingRuleResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertRoutingRuleResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRule>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRuleResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleResponseData>
        for super::AlertRoutingRuleResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleResponseData>
        for AlertRoutingRuleResponseData {
            fn from(value: super::AlertRoutingRuleResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertRoutingRuleTargetInner {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::AlertRoutingRuleTargetInnerTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertRoutingRuleTargetInner {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl AlertRoutingRuleTargetInner {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertRoutingRuleTargetInnerTargetType>,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertRoutingRuleTargetInner>
        for super::AlertRoutingRuleTargetInner {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertRoutingRuleTargetInner,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::AlertRoutingRuleTargetInner>
        for AlertRoutingRuleTargetInner {
            fn from(value: super::AlertRoutingRuleTargetInner) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertTriggerParams {
            alert_condition: ::std::result::Result<
                ::std::option::Option<super::AlertTriggerParamsAlertCondition>,
                ::std::string::String,
            >,
            alert_condition_label: ::std::result::Result<
                super::AlertTriggerParamsAlertConditionLabel,
                ::std::string::String,
            >,
            alert_condition_label_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            alert_condition_payload: ::std::result::Result<
                super::AlertTriggerParamsAlertConditionPayload,
                ::std::string::String,
            >,
            alert_condition_payload_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            alert_condition_source: ::std::result::Result<
                super::AlertTriggerParamsAlertConditionSource,
                ::std::string::String,
            >,
            alert_condition_source_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            alert_condition_status: ::std::result::Result<
                super::AlertTriggerParamsAlertConditionStatus,
                ::std::string::String,
            >,
            alert_condition_status_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            alert_condition_urgency: ::std::result::Result<
                super::AlertTriggerParamsAlertConditionUrgency,
                ::std::string::String,
            >,
            alert_field_conditions: ::std::result::Result<
                ::std::vec::Vec<super::AlertTriggerParamsAlertFieldConditionsItem>,
                ::std::string::String,
            >,
            alert_labels: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            alert_payload: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            alert_payload_conditions: ::std::result::Result<
                ::std::option::Option<super::AlertTriggerParamsAlertPayloadConditions>,
                ::std::string::String,
            >,
            alert_query_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_sources: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            alert_statuses: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            alert_urgency_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            trigger_type: ::std::result::Result<
                super::AlertTriggerParamsTriggerType,
                ::std::string::String,
            >,
            triggers: ::std::result::Result<
                ::std::vec::Vec<super::AlertTriggerParamsTriggersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertTriggerParams {
            fn default() -> Self {
                Self {
                    alert_condition: Ok(Default::default()),
                    alert_condition_label: Ok(
                        super::defaults::alert_trigger_params_alert_condition_label(),
                    ),
                    alert_condition_label_use_regexp: Ok(Default::default()),
                    alert_condition_payload: Ok(
                        super::defaults::alert_trigger_params_alert_condition_payload(),
                    ),
                    alert_condition_payload_use_regexp: Ok(Default::default()),
                    alert_condition_source: Ok(
                        super::defaults::alert_trigger_params_alert_condition_source(),
                    ),
                    alert_condition_source_use_regexp: Ok(Default::default()),
                    alert_condition_status: Ok(
                        super::defaults::alert_trigger_params_alert_condition_status(),
                    ),
                    alert_condition_status_use_regexp: Ok(Default::default()),
                    alert_condition_urgency: Ok(
                        super::defaults::alert_trigger_params_alert_condition_urgency(),
                    ),
                    alert_field_conditions: Ok(Default::default()),
                    alert_labels: Ok(Default::default()),
                    alert_payload: Ok(Default::default()),
                    alert_payload_conditions: Ok(Default::default()),
                    alert_query_payload: Ok(Default::default()),
                    alert_sources: Ok(Default::default()),
                    alert_statuses: Ok(Default::default()),
                    alert_urgency_ids: Ok(Default::default()),
                    trigger_type: Err("no value supplied for trigger_type".to_string()),
                    triggers: Ok(Default::default()),
                }
            }
        }
        impl AlertTriggerParams {
            pub fn alert_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertTriggerParamsAlertCondition>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_label<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertTriggerParamsAlertConditionLabel>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_label = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_label: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_label_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_label_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_label_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertTriggerParamsAlertConditionPayload,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_payload: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_payload_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_payload_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_payload_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertTriggerParamsAlertConditionSource,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_source = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_source: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_source_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_source_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_source_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertTriggerParamsAlertConditionStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_status: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_status_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_status_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_status_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn alert_condition_urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertTriggerParamsAlertConditionUrgency,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_condition_urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_condition_urgency: {e}"
                        )
                    });
                self
            }
            pub fn alert_field_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertTriggerParamsAlertFieldConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_conditions: {e}"
                        )
                    });
                self
            }
            pub fn alert_labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_labels: {e}")
                    });
                self
            }
            pub fn alert_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_payload: {e}")
                    });
                self
            }
            pub fn alert_payload_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertTriggerParamsAlertPayloadConditions,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_payload_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_payload_conditions: {e}"
                        )
                    });
                self
            }
            pub fn alert_query_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_query_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_query_payload: {e}"
                        )
                    });
                self
            }
            pub fn alert_sources<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_sources = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_sources: {e}")
                    });
                self
            }
            pub fn alert_statuses<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_statuses = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_statuses: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn trigger_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertTriggerParamsTriggerType>,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for trigger_type: {e}")
                    });
                self
            }
            pub fn triggers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertTriggerParamsTriggersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.triggers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggers: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertTriggerParams> for super::AlertTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_condition: value.alert_condition?,
                    alert_condition_label: value.alert_condition_label?,
                    alert_condition_label_use_regexp: value
                        .alert_condition_label_use_regexp?,
                    alert_condition_payload: value.alert_condition_payload?,
                    alert_condition_payload_use_regexp: value
                        .alert_condition_payload_use_regexp?,
                    alert_condition_source: value.alert_condition_source?,
                    alert_condition_source_use_regexp: value
                        .alert_condition_source_use_regexp?,
                    alert_condition_status: value.alert_condition_status?,
                    alert_condition_status_use_regexp: value
                        .alert_condition_status_use_regexp?,
                    alert_condition_urgency: value.alert_condition_urgency?,
                    alert_field_conditions: value.alert_field_conditions?,
                    alert_labels: value.alert_labels?,
                    alert_payload: value.alert_payload?,
                    alert_payload_conditions: value.alert_payload_conditions?,
                    alert_query_payload: value.alert_query_payload?,
                    alert_sources: value.alert_sources?,
                    alert_statuses: value.alert_statuses?,
                    alert_urgency_ids: value.alert_urgency_ids?,
                    trigger_type: value.trigger_type?,
                    triggers: value.triggers?,
                })
            }
        }
        impl ::std::convert::From<super::AlertTriggerParams> for AlertTriggerParams {
            fn from(value: super::AlertTriggerParams) -> Self {
                Self {
                    alert_condition: Ok(value.alert_condition),
                    alert_condition_label: Ok(value.alert_condition_label),
                    alert_condition_label_use_regexp: Ok(
                        value.alert_condition_label_use_regexp,
                    ),
                    alert_condition_payload: Ok(value.alert_condition_payload),
                    alert_condition_payload_use_regexp: Ok(
                        value.alert_condition_payload_use_regexp,
                    ),
                    alert_condition_source: Ok(value.alert_condition_source),
                    alert_condition_source_use_regexp: Ok(
                        value.alert_condition_source_use_regexp,
                    ),
                    alert_condition_status: Ok(value.alert_condition_status),
                    alert_condition_status_use_regexp: Ok(
                        value.alert_condition_status_use_regexp,
                    ),
                    alert_condition_urgency: Ok(value.alert_condition_urgency),
                    alert_field_conditions: Ok(value.alert_field_conditions),
                    alert_labels: Ok(value.alert_labels),
                    alert_payload: Ok(value.alert_payload),
                    alert_payload_conditions: Ok(value.alert_payload_conditions),
                    alert_query_payload: Ok(value.alert_query_payload),
                    alert_sources: Ok(value.alert_sources),
                    alert_statuses: Ok(value.alert_statuses),
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    trigger_type: Ok(value.trigger_type),
                    triggers: Ok(value.triggers),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertTriggerParamsAlertFieldConditionsItem {
            alert_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                super::AlertTriggerParamsAlertFieldConditionsItemConditionType,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertTriggerParamsAlertFieldConditionsItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Err(
                        "no value supplied for alert_field_id".to_string(),
                    ),
                    condition_type: Err(
                        "no value supplied for condition_type".to_string(),
                    ),
                    values: Ok(Default::default()),
                }
            }
        }
        impl AlertTriggerParamsAlertFieldConditionsItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertTriggerParamsAlertFieldConditionsItemConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertTriggerParamsAlertFieldConditionsItem>
        for super::AlertTriggerParamsAlertFieldConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertTriggerParamsAlertFieldConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    condition_type: value.condition_type?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::AlertTriggerParamsAlertFieldConditionsItem>
        for AlertTriggerParamsAlertFieldConditionsItem {
            fn from(value: super::AlertTriggerParamsAlertFieldConditionsItem) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    condition_type: Ok(value.condition_type),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertTriggerParamsAlertPayloadConditions {
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::AlertTriggerParamsAlertPayloadConditionsConditionsItem,
                >,
                ::std::string::String,
            >,
            logic: ::std::result::Result<
                ::std::option::Option<
                    super::AlertTriggerParamsAlertPayloadConditionsLogic,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertTriggerParamsAlertPayloadConditions {
            fn default() -> Self {
                Self {
                    conditions: Ok(Default::default()),
                    logic: Ok(Default::default()),
                }
            }
        }
        impl AlertTriggerParamsAlertPayloadConditions {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AlertTriggerParamsAlertPayloadConditionsConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn logic<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertTriggerParamsAlertPayloadConditionsLogic,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.logic = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for logic: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertTriggerParamsAlertPayloadConditions>
        for super::AlertTriggerParamsAlertPayloadConditions {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertTriggerParamsAlertPayloadConditions,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    logic: value.logic?,
                })
            }
        }
        impl ::std::convert::From<super::AlertTriggerParamsAlertPayloadConditions>
        for AlertTriggerParamsAlertPayloadConditions {
            fn from(value: super::AlertTriggerParamsAlertPayloadConditions) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    logic: Ok(value.logic),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertTriggerParamsAlertPayloadConditionsConditionsItem {
            operator: ::std::result::Result<
                super::AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator,
                ::std::string::String,
            >,
            query: ::std::result::Result<::std::string::String, ::std::string::String>,
            use_regexp: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AlertTriggerParamsAlertPayloadConditionsConditionsItem {
            fn default() -> Self {
                Self {
                    operator: Err("no value supplied for operator".to_string()),
                    query: Err("no value supplied for query".to_string()),
                    use_regexp: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl AlertTriggerParamsAlertPayloadConditionsConditionsItem {
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AlertTriggerParamsAlertPayloadConditionsConditionsItemOperator,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn query<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.query = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for query: {e}")
                    });
                self
            }
            pub fn use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for use_regexp: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AlertTriggerParamsAlertPayloadConditionsConditionsItem,
        > for super::AlertTriggerParamsAlertPayloadConditionsConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertTriggerParamsAlertPayloadConditionsConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    operator: value.operator?,
                    query: value.query?,
                    use_regexp: value.use_regexp?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<
            super::AlertTriggerParamsAlertPayloadConditionsConditionsItem,
        > for AlertTriggerParamsAlertPayloadConditionsConditionsItem {
            fn from(
                value: super::AlertTriggerParamsAlertPayloadConditionsConditionsItem,
            ) -> Self {
                Self {
                    operator: Ok(value.operator),
                    query: Ok(value.query),
                    use_regexp: Ok(value.use_regexp),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertUrgency {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertUrgency {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Err("no value supplied for description".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl AlertUrgency {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertUrgency> for super::AlertUrgency {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertUrgency,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::AlertUrgency> for AlertUrgency {
            fn from(value: super::AlertUrgency) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertUrgencyList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertUrgencyListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertUrgencyList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertUrgencyList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertUrgencyListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertUrgencyList> for super::AlertUrgencyList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertUrgencyList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertUrgencyList> for AlertUrgencyList {
            fn from(value: super::AlertUrgencyList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertUrgencyListDataItem {
            attributes: ::std::result::Result<
                super::AlertUrgency,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertUrgencyListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertUrgencyListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertUrgencyListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertUrgency>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertUrgencyListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertUrgencyListDataItem>
        for super::AlertUrgencyListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertUrgencyListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertUrgencyListDataItem>
        for AlertUrgencyListDataItem {
            fn from(value: super::AlertUrgencyListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertUrgencyResponse {
            data: ::std::result::Result<
                super::AlertUrgencyResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertUrgencyResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertUrgencyResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertUrgencyResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertUrgencyResponse>
        for super::AlertUrgencyResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertUrgencyResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertUrgencyResponse> for AlertUrgencyResponse {
            fn from(value: super::AlertUrgencyResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertUrgencyResponseData {
            attributes: ::std::result::Result<
                super::AlertUrgency,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertUrgencyResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertUrgencyResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertUrgencyResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertUrgency>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertUrgencyResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertUrgencyResponseData>
        for super::AlertUrgencyResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertUrgencyResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertUrgencyResponseData>
        for AlertUrgencyResponseData {
            fn from(value: super::AlertUrgencyResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSource {
            alert_source_fields_attributes: ::std::result::Result<
                ::std::vec::Vec<super::AlertsSourceAlertSourceFieldsAttributesItem>,
                ::std::string::String,
            >,
            alert_source_urgency_rules_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::AlertsSourceAlertSourceUrgencyRulesAttributesItem,
                >,
                ::std::string::String,
            >,
            alert_template_attributes: ::std::result::Result<
                ::std::option::Option<super::AlertsSourceAlertTemplateAttributes>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            deduplicate_alerts_by_key: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            deduplication_key_kind: ::std::result::Result<
                ::std::option::Option<super::AlertsSourceDeduplicationKeyKind>,
                ::std::string::String,
            >,
            deduplication_key_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            deduplication_key_regexp: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owner_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            resolution_rule_attributes: ::std::result::Result<
                ::std::option::Option<super::AlertsSourceResolutionRuleAttributes>,
                ::std::string::String,
            >,
            secret: ::std::result::Result<::std::string::String, ::std::string::String>,
            source_type: ::std::result::Result<
                ::std::option::Option<super::AlertsSourceSourceType>,
                ::std::string::String,
            >,
            sourceable_attributes: ::std::result::Result<
                ::std::option::Option<super::AlertsSourceSourceableAttributes>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::AlertsSourceStatus,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            webhook_endpoint: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSource {
            fn default() -> Self {
                Self {
                    alert_source_fields_attributes: Ok(Default::default()),
                    alert_source_urgency_rules_attributes: Ok(Default::default()),
                    alert_template_attributes: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    deduplicate_alerts_by_key: Ok(Default::default()),
                    deduplication_key_kind: Ok(Default::default()),
                    deduplication_key_path: Ok(Default::default()),
                    deduplication_key_regexp: Ok(Default::default()),
                    email: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owner_group_ids: Ok(Default::default()),
                    resolution_rule_attributes: Ok(Default::default()),
                    secret: Err("no value supplied for secret".to_string()),
                    source_type: Ok(Default::default()),
                    sourceable_attributes: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    webhook_endpoint: Ok(Default::default()),
                }
            }
        }
        impl AlertsSource {
            pub fn alert_source_fields_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertsSourceAlertSourceFieldsAttributesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_source_fields_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_source_fields_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_source_urgency_rules_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AlertsSourceAlertSourceUrgencyRulesAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_source_urgency_rules_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_source_urgency_rules_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_template_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertsSourceAlertTemplateAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_template_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_template_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn deduplicate_alerts_by_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplicate_alerts_by_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplicate_alerts_by_key: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertsSourceDeduplicationKeyKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_kind: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_path: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_regexp: {e}"
                        )
                    });
                self
            }
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn resolution_rule_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertsSourceResolutionRuleAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_rule_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_rule_attributes: {e}"
                        )
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
            pub fn source_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertsSourceSourceType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.source_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source_type: {e}")
                    });
                self
            }
            pub fn sourceable_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AlertsSourceSourceableAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.sourceable_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sourceable_attributes: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertsSourceStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn webhook_endpoint<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.webhook_endpoint = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhook_endpoint: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSource> for super::AlertsSource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_source_fields_attributes: value
                        .alert_source_fields_attributes?,
                    alert_source_urgency_rules_attributes: value
                        .alert_source_urgency_rules_attributes?,
                    alert_template_attributes: value.alert_template_attributes?,
                    alert_urgency_id: value.alert_urgency_id?,
                    created_at: value.created_at?,
                    deduplicate_alerts_by_key: value.deduplicate_alerts_by_key?,
                    deduplication_key_kind: value.deduplication_key_kind?,
                    deduplication_key_path: value.deduplication_key_path?,
                    deduplication_key_regexp: value.deduplication_key_regexp?,
                    email: value.email?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owner_group_ids: value.owner_group_ids?,
                    resolution_rule_attributes: value.resolution_rule_attributes?,
                    secret: value.secret?,
                    source_type: value.source_type?,
                    sourceable_attributes: value.sourceable_attributes?,
                    status: value.status?,
                    updated_at: value.updated_at?,
                    webhook_endpoint: value.webhook_endpoint?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSource> for AlertsSource {
            fn from(value: super::AlertsSource) -> Self {
                Self {
                    alert_source_fields_attributes: Ok(
                        value.alert_source_fields_attributes,
                    ),
                    alert_source_urgency_rules_attributes: Ok(
                        value.alert_source_urgency_rules_attributes,
                    ),
                    alert_template_attributes: Ok(value.alert_template_attributes),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    created_at: Ok(value.created_at),
                    deduplicate_alerts_by_key: Ok(value.deduplicate_alerts_by_key),
                    deduplication_key_kind: Ok(value.deduplication_key_kind),
                    deduplication_key_path: Ok(value.deduplication_key_path),
                    deduplication_key_regexp: Ok(value.deduplication_key_regexp),
                    email: Ok(value.email),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owner_group_ids: Ok(value.owner_group_ids),
                    resolution_rule_attributes: Ok(value.resolution_rule_attributes),
                    secret: Ok(value.secret),
                    source_type: Ok(value.source_type),
                    sourceable_attributes: Ok(value.sourceable_attributes),
                    status: Ok(value.status),
                    updated_at: Ok(value.updated_at),
                    webhook_endpoint: Ok(value.webhook_endpoint),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceAlertSourceFieldsAttributesItem {
            alert_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            template_body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceAlertSourceFieldsAttributesItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Ok(Default::default()),
                    template_body: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceAlertSourceFieldsAttributesItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn template_body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_body: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceAlertSourceFieldsAttributesItem>
        for super::AlertsSourceAlertSourceFieldsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceAlertSourceFieldsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    template_body: value.template_body?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceAlertSourceFieldsAttributesItem>
        for AlertsSourceAlertSourceFieldsAttributesItem {
            fn from(value: super::AlertsSourceAlertSourceFieldsAttributesItem) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    template_body: Ok(value.template_body),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceAlertSourceUrgencyRulesAttributesItem {
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType,
                >,
                ::std::string::String,
            >,
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceAlertSourceUrgencyRulesAttributesItemKind,
                >,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AlertsSourceAlertSourceUrgencyRulesAttributesItem {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    json_path: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceAlertSourceUrgencyRulesAttributesItem {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceAlertSourceUrgencyRulesAttributesItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceAlertSourceUrgencyRulesAttributesItemKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceAlertSourceUrgencyRulesAttributesItemOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceAlertSourceUrgencyRulesAttributesItem>
        for super::AlertsSourceAlertSourceUrgencyRulesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceAlertSourceUrgencyRulesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    json_path: value.json_path?,
                    kind: value.kind?,
                    operator: value.operator?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::AlertsSourceAlertSourceUrgencyRulesAttributesItem,
        > for AlertsSourceAlertSourceUrgencyRulesAttributesItem {
            fn from(
                value: super::AlertsSourceAlertSourceUrgencyRulesAttributesItem,
            ) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    json_path: Ok(value.json_path),
                    kind: Ok(value.kind),
                    operator: Ok(value.operator),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceAlertTemplateAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceAlertTemplateAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceAlertTemplateAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceAlertTemplateAttributes>
        for super::AlertsSourceAlertTemplateAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceAlertTemplateAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    external_url: value.external_url?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceAlertTemplateAttributes>
        for AlertsSourceAlertTemplateAttributes {
            fn from(value: super::AlertsSourceAlertTemplateAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    external_url: Ok(value.external_url),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AlertsSourceListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AlertsSourceList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AlertsSourceList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AlertsSourceListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceList> for super::AlertsSourceList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceList> for AlertsSourceList {
            fn from(value: super::AlertsSourceList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceListDataItem {
            attributes: ::std::result::Result<
                super::AlertsSource,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertsSourceListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertsSourceListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertsSource>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertsSourceListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceListDataItem>
        for super::AlertsSourceListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceListDataItem>
        for AlertsSourceListDataItem {
            fn from(value: super::AlertsSourceListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceResolutionRuleAttributes {
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceResolutionRuleAttributesConditionType,
                >,
                ::std::string::String,
            >,
            conditions_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
                >,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            identifier_json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            identifier_matchable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            identifier_matchable_type: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceResolutionRuleAttributesIdentifierMatchableType,
                >,
                ::std::string::String,
            >,
            identifier_reference_kind: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceResolutionRuleAttributesIdentifierReferenceKind,
                >,
                ::std::string::String,
            >,
            identifier_value_regex: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceResolutionRuleAttributes {
            fn default() -> Self {
                Self {
                    condition_type: Ok(Default::default()),
                    conditions_attributes: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    identifier_json_path: Ok(Default::default()),
                    identifier_matchable_id: Ok(Default::default()),
                    identifier_matchable_type: Ok(Default::default()),
                    identifier_reference_kind: Ok(Default::default()),
                    identifier_value_regex: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceResolutionRuleAttributes {
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceResolutionRuleAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditions_attributes: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn identifier_json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_json_path: {e}"
                        )
                    });
                self
            }
            pub fn identifier_matchable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_matchable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_matchable_id: {e}"
                        )
                    });
                self
            }
            pub fn identifier_matchable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceResolutionRuleAttributesIdentifierMatchableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_matchable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_matchable_type: {e}"
                        )
                    });
                self
            }
            pub fn identifier_reference_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceResolutionRuleAttributesIdentifierReferenceKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_reference_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_reference_kind: {e}"
                        )
                    });
                self
            }
            pub fn identifier_value_regex<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_value_regex = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_value_regex: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceResolutionRuleAttributes>
        for super::AlertsSourceResolutionRuleAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceResolutionRuleAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_type: value.condition_type?,
                    conditions_attributes: value.conditions_attributes?,
                    enabled: value.enabled?,
                    identifier_json_path: value.identifier_json_path?,
                    identifier_matchable_id: value.identifier_matchable_id?,
                    identifier_matchable_type: value.identifier_matchable_type?,
                    identifier_reference_kind: value.identifier_reference_kind?,
                    identifier_value_regex: value.identifier_value_regex?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceResolutionRuleAttributes>
        for AlertsSourceResolutionRuleAttributes {
            fn from(value: super::AlertsSourceResolutionRuleAttributes) -> Self {
                Self {
                    condition_type: Ok(value.condition_type),
                    conditions_attributes: Ok(value.conditions_attributes),
                    enabled: Ok(value.enabled),
                    identifier_json_path: Ok(value.identifier_json_path),
                    identifier_matchable_id: Ok(value.identifier_matchable_id),
                    identifier_matchable_type: Ok(value.identifier_matchable_type),
                    identifier_reference_kind: Ok(value.identifier_reference_kind),
                    identifier_value_regex: Ok(value.identifier_value_regex),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType,
                >,
                ::std::string::String,
            >,
            field: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind,
                >,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
            fn default() -> Self {
                Self {
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    field: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceResolutionRuleAttributesConditionsAttributesItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn field<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.field = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceResolutionRuleAttributesConditionsAttributesItemKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceResolutionRuleAttributesConditionsAttributesItemOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
        > for super::AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    field: value.field?,
                    kind: value.kind?,
                    operator: value.operator?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
        > for AlertsSourceResolutionRuleAttributesConditionsAttributesItem {
            fn from(
                value: super::AlertsSourceResolutionRuleAttributesConditionsAttributesItem,
            ) -> Self {
                Self {
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    field: Ok(value.field),
                    kind: Ok(value.kind),
                    operator: Ok(value.operator),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceResponse {
            data: ::std::result::Result<
                super::AlertsSourceResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertsSourceResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceResponse>
        for super::AlertsSourceResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceResponse> for AlertsSourceResponse {
            fn from(value: super::AlertsSourceResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceResponseData {
            attributes: ::std::result::Result<
                super::AlertsSource,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AlertsSourceResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AlertsSourceResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertsSource>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AlertsSourceResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceResponseData>
        for super::AlertsSourceResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceResponseData>
        for AlertsSourceResponseData {
            fn from(value: super::AlertsSourceResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceSourceableAttributes {
            accept_threaded_emails: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            auto_resolve: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            field_mappings_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
                >,
                ::std::string::String,
            >,
            resolve_state: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AlertsSourceSourceableAttributes {
            fn default() -> Self {
                Self {
                    accept_threaded_emails: Ok(Default::default()),
                    auto_resolve: Ok(Default::default()),
                    field_mappings_attributes: Ok(Default::default()),
                    resolve_state: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceSourceableAttributes {
            pub fn accept_threaded_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.accept_threaded_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for accept_threaded_emails: {e}"
                        )
                    });
                self
            }
            pub fn auto_resolve<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_resolve = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auto_resolve: {e}")
                    });
                self
            }
            pub fn field_mappings_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field_mappings_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for field_mappings_attributes: {e}"
                        )
                    });
                self
            }
            pub fn resolve_state<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolve_state = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolve_state: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AlertsSourceSourceableAttributes>
        for super::AlertsSourceSourceableAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceSourceableAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    accept_threaded_emails: value.accept_threaded_emails?,
                    auto_resolve: value.auto_resolve?,
                    field_mappings_attributes: value.field_mappings_attributes?,
                    resolve_state: value.resolve_state?,
                })
            }
        }
        impl ::std::convert::From<super::AlertsSourceSourceableAttributes>
        for AlertsSourceSourceableAttributes {
            fn from(value: super::AlertsSourceSourceableAttributes) -> Self {
                Self {
                    accept_threaded_emails: Ok(value.accept_threaded_emails),
                    auto_resolve: Ok(value.auto_resolve),
                    field_mappings_attributes: Ok(value.field_mappings_attributes),
                    resolve_state: Ok(value.resolve_state),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
            field: ::std::result::Result<
                ::std::option::Option<
                    super::AlertsSourceSourceableAttributesFieldMappingsAttributesItemField,
                >,
                ::std::string::String,
            >,
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
            fn default() -> Self {
                Self {
                    field: Ok(Default::default()),
                    json_path: Ok(Default::default()),
                }
            }
        }
        impl AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
            pub fn field<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AlertsSourceSourceableAttributesFieldMappingsAttributesItemField,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field: {e}")
                    });
                self
            }
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
        > for super::AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    field: value.field?,
                    json_path: value.json_path?,
                })
            }
        }
        impl ::std::convert::From<
            super::AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
        > for AlertsSourceSourceableAttributesFieldMappingsAttributesItem {
            fn from(
                value: super::AlertsSourceSourceableAttributesFieldMappingsAttributesItem,
            ) -> Self {
                Self {
                    field: Ok(value.field),
                    json_path: Ok(value.json_path),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKey {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expires_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            grace_period_ends_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<super::ApiKeyKind, ::std::string::String>,
            last_used_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            on_call_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKey {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    expires_at: Ok(Default::default()),
                    grace_period_ends_at: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    last_used_at: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    on_call_role_id: Ok(Default::default()),
                    role_id: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl ApiKey {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expires_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.expires_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expires_at: {e}")
                    });
                self
            }
            pub fn grace_period_ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.grace_period_ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for grace_period_ends_at: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn last_used_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_used_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last_used_at: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn on_call_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_role_id: {e}"
                        )
                    });
                self
            }
            pub fn role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for role_id: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKey> for super::ApiKey {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKey,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    expires_at: value.expires_at?,
                    grace_period_ends_at: value.grace_period_ends_at?,
                    kind: value.kind?,
                    last_used_at: value.last_used_at?,
                    name: value.name?,
                    on_call_role_id: value.on_call_role_id?,
                    role_id: value.role_id?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKey> for ApiKey {
            fn from(value: super::ApiKey) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    expires_at: Ok(value.expires_at),
                    grace_period_ends_at: Ok(value.grace_period_ends_at),
                    kind: Ok(value.kind),
                    last_used_at: Ok(value.last_used_at),
                    name: Ok(value.name),
                    on_call_role_id: Ok(value.on_call_role_id),
                    role_id: Ok(value.role_id),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ApiKeyListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for ApiKeyList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl ApiKeyList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::ApiKeyListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyList> for super::ApiKeyList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyList> for ApiKeyList {
            fn from(value: super::ApiKeyList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyListDataItem {
            attributes: ::std::result::Result<super::ApiKey, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ApiKeyListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKeyListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ApiKeyListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKey>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyListDataItem> for super::ApiKeyListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyListDataItem> for ApiKeyListDataItem {
            fn from(value: super::ApiKeyListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyResponse {
            data: ::std::result::Result<
                super::ApiKeyResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKeyResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ApiKeyResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyResponse> for super::ApiKeyResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyResponse> for ApiKeyResponse {
            fn from(value: super::ApiKeyResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyResponseData {
            attributes: ::std::result::Result<super::ApiKey, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ApiKeyResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKeyResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ApiKeyResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKey>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyResponseData> for super::ApiKeyResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyResponseData> for ApiKeyResponseData {
            fn from(value: super::ApiKeyResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyWithTokenResponse {
            data: ::std::result::Result<
                super::ApiKeyWithTokenResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKeyWithTokenResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ApiKeyWithTokenResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyWithTokenResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyWithTokenResponse>
        for super::ApiKeyWithTokenResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyWithTokenResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyWithTokenResponse>
        for ApiKeyWithTokenResponse {
            fn from(value: super::ApiKeyWithTokenResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyWithTokenResponseData {
            attributes: ::std::result::Result<
                super::ApiKeyWithTokenResponseDataAttributes,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ApiKeyWithTokenResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKeyWithTokenResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ApiKeyWithTokenResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyWithTokenResponseDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ApiKeyWithTokenResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyWithTokenResponseData>
        for super::ApiKeyWithTokenResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyWithTokenResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyWithTokenResponseData>
        for ApiKeyWithTokenResponseData {
            fn from(value: super::ApiKeyWithTokenResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ApiKeyWithTokenResponseDataAttributes {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expires_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            grace_period_ends_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::ApiKeyWithTokenResponseDataAttributesKind,
                ::std::string::String,
            >,
            last_used_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            on_call_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            token: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ApiKeyWithTokenResponseDataAttributes {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    expires_at: Ok(Default::default()),
                    grace_period_ends_at: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    last_used_at: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    on_call_role_id: Ok(Default::default()),
                    role_id: Ok(Default::default()),
                    token: Err("no value supplied for token".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl ApiKeyWithTokenResponseDataAttributes {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expires_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.expires_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expires_at: {e}")
                    });
                self
            }
            pub fn grace_period_ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.grace_period_ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for grace_period_ends_at: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ApiKeyWithTokenResponseDataAttributesKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn last_used_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_used_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last_used_at: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn on_call_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_role_id: {e}"
                        )
                    });
                self
            }
            pub fn role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for role_id: {e}")
                    });
                self
            }
            pub fn token<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.token = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for token: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ApiKeyWithTokenResponseDataAttributes>
        for super::ApiKeyWithTokenResponseDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ApiKeyWithTokenResponseDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    expires_at: value.expires_at?,
                    grace_period_ends_at: value.grace_period_ends_at?,
                    kind: value.kind?,
                    last_used_at: value.last_used_at?,
                    name: value.name?,
                    on_call_role_id: value.on_call_role_id?,
                    role_id: value.role_id?,
                    token: value.token?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::ApiKeyWithTokenResponseDataAttributes>
        for ApiKeyWithTokenResponseDataAttributes {
            fn from(value: super::ApiKeyWithTokenResponseDataAttributes) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    expires_at: Ok(value.expires_at),
                    grace_period_ends_at: Ok(value.grace_period_ends_at),
                    kind: Ok(value.kind),
                    last_used_at: Ok(value.last_used_at),
                    name: Ok(value.name),
                    on_call_role_id: Ok(value.on_call_role_id),
                    role_id: Ok(value.role_id),
                    token: Ok(value.token),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveGoogleChatSpacesTaskParams {
            spaces: ::std::result::Result<
                ::std::vec::Vec<super::ArchiveGoogleChatSpacesTaskParamsSpacesItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::ArchiveGoogleChatSpacesTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ArchiveGoogleChatSpacesTaskParams {
            fn default() -> Self {
                Self {
                    spaces: Err("no value supplied for spaces".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl ArchiveGoogleChatSpacesTaskParams {
            pub fn spaces<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ArchiveGoogleChatSpacesTaskParamsSpacesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.spaces = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for spaces: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ArchiveGoogleChatSpacesTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveGoogleChatSpacesTaskParams>
        for super::ArchiveGoogleChatSpacesTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveGoogleChatSpacesTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    spaces: value.spaces?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::ArchiveGoogleChatSpacesTaskParams>
        for ArchiveGoogleChatSpacesTaskParams {
            fn from(value: super::ArchiveGoogleChatSpacesTaskParams) -> Self {
                Self {
                    spaces: Ok(value.spaces),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveGoogleChatSpacesTaskParamsSpacesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ArchiveGoogleChatSpacesTaskParamsSpacesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ArchiveGoogleChatSpacesTaskParamsSpacesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveGoogleChatSpacesTaskParamsSpacesItem>
        for super::ArchiveGoogleChatSpacesTaskParamsSpacesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveGoogleChatSpacesTaskParamsSpacesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ArchiveGoogleChatSpacesTaskParamsSpacesItem>
        for ArchiveGoogleChatSpacesTaskParamsSpacesItem {
            fn from(value: super::ArchiveGoogleChatSpacesTaskParamsSpacesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveMicrosoftTeamsChannelsTaskParams {
            channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::ArchiveMicrosoftTeamsChannelsTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                super::ArchiveMicrosoftTeamsChannelsTaskParamsTeam,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ArchiveMicrosoftTeamsChannelsTaskParams {
            fn default() -> Self {
                Self {
                    channels: Err("no value supplied for channels".to_string()),
                    task_type: Ok(Default::default()),
                    team: Err("no value supplied for team".to_string()),
                }
            }
        }
        impl ArchiveMicrosoftTeamsChannelsTaskParams {
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ArchiveMicrosoftTeamsChannelsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ArchiveMicrosoftTeamsChannelsTaskParamsTeam,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveMicrosoftTeamsChannelsTaskParams>
        for super::ArchiveMicrosoftTeamsChannelsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveMicrosoftTeamsChannelsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channels: value.channels?,
                    task_type: value.task_type?,
                    team: value.team?,
                })
            }
        }
        impl ::std::convert::From<super::ArchiveMicrosoftTeamsChannelsTaskParams>
        for ArchiveMicrosoftTeamsChannelsTaskParams {
            fn from(value: super::ArchiveMicrosoftTeamsChannelsTaskParams) -> Self {
                Self {
                    channels: Ok(value.channels),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem>
        for super::ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem,
        > for ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem {
            fn from(
                value: super::ArchiveMicrosoftTeamsChannelsTaskParamsChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveMicrosoftTeamsChannelsTaskParamsTeam>
        for super::ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveMicrosoftTeamsChannelsTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ArchiveMicrosoftTeamsChannelsTaskParamsTeam>
        for ArchiveMicrosoftTeamsChannelsTaskParamsTeam {
            fn from(value: super::ArchiveMicrosoftTeamsChannelsTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveSlackChannelsTaskParams {
            channels: ::std::result::Result<
                ::std::vec::Vec<super::ArchiveSlackChannelsTaskParamsChannelsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::ArchiveSlackChannelsTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ArchiveSlackChannelsTaskParams {
            fn default() -> Self {
                Self {
                    channels: Err("no value supplied for channels".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl ArchiveSlackChannelsTaskParams {
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ArchiveSlackChannelsTaskParamsChannelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ArchiveSlackChannelsTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveSlackChannelsTaskParams>
        for super::ArchiveSlackChannelsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveSlackChannelsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channels: value.channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::ArchiveSlackChannelsTaskParams>
        for ArchiveSlackChannelsTaskParams {
            fn from(value: super::ArchiveSlackChannelsTaskParams) -> Self {
                Self {
                    channels: Ok(value.channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ArchiveSlackChannelsTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ArchiveSlackChannelsTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ArchiveSlackChannelsTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ArchiveSlackChannelsTaskParamsChannelsItem>
        for super::ArchiveSlackChannelsTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ArchiveSlackChannelsTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ArchiveSlackChannelsTaskParamsChannelsItem>
        for ArchiveSlackChannelsTaskParamsChannelsItem {
            fn from(value: super::ArchiveSlackChannelsTaskParamsChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AssignRoleToUser {
            data: ::std::result::Result<
                super::AssignRoleToUserData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AssignRoleToUser {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl AssignRoleToUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AssignRoleToUserData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AssignRoleToUser> for super::AssignRoleToUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AssignRoleToUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::AssignRoleToUser> for AssignRoleToUser {
            fn from(value: super::AssignRoleToUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AssignRoleToUserData {
            attributes: ::std::result::Result<
                super::AssignRoleToUserDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::AssignRoleToUserDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AssignRoleToUserData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AssignRoleToUserData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AssignRoleToUserDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AssignRoleToUserDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AssignRoleToUserData>
        for super::AssignRoleToUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AssignRoleToUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AssignRoleToUserData> for AssignRoleToUserData {
            fn from(value: super::AssignRoleToUserData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AssignRoleToUserDataAttributes {
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AssignRoleToUserDataAttributes {
            fn default() -> Self {
                Self {
                    incident_role_id: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl AssignRoleToUserDataAttributes {
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AssignRoleToUserDataAttributes>
        for super::AssignRoleToUserDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AssignRoleToUserDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_role_id: value.incident_role_id?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::AssignRoleToUserDataAttributes>
        for AssignRoleToUserDataAttributes {
            fn from(value: super::AssignRoleToUserDataAttributes) -> Self {
                Self {
                    incident_role_id: Ok(value.incident_role_id),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AttachAlert {
            data: ::std::result::Result<super::AttachAlertData, ::std::string::String>,
        }
        impl ::std::default::Default for AttachAlert {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl AttachAlert {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AttachAlertData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AttachAlert> for super::AttachAlert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AttachAlert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::AttachAlert> for AttachAlert {
            fn from(value: super::AttachAlert) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AttachAlertData {
            attributes: ::std::result::Result<
                super::AttachAlertDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::AttachAlertDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AttachAlertData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AttachAlertData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AttachAlertDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AttachAlertDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AttachAlertData> for super::AttachAlertData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AttachAlertData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AttachAlertData> for AttachAlertData {
            fn from(value: super::AttachAlertData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AttachAlertDataAttributes {
            alert_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AttachAlertDataAttributes {
            fn default() -> Self {
                Self {
                    alert_ids: Err("no value supplied for alert_ids".to_string()),
                }
            }
        }
        impl AttachAlertDataAttributes {
            pub fn alert_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AttachAlertDataAttributes>
        for super::AttachAlertDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AttachAlertDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_ids: value.alert_ids?,
                })
            }
        }
        impl ::std::convert::From<super::AttachAlertDataAttributes>
        for AttachAlertDataAttributes {
            fn from(value: super::AttachAlertDataAttributes) -> Self {
                Self {
                    alert_ids: Ok(value.alert_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AttachDatadogDashboardsTaskParams {
            dashboards: ::std::result::Result<
                ::std::vec::Vec<super::AttachDatadogDashboardsTaskParamsDashboardsItem>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AttachDatadogDashboardsTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AttachDatadogDashboardsTaskParams {
            fn default() -> Self {
                Self {
                    dashboards: Err("no value supplied for dashboards".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl AttachDatadogDashboardsTaskParams {
            pub fn dashboards<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AttachDatadogDashboardsTaskParamsDashboardsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dashboards = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for dashboards: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AttachDatadogDashboardsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AttachDatadogDashboardsTaskParams>
        for super::AttachDatadogDashboardsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AttachDatadogDashboardsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    dashboards: value.dashboards?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::AttachDatadogDashboardsTaskParams>
        for AttachDatadogDashboardsTaskParams {
            fn from(value: super::AttachDatadogDashboardsTaskParams) -> Self {
                Self {
                    dashboards: Ok(value.dashboards),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AttachDatadogDashboardsTaskParamsDashboardsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AttachDatadogDashboardsTaskParamsDashboardsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AttachDatadogDashboardsTaskParamsDashboardsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AttachDatadogDashboardsTaskParamsDashboardsItem>
        for super::AttachDatadogDashboardsTaskParamsDashboardsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AttachDatadogDashboardsTaskParamsDashboardsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AttachDatadogDashboardsTaskParamsDashboardsItem>
        for AttachDatadogDashboardsTaskParamsDashboardsItem {
            fn from(
                value: super::AttachDatadogDashboardsTaskParamsDashboardsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
        > for super::AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
        > for AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::AttachDatadogDashboardsTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Audit {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            event: ::std::result::Result<::std::string::String, ::std::string::String>,
            id: ::std::result::Result<::std::option::Option<i64>, ::std::string::String>,
            ip_address: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            item_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            item_type: ::std::result::Result<
                ::std::option::Option<super::AuditItemType>,
                ::std::string::String,
            >,
            item_type_display: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            object: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            object_changes: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            request_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            session_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_agent: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Audit {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    event: Err("no value supplied for event".to_string()),
                    id: Ok(Default::default()),
                    ip_address: Ok(Default::default()),
                    item_id: Ok(Default::default()),
                    item_type: Ok(Default::default()),
                    item_type_display: Ok(Default::default()),
                    object: Ok(Default::default()),
                    object_changes: Ok(Default::default()),
                    request_id: Ok(Default::default()),
                    session_id: Ok(Default::default()),
                    user_agent: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl Audit {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn ip_address<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ip_address = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ip_address: {e}")
                    });
                self
            }
            pub fn item_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.item_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for item_id: {e}")
                    });
                self
            }
            pub fn item_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::AuditItemType>>,
                T::Error: ::std::fmt::Display,
            {
                self.item_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for item_type: {e}")
                    });
                self
            }
            pub fn item_type_display<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.item_type_display = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for item_type_display: {e}"
                        )
                    });
                self
            }
            pub fn object<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.object = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for object: {e}")
                    });
                self
            }
            pub fn object_changes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.object_changes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for object_changes: {e}"
                        )
                    });
                self
            }
            pub fn request_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.request_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for request_id: {e}")
                    });
                self
            }
            pub fn session_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.session_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for session_id: {e}")
                    });
                self
            }
            pub fn user_agent<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_agent = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_agent: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Audit> for super::Audit {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Audit,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    event: value.event?,
                    id: value.id?,
                    ip_address: value.ip_address?,
                    item_id: value.item_id?,
                    item_type: value.item_type?,
                    item_type_display: value.item_type_display?,
                    object: value.object?,
                    object_changes: value.object_changes?,
                    request_id: value.request_id?,
                    session_id: value.session_id?,
                    user_agent: value.user_agent?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::Audit> for Audit {
            fn from(value: super::Audit) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    event: Ok(value.event),
                    id: Ok(value.id),
                    ip_address: Ok(value.ip_address),
                    item_id: Ok(value.item_id),
                    item_type: Ok(value.item_type),
                    item_type_display: Ok(value.item_type_display),
                    object: Ok(value.object),
                    object_changes: Ok(value.object_changes),
                    request_id: Ok(value.request_id),
                    session_id: Ok(value.session_id),
                    user_agent: Ok(value.user_agent),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AuditsList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AuditsListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AuditsList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AuditsList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::AuditsListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AuditsList> for super::AuditsList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AuditsList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AuditsList> for AuditsList {
            fn from(value: super::AuditsList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AuditsListDataItem {
            attributes: ::std::result::Result<super::Audit, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AuditsListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AuditsListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AuditsListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Audit>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AuditsListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AuditsListDataItem> for super::AuditsListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AuditsListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AuditsListDataItem> for AuditsListDataItem {
            fn from(value: super::AuditsListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Authorization {
            authorizable_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            authorizable_type: ::std::result::Result<
                super::AuthorizationAuthorizableType,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            grantee_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            grantee_type: ::std::result::Result<
                super::AuthorizationGranteeType,
                ::std::string::String,
            >,
            permissions: ::std::result::Result<
                ::std::vec::Vec<super::AuthorizationPermissionsItem>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Authorization {
            fn default() -> Self {
                Self {
                    authorizable_id: Err(
                        "no value supplied for authorizable_id".to_string(),
                    ),
                    authorizable_type: Err(
                        "no value supplied for authorizable_type".to_string(),
                    ),
                    created_at: Err("no value supplied for created_at".to_string()),
                    grantee_id: Err("no value supplied for grantee_id".to_string()),
                    grantee_type: Err("no value supplied for grantee_type".to_string()),
                    permissions: Err("no value supplied for permissions".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Authorization {
            pub fn authorizable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.authorizable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authorizable_id: {e}"
                        )
                    });
                self
            }
            pub fn authorizable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AuthorizationAuthorizableType>,
                T::Error: ::std::fmt::Display,
            {
                self.authorizable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authorizable_type: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn grantee_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.grantee_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for grantee_id: {e}")
                    });
                self
            }
            pub fn grantee_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AuthorizationGranteeType>,
                T::Error: ::std::fmt::Display,
            {
                self.grantee_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for grantee_type: {e}")
                    });
                self
            }
            pub fn permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AuthorizationPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for permissions: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Authorization> for super::Authorization {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Authorization,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    authorizable_id: value.authorizable_id?,
                    authorizable_type: value.authorizable_type?,
                    created_at: value.created_at?,
                    grantee_id: value.grantee_id?,
                    grantee_type: value.grantee_type?,
                    permissions: value.permissions?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Authorization> for Authorization {
            fn from(value: super::Authorization) -> Self {
                Self {
                    authorizable_id: Ok(value.authorizable_id),
                    authorizable_type: Ok(value.authorizable_type),
                    created_at: Ok(value.created_at),
                    grantee_id: Ok(value.grantee_id),
                    grantee_type: Ok(value.grantee_type),
                    permissions: Ok(value.permissions),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AuthorizationList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::AuthorizationListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for AuthorizationList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl AuthorizationList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::AuthorizationListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AuthorizationList> for super::AuthorizationList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AuthorizationList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::AuthorizationList> for AuthorizationList {
            fn from(value: super::AuthorizationList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AuthorizationListDataItem {
            attributes: ::std::result::Result<
                super::Authorization,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AuthorizationListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AuthorizationListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AuthorizationListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Authorization>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AuthorizationListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AuthorizationListDataItem>
        for super::AuthorizationListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AuthorizationListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AuthorizationListDataItem>
        for AuthorizationListDataItem {
            fn from(value: super::AuthorizationListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AuthorizationResponse {
            data: ::std::result::Result<
                super::AuthorizationResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AuthorizationResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl AuthorizationResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AuthorizationResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AuthorizationResponse>
        for super::AuthorizationResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AuthorizationResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::AuthorizationResponse>
        for AuthorizationResponse {
            fn from(value: super::AuthorizationResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AuthorizationResponseData {
            attributes: ::std::result::Result<
                super::Authorization,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::AuthorizationResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AuthorizationResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl AuthorizationResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Authorization>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AuthorizationResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AuthorizationResponseData>
        for super::AuthorizationResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AuthorizationResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::AuthorizationResponseData>
        for AuthorizationResponseData {
            fn from(value: super::AuthorizationResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleOpsgenieTaskParams {
            incident_role_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            schedule: ::std::result::Result<
                super::AutoAssignRoleOpsgenieTaskParamsSchedule,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleOpsgenieTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleOpsgenieTaskParams {
            fn default() -> Self {
                Self {
                    incident_role_id: Err(
                        "no value supplied for incident_role_id".to_string(),
                    ),
                    schedule: Err("no value supplied for schedule".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleOpsgenieTaskParams {
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn schedule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::AutoAssignRoleOpsgenieTaskParamsSchedule,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleOpsgenieTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleOpsgenieTaskParams>
        for super::AutoAssignRoleOpsgenieTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleOpsgenieTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_role_id: value.incident_role_id?,
                    schedule: value.schedule?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleOpsgenieTaskParams>
        for AutoAssignRoleOpsgenieTaskParams {
            fn from(value: super::AutoAssignRoleOpsgenieTaskParams) -> Self {
                Self {
                    incident_role_id: Ok(value.incident_role_id),
                    schedule: Ok(value.schedule),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleOpsgenieTaskParamsSchedule {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleOpsgenieTaskParamsSchedule {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleOpsgenieTaskParamsSchedule {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleOpsgenieTaskParamsSchedule>
        for super::AutoAssignRoleOpsgenieTaskParamsSchedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleOpsgenieTaskParamsSchedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleOpsgenieTaskParamsSchedule>
        for AutoAssignRoleOpsgenieTaskParamsSchedule {
            fn from(value: super::AutoAssignRoleOpsgenieTaskParamsSchedule) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy,
        > for super::AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy,
        > for AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy {
            fn from(
                value: super::AutoAssignRolePagerdutyTaskParamsVariant0EscalationPolicy,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRolePagerdutyTaskParamsVariant0Schedule>
        for super::AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRolePagerdutyTaskParamsVariant0Schedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRolePagerdutyTaskParamsVariant0Schedule,
        > for AutoAssignRolePagerdutyTaskParamsVariant0Schedule {
            fn from(
                value: super::AutoAssignRolePagerdutyTaskParamsVariant0Schedule,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRolePagerdutyTaskParamsVariant0Service {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRolePagerdutyTaskParamsVariant0Service {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRolePagerdutyTaskParamsVariant0Service {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRolePagerdutyTaskParamsVariant0Service>
        for super::AutoAssignRolePagerdutyTaskParamsVariant0Service {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRolePagerdutyTaskParamsVariant0Service,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRolePagerdutyTaskParamsVariant0Service,
        > for AutoAssignRolePagerdutyTaskParamsVariant0Service {
            fn from(
                value: super::AutoAssignRolePagerdutyTaskParamsVariant0Service,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy,
        > for super::AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy,
        > for AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy {
            fn from(
                value: super::AutoAssignRolePagerdutyTaskParamsVariant1EscalationPolicy,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRolePagerdutyTaskParamsVariant1Schedule>
        for super::AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRolePagerdutyTaskParamsVariant1Schedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRolePagerdutyTaskParamsVariant1Schedule,
        > for AutoAssignRolePagerdutyTaskParamsVariant1Schedule {
            fn from(
                value: super::AutoAssignRolePagerdutyTaskParamsVariant1Schedule,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRolePagerdutyTaskParamsVariant1Service {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRolePagerdutyTaskParamsVariant1Service {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRolePagerdutyTaskParamsVariant1Service {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRolePagerdutyTaskParamsVariant1Service>
        for super::AutoAssignRolePagerdutyTaskParamsVariant1Service {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRolePagerdutyTaskParamsVariant1Service,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRolePagerdutyTaskParamsVariant1Service,
        > for AutoAssignRolePagerdutyTaskParamsVariant1Service {
            fn from(
                value: super::AutoAssignRolePagerdutyTaskParamsVariant1Service,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleRootlyTaskParams {
            escalation_policy_target: ::std::result::Result<
                ::std::option::Option<
                    super::AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
                >,
                ::std::string::String,
            >,
            group_target: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleRootlyTaskParamsGroupTarget>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            schedule_target: ::std::result::Result<
                ::std::option::Option<
                    super::AutoAssignRoleRootlyTaskParamsScheduleTarget,
                >,
                ::std::string::String,
            >,
            service_target: ::std::result::Result<
                ::std::option::Option<
                    super::AutoAssignRoleRootlyTaskParamsServiceTarget,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleRootlyTaskParamsTaskType>,
                ::std::string::String,
            >,
            user_target: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleRootlyTaskParamsUserTarget>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleRootlyTaskParams {
            fn default() -> Self {
                Self {
                    escalation_policy_target: Ok(Default::default()),
                    group_target: Ok(Default::default()),
                    incident_role_id: Err(
                        "no value supplied for incident_role_id".to_string(),
                    ),
                    schedule_target: Ok(Default::default()),
                    service_target: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    user_target: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleRootlyTaskParams {
            pub fn escalation_policy_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_target: {e}"
                        )
                    });
                self
            }
            pub fn group_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleRootlyTaskParamsGroupTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_target = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_target: {e}")
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn schedule_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleRootlyTaskParamsScheduleTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_target: {e}"
                        )
                    });
                self
            }
            pub fn service_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleRootlyTaskParamsServiceTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_target: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AutoAssignRoleRootlyTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn user_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleRootlyTaskParamsUserTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user_target = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_target: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleRootlyTaskParams>
        for super::AutoAssignRoleRootlyTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleRootlyTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    escalation_policy_target: value.escalation_policy_target?,
                    group_target: value.group_target?,
                    incident_role_id: value.incident_role_id?,
                    schedule_target: value.schedule_target?,
                    service_target: value.service_target?,
                    task_type: value.task_type?,
                    user_target: value.user_target?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleRootlyTaskParams>
        for AutoAssignRoleRootlyTaskParams {
            fn from(value: super::AutoAssignRoleRootlyTaskParams) -> Self {
                Self {
                    escalation_policy_target: Ok(value.escalation_policy_target),
                    group_target: Ok(value.group_target),
                    incident_role_id: Ok(value.incident_role_id),
                    schedule_target: Ok(value.schedule_target),
                    service_target: Ok(value.service_target),
                    task_type: Ok(value.task_type),
                    user_target: Ok(value.user_target),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
        > for super::AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
        > for AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget {
            fn from(
                value: super::AutoAssignRoleRootlyTaskParamsEscalationPolicyTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleRootlyTaskParamsGroupTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsGroupTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleRootlyTaskParamsGroupTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleRootlyTaskParamsGroupTarget>
        for super::AutoAssignRoleRootlyTaskParamsGroupTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleRootlyTaskParamsGroupTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleRootlyTaskParamsGroupTarget>
        for AutoAssignRoleRootlyTaskParamsGroupTarget {
            fn from(value: super::AutoAssignRoleRootlyTaskParamsGroupTarget) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleRootlyTaskParamsScheduleTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsScheduleTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleRootlyTaskParamsScheduleTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleRootlyTaskParamsScheduleTarget>
        for super::AutoAssignRoleRootlyTaskParamsScheduleTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleRootlyTaskParamsScheduleTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleRootlyTaskParamsScheduleTarget>
        for AutoAssignRoleRootlyTaskParamsScheduleTarget {
            fn from(value: super::AutoAssignRoleRootlyTaskParamsScheduleTarget) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleRootlyTaskParamsServiceTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsServiceTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleRootlyTaskParamsServiceTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleRootlyTaskParamsServiceTarget>
        for super::AutoAssignRoleRootlyTaskParamsServiceTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleRootlyTaskParamsServiceTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleRootlyTaskParamsServiceTarget>
        for AutoAssignRoleRootlyTaskParamsServiceTarget {
            fn from(value: super::AutoAssignRoleRootlyTaskParamsServiceTarget) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleRootlyTaskParamsUserTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleRootlyTaskParamsUserTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleRootlyTaskParamsUserTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleRootlyTaskParamsUserTarget>
        for super::AutoAssignRoleRootlyTaskParamsUserTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleRootlyTaskParamsUserTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleRootlyTaskParamsUserTarget>
        for AutoAssignRoleRootlyTaskParamsUserTarget {
            fn from(value: super::AutoAssignRoleRootlyTaskParamsUserTarget) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleVictorOpsTaskParams {
            incident_role_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleVictorOpsTaskParamsTaskType>,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                super::AutoAssignRoleVictorOpsTaskParamsTeam,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleVictorOpsTaskParams {
            fn default() -> Self {
                Self {
                    incident_role_id: Err(
                        "no value supplied for incident_role_id".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                    team: Err("no value supplied for team".to_string()),
                }
            }
        }
        impl AutoAssignRoleVictorOpsTaskParams {
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::AutoAssignRoleVictorOpsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::AutoAssignRoleVictorOpsTaskParamsTeam>,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleVictorOpsTaskParams>
        for super::AutoAssignRoleVictorOpsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleVictorOpsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_role_id: value.incident_role_id?,
                    task_type: value.task_type?,
                    team: value.team?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleVictorOpsTaskParams>
        for AutoAssignRoleVictorOpsTaskParams {
            fn from(value: super::AutoAssignRoleVictorOpsTaskParams) -> Self {
                Self {
                    incident_role_id: Ok(value.incident_role_id),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct AutoAssignRoleVictorOpsTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for AutoAssignRoleVictorOpsTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl AutoAssignRoleVictorOpsTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<AutoAssignRoleVictorOpsTaskParamsTeam>
        for super::AutoAssignRoleVictorOpsTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: AutoAssignRoleVictorOpsTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::AutoAssignRoleVictorOpsTaskParamsTeam>
        for AutoAssignRoleVictorOpsTaskParamsTeam {
            fn from(value: super::AutoAssignRoleVictorOpsTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CallPeopleTaskParams {
            content: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            phone_numbers: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CallPeopleTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CallPeopleTaskParams {
            fn default() -> Self {
                Self {
                    content: Err("no value supplied for content".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    phone_numbers: Err(
                        "no value supplied for phone_numbers".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CallPeopleTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn phone_numbers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_numbers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_numbers: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CallPeopleTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CallPeopleTaskParams>
        for super::CallPeopleTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CallPeopleTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    name: value.name?,
                    phone_numbers: value.phone_numbers?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CallPeopleTaskParams> for CallPeopleTaskParams {
            fn from(value: super::CallPeopleTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    name: Ok(value.name),
                    phone_numbers: Ok(value.phone_numbers),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CancelIncident {
            data: ::std::result::Result<
                super::CancelIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CancelIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl CancelIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CancelIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CancelIncident> for super::CancelIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CancelIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::CancelIncident> for CancelIncident {
            fn from(value: super::CancelIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CancelIncidentData {
            attributes: ::std::result::Result<
                super::CancelIncidentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::CancelIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CancelIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CancelIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CancelIncidentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CancelIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CancelIncidentData> for super::CancelIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CancelIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CancelIncidentData> for CancelIncidentData {
            fn from(value: super::CancelIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CancelIncidentDataAttributes {
            cancellation_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CancelIncidentDataAttributes {
            fn default() -> Self {
                Self {
                    cancellation_message: Ok(Default::default()),
                }
            }
        }
        impl CancelIncidentDataAttributes {
            pub fn cancellation_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cancellation_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for cancellation_message: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CancelIncidentDataAttributes>
        for super::CancelIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CancelIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cancellation_message: value.cancellation_message?,
                })
            }
        }
        impl ::std::convert::From<super::CancelIncidentDataAttributes>
        for CancelIncidentDataAttributes {
            fn from(value: super::CancelIncidentDataAttributes) -> Self {
                Self {
                    cancellation_message: Ok(value.cancellation_message),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Catalog {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<super::CatalogIcon, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Catalog {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    icon: Err("no value supplied for icon".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Catalog {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogIcon>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Catalog> for super::Catalog {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Catalog,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    icon: value.icon?,
                    name: value.name?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Catalog> for Catalog {
            fn from(value: super::Catalog) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplate {
            catalog_type: ::std::result::Result<
                super::CatalogChecklistTemplateCatalogType,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            fields: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::CatalogChecklistTemplateFieldsItem>,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owners: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::CatalogChecklistTemplateOwnersItem>,
                >,
                ::std::string::String,
            >,
            scope_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            scope_type: ::std::result::Result<
                super::CatalogChecklistTemplateScopeType,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplate {
            fn default() -> Self {
                Self {
                    catalog_type: Err("no value supplied for catalog_type".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    fields: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owners: Ok(Default::default()),
                    scope_id: Err("no value supplied for scope_id".to_string()),
                    scope_type: Err("no value supplied for scope_type".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CatalogChecklistTemplate {
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogChecklistTemplateCatalogType>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::CatalogChecklistTemplateFieldsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.fields = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fields: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owners<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::CatalogChecklistTemplateOwnersItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owners = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owners: {e}")
                    });
                self
            }
            pub fn scope_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.scope_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scope_id: {e}")
                    });
                self
            }
            pub fn scope_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogChecklistTemplateScopeType>,
                T::Error: ::std::fmt::Display,
            {
                self.scope_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scope_type: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplate>
        for super::CatalogChecklistTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_type: value.catalog_type?,
                    created_at: value.created_at?,
                    description: value.description?,
                    fields: value.fields?,
                    name: value.name?,
                    owners: value.owners?,
                    scope_id: value.scope_id?,
                    scope_type: value.scope_type?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplate>
        for CatalogChecklistTemplate {
            fn from(value: super::CatalogChecklistTemplate) -> Self {
                Self {
                    catalog_type: Ok(value.catalog_type),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    fields: Ok(value.fields),
                    name: Ok(value.name),
                    owners: Ok(value.owners),
                    scope_id: Ok(value.scope_id),
                    scope_type: Ok(value.scope_type),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplateFieldsItem {
            catalog_property_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            field_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            field_source: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogChecklistTemplateFieldsItemFieldSource,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplateFieldsItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Ok(Default::default()),
                    field_key: Ok(Default::default()),
                    field_source: Ok(Default::default()),
                }
            }
        }
        impl CatalogChecklistTemplateFieldsItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn field_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.field_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field_key: {e}")
                    });
                self
            }
            pub fn field_source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogChecklistTemplateFieldsItemFieldSource,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field_source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field_source: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplateFieldsItem>
        for super::CatalogChecklistTemplateFieldsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplateFieldsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    field_key: value.field_key?,
                    field_source: value.field_source?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplateFieldsItem>
        for CatalogChecklistTemplateFieldsItem {
            fn from(value: super::CatalogChecklistTemplateFieldsItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    field_key: Ok(value.field_key),
                    field_source: Ok(value.field_source),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplateList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogChecklistTemplateListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplateList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl CatalogChecklistTemplateList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogChecklistTemplateListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplateList>
        for super::CatalogChecklistTemplateList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplateList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplateList>
        for CatalogChecklistTemplateList {
            fn from(value: super::CatalogChecklistTemplateList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplateListDataItem {
            attributes: ::std::result::Result<
                super::CatalogChecklistTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogChecklistTemplateListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplateListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogChecklistTemplateListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogChecklistTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CatalogChecklistTemplateListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplateListDataItem>
        for super::CatalogChecklistTemplateListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplateListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplateListDataItem>
        for CatalogChecklistTemplateListDataItem {
            fn from(value: super::CatalogChecklistTemplateListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplateOwnersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::CatalogChecklistTemplateOwnersItemType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplateOwnersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl CatalogChecklistTemplateOwnersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CatalogChecklistTemplateOwnersItemType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplateOwnersItem>
        for super::CatalogChecklistTemplateOwnersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplateOwnersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplateOwnersItem>
        for CatalogChecklistTemplateOwnersItem {
            fn from(value: super::CatalogChecklistTemplateOwnersItem) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplateResponse {
            data: ::std::result::Result<
                super::CatalogChecklistTemplateResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplateResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogChecklistTemplateResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogChecklistTemplateResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplateResponse>
        for super::CatalogChecklistTemplateResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplateResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplateResponse>
        for CatalogChecklistTemplateResponse {
            fn from(value: super::CatalogChecklistTemplateResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogChecklistTemplateResponseData {
            attributes: ::std::result::Result<
                super::CatalogChecklistTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogChecklistTemplateResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogChecklistTemplateResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogChecklistTemplateResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogChecklistTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CatalogChecklistTemplateResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogChecklistTemplateResponseData>
        for super::CatalogChecklistTemplateResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogChecklistTemplateResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogChecklistTemplateResponseData>
        for CatalogChecklistTemplateResponseData {
            fn from(value: super::CatalogChecklistTemplateResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntity {
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::CatalogEntityPropertiesItem>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntity {
            fn default() -> Self {
                Self {
                    backstage_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    properties: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CatalogEntity {
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogEntityPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntity> for super::CatalogEntity {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntity,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    backstage_id: value.backstage_id?,
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    properties: value.properties?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntity> for CatalogEntity {
            fn from(value: super::CatalogEntity) -> Self {
                Self {
                    backstage_id: Ok(value.backstage_id),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklist {
            auditable_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            auditable_type: ::std::result::Result<
                super::CatalogEntityChecklistAuditableType,
                ::std::string::String,
            >,
            catalog_checklist_template_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            checklist_fields: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::CatalogEntityChecklistChecklistFieldsItem>,
                >,
                ::std::string::String,
            >,
            checklist_owners: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::CatalogEntityChecklistChecklistOwnersItem>,
                >,
                ::std::string::String,
            >,
            completed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completed_by_user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::CatalogEntityChecklistStatus,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklist {
            fn default() -> Self {
                Self {
                    auditable_id: Err("no value supplied for auditable_id".to_string()),
                    auditable_type: Err(
                        "no value supplied for auditable_type".to_string(),
                    ),
                    catalog_checklist_template_id: Err(
                        "no value supplied for catalog_checklist_template_id".to_string(),
                    ),
                    checklist_fields: Ok(Default::default()),
                    checklist_owners: Ok(Default::default()),
                    completed_at: Ok(Default::default()),
                    completed_by_user_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    started_at: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CatalogEntityChecklist {
            pub fn auditable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.auditable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auditable_id: {e}")
                    });
                self
            }
            pub fn auditable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityChecklistAuditableType>,
                T::Error: ::std::fmt::Display,
            {
                self.auditable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auditable_type: {e}"
                        )
                    });
                self
            }
            pub fn catalog_checklist_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_checklist_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_checklist_template_id: {e}"
                        )
                    });
                self
            }
            pub fn checklist_fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::CatalogEntityChecklistChecklistFieldsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.checklist_fields = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for checklist_fields: {e}"
                        )
                    });
                self
            }
            pub fn checklist_owners<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::CatalogEntityChecklistChecklistOwnersItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.checklist_owners = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for checklist_owners: {e}"
                        )
                    });
                self
            }
            pub fn completed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.completed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completed_at: {e}")
                    });
                self
            }
            pub fn completed_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.completed_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completed_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityChecklistStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklist>
        for super::CatalogEntityChecklist {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklist,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auditable_id: value.auditable_id?,
                    auditable_type: value.auditable_type?,
                    catalog_checklist_template_id: value.catalog_checklist_template_id?,
                    checklist_fields: value.checklist_fields?,
                    checklist_owners: value.checklist_owners?,
                    completed_at: value.completed_at?,
                    completed_by_user_id: value.completed_by_user_id?,
                    created_at: value.created_at?,
                    started_at: value.started_at?,
                    status: value.status?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklist>
        for CatalogEntityChecklist {
            fn from(value: super::CatalogEntityChecklist) -> Self {
                Self {
                    auditable_id: Ok(value.auditable_id),
                    auditable_type: Ok(value.auditable_type),
                    catalog_checklist_template_id: Ok(
                        value.catalog_checklist_template_id,
                    ),
                    checklist_fields: Ok(value.checklist_fields),
                    checklist_owners: Ok(value.checklist_owners),
                    completed_at: Ok(value.completed_at),
                    completed_by_user_id: Ok(value.completed_by_user_id),
                    created_at: Ok(value.created_at),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistChecklistFieldsItem {
            data: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogEntityChecklistChecklistFieldsItemData,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistChecklistFieldsItem {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistChecklistFieldsItem {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogEntityChecklistChecklistFieldsItemData,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistChecklistFieldsItem>
        for super::CatalogEntityChecklistChecklistFieldsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistChecklistFieldsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistChecklistFieldsItem>
        for CatalogEntityChecklistChecklistFieldsItem {
            fn from(value: super::CatalogEntityChecklistChecklistFieldsItem) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistChecklistFieldsItemData {
            attributes: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogEntityChecklistChecklistFieldsItemDataAttributes,
                >,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogEntityChecklistChecklistFieldsItemDataType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistChecklistFieldsItemData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistChecklistFieldsItemData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogEntityChecklistChecklistFieldsItemDataAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogEntityChecklistChecklistFieldsItemDataType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistChecklistFieldsItemData>
        for super::CatalogEntityChecklistChecklistFieldsItemData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistChecklistFieldsItemData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistChecklistFieldsItemData>
        for CatalogEntityChecklistChecklistFieldsItemData {
            fn from(
                value: super::CatalogEntityChecklistChecklistFieldsItemData,
            ) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistChecklistFieldsItemDataAttributes {
            catalog_checklist_template_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            catalog_entity_checklist_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            checked: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            completed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completed_by_user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            field_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            value_snapshot: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CatalogEntityChecklistChecklistFieldsItemDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_checklist_template_field_id: Ok(Default::default()),
                    catalog_entity_checklist_id: Ok(Default::default()),
                    checked: Ok(Default::default()),
                    completed_at: Ok(Default::default()),
                    completed_by_user_id: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    field_key: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                    value_snapshot: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistChecklistFieldsItemDataAttributes {
            pub fn catalog_checklist_template_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_checklist_template_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_checklist_template_field_id: {e}"
                        )
                    });
                self
            }
            pub fn catalog_entity_checklist_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_entity_checklist_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_entity_checklist_id: {e}"
                        )
                    });
                self
            }
            pub fn checked<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.checked = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for checked: {e}")
                    });
                self
            }
            pub fn completed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.completed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completed_at: {e}")
                    });
                self
            }
            pub fn completed_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.completed_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completed_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn field_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.field_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field_key: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn value_snapshot<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.value_snapshot = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for value_snapshot: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CatalogEntityChecklistChecklistFieldsItemDataAttributes,
        > for super::CatalogEntityChecklistChecklistFieldsItemDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistChecklistFieldsItemDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_checklist_template_field_id: value
                        .catalog_checklist_template_field_id?,
                    catalog_entity_checklist_id: value.catalog_entity_checklist_id?,
                    checked: value.checked?,
                    completed_at: value.completed_at?,
                    completed_by_user_id: value.completed_by_user_id?,
                    created_at: value.created_at?,
                    field_key: value.field_key?,
                    updated_at: value.updated_at?,
                    value_snapshot: value.value_snapshot?,
                })
            }
        }
        impl ::std::convert::From<
            super::CatalogEntityChecklistChecklistFieldsItemDataAttributes,
        > for CatalogEntityChecklistChecklistFieldsItemDataAttributes {
            fn from(
                value: super::CatalogEntityChecklistChecklistFieldsItemDataAttributes,
            ) -> Self {
                Self {
                    catalog_checklist_template_field_id: Ok(
                        value.catalog_checklist_template_field_id,
                    ),
                    catalog_entity_checklist_id: Ok(value.catalog_entity_checklist_id),
                    checked: Ok(value.checked),
                    completed_at: Ok(value.completed_at),
                    completed_by_user_id: Ok(value.completed_by_user_id),
                    created_at: Ok(value.created_at),
                    field_key: Ok(value.field_key),
                    updated_at: Ok(value.updated_at),
                    value_snapshot: Ok(value.value_snapshot),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistChecklistOwnersItem {
            data: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogEntityChecklistChecklistOwnersItemData,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistChecklistOwnersItem {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistChecklistOwnersItem {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogEntityChecklistChecklistOwnersItemData,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistChecklistOwnersItem>
        for super::CatalogEntityChecklistChecklistOwnersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistChecklistOwnersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistChecklistOwnersItem>
        for CatalogEntityChecklistChecklistOwnersItem {
            fn from(value: super::CatalogEntityChecklistChecklistOwnersItem) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistChecklistOwnersItemData {
            attributes: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogEntityChecklistChecklistOwnersItemDataAttributes,
                >,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::CatalogEntityChecklistChecklistOwnersItemDataType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistChecklistOwnersItemData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistChecklistOwnersItemData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogEntityChecklistChecklistOwnersItemDataAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CatalogEntityChecklistChecklistOwnersItemDataType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistChecklistOwnersItemData>
        for super::CatalogEntityChecklistChecklistOwnersItemData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistChecklistOwnersItemData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistChecklistOwnersItemData>
        for CatalogEntityChecklistChecklistOwnersItemData {
            fn from(
                value: super::CatalogEntityChecklistChecklistOwnersItemData,
            ) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistChecklistOwnersItemDataAttributes {
            catalog_entity_checklist_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CatalogEntityChecklistChecklistOwnersItemDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_entity_checklist_id: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    owner_user_id: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistChecklistOwnersItemDataAttributes {
            pub fn catalog_entity_checklist_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_entity_checklist_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_entity_checklist_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn owner_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner_user_id: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CatalogEntityChecklistChecklistOwnersItemDataAttributes,
        > for super::CatalogEntityChecklistChecklistOwnersItemDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistChecklistOwnersItemDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_entity_checklist_id: value.catalog_entity_checklist_id?,
                    created_at: value.created_at?,
                    owner_user_id: value.owner_user_id?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<
            super::CatalogEntityChecklistChecklistOwnersItemDataAttributes,
        > for CatalogEntityChecklistChecklistOwnersItemDataAttributes {
            fn from(
                value: super::CatalogEntityChecklistChecklistOwnersItemDataAttributes,
            ) -> Self {
                Self {
                    catalog_entity_checklist_id: Ok(value.catalog_entity_checklist_id),
                    created_at: Ok(value.created_at),
                    owner_user_id: Ok(value.owner_user_id),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogEntityChecklistListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogEntityChecklistListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistList>
        for super::CatalogEntityChecklistList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistList>
        for CatalogEntityChecklistList {
            fn from(value: super::CatalogEntityChecklistList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistListDataItem {
            attributes: ::std::result::Result<
                super::CatalogEntityChecklist,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogEntityChecklistListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogEntityChecklistListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityChecklist>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CatalogEntityChecklistListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistListDataItem>
        for super::CatalogEntityChecklistListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistListDataItem>
        for CatalogEntityChecklistListDataItem {
            fn from(value: super::CatalogEntityChecklistListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistResponse {
            data: ::std::result::Result<
                super::CatalogEntityChecklistResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityChecklistResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityChecklistResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistResponse>
        for super::CatalogEntityChecklistResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistResponse>
        for CatalogEntityChecklistResponse {
            fn from(value: super::CatalogEntityChecklistResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityChecklistResponseData {
            attributes: ::std::result::Result<
                super::CatalogEntityChecklist,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogEntityChecklistResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityChecklistResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogEntityChecklistResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityChecklist>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CatalogEntityChecklistResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityChecklistResponseData>
        for super::CatalogEntityChecklistResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityChecklistResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityChecklistResponseData>
        for CatalogEntityChecklistResponseData {
            fn from(value: super::CatalogEntityChecklistResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogEntityListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogEntityList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CatalogEntityList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogEntityListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityList> for super::CatalogEntityList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityList> for CatalogEntityList {
            fn from(value: super::CatalogEntityList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityListDataItem {
            attributes: ::std::result::Result<
                super::CatalogEntity,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogEntityListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogEntityListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntity>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityListDataItem>
        for super::CatalogEntityListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityListDataItem>
        for CatalogEntityListDataItem {
            fn from(value: super::CatalogEntityListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogEntityPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl CatalogEntityPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityPropertiesItem>
        for super::CatalogEntityPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityPropertiesItem>
        for CatalogEntityPropertiesItem {
            fn from(value: super::CatalogEntityPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityProperty {
            catalog_entity_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            catalog_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                super::CatalogEntityPropertyKey,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogEntityProperty {
            fn default() -> Self {
                Self {
                    catalog_entity_id: Err(
                        "no value supplied for catalog_entity_id".to_string(),
                    ),
                    catalog_field_id: Err(
                        "no value supplied for catalog_field_id".to_string(),
                    ),
                    created_at: Err("no value supplied for created_at".to_string()),
                    key: Err("no value supplied for key".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl CatalogEntityProperty {
            pub fn catalog_entity_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_entity_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_entity_id: {e}"
                        )
                    });
                self
            }
            pub fn catalog_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_field_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityPropertyKey>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityProperty>
        for super::CatalogEntityProperty {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityProperty,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_entity_id: value.catalog_entity_id?,
                    catalog_field_id: value.catalog_field_id?,
                    created_at: value.created_at?,
                    key: value.key?,
                    updated_at: value.updated_at?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityProperty>
        for CatalogEntityProperty {
            fn from(value: super::CatalogEntityProperty) -> Self {
                Self {
                    catalog_entity_id: Ok(value.catalog_entity_id),
                    catalog_field_id: Ok(value.catalog_field_id),
                    created_at: Ok(value.created_at),
                    key: Ok(value.key),
                    updated_at: Ok(value.updated_at),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityPropertyList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogEntityPropertyListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogEntityPropertyList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CatalogEntityPropertyList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogEntityPropertyListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityPropertyList>
        for super::CatalogEntityPropertyList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityPropertyList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityPropertyList>
        for CatalogEntityPropertyList {
            fn from(value: super::CatalogEntityPropertyList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityPropertyListDataItem {
            attributes: ::std::result::Result<
                super::CatalogEntityProperty,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogEntityPropertyListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityPropertyListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogEntityPropertyListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityProperty>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityPropertyListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityPropertyListDataItem>
        for super::CatalogEntityPropertyListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityPropertyListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityPropertyListDataItem>
        for CatalogEntityPropertyListDataItem {
            fn from(value: super::CatalogEntityPropertyListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityPropertyResponse {
            data: ::std::result::Result<
                super::CatalogEntityPropertyResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityPropertyResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityPropertyResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityPropertyResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityPropertyResponse>
        for super::CatalogEntityPropertyResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityPropertyResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityPropertyResponse>
        for CatalogEntityPropertyResponse {
            fn from(value: super::CatalogEntityPropertyResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityPropertyResponseData {
            attributes: ::std::result::Result<
                super::CatalogEntityProperty,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogEntityPropertyResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityPropertyResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogEntityPropertyResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityProperty>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityPropertyResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityPropertyResponseData>
        for super::CatalogEntityPropertyResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityPropertyResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityPropertyResponseData>
        for CatalogEntityPropertyResponseData {
            fn from(value: super::CatalogEntityPropertyResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityResponse {
            data: ::std::result::Result<
                super::CatalogEntityResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogEntityResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityResponse>
        for super::CatalogEntityResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityResponse>
        for CatalogEntityResponse {
            fn from(value: super::CatalogEntityResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogEntityResponseData {
            attributes: ::std::result::Result<
                super::CatalogEntity,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogEntityResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogEntityResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogEntityResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntity>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogEntityResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogEntityResponseData>
        for super::CatalogEntityResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogEntityResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogEntityResponseData>
        for CatalogEntityResponseData {
            fn from(value: super::CatalogEntityResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogField {
            catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            catalog_type: ::std::result::Result<
                ::std::option::Option<super::CatalogFieldCatalogType>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<super::CatalogFieldKind, ::std::string::String>,
            kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            multiple: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogField {
            fn default() -> Self {
                Self {
                    catalog_id: Err("no value supplied for catalog_id".to_string()),
                    catalog_type: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    kind: Err("no value supplied for kind".to_string()),
                    kind_catalog_id: Ok(Default::default()),
                    multiple: Err("no value supplied for multiple".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    required: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CatalogField {
            pub fn catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_id: {e}")
                    });
                self
            }
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CatalogFieldCatalogType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogFieldKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kind_catalog_id: {e}"
                        )
                    });
                self
            }
            pub fn multiple<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.multiple = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for multiple: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogField> for super::CatalogField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_id: value.catalog_id?,
                    catalog_type: value.catalog_type?,
                    created_at: value.created_at?,
                    kind: value.kind?,
                    kind_catalog_id: value.kind_catalog_id?,
                    multiple: value.multiple?,
                    name: value.name?,
                    position: value.position?,
                    required: value.required?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogField> for CatalogField {
            fn from(value: super::CatalogField) -> Self {
                Self {
                    catalog_id: Ok(value.catalog_id),
                    catalog_type: Ok(value.catalog_type),
                    created_at: Ok(value.created_at),
                    kind: Ok(value.kind),
                    kind_catalog_id: Ok(value.kind_catalog_id),
                    multiple: Ok(value.multiple),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogFieldList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogFieldListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogFieldList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CatalogFieldList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogFieldListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogFieldList> for super::CatalogFieldList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogFieldList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogFieldList> for CatalogFieldList {
            fn from(value: super::CatalogFieldList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogFieldListDataItem {
            attributes: ::std::result::Result<
                super::CatalogField,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogFieldListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogFieldListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogFieldListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogFieldListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogFieldListDataItem>
        for super::CatalogFieldListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogFieldListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogFieldListDataItem>
        for CatalogFieldListDataItem {
            fn from(value: super::CatalogFieldListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogFieldResponse {
            data: ::std::result::Result<
                super::CatalogFieldResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogFieldResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogFieldResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogFieldResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogFieldResponse>
        for super::CatalogFieldResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogFieldResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogFieldResponse> for CatalogFieldResponse {
            fn from(value: super::CatalogFieldResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogFieldResponseData {
            attributes: ::std::result::Result<
                super::CatalogField,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogFieldResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogFieldResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogFieldResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogFieldResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogFieldResponseData>
        for super::CatalogFieldResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogFieldResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogFieldResponseData>
        for CatalogFieldResponseData {
            fn from(value: super::CatalogFieldResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CatalogList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::CatalogListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogList> for super::CatalogList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogList> for CatalogList {
            fn from(value: super::CatalogList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogListDataItem {
            attributes: ::std::result::Result<super::Catalog, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Catalog>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogListDataItem>
        for super::CatalogListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogListDataItem> for CatalogListDataItem {
            fn from(value: super::CatalogListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogProperty {
            catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            catalog_type: ::std::result::Result<
                ::std::option::Option<super::CatalogPropertyCatalogType>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::CatalogPropertyKind,
                ::std::string::String,
            >,
            kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            multiple: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogProperty {
            fn default() -> Self {
                Self {
                    catalog_id: Err("no value supplied for catalog_id".to_string()),
                    catalog_type: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    kind: Err("no value supplied for kind".to_string()),
                    kind_catalog_id: Ok(Default::default()),
                    multiple: Err("no value supplied for multiple".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    required: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CatalogProperty {
            pub fn catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_id: {e}")
                    });
                self
            }
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CatalogPropertyCatalogType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogPropertyKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kind_catalog_id: {e}"
                        )
                    });
                self
            }
            pub fn multiple<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.multiple = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for multiple: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogProperty> for super::CatalogProperty {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogProperty,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_id: value.catalog_id?,
                    catalog_type: value.catalog_type?,
                    created_at: value.created_at?,
                    kind: value.kind?,
                    kind_catalog_id: value.kind_catalog_id?,
                    multiple: value.multiple?,
                    name: value.name?,
                    position: value.position?,
                    required: value.required?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogProperty> for CatalogProperty {
            fn from(value: super::CatalogProperty) -> Self {
                Self {
                    catalog_id: Ok(value.catalog_id),
                    catalog_type: Ok(value.catalog_type),
                    created_at: Ok(value.created_at),
                    kind: Ok(value.kind),
                    kind_catalog_id: Ok(value.kind_catalog_id),
                    multiple: Ok(value.multiple),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogPropertyList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CatalogPropertyListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CatalogPropertyList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CatalogPropertyList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CatalogPropertyListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogPropertyList>
        for super::CatalogPropertyList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogPropertyList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogPropertyList> for CatalogPropertyList {
            fn from(value: super::CatalogPropertyList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogPropertyListDataItem {
            attributes: ::std::result::Result<
                super::CatalogProperty,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogPropertyListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogPropertyListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogPropertyListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogProperty>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogPropertyListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogPropertyListDataItem>
        for super::CatalogPropertyListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogPropertyListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogPropertyListDataItem>
        for CatalogPropertyListDataItem {
            fn from(value: super::CatalogPropertyListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogPropertyResponse {
            data: ::std::result::Result<
                super::CatalogPropertyResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogPropertyResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogPropertyResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogPropertyResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogPropertyResponse>
        for super::CatalogPropertyResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogPropertyResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogPropertyResponse>
        for CatalogPropertyResponse {
            fn from(value: super::CatalogPropertyResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogPropertyResponseData {
            attributes: ::std::result::Result<
                super::CatalogProperty,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogPropertyResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogPropertyResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogPropertyResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogProperty>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogPropertyResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogPropertyResponseData>
        for super::CatalogPropertyResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogPropertyResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogPropertyResponseData>
        for CatalogPropertyResponseData {
            fn from(value: super::CatalogPropertyResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogResponse {
            data: ::std::result::Result<
                super::CatalogResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CatalogResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogResponse> for super::CatalogResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogResponse> for CatalogResponse {
            fn from(value: super::CatalogResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CatalogResponseData {
            attributes: ::std::result::Result<super::Catalog, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CatalogResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CatalogResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CatalogResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Catalog>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CatalogResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CatalogResponseData>
        for super::CatalogResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CatalogResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CatalogResponseData> for CatalogResponseData {
            fn from(value: super::CatalogResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Cause {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::CausePropertiesItem>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Cause {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Cause {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::CausePropertiesItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Cause> for super::Cause {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Cause,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    properties: value.properties?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Cause> for Cause {
            fn from(value: super::Cause) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CauseList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CauseListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CauseList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CauseList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::CauseListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CauseList> for super::CauseList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CauseList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CauseList> for CauseList {
            fn from(value: super::CauseList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CauseListDataItem {
            attributes: ::std::result::Result<super::Cause, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CauseListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CauseListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CauseListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Cause>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CauseListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CauseListDataItem> for super::CauseListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CauseListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CauseListDataItem> for CauseListDataItem {
            fn from(value: super::CauseListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CausePropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CausePropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl CausePropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CausePropertiesItem>
        for super::CausePropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CausePropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::CausePropertiesItem> for CausePropertiesItem {
            fn from(value: super::CausePropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CauseResponse {
            data: ::std::result::Result<super::CauseResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CauseResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CauseResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CauseResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CauseResponse> for super::CauseResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CauseResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CauseResponse> for CauseResponse {
            fn from(value: super::CauseResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CauseResponseData {
            attributes: ::std::result::Result<super::Cause, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CauseResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CauseResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CauseResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Cause>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CauseResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CauseResponseData> for super::CauseResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CauseResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CauseResponseData> for CauseResponseData {
            fn from(value: super::CauseResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ChangeGoogleChatSpacePrivacyTaskParams {
            audience: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            space: ::std::result::Result<
                super::ChangeGoogleChatSpacePrivacyTaskParamsSpace,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::ChangeGoogleChatSpacePrivacyTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ChangeGoogleChatSpacePrivacyTaskParams {
            fn default() -> Self {
                Self {
                    audience: Ok(Default::default()),
                    space: Err("no value supplied for space".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl ChangeGoogleChatSpacePrivacyTaskParams {
            pub fn audience<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.audience = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for audience: {e}")
                    });
                self
            }
            pub fn space<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ChangeGoogleChatSpacePrivacyTaskParamsSpace,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.space = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for space: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ChangeGoogleChatSpacePrivacyTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ChangeGoogleChatSpacePrivacyTaskParams>
        for super::ChangeGoogleChatSpacePrivacyTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ChangeGoogleChatSpacePrivacyTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    audience: value.audience?,
                    space: value.space?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::ChangeGoogleChatSpacePrivacyTaskParams>
        for ChangeGoogleChatSpacePrivacyTaskParams {
            fn from(value: super::ChangeGoogleChatSpacePrivacyTaskParams) -> Self {
                Self {
                    audience: Ok(value.audience),
                    space: Ok(value.space),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ChangeGoogleChatSpacePrivacyTaskParamsSpace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ChangeGoogleChatSpacePrivacyTaskParamsSpace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ChangeGoogleChatSpacePrivacyTaskParamsSpace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ChangeGoogleChatSpacePrivacyTaskParamsSpace>
        for super::ChangeGoogleChatSpacePrivacyTaskParamsSpace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ChangeGoogleChatSpacePrivacyTaskParamsSpace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ChangeGoogleChatSpacePrivacyTaskParamsSpace>
        for ChangeGoogleChatSpacePrivacyTaskParamsSpace {
            fn from(value: super::ChangeGoogleChatSpacePrivacyTaskParamsSpace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ChangeSlackChannelPrivacyTaskParams {
            channel: ::std::result::Result<
                super::ChangeSlackChannelPrivacyTaskParamsChannel,
                ::std::string::String,
            >,
            privacy: ::std::result::Result<
                super::ChangeSlackChannelPrivacyTaskParamsPrivacy,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::ChangeSlackChannelPrivacyTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ChangeSlackChannelPrivacyTaskParams {
            fn default() -> Self {
                Self {
                    channel: Err("no value supplied for channel".to_string()),
                    privacy: Err("no value supplied for privacy".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl ChangeSlackChannelPrivacyTaskParams {
            pub fn channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ChangeSlackChannelPrivacyTaskParamsChannel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channel: {e}")
                    });
                self
            }
            pub fn privacy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ChangeSlackChannelPrivacyTaskParamsPrivacy,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.privacy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for privacy: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ChangeSlackChannelPrivacyTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ChangeSlackChannelPrivacyTaskParams>
        for super::ChangeSlackChannelPrivacyTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ChangeSlackChannelPrivacyTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channel: value.channel?,
                    privacy: value.privacy?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::ChangeSlackChannelPrivacyTaskParams>
        for ChangeSlackChannelPrivacyTaskParams {
            fn from(value: super::ChangeSlackChannelPrivacyTaskParams) -> Self {
                Self {
                    channel: Ok(value.channel),
                    privacy: Ok(value.privacy),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ChangeSlackChannelPrivacyTaskParamsChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ChangeSlackChannelPrivacyTaskParamsChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ChangeSlackChannelPrivacyTaskParamsChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ChangeSlackChannelPrivacyTaskParamsChannel>
        for super::ChangeSlackChannelPrivacyTaskParamsChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ChangeSlackChannelPrivacyTaskParamsChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ChangeSlackChannelPrivacyTaskParamsChannel>
        for ChangeSlackChannelPrivacyTaskParamsChannel {
            fn from(value: super::ChangeSlackChannelPrivacyTaskParamsChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroup {
            communication_external_group_members: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::CommunicationsGroupCommunicationExternalGroupMembersItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_group_conditions: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::CommunicationsGroupCommunicationGroupConditionsItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_type_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                super::CommunicationsGroupConditionType,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_channel: ::std::result::Result<bool, ::std::string::String>,
            is_private: ::std::result::Result<bool, ::std::string::String>,
            member_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slack_channel_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sms_channel: ::std::result::Result<bool, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsGroup {
            fn default() -> Self {
                Self {
                    communication_external_group_members: Ok(Default::default()),
                    communication_group_conditions: Ok(Default::default()),
                    communication_type_id: Err(
                        "no value supplied for communication_type_id".to_string(),
                    ),
                    condition_type: Err(
                        "no value supplied for condition_type".to_string(),
                    ),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    email_channel: Err(
                        "no value supplied for email_channel".to_string(),
                    ),
                    is_private: Err("no value supplied for is_private".to_string()),
                    member_ids: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    slack_channel_ids: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    sms_channel: Err("no value supplied for sms_channel".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CommunicationsGroup {
            pub fn communication_external_group_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::CommunicationsGroupCommunicationExternalGroupMembersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_external_group_members = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_external_group_members: {e}"
                        )
                    });
                self
            }
            pub fn communication_group_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::CommunicationsGroupCommunicationGroupConditionsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_group_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_group_conditions: {e}"
                        )
                    });
                self
            }
            pub fn communication_type_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsGroupConditionType>,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn email_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.email_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_channel: {e}")
                    });
                self
            }
            pub fn is_private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.is_private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_private: {e}")
                    });
                self
            }
            pub fn member_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.member_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_ids: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slack_channel_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_ids: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn sms_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.sms_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sms_channel: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsGroup>
        for super::CommunicationsGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_external_group_members: value
                        .communication_external_group_members?,
                    communication_group_conditions: value
                        .communication_group_conditions?,
                    communication_type_id: value.communication_type_id?,
                    condition_type: value.condition_type?,
                    created_at: value.created_at?,
                    description: value.description?,
                    email_channel: value.email_channel?,
                    is_private: value.is_private?,
                    member_ids: value.member_ids?,
                    name: value.name?,
                    slack_channel_ids: value.slack_channel_ids?,
                    slug: value.slug?,
                    sms_channel: value.sms_channel?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsGroup> for CommunicationsGroup {
            fn from(value: super::CommunicationsGroup) -> Self {
                Self {
                    communication_external_group_members: Ok(
                        value.communication_external_group_members,
                    ),
                    communication_group_conditions: Ok(
                        value.communication_group_conditions,
                    ),
                    communication_type_id: Ok(value.communication_type_id),
                    condition_type: Ok(value.condition_type),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    email_channel: Ok(value.email_channel),
                    is_private: Ok(value.is_private),
                    member_ids: Ok(value.member_ids),
                    name: Ok(value.name),
                    slack_channel_ids: Ok(value.slack_channel_ids),
                    slug: Ok(value.slug),
                    sms_channel: Ok(value.sms_channel),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroupCommunicationExternalGroupMembersItem {
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            phone_number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsGroupCommunicationExternalGroupMembersItem {
            fn default() -> Self {
                Self {
                    email: Ok(Default::default()),
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    phone_number: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsGroupCommunicationExternalGroupMembersItem {
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn phone_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_number = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_number: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CommunicationsGroupCommunicationExternalGroupMembersItem,
        > for super::CommunicationsGroupCommunicationExternalGroupMembersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroupCommunicationExternalGroupMembersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    email: value.email?,
                    id: value.id?,
                    name: value.name?,
                    phone_number: value.phone_number?,
                })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsGroupCommunicationExternalGroupMembersItem,
        > for CommunicationsGroupCommunicationExternalGroupMembersItem {
            fn from(
                value: super::CommunicationsGroupCommunicationExternalGroupMembersItem,
            ) -> Self {
                Self {
                    email: Ok(value.email),
                    id: Ok(value.id),
                    name: Ok(value.name),
                    phone_number: Ok(value.phone_number),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroupCommunicationGroupConditionsItem {
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            property_type: ::std::result::Result<
                ::std::option::Option<
                    super::CommunicationsGroupCommunicationGroupConditionsItemPropertyType,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsGroupCommunicationGroupConditionsItem {
            fn default() -> Self {
                Self {
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    property_type: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsGroupCommunicationGroupConditionsItem {
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn property_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CommunicationsGroupCommunicationGroupConditionsItemPropertyType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for property_type: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsGroupCommunicationGroupConditionsItem>
        for super::CommunicationsGroupCommunicationGroupConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroupCommunicationGroupConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    property_type: value.property_type?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsGroupCommunicationGroupConditionsItem,
        > for CommunicationsGroupCommunicationGroupConditionsItem {
            fn from(
                value: super::CommunicationsGroupCommunicationGroupConditionsItem,
            ) -> Self {
                Self {
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    property_type: Ok(value.property_type),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroupResponse {
            data: ::std::result::Result<
                super::CommunicationsGroupResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsGroupResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsGroupResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsGroupResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsGroupResponse>
        for super::CommunicationsGroupResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroupResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsGroupResponse>
        for CommunicationsGroupResponse {
            fn from(value: super::CommunicationsGroupResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroupResponseData {
            attributes: ::std::result::Result<
                super::CommunicationsGroup,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsGroupResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsGroupResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsGroupResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsGroupResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsGroupResponseData>
        for super::CommunicationsGroupResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroupResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsGroupResponseData>
        for CommunicationsGroupResponseData {
            fn from(value: super::CommunicationsGroupResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroupsResponse {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CommunicationsGroupsResponseDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsGroupsResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsGroupsResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CommunicationsGroupsResponseDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsGroupsResponse>
        for super::CommunicationsGroupsResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroupsResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsGroupsResponse>
        for CommunicationsGroupsResponse {
            fn from(value: super::CommunicationsGroupsResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsGroupsResponseDataItem {
            attributes: ::std::result::Result<
                super::CommunicationsGroup,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsGroupsResponseDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsGroupsResponseDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsGroupsResponseDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CommunicationsGroupsResponseDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsGroupsResponseDataItem>
        for super::CommunicationsGroupsResponseDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsGroupsResponseDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsGroupsResponseDataItem>
        for CommunicationsGroupsResponseDataItem {
            fn from(value: super::CommunicationsGroupsResponseDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsStage {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsStage {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CommunicationsStage {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsStage>
        for super::CommunicationsStage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsStage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsStage> for CommunicationsStage {
            fn from(value: super::CommunicationsStage) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsStageResponse {
            data: ::std::result::Result<
                super::CommunicationsStageResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsStageResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsStageResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsStageResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsStageResponse>
        for super::CommunicationsStageResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsStageResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsStageResponse>
        for CommunicationsStageResponse {
            fn from(value: super::CommunicationsStageResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsStageResponseData {
            attributes: ::std::result::Result<
                super::CommunicationsStage,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsStageResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsStageResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsStageResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsStage>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsStageResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsStageResponseData>
        for super::CommunicationsStageResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsStageResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsStageResponseData>
        for CommunicationsStageResponseData {
            fn from(value: super::CommunicationsStageResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsStagesResponse {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CommunicationsStagesResponseDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsStagesResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsStagesResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CommunicationsStagesResponseDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsStagesResponse>
        for super::CommunicationsStagesResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsStagesResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsStagesResponse>
        for CommunicationsStagesResponse {
            fn from(value: super::CommunicationsStagesResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsStagesResponseDataItem {
            attributes: ::std::result::Result<
                super::CommunicationsStage,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsStagesResponseDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsStagesResponseDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsStagesResponseDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsStage>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CommunicationsStagesResponseDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsStagesResponseDataItem>
        for super::CommunicationsStagesResponseDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsStagesResponseDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsStagesResponseDataItem>
        for CommunicationsStagesResponseDataItem {
            fn from(value: super::CommunicationsStagesResponseDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplate {
            communication_template_stages: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::CommunicationsTemplateCommunicationTemplateStagesItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_type: ::std::result::Result<
                ::std::option::Option<super::CommunicationsTemplateCommunicationType>,
                ::std::string::String,
            >,
            communication_type_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTemplate {
            fn default() -> Self {
                Self {
                    communication_template_stages: Ok(Default::default()),
                    communication_type: Ok(Default::default()),
                    communication_type_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CommunicationsTemplate {
            pub fn communication_template_stages<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::CommunicationsTemplateCommunicationTemplateStagesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_template_stages = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_template_stages: {e}"
                        )
                    });
                self
            }
            pub fn communication_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CommunicationsTemplateCommunicationType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type: {e}"
                        )
                    });
                self
            }
            pub fn communication_type_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTemplate>
        for super::CommunicationsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_template_stages: value.communication_template_stages?,
                    communication_type: value.communication_type?,
                    communication_type_id: value.communication_type_id?,
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTemplate>
        for CommunicationsTemplate {
            fn from(value: super::CommunicationsTemplate) -> Self {
                Self {
                    communication_template_stages: Ok(
                        value.communication_template_stages,
                    ),
                    communication_type: Ok(value.communication_type),
                    communication_type_id: Ok(value.communication_type_id),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateCommunicationTemplateStagesItem {
            data: ::std::result::Result<
                ::std::option::Option<
                    super::CommunicationsTemplateCommunicationTemplateStagesItemData,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsTemplateCommunicationTemplateStagesItem {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateCommunicationTemplateStagesItem {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CommunicationsTemplateCommunicationTemplateStagesItemData,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CommunicationsTemplateCommunicationTemplateStagesItem,
        > for super::CommunicationsTemplateCommunicationTemplateStagesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateCommunicationTemplateStagesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsTemplateCommunicationTemplateStagesItem,
        > for CommunicationsTemplateCommunicationTemplateStagesItem {
            fn from(
                value: super::CommunicationsTemplateCommunicationTemplateStagesItem,
            ) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateCommunicationTemplateStagesItemData {
            attributes: ::std::result::Result<
                ::std::option::Option<
                    super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
                >,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::CommunicationsTemplateCommunicationTemplateStagesItemDataType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsTemplateCommunicationTemplateStagesItemData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateCommunicationTemplateStagesItemData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CommunicationsTemplateCommunicationTemplateStagesItemDataType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CommunicationsTemplateCommunicationTemplateStagesItemData,
        > for super::CommunicationsTemplateCommunicationTemplateStagesItemData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateCommunicationTemplateStagesItemData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsTemplateCommunicationTemplateStagesItemData,
        > for CommunicationsTemplateCommunicationTemplateStagesItemData {
            fn from(
                value: super::CommunicationsTemplateCommunicationTemplateStagesItemData,
            ) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
            communication_stage: ::std::result::Result<
                ::std::option::Option<
                    super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
                >,
                ::std::string::String,
            >,
            communication_template: ::std::result::Result<
                ::std::option::Option<
                    super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
                >,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_subject: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sms_content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
            fn default() -> Self {
                Self {
                    communication_stage: Ok(Default::default()),
                    communication_template: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    email_body: Ok(Default::default()),
                    email_subject: Ok(Default::default()),
                    slack_content: Ok(Default::default()),
                    sms_content: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
            pub fn communication_stage<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_stage = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_stage: {e}"
                        )
                    });
                self
            }
            pub fn communication_template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_template = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_template: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn email_body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_body: {e}")
                    });
                self
            }
            pub fn email_subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_subject: {e}")
                    });
                self
            }
            pub fn slack_content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_content: {e}")
                    });
                self
            }
            pub fn sms_content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sms_content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sms_content: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
        >
        for super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_stage: value.communication_stage?,
                    communication_template: value.communication_template?,
                    created_at: value.created_at?,
                    email_body: value.email_body?,
                    email_subject: value.email_subject?,
                    slack_content: value.slack_content?,
                    sms_content: value.sms_content?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
        > for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes {
            fn from(
                value: super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributes,
            ) -> Self {
                Self {
                    communication_stage: Ok(value.communication_stage),
                    communication_template: Ok(value.communication_template),
                    created_at: Ok(value.created_at),
                    email_body: Ok(value.email_body),
                    email_subject: Ok(value.email_subject),
                    slack_content: Ok(value.slack_content),
                    sms_content: Ok(value.sms_content),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
        >
        for super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
        >
        for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage {
            fn from(
                value: super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationStage,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
        >
        for super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
        >
        for CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate {
            fn from(
                value: super::CommunicationsTemplateCommunicationTemplateStagesItemDataAttributesCommunicationTemplate,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateCommunicationType {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTemplateCommunicationType {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateCommunicationType {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTemplateCommunicationType>
        for super::CommunicationsTemplateCommunicationType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateCommunicationType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTemplateCommunicationType>
        for CommunicationsTemplateCommunicationType {
            fn from(value: super::CommunicationsTemplateCommunicationType) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateResponse {
            data: ::std::result::Result<
                super::CommunicationsTemplateResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTemplateResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplateResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsTemplateResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTemplateResponse>
        for super::CommunicationsTemplateResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTemplateResponse>
        for CommunicationsTemplateResponse {
            fn from(value: super::CommunicationsTemplateResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplateResponseData {
            attributes: ::std::result::Result<
                super::CommunicationsTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsTemplateResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTemplateResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsTemplateResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CommunicationsTemplateResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTemplateResponseData>
        for super::CommunicationsTemplateResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplateResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTemplateResponseData>
        for CommunicationsTemplateResponseData {
            fn from(value: super::CommunicationsTemplateResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplatesResponse {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CommunicationsTemplatesResponseDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTemplatesResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTemplatesResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CommunicationsTemplatesResponseDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTemplatesResponse>
        for super::CommunicationsTemplatesResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplatesResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTemplatesResponse>
        for CommunicationsTemplatesResponse {
            fn from(value: super::CommunicationsTemplatesResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTemplatesResponseDataItem {
            attributes: ::std::result::Result<
                super::CommunicationsTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsTemplatesResponseDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTemplatesResponseDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsTemplatesResponseDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CommunicationsTemplatesResponseDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTemplatesResponseDataItem>
        for super::CommunicationsTemplatesResponseDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTemplatesResponseDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTemplatesResponseDataItem>
        for CommunicationsTemplatesResponseDataItem {
            fn from(value: super::CommunicationsTemplatesResponseDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsType {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<i64, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsType {
            fn default() -> Self {
                Self {
                    color: Err("no value supplied for color".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CommunicationsType {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsType> for super::CommunicationsType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsType> for CommunicationsType {
            fn from(value: super::CommunicationsType) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTypeResponse {
            data: ::std::result::Result<
                super::CommunicationsTypeResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTypeResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTypeResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsTypeResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTypeResponse>
        for super::CommunicationsTypeResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTypeResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTypeResponse>
        for CommunicationsTypeResponse {
            fn from(value: super::CommunicationsTypeResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTypeResponseData {
            attributes: ::std::result::Result<
                super::CommunicationsType,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsTypeResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTypeResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsTypeResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsType>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsTypeResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTypeResponseData>
        for super::CommunicationsTypeResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTypeResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTypeResponseData>
        for CommunicationsTypeResponseData {
            fn from(value: super::CommunicationsTypeResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTypesResponse {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CommunicationsTypesResponseDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTypesResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl CommunicationsTypesResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CommunicationsTypesResponseDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTypesResponse>
        for super::CommunicationsTypesResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTypesResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTypesResponse>
        for CommunicationsTypesResponse {
            fn from(value: super::CommunicationsTypesResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CommunicationsTypesResponseDataItem {
            attributes: ::std::result::Result<
                super::CommunicationsType,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CommunicationsTypesResponseDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CommunicationsTypesResponseDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CommunicationsTypesResponseDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CommunicationsType>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CommunicationsTypesResponseDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CommunicationsTypesResponseDataItem>
        for super::CommunicationsTypesResponseDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CommunicationsTypesResponseDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CommunicationsTypesResponseDataItem>
        for CommunicationsTypesResponseDataItem {
            fn from(value: super::CommunicationsTypesResponseDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAirtableTableRecordTaskParams {
            base: ::std::result::Result<
                super::CreateAirtableTableRecordTaskParamsBase,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            table: ::std::result::Result<
                super::CreateAirtableTableRecordTaskParamsTable,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateAirtableTableRecordTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAirtableTableRecordTaskParams {
            fn default() -> Self {
                Self {
                    base: Err("no value supplied for base".to_string()),
                    custom_fields_mapping: Ok(Default::default()),
                    table: Err("no value supplied for table".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateAirtableTableRecordTaskParams {
            pub fn base<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateAirtableTableRecordTaskParamsBase,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.base = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for base: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn table<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateAirtableTableRecordTaskParamsTable,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.table = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for table: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateAirtableTableRecordTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAirtableTableRecordTaskParams>
        for super::CreateAirtableTableRecordTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAirtableTableRecordTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    base: value.base?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    table: value.table?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAirtableTableRecordTaskParams>
        for CreateAirtableTableRecordTaskParams {
            fn from(value: super::CreateAirtableTableRecordTaskParams) -> Self {
                Self {
                    base: Ok(value.base),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    table: Ok(value.table),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAirtableTableRecordTaskParamsBase {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAirtableTableRecordTaskParamsBase {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAirtableTableRecordTaskParamsBase {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAirtableTableRecordTaskParamsBase>
        for super::CreateAirtableTableRecordTaskParamsBase {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAirtableTableRecordTaskParamsBase,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAirtableTableRecordTaskParamsBase>
        for CreateAirtableTableRecordTaskParamsBase {
            fn from(value: super::CreateAirtableTableRecordTaskParamsBase) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAirtableTableRecordTaskParamsTable {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAirtableTableRecordTaskParamsTable {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAirtableTableRecordTaskParamsTable {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAirtableTableRecordTaskParamsTable>
        for super::CreateAirtableTableRecordTaskParamsTable {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAirtableTableRecordTaskParamsTable,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAirtableTableRecordTaskParamsTable>
        for CreateAirtableTableRecordTaskParamsTable {
            fn from(value: super::CreateAirtableTableRecordTaskParamsTable) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAnthropicChatCompletionTaskParams {
            model: ::std::result::Result<
                super::CreateAnthropicChatCompletionTaskParamsModel,
                ::std::string::String,
            >,
            prompt: ::std::result::Result<::std::string::String, ::std::string::String>,
            system_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateAnthropicChatCompletionTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAnthropicChatCompletionTaskParams {
            fn default() -> Self {
                Self {
                    model: Err("no value supplied for model".to_string()),
                    prompt: Err("no value supplied for prompt".to_string()),
                    system_prompt: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateAnthropicChatCompletionTaskParams {
            pub fn model<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateAnthropicChatCompletionTaskParamsModel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.model = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for model: {e}")
                    });
                self
            }
            pub fn prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prompt: {e}")
                    });
                self
            }
            pub fn system_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.system_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_prompt: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateAnthropicChatCompletionTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAnthropicChatCompletionTaskParams>
        for super::CreateAnthropicChatCompletionTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAnthropicChatCompletionTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    model: value.model?,
                    prompt: value.prompt?,
                    system_prompt: value.system_prompt?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAnthropicChatCompletionTaskParams>
        for CreateAnthropicChatCompletionTaskParams {
            fn from(value: super::CreateAnthropicChatCompletionTaskParams) -> Self {
                Self {
                    model: Ok(value.model),
                    prompt: Ok(value.prompt),
                    system_prompt: Ok(value.system_prompt),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAnthropicChatCompletionTaskParamsModel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAnthropicChatCompletionTaskParamsModel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAnthropicChatCompletionTaskParamsModel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAnthropicChatCompletionTaskParamsModel>
        for super::CreateAnthropicChatCompletionTaskParamsModel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAnthropicChatCompletionTaskParamsModel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAnthropicChatCompletionTaskParamsModel>
        for CreateAnthropicChatCompletionTaskParamsModel {
            fn from(value: super::CreateAnthropicChatCompletionTaskParamsModel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAsanaSubtaskTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completion: ::std::result::Result<
                super::CreateAsanaSubtaskTaskParamsCompletion,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            dependency_direction: ::std::result::Result<
                super::CreateAsanaSubtaskTaskParamsDependencyDirection,
                ::std::string::String,
            >,
            dependent_task_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notes: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            parent_task_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateAsanaSubtaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateAsanaSubtaskTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    completion: Err("no value supplied for completion".to_string()),
                    custom_fields_mapping: Ok(Default::default()),
                    dependency_direction: Ok(
                        super::defaults::create_asana_subtask_task_params_dependency_direction(),
                    ),
                    dependent_task_ids: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    notes: Ok(Default::default()),
                    parent_task_id: Err(
                        "no value supplied for parent_task_id".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateAsanaSubtaskTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateAsanaSubtaskTaskParamsCompletion,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn dependency_direction<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateAsanaSubtaskTaskParamsDependencyDirection,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dependency_direction = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for dependency_direction: {e}"
                        )
                    });
                self
            }
            pub fn dependent_task_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dependent_task_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for dependent_task_ids: {e}"
                        )
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn notes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.notes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notes: {e}")
                    });
                self
            }
            pub fn parent_task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_task_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateAsanaSubtaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAsanaSubtaskTaskParams>
        for super::CreateAsanaSubtaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAsanaSubtaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    dependency_direction: value.dependency_direction?,
                    dependent_task_ids: value.dependent_task_ids?,
                    due_date: value.due_date?,
                    notes: value.notes?,
                    parent_task_id: value.parent_task_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAsanaSubtaskTaskParams>
        for CreateAsanaSubtaskTaskParams {
            fn from(value: super::CreateAsanaSubtaskTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    dependency_direction: Ok(value.dependency_direction),
                    dependent_task_ids: Ok(value.dependent_task_ids),
                    due_date: Ok(value.due_date),
                    notes: Ok(value.notes),
                    parent_task_id: Ok(value.parent_task_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAsanaSubtaskTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAsanaSubtaskTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAsanaSubtaskTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAsanaSubtaskTaskParamsCompletion>
        for super::CreateAsanaSubtaskTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAsanaSubtaskTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAsanaSubtaskTaskParamsCompletion>
        for CreateAsanaSubtaskTaskParamsCompletion {
            fn from(value: super::CreateAsanaSubtaskTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAsanaTaskTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completion: ::std::result::Result<
                super::CreateAsanaTaskTaskParamsCompletion,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            dependency_direction: ::std::result::Result<
                super::CreateAsanaTaskTaskParamsDependencyDirection,
                ::std::string::String,
            >,
            dependent_task_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notes: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            projects: ::std::result::Result<
                ::std::vec::Vec<super::CreateAsanaTaskTaskParamsProjectsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateAsanaTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            workspace: ::std::result::Result<
                super::CreateAsanaTaskTaskParamsWorkspace,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAsanaTaskTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    completion: Err("no value supplied for completion".to_string()),
                    custom_fields_mapping: Ok(Default::default()),
                    dependency_direction: Ok(
                        super::defaults::create_asana_task_task_params_dependency_direction(),
                    ),
                    dependent_task_ids: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    notes: Ok(Default::default()),
                    projects: Err("no value supplied for projects".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    workspace: Err("no value supplied for workspace".to_string()),
                }
            }
        }
        impl CreateAsanaTaskTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateAsanaTaskTaskParamsCompletion>,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn dependency_direction<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateAsanaTaskTaskParamsDependencyDirection,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dependency_direction = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for dependency_direction: {e}"
                        )
                    });
                self
            }
            pub fn dependent_task_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dependent_task_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for dependent_task_ids: {e}"
                        )
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn notes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.notes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notes: {e}")
                    });
                self
            }
            pub fn projects<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateAsanaTaskTaskParamsProjectsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.projects = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for projects: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateAsanaTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn workspace<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateAsanaTaskTaskParamsWorkspace>,
                T::Error: ::std::fmt::Display,
            {
                self.workspace = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workspace: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAsanaTaskTaskParams>
        for super::CreateAsanaTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAsanaTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    dependency_direction: value.dependency_direction?,
                    dependent_task_ids: value.dependent_task_ids?,
                    due_date: value.due_date?,
                    notes: value.notes?,
                    projects: value.projects?,
                    task_type: value.task_type?,
                    title: value.title?,
                    workspace: value.workspace?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAsanaTaskTaskParams>
        for CreateAsanaTaskTaskParams {
            fn from(value: super::CreateAsanaTaskTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    dependency_direction: Ok(value.dependency_direction),
                    dependent_task_ids: Ok(value.dependent_task_ids),
                    due_date: Ok(value.due_date),
                    notes: Ok(value.notes),
                    projects: Ok(value.projects),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    workspace: Ok(value.workspace),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAsanaTaskTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAsanaTaskTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAsanaTaskTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAsanaTaskTaskParamsCompletion>
        for super::CreateAsanaTaskTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAsanaTaskTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAsanaTaskTaskParamsCompletion>
        for CreateAsanaTaskTaskParamsCompletion {
            fn from(value: super::CreateAsanaTaskTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAsanaTaskTaskParamsProjectsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAsanaTaskTaskParamsProjectsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAsanaTaskTaskParamsProjectsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAsanaTaskTaskParamsProjectsItem>
        for super::CreateAsanaTaskTaskParamsProjectsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAsanaTaskTaskParamsProjectsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAsanaTaskTaskParamsProjectsItem>
        for CreateAsanaTaskTaskParamsProjectsItem {
            fn from(value: super::CreateAsanaTaskTaskParamsProjectsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateAsanaTaskTaskParamsWorkspace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateAsanaTaskTaskParamsWorkspace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateAsanaTaskTaskParamsWorkspace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateAsanaTaskTaskParamsWorkspace>
        for super::CreateAsanaTaskTaskParamsWorkspace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateAsanaTaskTaskParamsWorkspace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateAsanaTaskTaskParamsWorkspace>
        for CreateAsanaTaskTaskParamsWorkspace {
            fn from(value: super::CreateAsanaTaskTaskParamsWorkspace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateClickupTaskTaskParams {
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateClickupTaskTaskParamsPriority>,
                ::std::string::String,
            >,
            tags: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateClickupTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateClickupTaskTaskParams {
            fn default() -> Self {
                Self {
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    tags: Ok(Default::default()),
                    task_payload: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateClickupTaskTaskParams {
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateClickupTaskTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn tags<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.tags = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tags: {e}")
                    });
                self
            }
            pub fn task_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.task_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_payload: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateClickupTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateClickupTaskTaskParams>
        for super::CreateClickupTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateClickupTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    due_date: value.due_date?,
                    priority: value.priority?,
                    tags: value.tags?,
                    task_payload: value.task_payload?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateClickupTaskTaskParams>
        for CreateClickupTaskTaskParams {
            fn from(value: super::CreateClickupTaskTaskParams) -> Self {
                Self {
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    priority: Ok(value.priority),
                    tags: Ok(value.tags),
                    task_payload: Ok(value.task_payload),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateClickupTaskTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateClickupTaskTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateClickupTaskTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateClickupTaskTaskParamsPriority>
        for super::CreateClickupTaskTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateClickupTaskTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateClickupTaskTaskParamsPriority>
        for CreateClickupTaskTaskParamsPriority {
            fn from(value: super::CreateClickupTaskTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateCodaPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            doc: ::std::result::Result<
                ::std::option::Option<super::CreateCodaPageTaskParamsDoc>,
                ::std::string::String,
            >,
            folder_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            subtitle: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateCodaPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::CreateCodaPageTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateCodaPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    doc: Ok(Default::default()),
                    folder_id: Ok(Default::default()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    post_mortem_template_id: Ok(Default::default()),
                    subtitle: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateCodaPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn doc<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateCodaPageTaskParamsDoc>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.doc = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for doc: {e}")
                    });
                self
            }
            pub fn folder_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.folder_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for folder_id: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn subtitle<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subtitle = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtitle: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateCodaPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateCodaPageTaskParamsTemplate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateCodaPageTaskParams>
        for super::CreateCodaPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateCodaPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    doc: value.doc?,
                    folder_id: value.folder_id?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    subtitle: value.subtitle?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateCodaPageTaskParams>
        for CreateCodaPageTaskParams {
            fn from(value: super::CreateCodaPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    doc: Ok(value.doc),
                    folder_id: Ok(value.folder_id),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    subtitle: Ok(value.subtitle),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateCodaPageTaskParamsDoc {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateCodaPageTaskParamsDoc {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateCodaPageTaskParamsDoc {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateCodaPageTaskParamsDoc>
        for super::CreateCodaPageTaskParamsDoc {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateCodaPageTaskParamsDoc,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateCodaPageTaskParamsDoc>
        for CreateCodaPageTaskParamsDoc {
            fn from(value: super::CreateCodaPageTaskParamsDoc) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateCodaPageTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateCodaPageTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateCodaPageTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateCodaPageTaskParamsTemplate>
        for super::CreateCodaPageTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateCodaPageTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateCodaPageTaskParamsTemplate>
        for CreateCodaPageTaskParamsTemplate {
            fn from(value: super::CreateCodaPageTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateConfluencePageTaskParams {
            ancestor: ::std::result::Result<
                ::std::option::Option<super::CreateConfluencePageTaskParamsAncestor>,
                ::std::string::String,
            >,
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            integration: ::std::result::Result<
                ::std::option::Option<super::CreateConfluencePageTaskParamsIntegration>,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            space: ::std::result::Result<
                super::CreateConfluencePageTaskParamsSpace,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateConfluencePageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::CreateConfluencePageTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateConfluencePageTaskParams {
            fn default() -> Self {
                Self {
                    ancestor: Ok(Default::default()),
                    content: Ok(Default::default()),
                    integration: Ok(Default::default()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    post_mortem_template_id: Ok(Default::default()),
                    space: Err("no value supplied for space".to_string()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateConfluencePageTaskParams {
            pub fn ancestor<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateConfluencePageTaskParamsAncestor>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ancestor = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ancestor: {e}")
                    });
                self
            }
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn integration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateConfluencePageTaskParamsIntegration,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for integration: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn space<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateConfluencePageTaskParamsSpace>,
                T::Error: ::std::fmt::Display,
            {
                self.space = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for space: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateConfluencePageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateConfluencePageTaskParamsTemplate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateConfluencePageTaskParams>
        for super::CreateConfluencePageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateConfluencePageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ancestor: value.ancestor?,
                    content: value.content?,
                    integration: value.integration?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    space: value.space?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateConfluencePageTaskParams>
        for CreateConfluencePageTaskParams {
            fn from(value: super::CreateConfluencePageTaskParams) -> Self {
                Self {
                    ancestor: Ok(value.ancestor),
                    content: Ok(value.content),
                    integration: Ok(value.integration),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    space: Ok(value.space),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateConfluencePageTaskParamsAncestor {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateConfluencePageTaskParamsAncestor {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateConfluencePageTaskParamsAncestor {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateConfluencePageTaskParamsAncestor>
        for super::CreateConfluencePageTaskParamsAncestor {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateConfluencePageTaskParamsAncestor,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateConfluencePageTaskParamsAncestor>
        for CreateConfluencePageTaskParamsAncestor {
            fn from(value: super::CreateConfluencePageTaskParamsAncestor) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateConfluencePageTaskParamsIntegration {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateConfluencePageTaskParamsIntegration {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateConfluencePageTaskParamsIntegration {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateConfluencePageTaskParamsIntegration>
        for super::CreateConfluencePageTaskParamsIntegration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateConfluencePageTaskParamsIntegration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateConfluencePageTaskParamsIntegration>
        for CreateConfluencePageTaskParamsIntegration {
            fn from(value: super::CreateConfluencePageTaskParamsIntegration) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateConfluencePageTaskParamsSpace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateConfluencePageTaskParamsSpace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateConfluencePageTaskParamsSpace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateConfluencePageTaskParamsSpace>
        for super::CreateConfluencePageTaskParamsSpace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateConfluencePageTaskParamsSpace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateConfluencePageTaskParamsSpace>
        for CreateConfluencePageTaskParamsSpace {
            fn from(value: super::CreateConfluencePageTaskParamsSpace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateConfluencePageTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateConfluencePageTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateConfluencePageTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateConfluencePageTaskParamsTemplate>
        for super::CreateConfluencePageTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateConfluencePageTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateConfluencePageTaskParamsTemplate>
        for CreateConfluencePageTaskParamsTemplate {
            fn from(value: super::CreateConfluencePageTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateDatadogNotebookTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::CreateDatadogNotebookTaskParamsKind,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateDatadogNotebookTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::CreateDatadogNotebookTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateDatadogNotebookTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateDatadogNotebookTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateDatadogNotebookTaskParamsKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateDatadogNotebookTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateDatadogNotebookTaskParamsTemplate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateDatadogNotebookTaskParams>
        for super::CreateDatadogNotebookTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateDatadogNotebookTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    kind: value.kind?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateDatadogNotebookTaskParams>
        for CreateDatadogNotebookTaskParams {
            fn from(value: super::CreateDatadogNotebookTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    kind: Ok(value.kind),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateDatadogNotebookTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateDatadogNotebookTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateDatadogNotebookTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateDatadogNotebookTaskParamsTemplate>
        for super::CreateDatadogNotebookTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateDatadogNotebookTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateDatadogNotebookTaskParamsTemplate>
        for CreateDatadogNotebookTaskParamsTemplate {
            fn from(value: super::CreateDatadogNotebookTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateDropboxPaperPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            namespace: ::std::result::Result<
                ::std::option::Option<super::CreateDropboxPaperPageTaskParamsNamespace>,
                ::std::string::String,
            >,
            parent_folder: ::std::result::Result<
                ::std::option::Option<
                    super::CreateDropboxPaperPageTaskParamsParentFolder,
                >,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateDropboxPaperPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateDropboxPaperPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    namespace: Ok(Default::default()),
                    parent_folder: Ok(Default::default()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateDropboxPaperPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn namespace<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateDropboxPaperPageTaskParamsNamespace,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.namespace = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for namespace: {e}")
                    });
                self
            }
            pub fn parent_folder<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateDropboxPaperPageTaskParamsParentFolder,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parent_folder = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parent_folder: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateDropboxPaperPageTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateDropboxPaperPageTaskParams>
        for super::CreateDropboxPaperPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateDropboxPaperPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    namespace: value.namespace?,
                    parent_folder: value.parent_folder?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateDropboxPaperPageTaskParams>
        for CreateDropboxPaperPageTaskParams {
            fn from(value: super::CreateDropboxPaperPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    namespace: Ok(value.namespace),
                    parent_folder: Ok(value.parent_folder),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateDropboxPaperPageTaskParamsNamespace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateDropboxPaperPageTaskParamsNamespace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateDropboxPaperPageTaskParamsNamespace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateDropboxPaperPageTaskParamsNamespace>
        for super::CreateDropboxPaperPageTaskParamsNamespace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateDropboxPaperPageTaskParamsNamespace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateDropboxPaperPageTaskParamsNamespace>
        for CreateDropboxPaperPageTaskParamsNamespace {
            fn from(value: super::CreateDropboxPaperPageTaskParamsNamespace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateDropboxPaperPageTaskParamsParentFolder {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateDropboxPaperPageTaskParamsParentFolder {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateDropboxPaperPageTaskParamsParentFolder {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateDropboxPaperPageTaskParamsParentFolder>
        for super::CreateDropboxPaperPageTaskParamsParentFolder {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateDropboxPaperPageTaskParamsParentFolder,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateDropboxPaperPageTaskParamsParentFolder>
        for CreateDropboxPaperPageTaskParamsParentFolder {
            fn from(value: super::CreateDropboxPaperPageTaskParamsParentFolder) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorActionBody {
            action: ::std::result::Result<
                ::std::option::Option<super::CreateEdgeConnectorActionBodyAction>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateEdgeConnectorActionBody {
            fn default() -> Self {
                Self {
                    action: Ok(Default::default()),
                }
            }
        }
        impl CreateEdgeConnectorActionBody {
            pub fn action<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateEdgeConnectorActionBodyAction>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorActionBody>
        for super::CreateEdgeConnectorActionBody {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorActionBody,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { action: value.action? })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorActionBody>
        for CreateEdgeConnectorActionBody {
            fn from(value: super::CreateEdgeConnectorActionBody) -> Self {
                Self { action: Ok(value.action) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorActionBodyAction {
            action_type: ::std::result::Result<
                super::CreateEdgeConnectorActionBodyActionActionType,
                ::std::string::String,
            >,
            metadata: ::std::result::Result<
                ::std::option::Option<
                    super::CreateEdgeConnectorActionBodyActionMetadata,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateEdgeConnectorActionBodyAction {
            fn default() -> Self {
                Self {
                    action_type: Err("no value supplied for action_type".to_string()),
                    metadata: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl CreateEdgeConnectorActionBodyAction {
            pub fn action_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateEdgeConnectorActionBodyActionActionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action_type: {e}")
                    });
                self
            }
            pub fn metadata<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateEdgeConnectorActionBodyActionMetadata,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.metadata = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for metadata: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorActionBodyAction>
        for super::CreateEdgeConnectorActionBodyAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorActionBodyAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_type: value.action_type?,
                    metadata: value.metadata?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorActionBodyAction>
        for CreateEdgeConnectorActionBodyAction {
            fn from(value: super::CreateEdgeConnectorActionBodyAction) -> Self {
                Self {
                    action_type: Ok(value.action_type),
                    metadata: Ok(value.metadata),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorActionBodyActionMetadata {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            parameters: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateEdgeConnectorActionBodyActionMetadataParametersItem,
                >,
                ::std::string::String,
            >,
            timeout: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateEdgeConnectorActionBodyActionMetadata {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    parameters: Ok(Default::default()),
                    timeout: Ok(Default::default()),
                }
            }
        }
        impl CreateEdgeConnectorActionBodyActionMetadata {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn parameters<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateEdgeConnectorActionBodyActionMetadataParametersItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parameters = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parameters: {e}")
                    });
                self
            }
            pub fn timeout<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.timeout = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for timeout: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorActionBodyActionMetadata>
        for super::CreateEdgeConnectorActionBodyActionMetadata {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorActionBodyActionMetadata,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    parameters: value.parameters?,
                    timeout: value.timeout?,
                })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorActionBodyActionMetadata>
        for CreateEdgeConnectorActionBodyActionMetadata {
            fn from(value: super::CreateEdgeConnectorActionBodyActionMetadata) -> Self {
                Self {
                    description: Ok(value.description),
                    parameters: Ok(value.parameters),
                    timeout: Ok(value.timeout),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorActionBodyActionMetadataParametersItem {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            options: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::CreateEdgeConnectorActionBodyActionMetadataParametersItemType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateEdgeConnectorActionBodyActionMetadataParametersItem {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    options: Ok(Default::default()),
                    required: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl CreateEdgeConnectorActionBodyActionMetadataParametersItem {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn options<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.options = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for options: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateEdgeConnectorActionBodyActionMetadataParametersItemType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CreateEdgeConnectorActionBodyActionMetadataParametersItem,
        > for super::CreateEdgeConnectorActionBodyActionMetadataParametersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorActionBodyActionMetadataParametersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    options: value.options?,
                    required: value.required?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateEdgeConnectorActionBodyActionMetadataParametersItem,
        > for CreateEdgeConnectorActionBodyActionMetadataParametersItem {
            fn from(
                value: super::CreateEdgeConnectorActionBodyActionMetadataParametersItem,
            ) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    options: Ok(value.options),
                    required: Ok(value.required),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorBody {
            data: ::std::result::Result<
                super::CreateEdgeConnectorBodyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateEdgeConnectorBody {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl CreateEdgeConnectorBody {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateEdgeConnectorBodyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorBody>
        for super::CreateEdgeConnectorBody {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorBody,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorBody>
        for CreateEdgeConnectorBody {
            fn from(value: super::CreateEdgeConnectorBody) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorBodyData {
            attributes: ::std::result::Result<
                super::CreateEdgeConnectorBodyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::CreateEdgeConnectorBodyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateEdgeConnectorBodyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CreateEdgeConnectorBodyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateEdgeConnectorBodyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateEdgeConnectorBodyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorBodyData>
        for super::CreateEdgeConnectorBodyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorBodyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorBodyData>
        for CreateEdgeConnectorBodyData {
            fn from(value: super::CreateEdgeConnectorBodyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorBodyDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            filters: ::std::result::Result<
                ::std::option::Option<
                    super::CreateEdgeConnectorBodyDataAttributesFilters,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::CreateEdgeConnectorBodyDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            subscriptions: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateEdgeConnectorBodyDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    filters: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    status: Ok(Default::default()),
                    subscriptions: Ok(Default::default()),
                }
            }
        }
        impl CreateEdgeConnectorBodyDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn filters<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateEdgeConnectorBodyDataAttributesFilters,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.filters = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for filters: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateEdgeConnectorBodyDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn subscriptions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subscriptions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subscriptions: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorBodyDataAttributes>
        for super::CreateEdgeConnectorBodyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorBodyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    filters: value.filters?,
                    name: value.name?,
                    status: value.status?,
                    subscriptions: value.subscriptions?,
                })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorBodyDataAttributes>
        for CreateEdgeConnectorBodyDataAttributes {
            fn from(value: super::CreateEdgeConnectorBodyDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    filters: Ok(value.filters),
                    name: Ok(value.name),
                    status: Ok(value.status),
                    subscriptions: Ok(value.subscriptions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateEdgeConnectorBodyDataAttributesFilters {
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateEdgeConnectorBodyDataAttributesFilters {
            fn default() -> Self {
                Self {
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                }
            }
        }
        impl CreateEdgeConnectorBodyDataAttributesFilters {
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateEdgeConnectorBodyDataAttributesFilters>
        for super::CreateEdgeConnectorBodyDataAttributesFilters {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateEdgeConnectorBodyDataAttributesFilters,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    service_ids: value.service_ids?,
                })
            }
        }
        impl ::std::convert::From<super::CreateEdgeConnectorBodyDataAttributesFilters>
        for CreateEdgeConnectorBodyDataAttributesFilters {
            fn from(value: super::CreateEdgeConnectorBodyDataAttributesFilters) -> Self {
                Self {
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    service_ids: Ok(value.service_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGithubIssueTaskParams {
            body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            issue_type: ::std::result::Result<
                ::std::option::Option<super::CreateGithubIssueTaskParamsIssueType>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::CreateGithubIssueTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            parent_issue_number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repository: ::std::result::Result<
                super::CreateGithubIssueTaskParamsRepository,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateGithubIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateGithubIssueTaskParams {
            fn default() -> Self {
                Self {
                    body: Ok(Default::default()),
                    issue_type: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    parent_issue_number: Ok(Default::default()),
                    repository: Err("no value supplied for repository".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateGithubIssueTaskParams {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn issue_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGithubIssueTaskParamsIssueType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.issue_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_type: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateGithubIssueTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn parent_issue_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_issue_number = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_issue_number: {e}"
                        )
                    });
                self
            }
            pub fn repository<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateGithubIssueTaskParamsRepository>,
                T::Error: ::std::fmt::Display,
            {
                self.repository = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repository: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGithubIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGithubIssueTaskParams>
        for super::CreateGithubIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGithubIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    issue_type: value.issue_type?,
                    labels: value.labels?,
                    parent_issue_number: value.parent_issue_number?,
                    repository: value.repository?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGithubIssueTaskParams>
        for CreateGithubIssueTaskParams {
            fn from(value: super::CreateGithubIssueTaskParams) -> Self {
                Self {
                    body: Ok(value.body),
                    issue_type: Ok(value.issue_type),
                    labels: Ok(value.labels),
                    parent_issue_number: Ok(value.parent_issue_number),
                    repository: Ok(value.repository),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGithubIssueTaskParamsIssueType {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGithubIssueTaskParamsIssueType {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGithubIssueTaskParamsIssueType {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGithubIssueTaskParamsIssueType>
        for super::CreateGithubIssueTaskParamsIssueType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGithubIssueTaskParamsIssueType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGithubIssueTaskParamsIssueType>
        for CreateGithubIssueTaskParamsIssueType {
            fn from(value: super::CreateGithubIssueTaskParamsIssueType) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGithubIssueTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGithubIssueTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGithubIssueTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGithubIssueTaskParamsLabelsItem>
        for super::CreateGithubIssueTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGithubIssueTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGithubIssueTaskParamsLabelsItem>
        for CreateGithubIssueTaskParamsLabelsItem {
            fn from(value: super::CreateGithubIssueTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGithubIssueTaskParamsRepository {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGithubIssueTaskParamsRepository {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGithubIssueTaskParamsRepository {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGithubIssueTaskParamsRepository>
        for super::CreateGithubIssueTaskParamsRepository {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGithubIssueTaskParamsRepository,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGithubIssueTaskParamsRepository>
        for CreateGithubIssueTaskParamsRepository {
            fn from(value: super::CreateGithubIssueTaskParamsRepository) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGitlabIssueTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            issue_type: ::std::result::Result<
                ::std::option::Option<super::CreateGitlabIssueTaskParamsIssueType>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repository: ::std::result::Result<
                super::CreateGitlabIssueTaskParamsRepository,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateGitlabIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateGitlabIssueTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    issue_type: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    repository: Err("no value supplied for repository".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateGitlabIssueTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn issue_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGitlabIssueTaskParamsIssueType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.issue_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_type: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn repository<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateGitlabIssueTaskParamsRepository>,
                T::Error: ::std::fmt::Display,
            {
                self.repository = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repository: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGitlabIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGitlabIssueTaskParams>
        for super::CreateGitlabIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGitlabIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    due_date: value.due_date?,
                    issue_type: value.issue_type?,
                    labels: value.labels?,
                    repository: value.repository?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGitlabIssueTaskParams>
        for CreateGitlabIssueTaskParams {
            fn from(value: super::CreateGitlabIssueTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    issue_type: Ok(value.issue_type),
                    labels: Ok(value.labels),
                    repository: Ok(value.repository),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGitlabIssueTaskParamsRepository {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGitlabIssueTaskParamsRepository {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGitlabIssueTaskParamsRepository {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGitlabIssueTaskParamsRepository>
        for super::CreateGitlabIssueTaskParamsRepository {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGitlabIssueTaskParamsRepository,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGitlabIssueTaskParamsRepository>
        for CreateGitlabIssueTaskParamsRepository {
            fn from(value: super::CreateGitlabIssueTaskParamsRepository) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoToMeetingTaskParams {
            conference_call_info: ::std::result::Result<
                ::std::option::Option<
                    super::CreateGoToMeetingTaskParamsConferenceCallInfo,
                >,
                ::std::string::String,
            >,
            password_required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateGoToMeetingTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            subject: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateGoToMeetingTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoToMeetingTaskParams {
            fn default() -> Self {
                Self {
                    conference_call_info: Ok(Default::default()),
                    password_required: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    subject: Err("no value supplied for subject".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateGoToMeetingTaskParams {
            pub fn conference_call_info<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoToMeetingTaskParamsConferenceCallInfo,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conference_call_info = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conference_call_info: {e}"
                        )
                    });
                self
            }
            pub fn password_required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.password_required = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for password_required: {e}"
                        )
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateGoToMeetingTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subject: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoToMeetingTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoToMeetingTaskParams>
        for super::CreateGoToMeetingTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoToMeetingTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conference_call_info: value.conference_call_info?,
                    password_required: value.password_required?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    subject: value.subject?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoToMeetingTaskParams>
        for CreateGoToMeetingTaskParams {
            fn from(value: super::CreateGoToMeetingTaskParams) -> Self {
                Self {
                    conference_call_info: Ok(value.conference_call_info),
                    password_required: Ok(value.password_required),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    subject: Ok(value.subject),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoToMeetingTaskParamsPostToSlackChannelsItem>
        for super::CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoToMeetingTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateGoToMeetingTaskParamsPostToSlackChannelsItem,
        > for CreateGoToMeetingTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateGoToMeetingTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleCalendarEventTaskParams {
            attendees: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            calendar_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            can_guests_invite_others: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            can_guests_modify_event: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            can_guests_see_other_guests: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            conference_solution_key: ::std::result::Result<
                ::std::option::Option<
                    super::CreateGoogleCalendarEventTaskParamsConferenceSolutionKey,
                >,
                ::std::string::String,
            >,
            days_until_meeting: ::std::result::Result<i64, ::std::string::String>,
            description: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            exclude_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            meeting_duration: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            send_updates: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateGoogleCalendarEventTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            time_of_meeting: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoogleCalendarEventTaskParams {
            fn default() -> Self {
                Self {
                    attendees: Ok(Default::default()),
                    calendar_id: Ok(Default::default()),
                    can_guests_invite_others: Ok(Default::default()),
                    can_guests_modify_event: Ok(Default::default()),
                    can_guests_see_other_guests: Ok(Default::default()),
                    conference_solution_key: Ok(Default::default()),
                    days_until_meeting: Err(
                        "no value supplied for days_until_meeting".to_string(),
                    ),
                    description: Err("no value supplied for description".to_string()),
                    exclude_weekends: Ok(Default::default()),
                    meeting_duration: Err(
                        "no value supplied for meeting_duration".to_string(),
                    ),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    send_updates: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    task_type: Ok(Default::default()),
                    time_of_meeting: Err(
                        "no value supplied for time_of_meeting".to_string(),
                    ),
                    time_zone: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleCalendarEventTaskParams {
            pub fn attendees<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.attendees = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attendees: {e}")
                    });
                self
            }
            pub fn calendar_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.calendar_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for calendar_id: {e}")
                    });
                self
            }
            pub fn can_guests_invite_others<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.can_guests_invite_others = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for can_guests_invite_others: {e}"
                        )
                    });
                self
            }
            pub fn can_guests_modify_event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.can_guests_modify_event = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for can_guests_modify_event: {e}"
                        )
                    });
                self
            }
            pub fn can_guests_see_other_guests<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.can_guests_see_other_guests = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for can_guests_see_other_guests: {e}"
                        )
                    });
                self
            }
            pub fn conference_solution_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleCalendarEventTaskParamsConferenceSolutionKey,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conference_solution_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conference_solution_key: {e}"
                        )
                    });
                self
            }
            pub fn days_until_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.days_until_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for days_until_meeting: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn exclude_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.exclude_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for exclude_weekends: {e}"
                        )
                    });
                self
            }
            pub fn meeting_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.meeting_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for meeting_duration: {e}"
                        )
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn send_updates<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.send_updates = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for send_updates: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleCalendarEventTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn time_of_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.time_of_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_of_meeting: {e}"
                        )
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleCalendarEventTaskParams>
        for super::CreateGoogleCalendarEventTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleCalendarEventTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attendees: value.attendees?,
                    calendar_id: value.calendar_id?,
                    can_guests_invite_others: value.can_guests_invite_others?,
                    can_guests_modify_event: value.can_guests_modify_event?,
                    can_guests_see_other_guests: value.can_guests_see_other_guests?,
                    conference_solution_key: value.conference_solution_key?,
                    days_until_meeting: value.days_until_meeting?,
                    description: value.description?,
                    exclude_weekends: value.exclude_weekends?,
                    meeting_duration: value.meeting_duration?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    send_updates: value.send_updates?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                    time_of_meeting: value.time_of_meeting?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleCalendarEventTaskParams>
        for CreateGoogleCalendarEventTaskParams {
            fn from(value: super::CreateGoogleCalendarEventTaskParams) -> Self {
                Self {
                    attendees: Ok(value.attendees),
                    calendar_id: Ok(value.calendar_id),
                    can_guests_invite_others: Ok(value.can_guests_invite_others),
                    can_guests_modify_event: Ok(value.can_guests_modify_event),
                    can_guests_see_other_guests: Ok(value.can_guests_see_other_guests),
                    conference_solution_key: Ok(value.conference_solution_key),
                    days_until_meeting: Ok(value.days_until_meeting),
                    description: Ok(value.description),
                    exclude_weekends: Ok(value.exclude_weekends),
                    meeting_duration: Ok(value.meeting_duration),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    send_updates: Ok(value.send_updates),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    time_of_meeting: Ok(value.time_of_meeting),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
        > for super::CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
        > for CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleChatSpaceTaskParams {
            audience: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleChatSpaceTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateGoogleChatSpaceTaskParams {
            fn default() -> Self {
                Self {
                    audience: Ok(Default::default()),
                    description: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateGoogleChatSpaceTaskParams {
            pub fn audience<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.audience = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for audience: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleChatSpaceTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleChatSpaceTaskParams>
        for super::CreateGoogleChatSpaceTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleChatSpaceTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    audience: value.audience?,
                    description: value.description?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleChatSpaceTaskParams>
        for CreateGoogleChatSpaceTaskParams {
            fn from(value: super::CreateGoogleChatSpaceTaskParams) -> Self {
                Self {
                    audience: Ok(value.audience),
                    description: Ok(value.description),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleDocsPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            drive: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleDocsPageTaskParamsDrive>,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            parent_folder: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleDocsPageTaskParamsParentFolder>,
                ::std::string::String,
            >,
            permissions: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleDocsPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateGoogleDocsPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    drive: Ok(Default::default()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    parent_folder: Ok(Default::default()),
                    permissions: Ok(Default::default()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template_id: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateGoogleDocsPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn drive<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleDocsPageTaskParamsDrive>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.drive = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for drive: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn parent_folder<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleDocsPageTaskParamsParentFolder,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parent_folder = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parent_folder: {e}")
                    });
                self
            }
            pub fn permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for permissions: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleDocsPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_id: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleDocsPageTaskParams>
        for super::CreateGoogleDocsPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleDocsPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    drive: value.drive?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    parent_folder: value.parent_folder?,
                    permissions: value.permissions?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template_id: value.template_id?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleDocsPageTaskParams>
        for CreateGoogleDocsPageTaskParams {
            fn from(value: super::CreateGoogleDocsPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    drive: Ok(value.drive),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    parent_folder: Ok(value.parent_folder),
                    permissions: Ok(value.permissions),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template_id: Ok(value.template_id),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleDocsPageTaskParamsDrive {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoogleDocsPageTaskParamsDrive {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleDocsPageTaskParamsDrive {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleDocsPageTaskParamsDrive>
        for super::CreateGoogleDocsPageTaskParamsDrive {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleDocsPageTaskParamsDrive,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleDocsPageTaskParamsDrive>
        for CreateGoogleDocsPageTaskParamsDrive {
            fn from(value: super::CreateGoogleDocsPageTaskParamsDrive) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleDocsPageTaskParamsParentFolder {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoogleDocsPageTaskParamsParentFolder {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleDocsPageTaskParamsParentFolder {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleDocsPageTaskParamsParentFolder>
        for super::CreateGoogleDocsPageTaskParamsParentFolder {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleDocsPageTaskParamsParentFolder,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleDocsPageTaskParamsParentFolder>
        for CreateGoogleDocsPageTaskParamsParentFolder {
            fn from(value: super::CreateGoogleDocsPageTaskParamsParentFolder) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleDocsPermissionsTaskParams {
            email_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            permissions: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            send_notification_email: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateGoogleDocsPermissionsTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoogleDocsPermissionsTaskParams {
            fn default() -> Self {
                Self {
                    email_message: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    permissions: Err("no value supplied for permissions".to_string()),
                    send_notification_email: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleDocsPermissionsTaskParams {
            pub fn email_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_message: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for permissions: {e}")
                    });
                self
            }
            pub fn send_notification_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.send_notification_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for send_notification_email: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleDocsPermissionsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleDocsPermissionsTaskParams>
        for super::CreateGoogleDocsPermissionsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleDocsPermissionsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    email_message: value.email_message?,
                    file_id: value.file_id?,
                    permissions: value.permissions?,
                    send_notification_email: value.send_notification_email?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleDocsPermissionsTaskParams>
        for CreateGoogleDocsPermissionsTaskParams {
            fn from(value: super::CreateGoogleDocsPermissionsTaskParams) -> Self {
                Self {
                    email_message: Ok(value.email_message),
                    file_id: Ok(value.file_id),
                    permissions: Ok(value.permissions),
                    send_notification_email: Ok(value.send_notification_email),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleGeminiChatCompletionTaskParams {
            model: ::std::result::Result<
                super::CreateGoogleGeminiChatCompletionTaskParamsModel,
                ::std::string::String,
            >,
            prompt: ::std::result::Result<::std::string::String, ::std::string::String>,
            system_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateGoogleGeminiChatCompletionTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoogleGeminiChatCompletionTaskParams {
            fn default() -> Self {
                Self {
                    model: Err("no value supplied for model".to_string()),
                    prompt: Err("no value supplied for prompt".to_string()),
                    system_prompt: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleGeminiChatCompletionTaskParams {
            pub fn model<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateGoogleGeminiChatCompletionTaskParamsModel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.model = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for model: {e}")
                    });
                self
            }
            pub fn prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prompt: {e}")
                    });
                self
            }
            pub fn system_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.system_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_prompt: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleGeminiChatCompletionTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleGeminiChatCompletionTaskParams>
        for super::CreateGoogleGeminiChatCompletionTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleGeminiChatCompletionTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    model: value.model?,
                    prompt: value.prompt?,
                    system_prompt: value.system_prompt?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleGeminiChatCompletionTaskParams>
        for CreateGoogleGeminiChatCompletionTaskParams {
            fn from(value: super::CreateGoogleGeminiChatCompletionTaskParams) -> Self {
                Self {
                    model: Ok(value.model),
                    prompt: Ok(value.prompt),
                    system_prompt: Ok(value.system_prompt),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleGeminiChatCompletionTaskParamsModel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateGoogleGeminiChatCompletionTaskParamsModel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleGeminiChatCompletionTaskParamsModel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleGeminiChatCompletionTaskParamsModel>
        for super::CreateGoogleGeminiChatCompletionTaskParamsModel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleGeminiChatCompletionTaskParamsModel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleGeminiChatCompletionTaskParamsModel>
        for CreateGoogleGeminiChatCompletionTaskParamsModel {
            fn from(
                value: super::CreateGoogleGeminiChatCompletionTaskParamsModel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleMeetingTaskParams {
            conference_solution_key: ::std::result::Result<
                ::std::option::Option<
                    super::CreateGoogleMeetingTaskParamsConferenceSolutionKey,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            record_meeting: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            recording_mode: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleMeetingTaskParamsRecordingMode>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleMeetingTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateGoogleMeetingTaskParams {
            fn default() -> Self {
                Self {
                    conference_solution_key: Ok(Default::default()),
                    description: Err("no value supplied for description".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    record_meeting: Ok(Default::default()),
                    recording_mode: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleMeetingTaskParams {
            pub fn conference_solution_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleMeetingTaskParamsConferenceSolutionKey,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conference_solution_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conference_solution_key: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn record_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.record_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for record_meeting: {e}"
                        )
                    });
                self
            }
            pub fn recording_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleMeetingTaskParamsRecordingMode,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.recording_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for recording_mode: {e}"
                        )
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleMeetingTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateGoogleMeetingTaskParams>
        for super::CreateGoogleMeetingTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleMeetingTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conference_solution_key: value.conference_solution_key?,
                    description: value.description?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    record_meeting: value.record_meeting?,
                    recording_mode: value.recording_mode?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateGoogleMeetingTaskParams>
        for CreateGoogleMeetingTaskParams {
            fn from(value: super::CreateGoogleMeetingTaskParams) -> Self {
                Self {
                    conference_solution_key: Ok(value.conference_solution_key),
                    description: Ok(value.description),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    record_meeting: Ok(value.record_meeting),
                    recording_mode: Ok(value.recording_mode),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
        > for super::CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
        > for CreateGoogleMeetingTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateGoogleMeetingTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateIncidentPostmortemTaskParams {
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateIncidentPostmortemTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::CreateIncidentPostmortemTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateIncidentPostmortemTaskParams {
            fn default() -> Self {
                Self {
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateIncidentPostmortemTaskParams {
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateIncidentPostmortemTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateIncidentPostmortemTaskParamsTemplate,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateIncidentPostmortemTaskParams>
        for super::CreateIncidentPostmortemTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateIncidentPostmortemTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_id: value.incident_id?,
                    status: value.status?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateIncidentPostmortemTaskParams>
        for CreateIncidentPostmortemTaskParams {
            fn from(value: super::CreateIncidentPostmortemTaskParams) -> Self {
                Self {
                    incident_id: Ok(value.incident_id),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateIncidentPostmortemTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateIncidentPostmortemTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateIncidentPostmortemTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateIncidentPostmortemTaskParamsTemplate>
        for super::CreateIncidentPostmortemTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateIncidentPostmortemTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateIncidentPostmortemTaskParamsTemplate>
        for CreateIncidentPostmortemTaskParamsTemplate {
            fn from(value: super::CreateIncidentPostmortemTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateIncidentTaskParams {
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            severity_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateIncidentTaskParams {
            fn default() -> Self {
                Self {
                    custom_fields_mapping: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    private: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_id: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateIncidentTaskParams {
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_id: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateIncidentTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateIncidentTaskParams>
        for super::CreateIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_fields_mapping: value.custom_fields_mapping?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    private: value.private?,
                    service_ids: value.service_ids?,
                    severity_id: value.severity_id?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateIncidentTaskParams>
        for CreateIncidentTaskParams {
            fn from(value: super::CreateIncidentTaskParams) -> Self {
                Self {
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    private: Ok(value.private),
                    service_ids: Ok(value.service_ids),
                    severity_id: Ok(value.severity_id),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraIssueTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            integration: ::std::result::Result<
                ::std::option::Option<super::CreateJiraIssueTaskParamsIntegration>,
                ::std::string::String,
            >,
            issue_type: ::std::result::Result<
                super::CreateJiraIssueTaskParamsIssueType,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateJiraIssueTaskParamsPriority>,
                ::std::string::String,
            >,
            project_key: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            reporter_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::CreateJiraIssueTaskParamsStatus>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateJiraIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            update_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraIssueTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    integration: Ok(Default::default()),
                    issue_type: Err("no value supplied for issue_type".to_string()),
                    labels: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    project_key: Err("no value supplied for project_key".to_string()),
                    reporter_user_email: Ok(Default::default()),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    update_payload: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraIssueTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn integration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraIssueTaskParamsIntegration>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for integration: {e}")
                    });
                self
            }
            pub fn issue_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateJiraIssueTaskParamsIssueType>,
                T::Error: ::std::fmt::Display,
            {
                self.issue_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_type: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraIssueTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn project_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.project_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project_key: {e}")
                    });
                self
            }
            pub fn reporter_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.reporter_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for reporter_user_email: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraIssueTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn update_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for update_payload: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraIssueTaskParams>
        for super::CreateJiraIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    due_date: value.due_date?,
                    integration: value.integration?,
                    issue_type: value.issue_type?,
                    labels: value.labels?,
                    priority: value.priority?,
                    project_key: value.project_key?,
                    reporter_user_email: value.reporter_user_email?,
                    status: value.status?,
                    task_type: value.task_type?,
                    title: value.title?,
                    update_payload: value.update_payload?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraIssueTaskParams>
        for CreateJiraIssueTaskParams {
            fn from(value: super::CreateJiraIssueTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    integration: Ok(value.integration),
                    issue_type: Ok(value.issue_type),
                    labels: Ok(value.labels),
                    priority: Ok(value.priority),
                    project_key: Ok(value.project_key),
                    reporter_user_email: Ok(value.reporter_user_email),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    update_payload: Ok(value.update_payload),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraIssueTaskParamsIntegration {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraIssueTaskParamsIntegration {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraIssueTaskParamsIntegration {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraIssueTaskParamsIntegration>
        for super::CreateJiraIssueTaskParamsIntegration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraIssueTaskParamsIntegration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraIssueTaskParamsIntegration>
        for CreateJiraIssueTaskParamsIntegration {
            fn from(value: super::CreateJiraIssueTaskParamsIntegration) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraIssueTaskParamsIssueType {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraIssueTaskParamsIssueType {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraIssueTaskParamsIssueType {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraIssueTaskParamsIssueType>
        for super::CreateJiraIssueTaskParamsIssueType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraIssueTaskParamsIssueType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraIssueTaskParamsIssueType>
        for CreateJiraIssueTaskParamsIssueType {
            fn from(value: super::CreateJiraIssueTaskParamsIssueType) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraIssueTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraIssueTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraIssueTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraIssueTaskParamsPriority>
        for super::CreateJiraIssueTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraIssueTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraIssueTaskParamsPriority>
        for CreateJiraIssueTaskParamsPriority {
            fn from(value: super::CreateJiraIssueTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraIssueTaskParamsStatus {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraIssueTaskParamsStatus {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraIssueTaskParamsStatus {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraIssueTaskParamsStatus>
        for super::CreateJiraIssueTaskParamsStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraIssueTaskParamsStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraIssueTaskParamsStatus>
        for CreateJiraIssueTaskParamsStatus {
            fn from(value: super::CreateJiraIssueTaskParamsStatus) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraSubtaskTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            integration: ::std::result::Result<
                ::std::option::Option<super::CreateJiraSubtaskTaskParamsIntegration>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            parent_issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateJiraSubtaskTaskParamsPriority>,
                ::std::string::String,
            >,
            project_key: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            reporter_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::CreateJiraSubtaskTaskParamsStatus>,
                ::std::string::String,
            >,
            subtask_issue_type: ::std::result::Result<
                super::CreateJiraSubtaskTaskParamsSubtaskIssueType,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateJiraSubtaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            update_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraSubtaskTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    integration: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    parent_issue_id: Err(
                        "no value supplied for parent_issue_id".to_string(),
                    ),
                    priority: Ok(Default::default()),
                    project_key: Err("no value supplied for project_key".to_string()),
                    reporter_user_email: Ok(Default::default()),
                    status: Ok(Default::default()),
                    subtask_issue_type: Err(
                        "no value supplied for subtask_issue_type".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    update_payload: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraSubtaskTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn integration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraSubtaskTaskParamsIntegration>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for integration: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn parent_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_issue_id: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraSubtaskTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn project_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.project_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project_key: {e}")
                    });
                self
            }
            pub fn reporter_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.reporter_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for reporter_user_email: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraSubtaskTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn subtask_issue_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateJiraSubtaskTaskParamsSubtaskIssueType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtask_issue_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for subtask_issue_type: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraSubtaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn update_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for update_payload: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraSubtaskTaskParams>
        for super::CreateJiraSubtaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraSubtaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    due_date: value.due_date?,
                    integration: value.integration?,
                    labels: value.labels?,
                    parent_issue_id: value.parent_issue_id?,
                    priority: value.priority?,
                    project_key: value.project_key?,
                    reporter_user_email: value.reporter_user_email?,
                    status: value.status?,
                    subtask_issue_type: value.subtask_issue_type?,
                    task_type: value.task_type?,
                    title: value.title?,
                    update_payload: value.update_payload?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraSubtaskTaskParams>
        for CreateJiraSubtaskTaskParams {
            fn from(value: super::CreateJiraSubtaskTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    integration: Ok(value.integration),
                    labels: Ok(value.labels),
                    parent_issue_id: Ok(value.parent_issue_id),
                    priority: Ok(value.priority),
                    project_key: Ok(value.project_key),
                    reporter_user_email: Ok(value.reporter_user_email),
                    status: Ok(value.status),
                    subtask_issue_type: Ok(value.subtask_issue_type),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    update_payload: Ok(value.update_payload),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraSubtaskTaskParamsIntegration {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraSubtaskTaskParamsIntegration {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraSubtaskTaskParamsIntegration {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraSubtaskTaskParamsIntegration>
        for super::CreateJiraSubtaskTaskParamsIntegration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraSubtaskTaskParamsIntegration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraSubtaskTaskParamsIntegration>
        for CreateJiraSubtaskTaskParamsIntegration {
            fn from(value: super::CreateJiraSubtaskTaskParamsIntegration) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraSubtaskTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraSubtaskTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraSubtaskTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraSubtaskTaskParamsPriority>
        for super::CreateJiraSubtaskTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraSubtaskTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraSubtaskTaskParamsPriority>
        for CreateJiraSubtaskTaskParamsPriority {
            fn from(value: super::CreateJiraSubtaskTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraSubtaskTaskParamsStatus {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraSubtaskTaskParamsStatus {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraSubtaskTaskParamsStatus {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraSubtaskTaskParamsStatus>
        for super::CreateJiraSubtaskTaskParamsStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraSubtaskTaskParamsStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraSubtaskTaskParamsStatus>
        for CreateJiraSubtaskTaskParamsStatus {
            fn from(value: super::CreateJiraSubtaskTaskParamsStatus) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJiraSubtaskTaskParamsSubtaskIssueType {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJiraSubtaskTaskParamsSubtaskIssueType {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJiraSubtaskTaskParamsSubtaskIssueType {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJiraSubtaskTaskParamsSubtaskIssueType>
        for super::CreateJiraSubtaskTaskParamsSubtaskIssueType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJiraSubtaskTaskParamsSubtaskIssueType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJiraSubtaskTaskParamsSubtaskIssueType>
        for CreateJiraSubtaskTaskParamsSubtaskIssueType {
            fn from(value: super::CreateJiraSubtaskTaskParamsSubtaskIssueType) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJsmopsAlertTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            details: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            escalations: ::std::result::Result<
                ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsEscalationsItem>,
                ::std::string::String,
            >,
            message: ::std::result::Result<::std::string::String, ::std::string::String>,
            priority: ::std::result::Result<
                super::CreateJsmopsAlertTaskParamsPriority,
                ::std::string::String,
            >,
            schedules: ::std::result::Result<
                ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsSchedulesItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateJsmopsAlertTaskParamsTaskType>,
                ::std::string::String,
            >,
            teams: ::std::result::Result<
                ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsTeamsItem>,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJsmopsAlertTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    details: Ok(Default::default()),
                    escalations: Ok(Default::default()),
                    message: Err("no value supplied for message".to_string()),
                    priority: Ok(
                        super::defaults::create_jsmops_alert_task_params_priority(),
                    ),
                    schedules: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    teams: Ok(Default::default()),
                    users: Ok(Default::default()),
                }
            }
        }
        impl CreateJsmopsAlertTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.details = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for details: {e}")
                    });
                self
            }
            pub fn escalations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsEscalationsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalations = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for escalations: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateJsmopsAlertTaskParamsPriority>,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn schedules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsSchedulesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedules: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJsmopsAlertTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn teams<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsTeamsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.teams = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for teams: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateJsmopsAlertTaskParamsUsersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJsmopsAlertTaskParams>
        for super::CreateJsmopsAlertTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJsmopsAlertTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    details: value.details?,
                    escalations: value.escalations?,
                    message: value.message?,
                    priority: value.priority?,
                    schedules: value.schedules?,
                    task_type: value.task_type?,
                    teams: value.teams?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJsmopsAlertTaskParams>
        for CreateJsmopsAlertTaskParams {
            fn from(value: super::CreateJsmopsAlertTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    details: Ok(value.details),
                    escalations: Ok(value.escalations),
                    message: Ok(value.message),
                    priority: Ok(value.priority),
                    schedules: Ok(value.schedules),
                    task_type: Ok(value.task_type),
                    teams: Ok(value.teams),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJsmopsAlertTaskParamsEscalationsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJsmopsAlertTaskParamsEscalationsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJsmopsAlertTaskParamsEscalationsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJsmopsAlertTaskParamsEscalationsItem>
        for super::CreateJsmopsAlertTaskParamsEscalationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJsmopsAlertTaskParamsEscalationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJsmopsAlertTaskParamsEscalationsItem>
        for CreateJsmopsAlertTaskParamsEscalationsItem {
            fn from(value: super::CreateJsmopsAlertTaskParamsEscalationsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJsmopsAlertTaskParamsSchedulesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJsmopsAlertTaskParamsSchedulesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJsmopsAlertTaskParamsSchedulesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJsmopsAlertTaskParamsSchedulesItem>
        for super::CreateJsmopsAlertTaskParamsSchedulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJsmopsAlertTaskParamsSchedulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJsmopsAlertTaskParamsSchedulesItem>
        for CreateJsmopsAlertTaskParamsSchedulesItem {
            fn from(value: super::CreateJsmopsAlertTaskParamsSchedulesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJsmopsAlertTaskParamsTeamsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJsmopsAlertTaskParamsTeamsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJsmopsAlertTaskParamsTeamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJsmopsAlertTaskParamsTeamsItem>
        for super::CreateJsmopsAlertTaskParamsTeamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJsmopsAlertTaskParamsTeamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJsmopsAlertTaskParamsTeamsItem>
        for CreateJsmopsAlertTaskParamsTeamsItem {
            fn from(value: super::CreateJsmopsAlertTaskParamsTeamsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateJsmopsAlertTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateJsmopsAlertTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateJsmopsAlertTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateJsmopsAlertTaskParamsUsersItem>
        for super::CreateJsmopsAlertTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateJsmopsAlertTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateJsmopsAlertTaskParamsUsersItem>
        for CreateJsmopsAlertTaskParamsUsersItem {
            fn from(value: super::CreateJsmopsAlertTaskParamsUsersItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueCommentTaskParams {
            body: ::std::result::Result<::std::string::String, ::std::string::String>,
            issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateLinearIssueCommentTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearIssueCommentTaskParams {
            fn default() -> Self {
                Self {
                    body: Err("no value supplied for body".to_string()),
                    issue_id: Err("no value supplied for issue_id".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearIssueCommentTaskParams {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateLinearIssueCommentTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueCommentTaskParams>
        for super::CreateLinearIssueCommentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueCommentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    issue_id: value.issue_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueCommentTaskParams>
        for CreateLinearIssueCommentTaskParams {
            fn from(value: super::CreateLinearIssueCommentTaskParams) -> Self {
                Self {
                    body: Ok(value.body),
                    issue_id: Ok(value.issue_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::CreateLinearIssueTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateLinearIssueTaskParamsPriority>,
                ::std::string::String,
            >,
            project: ::std::result::Result<
                ::std::option::Option<super::CreateLinearIssueTaskParamsProject>,
                ::std::string::String,
            >,
            state: ::std::result::Result<
                super::CreateLinearIssueTaskParamsState,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateLinearIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                super::CreateLinearIssueTaskParamsTeam,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateLinearIssueTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    description: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    project: Ok(Default::default()),
                    state: Err("no value supplied for state".to_string()),
                    task_type: Ok(Default::default()),
                    team: Err("no value supplied for team".to_string()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateLinearIssueTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateLinearIssueTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateLinearIssueTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn project<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateLinearIssueTaskParamsProject>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.project = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project: {e}")
                    });
                self
            }
            pub fn state<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateLinearIssueTaskParamsState>,
                T::Error: ::std::fmt::Display,
            {
                self.state = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for state: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateLinearIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateLinearIssueTaskParamsTeam>,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueTaskParams>
        for super::CreateLinearIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    description: value.description?,
                    labels: value.labels?,
                    priority: value.priority?,
                    project: value.project?,
                    state: value.state?,
                    task_type: value.task_type?,
                    team: value.team?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueTaskParams>
        for CreateLinearIssueTaskParams {
            fn from(value: super::CreateLinearIssueTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    description: Ok(value.description),
                    labels: Ok(value.labels),
                    priority: Ok(value.priority),
                    project: Ok(value.project),
                    state: Ok(value.state),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearIssueTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearIssueTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueTaskParamsLabelsItem>
        for super::CreateLinearIssueTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueTaskParamsLabelsItem>
        for CreateLinearIssueTaskParamsLabelsItem {
            fn from(value: super::CreateLinearIssueTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearIssueTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearIssueTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueTaskParamsPriority>
        for super::CreateLinearIssueTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueTaskParamsPriority>
        for CreateLinearIssueTaskParamsPriority {
            fn from(value: super::CreateLinearIssueTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueTaskParamsProject {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearIssueTaskParamsProject {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearIssueTaskParamsProject {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueTaskParamsProject>
        for super::CreateLinearIssueTaskParamsProject {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueTaskParamsProject,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueTaskParamsProject>
        for CreateLinearIssueTaskParamsProject {
            fn from(value: super::CreateLinearIssueTaskParamsProject) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueTaskParamsState {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearIssueTaskParamsState {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearIssueTaskParamsState {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueTaskParamsState>
        for super::CreateLinearIssueTaskParamsState {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueTaskParamsState,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueTaskParamsState>
        for CreateLinearIssueTaskParamsState {
            fn from(value: super::CreateLinearIssueTaskParamsState) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearIssueTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearIssueTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearIssueTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearIssueTaskParamsTeam>
        for super::CreateLinearIssueTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearIssueTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearIssueTaskParamsTeam>
        for CreateLinearIssueTaskParamsTeam {
            fn from(value: super::CreateLinearIssueTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearSubtaskIssueTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::CreateLinearSubtaskIssueTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            parent_issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateLinearSubtaskIssueTaskParamsPriority>,
                ::std::string::String,
            >,
            state: ::std::result::Result<
                super::CreateLinearSubtaskIssueTaskParamsState,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateLinearSubtaskIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateLinearSubtaskIssueTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    description: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    parent_issue_id: Err(
                        "no value supplied for parent_issue_id".to_string(),
                    ),
                    priority: Ok(Default::default()),
                    state: Err("no value supplied for state".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateLinearSubtaskIssueTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateLinearSubtaskIssueTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn parent_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_issue_id: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateLinearSubtaskIssueTaskParamsPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn state<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateLinearSubtaskIssueTaskParamsState,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.state = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for state: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateLinearSubtaskIssueTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearSubtaskIssueTaskParams>
        for super::CreateLinearSubtaskIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearSubtaskIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    description: value.description?,
                    labels: value.labels?,
                    parent_issue_id: value.parent_issue_id?,
                    priority: value.priority?,
                    state: value.state?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearSubtaskIssueTaskParams>
        for CreateLinearSubtaskIssueTaskParams {
            fn from(value: super::CreateLinearSubtaskIssueTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    description: Ok(value.description),
                    labels: Ok(value.labels),
                    parent_issue_id: Ok(value.parent_issue_id),
                    priority: Ok(value.priority),
                    state: Ok(value.state),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearSubtaskIssueTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearSubtaskIssueTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearSubtaskIssueTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearSubtaskIssueTaskParamsLabelsItem>
        for super::CreateLinearSubtaskIssueTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearSubtaskIssueTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearSubtaskIssueTaskParamsLabelsItem>
        for CreateLinearSubtaskIssueTaskParamsLabelsItem {
            fn from(value: super::CreateLinearSubtaskIssueTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearSubtaskIssueTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearSubtaskIssueTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearSubtaskIssueTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearSubtaskIssueTaskParamsPriority>
        for super::CreateLinearSubtaskIssueTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearSubtaskIssueTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearSubtaskIssueTaskParamsPriority>
        for CreateLinearSubtaskIssueTaskParamsPriority {
            fn from(value: super::CreateLinearSubtaskIssueTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateLinearSubtaskIssueTaskParamsState {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateLinearSubtaskIssueTaskParamsState {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateLinearSubtaskIssueTaskParamsState {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateLinearSubtaskIssueTaskParamsState>
        for super::CreateLinearSubtaskIssueTaskParamsState {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateLinearSubtaskIssueTaskParamsState,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateLinearSubtaskIssueTaskParamsState>
        for CreateLinearSubtaskIssueTaskParamsState {
            fn from(value: super::CreateLinearSubtaskIssueTaskParamsState) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMicrosoftTeamsChannelTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                super::CreateMicrosoftTeamsChannelTaskParamsPrivate,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateMicrosoftTeamsChannelTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                super::CreateMicrosoftTeamsChannelTaskParamsTeam,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateMicrosoftTeamsChannelTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    private: Ok(
                        super::defaults::create_microsoft_teams_channel_task_params_private(),
                    ),
                    task_type: Ok(Default::default()),
                    team: Err("no value supplied for team".to_string()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateMicrosoftTeamsChannelTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateMicrosoftTeamsChannelTaskParamsPrivate,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateMicrosoftTeamsChannelTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateMicrosoftTeamsChannelTaskParamsTeam,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMicrosoftTeamsChannelTaskParams>
        for super::CreateMicrosoftTeamsChannelTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMicrosoftTeamsChannelTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    private: value.private?,
                    task_type: value.task_type?,
                    team: value.team?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMicrosoftTeamsChannelTaskParams>
        for CreateMicrosoftTeamsChannelTaskParams {
            fn from(value: super::CreateMicrosoftTeamsChannelTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    private: Ok(value.private),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMicrosoftTeamsChannelTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMicrosoftTeamsChannelTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMicrosoftTeamsChannelTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMicrosoftTeamsChannelTaskParamsTeam>
        for super::CreateMicrosoftTeamsChannelTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMicrosoftTeamsChannelTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMicrosoftTeamsChannelTaskParamsTeam>
        for CreateMicrosoftTeamsChannelTaskParamsTeam {
            fn from(value: super::CreateMicrosoftTeamsChannelTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMicrosoftTeamsChatTaskParams {
            chat_type: ::std::result::Result<
                super::CreateMicrosoftTeamsChatTaskParamsChatType,
                ::std::string::String,
            >,
            members: ::std::result::Result<
                ::std::vec::Vec<super::CreateMicrosoftTeamsChatTaskParamsMembersItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateMicrosoftTeamsChatTaskParamsTaskType>,
                ::std::string::String,
            >,
            topic: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMicrosoftTeamsChatTaskParams {
            fn default() -> Self {
                Self {
                    chat_type: Ok(
                        super::defaults::create_microsoft_teams_chat_task_params_chat_type(),
                    ),
                    members: Err("no value supplied for members".to_string()),
                    task_type: Ok(Default::default()),
                    topic: Ok(Default::default()),
                }
            }
        }
        impl CreateMicrosoftTeamsChatTaskParams {
            pub fn chat_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateMicrosoftTeamsChatTaskParamsChatType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.chat_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for chat_type: {e}")
                    });
                self
            }
            pub fn members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateMicrosoftTeamsChatTaskParamsMembersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.members = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for members: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateMicrosoftTeamsChatTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn topic<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.topic = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for topic: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMicrosoftTeamsChatTaskParams>
        for super::CreateMicrosoftTeamsChatTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMicrosoftTeamsChatTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    chat_type: value.chat_type?,
                    members: value.members?,
                    task_type: value.task_type?,
                    topic: value.topic?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMicrosoftTeamsChatTaskParams>
        for CreateMicrosoftTeamsChatTaskParams {
            fn from(value: super::CreateMicrosoftTeamsChatTaskParams) -> Self {
                Self {
                    chat_type: Ok(value.chat_type),
                    members: Ok(value.members),
                    task_type: Ok(value.task_type),
                    topic: Ok(value.topic),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMicrosoftTeamsChatTaskParamsMembersItem {
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMicrosoftTeamsChatTaskParamsMembersItem {
            fn default() -> Self {
                Self {
                    email: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMicrosoftTeamsChatTaskParamsMembersItem {
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMicrosoftTeamsChatTaskParamsMembersItem>
        for super::CreateMicrosoftTeamsChatTaskParamsMembersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMicrosoftTeamsChatTaskParamsMembersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    email: value.email?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMicrosoftTeamsChatTaskParamsMembersItem>
        for CreateMicrosoftTeamsChatTaskParamsMembersItem {
            fn from(
                value: super::CreateMicrosoftTeamsChatTaskParamsMembersItem,
            ) -> Self {
                Self {
                    email: Ok(value.email),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMicrosoftTeamsMeetingTaskParams {
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            record_meeting: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            recording_mode: ::std::result::Result<
                ::std::option::Option<
                    super::CreateMicrosoftTeamsMeetingTaskParamsRecordingMode,
                >,
                ::std::string::String,
            >,
            subject: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateMicrosoftTeamsMeetingTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMicrosoftTeamsMeetingTaskParams {
            fn default() -> Self {
                Self {
                    name: Err("no value supplied for name".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    record_meeting: Ok(Default::default()),
                    recording_mode: Ok(Default::default()),
                    subject: Err("no value supplied for subject".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateMicrosoftTeamsMeetingTaskParams {
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn record_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.record_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for record_meeting: {e}"
                        )
                    });
                self
            }
            pub fn recording_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateMicrosoftTeamsMeetingTaskParamsRecordingMode,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.recording_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for recording_mode: {e}"
                        )
                    });
                self
            }
            pub fn subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subject: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateMicrosoftTeamsMeetingTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMicrosoftTeamsMeetingTaskParams>
        for super::CreateMicrosoftTeamsMeetingTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMicrosoftTeamsMeetingTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    name: value.name?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    record_meeting: value.record_meeting?,
                    recording_mode: value.recording_mode?,
                    subject: value.subject?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMicrosoftTeamsMeetingTaskParams>
        for CreateMicrosoftTeamsMeetingTaskParams {
            fn from(value: super::CreateMicrosoftTeamsMeetingTaskParams) -> Self {
                Self {
                    name: Ok(value.name),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    record_meeting: Ok(value.record_meeting),
                    recording_mode: Ok(value.recording_mode),
                    subject: Ok(value.subject),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
        > for super::CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
        > for CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateMicrosoftTeamsMeetingTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMistralChatCompletionTaskParams {
            max_tokens: ::std::result::Result<
                ::std::option::Option<::std::num::NonZeroU64>,
                ::std::string::String,
            >,
            model: ::std::result::Result<
                super::CreateMistralChatCompletionTaskParamsModel,
                ::std::string::String,
            >,
            prompt: ::std::result::Result<::std::string::String, ::std::string::String>,
            system_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateMistralChatCompletionTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            temperature: ::std::result::Result<
                ::std::option::Option<f64>,
                ::std::string::String,
            >,
            top_p: ::std::result::Result<
                ::std::option::Option<f64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMistralChatCompletionTaskParams {
            fn default() -> Self {
                Self {
                    max_tokens: Ok(Default::default()),
                    model: Err("no value supplied for model".to_string()),
                    prompt: Err("no value supplied for prompt".to_string()),
                    system_prompt: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    temperature: Ok(Default::default()),
                    top_p: Ok(Default::default()),
                }
            }
        }
        impl CreateMistralChatCompletionTaskParams {
            pub fn max_tokens<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::num::NonZeroU64>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.max_tokens = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for max_tokens: {e}")
                    });
                self
            }
            pub fn model<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateMistralChatCompletionTaskParamsModel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.model = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for model: {e}")
                    });
                self
            }
            pub fn prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prompt: {e}")
                    });
                self
            }
            pub fn system_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.system_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_prompt: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateMistralChatCompletionTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn temperature<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<f64>>,
                T::Error: ::std::fmt::Display,
            {
                self.temperature = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for temperature: {e}")
                    });
                self
            }
            pub fn top_p<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<f64>>,
                T::Error: ::std::fmt::Display,
            {
                self.top_p = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for top_p: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMistralChatCompletionTaskParams>
        for super::CreateMistralChatCompletionTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMistralChatCompletionTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    max_tokens: value.max_tokens?,
                    model: value.model?,
                    prompt: value.prompt?,
                    system_prompt: value.system_prompt?,
                    task_type: value.task_type?,
                    temperature: value.temperature?,
                    top_p: value.top_p?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMistralChatCompletionTaskParams>
        for CreateMistralChatCompletionTaskParams {
            fn from(value: super::CreateMistralChatCompletionTaskParams) -> Self {
                Self {
                    max_tokens: Ok(value.max_tokens),
                    model: Ok(value.model),
                    prompt: Ok(value.prompt),
                    system_prompt: Ok(value.system_prompt),
                    task_type: Ok(value.task_type),
                    temperature: Ok(value.temperature),
                    top_p: Ok(value.top_p),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMistralChatCompletionTaskParamsModel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMistralChatCompletionTaskParamsModel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMistralChatCompletionTaskParamsModel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMistralChatCompletionTaskParamsModel>
        for super::CreateMistralChatCompletionTaskParamsModel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMistralChatCompletionTaskParamsModel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMistralChatCompletionTaskParamsModel>
        for CreateMistralChatCompletionTaskParamsModel {
            fn from(value: super::CreateMistralChatCompletionTaskParamsModel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMotionTaskTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateMotionTaskTaskParamsPriority>,
                ::std::string::String,
            >,
            project: ::std::result::Result<
                ::std::option::Option<super::CreateMotionTaskTaskParamsProject>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::CreateMotionTaskTaskParamsStatus>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateMotionTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            workspace: ::std::result::Result<
                super::CreateMotionTaskTaskParamsWorkspace,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMotionTaskTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    duration: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    project: Ok(Default::default()),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    workspace: Err("no value supplied for workspace".to_string()),
                }
            }
        }
        impl CreateMotionTaskTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.duration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for duration: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMotionTaskTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn project<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMotionTaskTaskParamsProject>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.project = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMotionTaskTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMotionTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn workspace<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateMotionTaskTaskParamsWorkspace>,
                T::Error: ::std::fmt::Display,
            {
                self.workspace = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workspace: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMotionTaskTaskParams>
        for super::CreateMotionTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMotionTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    due_date: value.due_date?,
                    duration: value.duration?,
                    labels: value.labels?,
                    priority: value.priority?,
                    project: value.project?,
                    status: value.status?,
                    task_type: value.task_type?,
                    title: value.title?,
                    workspace: value.workspace?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMotionTaskTaskParams>
        for CreateMotionTaskTaskParams {
            fn from(value: super::CreateMotionTaskTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    duration: Ok(value.duration),
                    labels: Ok(value.labels),
                    priority: Ok(value.priority),
                    project: Ok(value.project),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    workspace: Ok(value.workspace),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMotionTaskTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMotionTaskTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMotionTaskTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMotionTaskTaskParamsPriority>
        for super::CreateMotionTaskTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMotionTaskTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMotionTaskTaskParamsPriority>
        for CreateMotionTaskTaskParamsPriority {
            fn from(value: super::CreateMotionTaskTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMotionTaskTaskParamsProject {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMotionTaskTaskParamsProject {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMotionTaskTaskParamsProject {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMotionTaskTaskParamsProject>
        for super::CreateMotionTaskTaskParamsProject {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMotionTaskTaskParamsProject,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMotionTaskTaskParamsProject>
        for CreateMotionTaskTaskParamsProject {
            fn from(value: super::CreateMotionTaskTaskParamsProject) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMotionTaskTaskParamsStatus {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMotionTaskTaskParamsStatus {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMotionTaskTaskParamsStatus {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMotionTaskTaskParamsStatus>
        for super::CreateMotionTaskTaskParamsStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMotionTaskTaskParamsStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMotionTaskTaskParamsStatus>
        for CreateMotionTaskTaskParamsStatus {
            fn from(value: super::CreateMotionTaskTaskParamsStatus) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateMotionTaskTaskParamsWorkspace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateMotionTaskTaskParamsWorkspace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateMotionTaskTaskParamsWorkspace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateMotionTaskTaskParamsWorkspace>
        for super::CreateMotionTaskTaskParamsWorkspace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateMotionTaskTaskParamsWorkspace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateMotionTaskTaskParamsWorkspace>
        for CreateMotionTaskTaskParamsWorkspace {
            fn from(value: super::CreateMotionTaskTaskParamsWorkspace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateNotionPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            parent_page: ::std::result::Result<
                super::CreateNotionPageTaskParamsParentPage,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            show_action_items_as_table: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_as_table: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateNotionPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateNotionPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    parent_page: Err("no value supplied for parent_page".to_string()),
                    post_mortem_template_id: Ok(Default::default()),
                    show_action_items_as_table: Ok(Default::default()),
                    show_timeline_as_table: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateNotionPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn parent_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateNotionPageTaskParamsParentPage>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parent_page: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn show_action_items_as_table<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_action_items_as_table = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_action_items_as_table: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_as_table<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_as_table = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_as_table: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateNotionPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateNotionPageTaskParams>
        for super::CreateNotionPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateNotionPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    parent_page: value.parent_page?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    show_action_items_as_table: value.show_action_items_as_table?,
                    show_timeline_as_table: value.show_timeline_as_table?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateNotionPageTaskParams>
        for CreateNotionPageTaskParams {
            fn from(value: super::CreateNotionPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    parent_page: Ok(value.parent_page),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    show_action_items_as_table: Ok(value.show_action_items_as_table),
                    show_timeline_as_table: Ok(value.show_timeline_as_table),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateNotionPageTaskParamsParentPage {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateNotionPageTaskParamsParentPage {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateNotionPageTaskParamsParentPage {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateNotionPageTaskParamsParentPage>
        for super::CreateNotionPageTaskParamsParentPage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateNotionPageTaskParamsParentPage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateNotionPageTaskParamsParentPage>
        for CreateNotionPageTaskParamsParentPage {
            fn from(value: super::CreateNotionPageTaskParamsParentPage) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpenaiChatCompletionTaskParams {
            max_tokens: ::std::result::Result<
                ::std::option::Option<::std::num::NonZeroU64>,
                ::std::string::String,
            >,
            model: ::std::result::Result<
                super::CreateOpenaiChatCompletionTaskParamsModel,
                ::std::string::String,
            >,
            prompt: ::std::result::Result<::std::string::String, ::std::string::String>,
            reasoning_effort: ::std::result::Result<
                ::std::option::Option<
                    super::CreateOpenaiChatCompletionTaskParamsReasoningEffort,
                >,
                ::std::string::String,
            >,
            reasoning_summary: ::std::result::Result<
                ::std::option::Option<
                    super::CreateOpenaiChatCompletionTaskParamsReasoningSummary,
                >,
                ::std::string::String,
            >,
            system_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateOpenaiChatCompletionTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            temperature: ::std::result::Result<
                ::std::option::Option<f64>,
                ::std::string::String,
            >,
            top_p: ::std::result::Result<
                ::std::option::Option<f64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpenaiChatCompletionTaskParams {
            fn default() -> Self {
                Self {
                    max_tokens: Ok(Default::default()),
                    model: Err("no value supplied for model".to_string()),
                    prompt: Err("no value supplied for prompt".to_string()),
                    reasoning_effort: Ok(Default::default()),
                    reasoning_summary: Ok(Default::default()),
                    system_prompt: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    temperature: Ok(Default::default()),
                    top_p: Ok(Default::default()),
                }
            }
        }
        impl CreateOpenaiChatCompletionTaskParams {
            pub fn max_tokens<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::num::NonZeroU64>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.max_tokens = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for max_tokens: {e}")
                    });
                self
            }
            pub fn model<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateOpenaiChatCompletionTaskParamsModel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.model = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for model: {e}")
                    });
                self
            }
            pub fn prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prompt: {e}")
                    });
                self
            }
            pub fn reasoning_effort<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateOpenaiChatCompletionTaskParamsReasoningEffort,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.reasoning_effort = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for reasoning_effort: {e}"
                        )
                    });
                self
            }
            pub fn reasoning_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateOpenaiChatCompletionTaskParamsReasoningSummary,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.reasoning_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for reasoning_summary: {e}"
                        )
                    });
                self
            }
            pub fn system_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.system_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_prompt: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateOpenaiChatCompletionTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn temperature<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<f64>>,
                T::Error: ::std::fmt::Display,
            {
                self.temperature = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for temperature: {e}")
                    });
                self
            }
            pub fn top_p<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<f64>>,
                T::Error: ::std::fmt::Display,
            {
                self.top_p = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for top_p: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpenaiChatCompletionTaskParams>
        for super::CreateOpenaiChatCompletionTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpenaiChatCompletionTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    max_tokens: value.max_tokens?,
                    model: value.model?,
                    prompt: value.prompt?,
                    reasoning_effort: value.reasoning_effort?,
                    reasoning_summary: value.reasoning_summary?,
                    system_prompt: value.system_prompt?,
                    task_type: value.task_type?,
                    temperature: value.temperature?,
                    top_p: value.top_p?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpenaiChatCompletionTaskParams>
        for CreateOpenaiChatCompletionTaskParams {
            fn from(value: super::CreateOpenaiChatCompletionTaskParams) -> Self {
                Self {
                    max_tokens: Ok(value.max_tokens),
                    model: Ok(value.model),
                    prompt: Ok(value.prompt),
                    reasoning_effort: Ok(value.reasoning_effort),
                    reasoning_summary: Ok(value.reasoning_summary),
                    system_prompt: Ok(value.system_prompt),
                    task_type: Ok(value.task_type),
                    temperature: Ok(value.temperature),
                    top_p: Ok(value.top_p),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpenaiChatCompletionTaskParamsModel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpenaiChatCompletionTaskParamsModel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOpenaiChatCompletionTaskParamsModel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpenaiChatCompletionTaskParamsModel>
        for super::CreateOpenaiChatCompletionTaskParamsModel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpenaiChatCompletionTaskParamsModel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpenaiChatCompletionTaskParamsModel>
        for CreateOpenaiChatCompletionTaskParamsModel {
            fn from(value: super::CreateOpenaiChatCompletionTaskParamsModel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpsgenieAlertTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            details: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            escalations: ::std::result::Result<
                ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsEscalationsItem>,
                ::std::string::String,
            >,
            message: ::std::result::Result<::std::string::String, ::std::string::String>,
            priority: ::std::result::Result<
                super::CreateOpsgenieAlertTaskParamsPriority,
                ::std::string::String,
            >,
            schedules: ::std::result::Result<
                ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsSchedulesItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateOpsgenieAlertTaskParamsTaskType>,
                ::std::string::String,
            >,
            teams: ::std::result::Result<
                ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsTeamsItem>,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpsgenieAlertTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    details: Ok(Default::default()),
                    escalations: Ok(Default::default()),
                    message: Err("no value supplied for message".to_string()),
                    priority: Ok(
                        super::defaults::create_opsgenie_alert_task_params_priority(),
                    ),
                    schedules: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    teams: Ok(Default::default()),
                    users: Ok(Default::default()),
                }
            }
        }
        impl CreateOpsgenieAlertTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.details = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for details: {e}")
                    });
                self
            }
            pub fn escalations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsEscalationsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalations = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for escalations: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateOpsgenieAlertTaskParamsPriority>,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn schedules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsSchedulesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedules: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateOpsgenieAlertTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn teams<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsTeamsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.teams = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for teams: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateOpsgenieAlertTaskParamsUsersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpsgenieAlertTaskParams>
        for super::CreateOpsgenieAlertTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpsgenieAlertTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    details: value.details?,
                    escalations: value.escalations?,
                    message: value.message?,
                    priority: value.priority?,
                    schedules: value.schedules?,
                    task_type: value.task_type?,
                    teams: value.teams?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpsgenieAlertTaskParams>
        for CreateOpsgenieAlertTaskParams {
            fn from(value: super::CreateOpsgenieAlertTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    details: Ok(value.details),
                    escalations: Ok(value.escalations),
                    message: Ok(value.message),
                    priority: Ok(value.priority),
                    schedules: Ok(value.schedules),
                    task_type: Ok(value.task_type),
                    teams: Ok(value.teams),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpsgenieAlertTaskParamsEscalationsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpsgenieAlertTaskParamsEscalationsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOpsgenieAlertTaskParamsEscalationsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpsgenieAlertTaskParamsEscalationsItem>
        for super::CreateOpsgenieAlertTaskParamsEscalationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpsgenieAlertTaskParamsEscalationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpsgenieAlertTaskParamsEscalationsItem>
        for CreateOpsgenieAlertTaskParamsEscalationsItem {
            fn from(value: super::CreateOpsgenieAlertTaskParamsEscalationsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpsgenieAlertTaskParamsSchedulesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpsgenieAlertTaskParamsSchedulesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOpsgenieAlertTaskParamsSchedulesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpsgenieAlertTaskParamsSchedulesItem>
        for super::CreateOpsgenieAlertTaskParamsSchedulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpsgenieAlertTaskParamsSchedulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpsgenieAlertTaskParamsSchedulesItem>
        for CreateOpsgenieAlertTaskParamsSchedulesItem {
            fn from(value: super::CreateOpsgenieAlertTaskParamsSchedulesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpsgenieAlertTaskParamsTeamsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpsgenieAlertTaskParamsTeamsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOpsgenieAlertTaskParamsTeamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpsgenieAlertTaskParamsTeamsItem>
        for super::CreateOpsgenieAlertTaskParamsTeamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpsgenieAlertTaskParamsTeamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpsgenieAlertTaskParamsTeamsItem>
        for CreateOpsgenieAlertTaskParamsTeamsItem {
            fn from(value: super::CreateOpsgenieAlertTaskParamsTeamsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOpsgenieAlertTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOpsgenieAlertTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOpsgenieAlertTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOpsgenieAlertTaskParamsUsersItem>
        for super::CreateOpsgenieAlertTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOpsgenieAlertTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOpsgenieAlertTaskParamsUsersItem>
        for CreateOpsgenieAlertTaskParamsUsersItem {
            fn from(value: super::CreateOpsgenieAlertTaskParamsUsersItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOutlookEventTaskParams {
            attendees: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            calendar: ::std::result::Result<
                super::CreateOutlookEventTaskParamsCalendar,
                ::std::string::String,
            >,
            days_until_meeting: ::std::result::Result<i64, ::std::string::String>,
            description: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enable_online_meeting: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            exclude_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            meeting_duration: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateOutlookEventTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateOutlookEventTaskParamsTaskType>,
                ::std::string::String,
            >,
            time_of_meeting: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOutlookEventTaskParams {
            fn default() -> Self {
                Self {
                    attendees: Ok(Default::default()),
                    calendar: Err("no value supplied for calendar".to_string()),
                    days_until_meeting: Err(
                        "no value supplied for days_until_meeting".to_string(),
                    ),
                    description: Err("no value supplied for description".to_string()),
                    enable_online_meeting: Ok(Default::default()),
                    exclude_weekends: Ok(Default::default()),
                    meeting_duration: Err(
                        "no value supplied for meeting_duration".to_string(),
                    ),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    task_type: Ok(Default::default()),
                    time_of_meeting: Err(
                        "no value supplied for time_of_meeting".to_string(),
                    ),
                    time_zone: Ok(Default::default()),
                }
            }
        }
        impl CreateOutlookEventTaskParams {
            pub fn attendees<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.attendees = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attendees: {e}")
                    });
                self
            }
            pub fn calendar<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateOutlookEventTaskParamsCalendar>,
                T::Error: ::std::fmt::Display,
            {
                self.calendar = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for calendar: {e}")
                    });
                self
            }
            pub fn days_until_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.days_until_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for days_until_meeting: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enable_online_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enable_online_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for enable_online_meeting: {e}"
                        )
                    });
                self
            }
            pub fn exclude_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.exclude_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for exclude_weekends: {e}"
                        )
                    });
                self
            }
            pub fn meeting_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.meeting_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for meeting_duration: {e}"
                        )
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateOutlookEventTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateOutlookEventTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn time_of_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.time_of_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_of_meeting: {e}"
                        )
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOutlookEventTaskParams>
        for super::CreateOutlookEventTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOutlookEventTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attendees: value.attendees?,
                    calendar: value.calendar?,
                    days_until_meeting: value.days_until_meeting?,
                    description: value.description?,
                    enable_online_meeting: value.enable_online_meeting?,
                    exclude_weekends: value.exclude_weekends?,
                    meeting_duration: value.meeting_duration?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                    time_of_meeting: value.time_of_meeting?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOutlookEventTaskParams>
        for CreateOutlookEventTaskParams {
            fn from(value: super::CreateOutlookEventTaskParams) -> Self {
                Self {
                    attendees: Ok(value.attendees),
                    calendar: Ok(value.calendar),
                    days_until_meeting: Ok(value.days_until_meeting),
                    description: Ok(value.description),
                    enable_online_meeting: Ok(value.enable_online_meeting),
                    exclude_weekends: Ok(value.exclude_weekends),
                    meeting_duration: Ok(value.meeting_duration),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    time_of_meeting: Ok(value.time_of_meeting),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOutlookEventTaskParamsCalendar {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateOutlookEventTaskParamsCalendar {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOutlookEventTaskParamsCalendar {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOutlookEventTaskParamsCalendar>
        for super::CreateOutlookEventTaskParamsCalendar {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOutlookEventTaskParamsCalendar,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateOutlookEventTaskParamsCalendar>
        for CreateOutlookEventTaskParamsCalendar {
            fn from(value: super::CreateOutlookEventTaskParamsCalendar) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateOutlookEventTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateOutlookEventTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateOutlookEventTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateOutlookEventTaskParamsPostToSlackChannelsItem>
        for super::CreateOutlookEventTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateOutlookEventTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateOutlookEventTaskParamsPostToSlackChannelsItem,
        > for CreateOutlookEventTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateOutlookEventTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreatePagerdutyStatusUpdateTaskParams {
            message: ::std::result::Result<::std::string::String, ::std::string::String>,
            pagerduty_incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreatePagerdutyStatusUpdateTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreatePagerdutyStatusUpdateTaskParams {
            fn default() -> Self {
                Self {
                    message: Err("no value supplied for message".to_string()),
                    pagerduty_incident_id: Err(
                        "no value supplied for pagerduty_incident_id".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreatePagerdutyStatusUpdateTaskParams {
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn pagerduty_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreatePagerdutyStatusUpdateTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreatePagerdutyStatusUpdateTaskParams>
        for super::CreatePagerdutyStatusUpdateTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreatePagerdutyStatusUpdateTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    message: value.message?,
                    pagerduty_incident_id: value.pagerduty_incident_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreatePagerdutyStatusUpdateTaskParams>
        for CreatePagerdutyStatusUpdateTaskParams {
            fn from(value: super::CreatePagerdutyStatusUpdateTaskParams) -> Self {
                Self {
                    message: Ok(value.message),
                    pagerduty_incident_id: Ok(value.pagerduty_incident_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreatePagertreeAlertTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            severity: ::std::result::Result<
                ::std::option::Option<super::CreatePagertreeAlertTaskParamsSeverity>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreatePagertreeAlertTaskParamsTaskType>,
                ::std::string::String,
            >,
            teams: ::std::result::Result<
                ::std::vec::Vec<super::CreatePagertreeAlertTaskParamsTeamsItem>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            urgency: ::std::result::Result<
                ::std::option::Option<super::CreatePagertreeAlertTaskParamsUrgency>,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::CreatePagertreeAlertTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreatePagertreeAlertTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    incident: Ok(Default::default()),
                    severity: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    teams: Ok(Default::default()),
                    title: Ok(Default::default()),
                    urgency: Ok(Default::default()),
                    users: Ok(Default::default()),
                }
            }
        }
        impl CreatePagertreeAlertTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident: {e}")
                    });
                self
            }
            pub fn severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreatePagertreeAlertTaskParamsSeverity>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreatePagertreeAlertTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn teams<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreatePagertreeAlertTaskParamsTeamsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.teams = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for teams: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreatePagertreeAlertTaskParamsUrgency>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for urgency: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreatePagertreeAlertTaskParamsUsersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreatePagertreeAlertTaskParams>
        for super::CreatePagertreeAlertTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreatePagertreeAlertTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    incident: value.incident?,
                    severity: value.severity?,
                    task_type: value.task_type?,
                    teams: value.teams?,
                    title: value.title?,
                    urgency: value.urgency?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::CreatePagertreeAlertTaskParams>
        for CreatePagertreeAlertTaskParams {
            fn from(value: super::CreatePagertreeAlertTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    incident: Ok(value.incident),
                    severity: Ok(value.severity),
                    task_type: Ok(value.task_type),
                    teams: Ok(value.teams),
                    title: Ok(value.title),
                    urgency: Ok(value.urgency),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreatePagertreeAlertTaskParamsTeamsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreatePagertreeAlertTaskParamsTeamsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreatePagertreeAlertTaskParamsTeamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreatePagertreeAlertTaskParamsTeamsItem>
        for super::CreatePagertreeAlertTaskParamsTeamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreatePagertreeAlertTaskParamsTeamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreatePagertreeAlertTaskParamsTeamsItem>
        for CreatePagertreeAlertTaskParamsTeamsItem {
            fn from(value: super::CreatePagertreeAlertTaskParamsTeamsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreatePagertreeAlertTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreatePagertreeAlertTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreatePagertreeAlertTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreatePagertreeAlertTaskParamsUsersItem>
        for super::CreatePagertreeAlertTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreatePagertreeAlertTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreatePagertreeAlertTaskParamsUsersItem>
        for CreatePagertreeAlertTaskParamsUsersItem {
            fn from(value: super::CreatePagertreeAlertTaskParamsUsersItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateQuipPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            parent_folder_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateQuipPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateQuipPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    parent_folder_id: Ok(Default::default()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template_id: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateQuipPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn parent_folder_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_folder_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_folder_id: {e}"
                        )
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateQuipPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_id: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateQuipPageTaskParams>
        for super::CreateQuipPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateQuipPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    parent_folder_id: value.parent_folder_id?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template_id: value.template_id?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateQuipPageTaskParams>
        for CreateQuipPageTaskParams {
            fn from(value: super::CreateQuipPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    parent_folder_id: Ok(value.parent_folder_id),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template_id: Ok(value.template_id),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateServiceNowIncidentTaskParams {
            completion: ::std::result::Result<
                ::std::option::Option<
                    super::CreateServiceNowIncidentTaskParamsCompletion,
                >,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateServiceNowIncidentTaskParamsPriority>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateServiceNowIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateServiceNowIncidentTaskParams {
            fn default() -> Self {
                Self {
                    completion: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateServiceNowIncidentTaskParams {
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateServiceNowIncidentTaskParamsCompletion,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateServiceNowIncidentTaskParamsPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateServiceNowIncidentTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateServiceNowIncidentTaskParams>
        for super::CreateServiceNowIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateServiceNowIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    priority: value.priority?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateServiceNowIncidentTaskParams>
        for CreateServiceNowIncidentTaskParams {
            fn from(value: super::CreateServiceNowIncidentTaskParams) -> Self {
                Self {
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    priority: Ok(value.priority),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateServiceNowIncidentTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateServiceNowIncidentTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateServiceNowIncidentTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateServiceNowIncidentTaskParamsCompletion>
        for super::CreateServiceNowIncidentTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateServiceNowIncidentTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateServiceNowIncidentTaskParamsCompletion>
        for CreateServiceNowIncidentTaskParamsCompletion {
            fn from(value: super::CreateServiceNowIncidentTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateServiceNowIncidentTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateServiceNowIncidentTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateServiceNowIncidentTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateServiceNowIncidentTaskParamsPriority>
        for super::CreateServiceNowIncidentTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateServiceNowIncidentTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateServiceNowIncidentTaskParamsPriority>
        for CreateServiceNowIncidentTaskParamsPriority {
            fn from(value: super::CreateServiceNowIncidentTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSharepointPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            drive: ::std::result::Result<
                super::CreateSharepointPageTaskParamsDrive,
                ::std::string::String,
            >,
            mark_post_mortem_as_published: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            parent_folder: ::std::result::Result<
                ::std::option::Option<super::CreateSharepointPageTaskParamsParentFolder>,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            site: ::std::result::Result<
                super::CreateSharepointPageTaskParamsSite,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateSharepointPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateSharepointPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    drive: Err("no value supplied for drive".to_string()),
                    mark_post_mortem_as_published: Ok(
                        super::defaults::default_bool::<true>(),
                    ),
                    parent_folder: Ok(Default::default()),
                    post_mortem_template_id: Ok(Default::default()),
                    site: Err("no value supplied for site".to_string()),
                    task_type: Ok(Default::default()),
                    template_id: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateSharepointPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn drive<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateSharepointPageTaskParamsDrive>,
                T::Error: ::std::fmt::Display,
            {
                self.drive = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for drive: {e}")
                    });
                self
            }
            pub fn mark_post_mortem_as_published<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.mark_post_mortem_as_published = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mark_post_mortem_as_published: {e}"
                        )
                    });
                self
            }
            pub fn parent_folder<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateSharepointPageTaskParamsParentFolder,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parent_folder = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parent_folder: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn site<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateSharepointPageTaskParamsSite>,
                T::Error: ::std::fmt::Display,
            {
                self.site = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for site: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateSharepointPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_id: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSharepointPageTaskParams>
        for super::CreateSharepointPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSharepointPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    drive: value.drive?,
                    mark_post_mortem_as_published: value.mark_post_mortem_as_published?,
                    parent_folder: value.parent_folder?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    site: value.site?,
                    task_type: value.task_type?,
                    template_id: value.template_id?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSharepointPageTaskParams>
        for CreateSharepointPageTaskParams {
            fn from(value: super::CreateSharepointPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    drive: Ok(value.drive),
                    mark_post_mortem_as_published: Ok(
                        value.mark_post_mortem_as_published,
                    ),
                    parent_folder: Ok(value.parent_folder),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    site: Ok(value.site),
                    task_type: Ok(value.task_type),
                    template_id: Ok(value.template_id),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSharepointPageTaskParamsDrive {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateSharepointPageTaskParamsDrive {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateSharepointPageTaskParamsDrive {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSharepointPageTaskParamsDrive>
        for super::CreateSharepointPageTaskParamsDrive {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSharepointPageTaskParamsDrive,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSharepointPageTaskParamsDrive>
        for CreateSharepointPageTaskParamsDrive {
            fn from(value: super::CreateSharepointPageTaskParamsDrive) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSharepointPageTaskParamsParentFolder {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateSharepointPageTaskParamsParentFolder {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateSharepointPageTaskParamsParentFolder {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSharepointPageTaskParamsParentFolder>
        for super::CreateSharepointPageTaskParamsParentFolder {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSharepointPageTaskParamsParentFolder,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSharepointPageTaskParamsParentFolder>
        for CreateSharepointPageTaskParamsParentFolder {
            fn from(value: super::CreateSharepointPageTaskParamsParentFolder) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSharepointPageTaskParamsSite {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateSharepointPageTaskParamsSite {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateSharepointPageTaskParamsSite {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSharepointPageTaskParamsSite>
        for super::CreateSharepointPageTaskParamsSite {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSharepointPageTaskParamsSite,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSharepointPageTaskParamsSite>
        for CreateSharepointPageTaskParamsSite {
            fn from(value: super::CreateSharepointPageTaskParamsSite) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant0Archivation {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateShortcutStoryTaskParamsVariant0Archivation {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant0Archivation {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant0Archivation>
        for super::CreateShortcutStoryTaskParamsVariant0Archivation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant0Archivation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateShortcutStoryTaskParamsVariant0Archivation,
        > for CreateShortcutStoryTaskParamsVariant0Archivation {
            fn from(
                value: super::CreateShortcutStoryTaskParamsVariant0Archivation,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant0Group {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant0Group {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant0Group {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant0Group>
        for super::CreateShortcutStoryTaskParamsVariant0Group {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant0Group,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateShortcutStoryTaskParamsVariant0Group>
        for CreateShortcutStoryTaskParamsVariant0Group {
            fn from(value: super::CreateShortcutStoryTaskParamsVariant0Group) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant0Project {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant0Project {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant0Project {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant0Project>
        for super::CreateShortcutStoryTaskParamsVariant0Project {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant0Project,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateShortcutStoryTaskParamsVariant0Project>
        for CreateShortcutStoryTaskParamsVariant0Project {
            fn from(value: super::CreateShortcutStoryTaskParamsVariant0Project) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant0WorkflowState {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateShortcutStoryTaskParamsVariant0WorkflowState {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant0WorkflowState {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant0WorkflowState>
        for super::CreateShortcutStoryTaskParamsVariant0WorkflowState {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant0WorkflowState,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateShortcutStoryTaskParamsVariant0WorkflowState,
        > for CreateShortcutStoryTaskParamsVariant0WorkflowState {
            fn from(
                value: super::CreateShortcutStoryTaskParamsVariant0WorkflowState,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant1Archivation {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateShortcutStoryTaskParamsVariant1Archivation {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant1Archivation {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant1Archivation>
        for super::CreateShortcutStoryTaskParamsVariant1Archivation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant1Archivation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateShortcutStoryTaskParamsVariant1Archivation,
        > for CreateShortcutStoryTaskParamsVariant1Archivation {
            fn from(
                value: super::CreateShortcutStoryTaskParamsVariant1Archivation,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant1Group {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant1Group {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant1Group {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant1Group>
        for super::CreateShortcutStoryTaskParamsVariant1Group {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant1Group,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateShortcutStoryTaskParamsVariant1Group>
        for CreateShortcutStoryTaskParamsVariant1Group {
            fn from(value: super::CreateShortcutStoryTaskParamsVariant1Group) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant1Project {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateShortcutStoryTaskParamsVariant1Project {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant1Project {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant1Project>
        for super::CreateShortcutStoryTaskParamsVariant1Project {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant1Project,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateShortcutStoryTaskParamsVariant1Project>
        for CreateShortcutStoryTaskParamsVariant1Project {
            fn from(value: super::CreateShortcutStoryTaskParamsVariant1Project) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutStoryTaskParamsVariant1WorkflowState {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateShortcutStoryTaskParamsVariant1WorkflowState {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutStoryTaskParamsVariant1WorkflowState {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutStoryTaskParamsVariant1WorkflowState>
        for super::CreateShortcutStoryTaskParamsVariant1WorkflowState {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutStoryTaskParamsVariant1WorkflowState,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateShortcutStoryTaskParamsVariant1WorkflowState,
        > for CreateShortcutStoryTaskParamsVariant1WorkflowState {
            fn from(
                value: super::CreateShortcutStoryTaskParamsVariant1WorkflowState,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutTaskTaskParams {
            completion: ::std::result::Result<
                super::CreateShortcutTaskTaskParamsCompletion,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            parent_story_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateShortcutTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateShortcutTaskTaskParams {
            fn default() -> Self {
                Self {
                    completion: Err("no value supplied for completion".to_string()),
                    description: Err("no value supplied for description".to_string()),
                    parent_story_id: Err(
                        "no value supplied for parent_story_id".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutTaskTaskParams {
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateShortcutTaskTaskParamsCompletion,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn parent_story_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_story_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_story_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateShortcutTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutTaskTaskParams>
        for super::CreateShortcutTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    completion: value.completion?,
                    description: value.description?,
                    parent_story_id: value.parent_story_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateShortcutTaskTaskParams>
        for CreateShortcutTaskTaskParams {
            fn from(value: super::CreateShortcutTaskTaskParams) -> Self {
                Self {
                    completion: Ok(value.completion),
                    description: Ok(value.description),
                    parent_story_id: Ok(value.parent_story_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateShortcutTaskTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateShortcutTaskTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateShortcutTaskTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateShortcutTaskTaskParamsCompletion>
        for super::CreateShortcutTaskTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateShortcutTaskTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateShortcutTaskTaskParamsCompletion>
        for CreateShortcutTaskTaskParamsCompletion {
            fn from(value: super::CreateShortcutTaskTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSlackChannelTaskParams {
            private: ::std::result::Result<
                super::CreateSlackChannelTaskParamsPrivate,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateSlackChannelTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            workspace: ::std::result::Result<
                super::CreateSlackChannelTaskParamsWorkspace,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateSlackChannelTaskParams {
            fn default() -> Self {
                Self {
                    private: Ok(
                        super::defaults::create_slack_channel_task_params_private(),
                    ),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    workspace: Err("no value supplied for workspace".to_string()),
                }
            }
        }
        impl CreateSlackChannelTaskParams {
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateSlackChannelTaskParamsPrivate>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateSlackChannelTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn workspace<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateSlackChannelTaskParamsWorkspace>,
                T::Error: ::std::fmt::Display,
            {
                self.workspace = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workspace: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSlackChannelTaskParams>
        for super::CreateSlackChannelTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSlackChannelTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    private: value.private?,
                    task_type: value.task_type?,
                    title: value.title?,
                    workspace: value.workspace?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSlackChannelTaskParams>
        for CreateSlackChannelTaskParams {
            fn from(value: super::CreateSlackChannelTaskParams) -> Self {
                Self {
                    private: Ok(value.private),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    workspace: Ok(value.workspace),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSlackChannelTaskParamsWorkspace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateSlackChannelTaskParamsWorkspace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateSlackChannelTaskParamsWorkspace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSlackChannelTaskParamsWorkspace>
        for super::CreateSlackChannelTaskParamsWorkspace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSlackChannelTaskParamsWorkspace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSlackChannelTaskParamsWorkspace>
        for CreateSlackChannelTaskParamsWorkspace {
            fn from(value: super::CreateSlackChannelTaskParamsWorkspace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateSubIncidentTaskParams {
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateSubIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateSubIncidentTaskParams {
            fn default() -> Self {
                Self {
                    summary: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateSubIncidentTaskParams {
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateSubIncidentTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateSubIncidentTaskParams>
        for super::CreateSubIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateSubIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    summary: value.summary?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateSubIncidentTaskParams>
        for CreateSubIncidentTaskParams {
            fn from(value: super::CreateSubIncidentTaskParams) -> Self {
                Self {
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateTrelloCardTaskParams {
            archivation: ::std::result::Result<
                ::std::option::Option<super::CreateTrelloCardTaskParamsArchivation>,
                ::std::string::String,
            >,
            board: ::std::result::Result<
                super::CreateTrelloCardTaskParamsBoard,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::CreateTrelloCardTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            list: ::std::result::Result<
                super::CreateTrelloCardTaskParamsList,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateTrelloCardTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateTrelloCardTaskParams {
            fn default() -> Self {
                Self {
                    archivation: Ok(Default::default()),
                    board: Err("no value supplied for board".to_string()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    list: Err("no value supplied for list".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl CreateTrelloCardTaskParams {
            pub fn archivation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateTrelloCardTaskParamsArchivation>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.archivation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for archivation: {e}")
                    });
                self
            }
            pub fn board<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateTrelloCardTaskParamsBoard>,
                T::Error: ::std::fmt::Display,
            {
                self.board = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for board: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CreateTrelloCardTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn list<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateTrelloCardTaskParamsList>,
                T::Error: ::std::fmt::Display,
            {
                self.list = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for list: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateTrelloCardTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateTrelloCardTaskParams>
        for super::CreateTrelloCardTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateTrelloCardTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    archivation: value.archivation?,
                    board: value.board?,
                    description: value.description?,
                    due_date: value.due_date?,
                    labels: value.labels?,
                    list: value.list?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::CreateTrelloCardTaskParams>
        for CreateTrelloCardTaskParams {
            fn from(value: super::CreateTrelloCardTaskParams) -> Self {
                Self {
                    archivation: Ok(value.archivation),
                    board: Ok(value.board),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    labels: Ok(value.labels),
                    list: Ok(value.list),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateTrelloCardTaskParamsArchivation {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateTrelloCardTaskParamsArchivation {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateTrelloCardTaskParamsArchivation {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateTrelloCardTaskParamsArchivation>
        for super::CreateTrelloCardTaskParamsArchivation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateTrelloCardTaskParamsArchivation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateTrelloCardTaskParamsArchivation>
        for CreateTrelloCardTaskParamsArchivation {
            fn from(value: super::CreateTrelloCardTaskParamsArchivation) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateTrelloCardTaskParamsBoard {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateTrelloCardTaskParamsBoard {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateTrelloCardTaskParamsBoard {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateTrelloCardTaskParamsBoard>
        for super::CreateTrelloCardTaskParamsBoard {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateTrelloCardTaskParamsBoard,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateTrelloCardTaskParamsBoard>
        for CreateTrelloCardTaskParamsBoard {
            fn from(value: super::CreateTrelloCardTaskParamsBoard) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateTrelloCardTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateTrelloCardTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateTrelloCardTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateTrelloCardTaskParamsLabelsItem>
        for super::CreateTrelloCardTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateTrelloCardTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateTrelloCardTaskParamsLabelsItem>
        for CreateTrelloCardTaskParamsLabelsItem {
            fn from(value: super::CreateTrelloCardTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateTrelloCardTaskParamsList {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateTrelloCardTaskParamsList {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateTrelloCardTaskParamsList {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateTrelloCardTaskParamsList>
        for super::CreateTrelloCardTaskParamsList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateTrelloCardTaskParamsList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateTrelloCardTaskParamsList>
        for CreateTrelloCardTaskParamsList {
            fn from(value: super::CreateTrelloCardTaskParamsList) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateWatsonxChatCompletionTaskParams {
            model: ::std::result::Result<
                super::CreateWatsonxChatCompletionTaskParamsModel,
                ::std::string::String,
            >,
            project_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            prompt: ::std::result::Result<::std::string::String, ::std::string::String>,
            system_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::CreateWatsonxChatCompletionTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateWatsonxChatCompletionTaskParams {
            fn default() -> Self {
                Self {
                    model: Err("no value supplied for model".to_string()),
                    project_id: Err("no value supplied for project_id".to_string()),
                    prompt: Err("no value supplied for prompt".to_string()),
                    system_prompt: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl CreateWatsonxChatCompletionTaskParams {
            pub fn model<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateWatsonxChatCompletionTaskParamsModel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.model = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for model: {e}")
                    });
                self
            }
            pub fn project_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.project_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project_id: {e}")
                    });
                self
            }
            pub fn prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prompt: {e}")
                    });
                self
            }
            pub fn system_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.system_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_prompt: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateWatsonxChatCompletionTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateWatsonxChatCompletionTaskParams>
        for super::CreateWatsonxChatCompletionTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateWatsonxChatCompletionTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    model: value.model?,
                    project_id: value.project_id?,
                    prompt: value.prompt?,
                    system_prompt: value.system_prompt?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::CreateWatsonxChatCompletionTaskParams>
        for CreateWatsonxChatCompletionTaskParams {
            fn from(value: super::CreateWatsonxChatCompletionTaskParams) -> Self {
                Self {
                    model: Ok(value.model),
                    project_id: Ok(value.project_id),
                    prompt: Ok(value.prompt),
                    system_prompt: Ok(value.system_prompt),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateWatsonxChatCompletionTaskParamsModel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateWatsonxChatCompletionTaskParamsModel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateWatsonxChatCompletionTaskParamsModel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateWatsonxChatCompletionTaskParamsModel>
        for super::CreateWatsonxChatCompletionTaskParamsModel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateWatsonxChatCompletionTaskParamsModel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateWatsonxChatCompletionTaskParamsModel>
        for CreateWatsonxChatCompletionTaskParamsModel {
            fn from(value: super::CreateWatsonxChatCompletionTaskParamsModel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateWebexMeetingTaskParams {
            password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateWebexMeetingTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            record_meeting: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            recording_mode: ::std::result::Result<
                ::std::option::Option<super::CreateWebexMeetingTaskParamsRecordingMode>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateWebexMeetingTaskParamsTaskType>,
                ::std::string::String,
            >,
            topic: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateWebexMeetingTaskParams {
            fn default() -> Self {
                Self {
                    password: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    record_meeting: Ok(Default::default()),
                    recording_mode: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    topic: Err("no value supplied for topic".to_string()),
                }
            }
        }
        impl CreateWebexMeetingTaskParams {
            pub fn password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.password = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for password: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateWebexMeetingTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn record_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.record_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for record_meeting: {e}"
                        )
                    });
                self
            }
            pub fn recording_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateWebexMeetingTaskParamsRecordingMode,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.recording_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for recording_mode: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateWebexMeetingTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn topic<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.topic = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for topic: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateWebexMeetingTaskParams>
        for super::CreateWebexMeetingTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateWebexMeetingTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    password: value.password?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    record_meeting: value.record_meeting?,
                    recording_mode: value.recording_mode?,
                    task_type: value.task_type?,
                    topic: value.topic?,
                })
            }
        }
        impl ::std::convert::From<super::CreateWebexMeetingTaskParams>
        for CreateWebexMeetingTaskParams {
            fn from(value: super::CreateWebexMeetingTaskParams) -> Self {
                Self {
                    password: Ok(value.password),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    record_meeting: Ok(value.record_meeting),
                    recording_mode: Ok(value.recording_mode),
                    task_type: Ok(value.task_type),
                    topic: Ok(value.topic),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateWebexMeetingTaskParamsPostToSlackChannelsItem>
        for super::CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateWebexMeetingTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateWebexMeetingTaskParamsPostToSlackChannelsItem,
        > for CreateWebexMeetingTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateWebexMeetingTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateZendeskJiraLinkTaskParams {
            jira_issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateZendeskJiraLinkTaskParamsTaskType>,
                ::std::string::String,
            >,
            zendesk_ticket_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateZendeskJiraLinkTaskParams {
            fn default() -> Self {
                Self {
                    jira_issue_id: Err(
                        "no value supplied for jira_issue_id".to_string(),
                    ),
                    jira_issue_key: Err(
                        "no value supplied for jira_issue_key".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                    zendesk_ticket_id: Err(
                        "no value supplied for zendesk_ticket_id".to_string(),
                    ),
                }
            }
        }
        impl CreateZendeskJiraLinkTaskParams {
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZendeskJiraLinkTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn zendesk_ticket_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.zendesk_ticket_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zendesk_ticket_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateZendeskJiraLinkTaskParams>
        for super::CreateZendeskJiraLinkTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateZendeskJiraLinkTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    task_type: value.task_type?,
                    zendesk_ticket_id: value.zendesk_ticket_id?,
                })
            }
        }
        impl ::std::convert::From<super::CreateZendeskJiraLinkTaskParams>
        for CreateZendeskJiraLinkTaskParams {
            fn from(value: super::CreateZendeskJiraLinkTaskParams) -> Self {
                Self {
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    task_type: Ok(value.task_type),
                    zendesk_ticket_id: Ok(value.zendesk_ticket_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateZendeskTicketTaskParams {
            comment: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completion: ::std::result::Result<
                ::std::option::Option<super::CreateZendeskTicketTaskParamsCompletion>,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::CreateZendeskTicketTaskParamsKind,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::CreateZendeskTicketTaskParamsPriority>,
                ::std::string::String,
            >,
            subject: ::std::result::Result<::std::string::String, ::std::string::String>,
            tags: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateZendeskTicketTaskParamsTaskType>,
                ::std::string::String,
            >,
            ticket_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateZendeskTicketTaskParams {
            fn default() -> Self {
                Self {
                    comment: Ok(Default::default()),
                    completion: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    priority: Ok(Default::default()),
                    subject: Err("no value supplied for subject".to_string()),
                    tags: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    ticket_payload: Ok(Default::default()),
                }
            }
        }
        impl CreateZendeskTicketTaskParams {
            pub fn comment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.comment = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comment: {e}")
                    });
                self
            }
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZendeskTicketTaskParamsCompletion>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CreateZendeskTicketTaskParamsKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZendeskTicketTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subject: {e}")
                    });
                self
            }
            pub fn tags<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.tags = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tags: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZendeskTicketTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn ticket_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ticket_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for ticket_payload: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateZendeskTicketTaskParams>
        for super::CreateZendeskTicketTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateZendeskTicketTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comment: value.comment?,
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    kind: value.kind?,
                    priority: value.priority?,
                    subject: value.subject?,
                    tags: value.tags?,
                    task_type: value.task_type?,
                    ticket_payload: value.ticket_payload?,
                })
            }
        }
        impl ::std::convert::From<super::CreateZendeskTicketTaskParams>
        for CreateZendeskTicketTaskParams {
            fn from(value: super::CreateZendeskTicketTaskParams) -> Self {
                Self {
                    comment: Ok(value.comment),
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    kind: Ok(value.kind),
                    priority: Ok(value.priority),
                    subject: Ok(value.subject),
                    tags: Ok(value.tags),
                    task_type: Ok(value.task_type),
                    ticket_payload: Ok(value.ticket_payload),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateZendeskTicketTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateZendeskTicketTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateZendeskTicketTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateZendeskTicketTaskParamsCompletion>
        for super::CreateZendeskTicketTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateZendeskTicketTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateZendeskTicketTaskParamsCompletion>
        for CreateZendeskTicketTaskParamsCompletion {
            fn from(value: super::CreateZendeskTicketTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateZendeskTicketTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CreateZendeskTicketTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateZendeskTicketTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateZendeskTicketTaskParamsPriority>
        for super::CreateZendeskTicketTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateZendeskTicketTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::CreateZendeskTicketTaskParamsPriority>
        for CreateZendeskTicketTaskParamsPriority {
            fn from(value: super::CreateZendeskTicketTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateZoomMeetingTaskParams {
            alternative_hosts: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            auto_recording: ::std::result::Result<
                super::CreateZoomMeetingTaskParamsAutoRecording,
                ::std::string::String,
            >,
            create_as_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enable_zoom_bot_auto_join: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::CreateZoomMeetingTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            record_meeting: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            recording_mode: ::std::result::Result<
                ::std::option::Option<super::CreateZoomMeetingTaskParamsRecordingMode>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::CreateZoomMeetingTaskParamsTaskType>,
                ::std::string::String,
            >,
            topic: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CreateZoomMeetingTaskParams {
            fn default() -> Self {
                Self {
                    alternative_hosts: Ok(Default::default()),
                    auto_recording: Ok(
                        super::defaults::create_zoom_meeting_task_params_auto_recording(),
                    ),
                    create_as_email: Ok(Default::default()),
                    enable_zoom_bot_auto_join: Ok(Default::default()),
                    password: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    record_meeting: Ok(Default::default()),
                    recording_mode: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    topic: Err("no value supplied for topic".to_string()),
                }
            }
        }
        impl CreateZoomMeetingTaskParams {
            pub fn alternative_hosts<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alternative_hosts = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alternative_hosts: {e}"
                        )
                    });
                self
            }
            pub fn auto_recording<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::CreateZoomMeetingTaskParamsAutoRecording,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.auto_recording = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_recording: {e}"
                        )
                    });
                self
            }
            pub fn create_as_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.create_as_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for create_as_email: {e}"
                        )
                    });
                self
            }
            pub fn enable_zoom_bot_auto_join<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enable_zoom_bot_auto_join = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for enable_zoom_bot_auto_join: {e}"
                        )
                    });
                self
            }
            pub fn password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.password = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for password: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::CreateZoomMeetingTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn record_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.record_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for record_meeting: {e}"
                        )
                    });
                self
            }
            pub fn recording_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateZoomMeetingTaskParamsRecordingMode,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.recording_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for recording_mode: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZoomMeetingTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn topic<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.topic = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for topic: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateZoomMeetingTaskParams>
        for super::CreateZoomMeetingTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateZoomMeetingTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alternative_hosts: value.alternative_hosts?,
                    auto_recording: value.auto_recording?,
                    create_as_email: value.create_as_email?,
                    enable_zoom_bot_auto_join: value.enable_zoom_bot_auto_join?,
                    password: value.password?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    record_meeting: value.record_meeting?,
                    recording_mode: value.recording_mode?,
                    task_type: value.task_type?,
                    topic: value.topic?,
                })
            }
        }
        impl ::std::convert::From<super::CreateZoomMeetingTaskParams>
        for CreateZoomMeetingTaskParams {
            fn from(value: super::CreateZoomMeetingTaskParams) -> Self {
                Self {
                    alternative_hosts: Ok(value.alternative_hosts),
                    auto_recording: Ok(value.auto_recording),
                    create_as_email: Ok(value.create_as_email),
                    enable_zoom_bot_auto_join: Ok(value.enable_zoom_bot_auto_join),
                    password: Ok(value.password),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    record_meeting: Ok(value.record_meeting),
                    recording_mode: Ok(value.recording_mode),
                    task_type: Ok(value.task_type),
                    topic: Ok(value.topic),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CreateZoomMeetingTaskParamsPostToSlackChannelsItem>
        for super::CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CreateZoomMeetingTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::CreateZoomMeetingTaskParamsPostToSlackChannelsItem,
        > for CreateZoomMeetingTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::CreateZoomMeetingTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomField {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            label: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<i64, ::std::string::String>,
            required: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::CustomFieldRequiredItem>>,
                ::std::string::String,
            >,
            shown: ::std::result::Result<
                ::std::vec::Vec<super::CustomFieldShownItem>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomField {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    default: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    label: Err("no value supplied for label".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    required: Err("no value supplied for required".to_string()),
                    shown: Err("no value supplied for shown".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CustomField {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn label<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.label = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for label: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::CustomFieldRequiredItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn shown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::CustomFieldShownItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.shown = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shown: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomField> for super::CustomField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    default: value.default?,
                    description: value.description?,
                    enabled: value.enabled?,
                    kind: value.kind?,
                    label: value.label?,
                    position: value.position?,
                    required: value.required?,
                    shown: value.shown?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CustomField> for CustomField {
            fn from(value: super::CustomField) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    default: Ok(value.default),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    kind: Ok(value.kind),
                    label: Ok(value.label),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    shown: Ok(value.shown),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CustomFieldListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CustomFieldList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CustomFieldList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CustomFieldListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldList> for super::CustomFieldList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldList> for CustomFieldList {
            fn from(value: super::CustomFieldList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldListDataItem {
            attributes: ::std::result::Result<super::CustomField, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CustomFieldListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFieldListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CustomFieldListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldListDataItem>
        for super::CustomFieldListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldListDataItem>
        for CustomFieldListDataItem {
            fn from(value: super::CustomFieldListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldOption {
            color: ::std::result::Result<::std::string::String, ::std::string::String>,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            custom_field_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for CustomFieldOption {
            fn default() -> Self {
                Self {
                    color: Err("no value supplied for color".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    custom_field_id: Ok(Default::default()),
                    default: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl CustomFieldOption {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn custom_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_field_id: {e}"
                        )
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldOption> for super::CustomFieldOption {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldOption,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    custom_field_id: value.custom_field_id?,
                    default: value.default?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldOption> for CustomFieldOption {
            fn from(value: super::CustomFieldOption) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    custom_field_id: Ok(value.custom_field_id),
                    default: Ok(value.default),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldOptionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CustomFieldOptionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CustomFieldOptionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CustomFieldOptionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CustomFieldOptionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldOptionList>
        for super::CustomFieldOptionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldOptionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldOptionList>
        for CustomFieldOptionList {
            fn from(value: super::CustomFieldOptionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldOptionListDataItem {
            attributes: ::std::result::Result<
                super::CustomFieldOption,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CustomFieldOptionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFieldOptionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CustomFieldOptionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldOption>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldOptionListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldOptionListDataItem>
        for super::CustomFieldOptionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldOptionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldOptionListDataItem>
        for CustomFieldOptionListDataItem {
            fn from(value: super::CustomFieldOptionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldOptionResponse {
            data: ::std::result::Result<
                super::CustomFieldOptionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFieldOptionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CustomFieldOptionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldOptionResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldOptionResponse>
        for super::CustomFieldOptionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldOptionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldOptionResponse>
        for CustomFieldOptionResponse {
            fn from(value: super::CustomFieldOptionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldOptionResponseData {
            attributes: ::std::result::Result<
                super::CustomFieldOption,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CustomFieldOptionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFieldOptionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CustomFieldOptionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldOption>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldOptionResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldOptionResponseData>
        for super::CustomFieldOptionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldOptionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldOptionResponseData>
        for CustomFieldOptionResponseData {
            fn from(value: super::CustomFieldOptionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldResponse {
            data: ::std::result::Result<
                super::CustomFieldResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFieldResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CustomFieldResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldResponse>
        for super::CustomFieldResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldResponse> for CustomFieldResponse {
            fn from(value: super::CustomFieldResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFieldResponseData {
            attributes: ::std::result::Result<super::CustomField, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CustomFieldResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFieldResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CustomFieldResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFieldResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFieldResponseData>
        for super::CustomFieldResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFieldResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFieldResponseData>
        for CustomFieldResponseData {
            fn from(value: super::CustomFieldResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomForm {
            command: ::std::result::Result<::std::string::String, ::std::string::String>,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomForm {
            fn default() -> Self {
                Self {
                    command: Err("no value supplied for command".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    enabled: Err("no value supplied for enabled".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl CustomForm {
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomForm> for super::CustomForm {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomForm,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    command: value.command?,
                    created_at: value.created_at?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::CustomForm> for CustomForm {
            fn from(value: super::CustomForm) -> Self {
                Self {
                    command: Ok(value.command),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFormList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::CustomFormListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for CustomFormList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl CustomFormList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::CustomFormListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFormList> for super::CustomFormList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFormList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFormList> for CustomFormList {
            fn from(value: super::CustomFormList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFormListDataItem {
            attributes: ::std::result::Result<super::CustomForm, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CustomFormListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFormListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CustomFormListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomForm>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFormListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFormListDataItem>
        for super::CustomFormListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFormListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFormListDataItem>
        for CustomFormListDataItem {
            fn from(value: super::CustomFormListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFormResponse {
            data: ::std::result::Result<
                super::CustomFormResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFormResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl CustomFormResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFormResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFormResponse> for super::CustomFormResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFormResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFormResponse> for CustomFormResponse {
            fn from(value: super::CustomFormResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct CustomFormResponseData {
            attributes: ::std::result::Result<super::CustomForm, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::CustomFormResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for CustomFormResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl CustomFormResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomForm>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::CustomFormResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<CustomFormResponseData>
        for super::CustomFormResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: CustomFormResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::CustomFormResponseData>
        for CustomFormResponseData {
            fn from(value: super::CustomFormResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Dashboard {
            auto_refresh: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<super::DashboardColor>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owner: ::std::result::Result<super::DashboardOwner, ::std::string::String>,
            period: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public: ::std::result::Result<bool, ::std::string::String>,
            range: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            team_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Dashboard {
            fn default() -> Self {
                Self {
                    auto_refresh: Ok(Default::default()),
                    color: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owner: Err("no value supplied for owner".to_string()),
                    period: Ok(Default::default()),
                    public: Err("no value supplied for public".to_string()),
                    range: Ok(Default::default()),
                    team_id: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl Dashboard {
            pub fn auto_refresh<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_refresh = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auto_refresh: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::DashboardColor>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardOwner>,
                T::Error: ::std::fmt::Display,
            {
                self.owner = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner: {e}")
                    });
                self
            }
            pub fn period<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.period = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for period: {e}")
                    });
                self
            }
            pub fn public<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.public = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public: {e}")
                    });
                self
            }
            pub fn range<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.range = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for range: {e}")
                    });
                self
            }
            pub fn team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team_id: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Dashboard> for super::Dashboard {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Dashboard,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_refresh: value.auto_refresh?,
                    color: value.color?,
                    created_at: value.created_at?,
                    description: value.description?,
                    icon: value.icon?,
                    name: value.name?,
                    owner: value.owner?,
                    period: value.period?,
                    public: value.public?,
                    range: value.range?,
                    team_id: value.team_id?,
                    updated_at: value.updated_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::Dashboard> for Dashboard {
            fn from(value: super::Dashboard) -> Self {
                Self {
                    auto_refresh: Ok(value.auto_refresh),
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    name: Ok(value.name),
                    owner: Ok(value.owner),
                    period: Ok(value.period),
                    public: Ok(value.public),
                    range: Ok(value.range),
                    team_id: Ok(value.team_id),
                    updated_at: Ok(value.updated_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::DashboardListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for DashboardList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl DashboardList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::DashboardListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardList> for super::DashboardList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardList> for DashboardList {
            fn from(value: super::DashboardList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardListDataItem {
            attributes: ::std::result::Result<super::Dashboard, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::DashboardListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl DashboardListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Dashboard>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardListDataItem>
        for super::DashboardListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardListDataItem>
        for DashboardListDataItem {
            fn from(value: super::DashboardListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanel {
            dashboard_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            data: ::std::result::Result<
                ::std::vec::Vec<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            params: ::std::result::Result<
                super::DashboardPanelParams,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelPosition>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanel {
            fn default() -> Self {
                Self {
                    dashboard_id: Ok(Default::default()),
                    data: Ok(Default::default()),
                    name: Ok(Default::default()),
                    params: Err("no value supplied for params".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanel {
            pub fn dashboard_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.dashboard_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for dashboard_id: {e}")
                    });
                self
            }
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanelParams>,
                T::Error: ::std::fmt::Display,
            {
                self.params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for params: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DashboardPanelPosition>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanel> for super::DashboardPanel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    dashboard_id: value.dashboard_id?,
                    data: value.data?,
                    name: value.name?,
                    params: value.params?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanel> for DashboardPanel {
            fn from(value: super::DashboardPanel) -> Self {
                Self {
                    dashboard_id: Ok(value.dashboard_id),
                    data: Ok(value.data),
                    name: Ok(value.name),
                    params: Ok(value.params),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::DashboardPanelListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for DashboardPanelList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl DashboardPanelList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::DashboardPanelListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelList> for super::DashboardPanelList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelList> for DashboardPanelList {
            fn from(value: super::DashboardPanelList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelListDataItem {
            attributes: ::std::result::Result<
                super::DashboardPanel,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::DashboardPanelListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl DashboardPanelListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanel>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanelListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelListDataItem>
        for super::DashboardPanelListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelListDataItem>
        for DashboardPanelListDataItem {
            fn from(value: super::DashboardPanelListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParams {
            datalabels: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelParamsDatalabels>,
                ::std::string::String,
            >,
            datasets: ::std::result::Result<
                ::std::vec::Vec<super::DashboardPanelParamsDatasetsItem>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            display: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelParamsDisplay>,
                ::std::string::String,
            >,
            legend: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelParamsLegend>,
                ::std::string::String,
            >,
            table_fields: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelParams {
            fn default() -> Self {
                Self {
                    datalabels: Ok(Default::default()),
                    datasets: Ok(Default::default()),
                    description: Ok(Default::default()),
                    display: Ok(Default::default()),
                    legend: Ok(Default::default()),
                    table_fields: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelParams {
            pub fn datalabels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DashboardPanelParamsDatalabels>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.datalabels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for datalabels: {e}")
                    });
                self
            }
            pub fn datasets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::DashboardPanelParamsDatasetsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.datasets = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for datasets: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn display<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DashboardPanelParamsDisplay>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.display = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for display: {e}")
                    });
                self
            }
            pub fn legend<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DashboardPanelParamsLegend>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.legend = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for legend: {e}")
                    });
                self
            }
            pub fn table_fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.table_fields = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for table_fields: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParams>
        for super::DashboardPanelParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    datalabels: value.datalabels?,
                    datasets: value.datasets?,
                    description: value.description?,
                    display: value.display?,
                    legend: value.legend?,
                    table_fields: value.table_fields?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParams> for DashboardPanelParams {
            fn from(value: super::DashboardPanelParams) -> Self {
                Self {
                    datalabels: Ok(value.datalabels),
                    datasets: Ok(value.datasets),
                    description: Ok(value.description),
                    display: Ok(value.display),
                    legend: Ok(value.legend),
                    table_fields: Ok(value.table_fields),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsDatalabels {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelParamsDatalabels {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelParamsDatalabels {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsDatalabels>
        for super::DashboardPanelParamsDatalabels {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsDatalabels,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { enabled: value.enabled? })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParamsDatalabels>
        for DashboardPanelParamsDatalabels {
            fn from(value: super::DashboardPanelParamsDatalabels) -> Self {
                Self { enabled: Ok(value.enabled) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsDatasetsItem {
            aggregate: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelParamsDatasetsItemAggregate>,
                ::std::string::String,
            >,
            collection: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelParamsDatasetsItemCollection>,
                ::std::string::String,
            >,
            filter: ::std::result::Result<
                ::std::vec::Vec<super::DashboardPanelParamsDatasetsItemFilterItem>,
                ::std::string::String,
            >,
            group_by: ::std::result::Result<
                ::std::option::Option<super::DashboardPanelParamsDatasetsItemGroupBy>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelParamsDatasetsItem {
            fn default() -> Self {
                Self {
                    aggregate: Ok(Default::default()),
                    collection: Ok(Default::default()),
                    filter: Ok(Default::default()),
                    group_by: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelParamsDatasetsItem {
            pub fn aggregate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::DashboardPanelParamsDatasetsItemAggregate,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.aggregate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for aggregate: {e}")
                    });
                self
            }
            pub fn collection<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::DashboardPanelParamsDatasetsItemCollection,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.collection = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for collection: {e}")
                    });
                self
            }
            pub fn filter<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::DashboardPanelParamsDatasetsItemFilterItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.filter = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for filter: {e}")
                    });
                self
            }
            pub fn group_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DashboardPanelParamsDatasetsItemGroupBy>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_by: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsDatasetsItem>
        for super::DashboardPanelParamsDatasetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsDatasetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    aggregate: value.aggregate?,
                    collection: value.collection?,
                    filter: value.filter?,
                    group_by: value.group_by?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParamsDatasetsItem>
        for DashboardPanelParamsDatasetsItem {
            fn from(value: super::DashboardPanelParamsDatasetsItem) -> Self {
                Self {
                    aggregate: Ok(value.aggregate),
                    collection: Ok(value.collection),
                    filter: Ok(value.filter),
                    group_by: Ok(value.group_by),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsDatasetsItemAggregate {
            cumulative: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::DashboardPanelParamsDatasetsItemAggregateOperation,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelParamsDatasetsItemAggregate {
            fn default() -> Self {
                Self {
                    cumulative: Ok(Default::default()),
                    key: Ok(Default::default()),
                    operation: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelParamsDatasetsItemAggregate {
            pub fn cumulative<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.cumulative = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cumulative: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::DashboardPanelParamsDatasetsItemAggregateOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsDatasetsItemAggregate>
        for super::DashboardPanelParamsDatasetsItemAggregate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsDatasetsItemAggregate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cumulative: value.cumulative?,
                    key: value.key?,
                    operation: value.operation?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParamsDatasetsItemAggregate>
        for DashboardPanelParamsDatasetsItemAggregate {
            fn from(value: super::DashboardPanelParamsDatasetsItemAggregate) -> Self {
                Self {
                    cumulative: Ok(value.cumulative),
                    key: Ok(value.key),
                    operation: Ok(value.operation),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsDatasetsItemFilterItem {
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::DashboardPanelParamsDatasetsItemFilterItemOperation,
                >,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<
                    super::DashboardPanelParamsDatasetsItemFilterItemRulesItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelParamsDatasetsItemFilterItem {
            fn default() -> Self {
                Self {
                    operation: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelParamsDatasetsItemFilterItem {
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::DashboardPanelParamsDatasetsItemFilterItemOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::DashboardPanelParamsDatasetsItemFilterItemRulesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsDatasetsItemFilterItem>
        for super::DashboardPanelParamsDatasetsItemFilterItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsDatasetsItemFilterItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    operation: value.operation?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParamsDatasetsItemFilterItem>
        for DashboardPanelParamsDatasetsItemFilterItem {
            fn from(value: super::DashboardPanelParamsDatasetsItemFilterItem) -> Self {
                Self {
                    operation: Ok(value.operation),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsDatasetsItemFilterItemRulesItem {
            condition: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for DashboardPanelParamsDatasetsItemFilterItemRulesItem {
            fn default() -> Self {
                Self {
                    condition: Ok(Default::default()),
                    key: Ok(Default::default()),
                    operation: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelParamsDatasetsItemFilterItemRulesItem {
            pub fn condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.condition = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for condition: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::DashboardPanelParamsDatasetsItemFilterItemRulesItemOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsDatasetsItemFilterItemRulesItem>
        for super::DashboardPanelParamsDatasetsItemFilterItemRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsDatasetsItemFilterItemRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition: value.condition?,
                    key: value.key?,
                    operation: value.operation?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::DashboardPanelParamsDatasetsItemFilterItemRulesItem,
        > for DashboardPanelParamsDatasetsItemFilterItemRulesItem {
            fn from(
                value: super::DashboardPanelParamsDatasetsItemFilterItemRulesItem,
            ) -> Self {
                Self {
                    condition: Ok(value.condition),
                    key: Ok(value.key),
                    operation: Ok(value.operation),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsDatasetsItemGroupByVariant1 {
            key: ::std::result::Result<
                super::DashboardPanelParamsDatasetsItemGroupByVariant1Key,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for DashboardPanelParamsDatasetsItemGroupByVariant1 {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl DashboardPanelParamsDatasetsItemGroupByVariant1 {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::DashboardPanelParamsDatasetsItemGroupByVariant1Key,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsDatasetsItemGroupByVariant1>
        for super::DashboardPanelParamsDatasetsItemGroupByVariant1 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsDatasetsItemGroupByVariant1,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParamsDatasetsItemGroupByVariant1>
        for DashboardPanelParamsDatasetsItemGroupByVariant1 {
            fn from(
                value: super::DashboardPanelParamsDatasetsItemGroupByVariant1,
            ) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelParamsLegend {
            groups: ::std::result::Result<
                super::DashboardPanelParamsLegendGroups,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelParamsLegend {
            fn default() -> Self {
                Self {
                    groups: Ok(super::defaults::dashboard_panel_params_legend_groups()),
                }
            }
        }
        impl DashboardPanelParamsLegend {
            pub fn groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanelParamsLegendGroups>,
                T::Error: ::std::fmt::Display,
            {
                self.groups = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for groups: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelParamsLegend>
        for super::DashboardPanelParamsLegend {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelParamsLegend,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { groups: value.groups? })
            }
        }
        impl ::std::convert::From<super::DashboardPanelParamsLegend>
        for DashboardPanelParamsLegend {
            fn from(value: super::DashboardPanelParamsLegend) -> Self {
                Self { groups: Ok(value.groups) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelPosition {
            h: ::std::result::Result<f64, ::std::string::String>,
            w: ::std::result::Result<f64, ::std::string::String>,
            x: ::std::result::Result<f64, ::std::string::String>,
            y: ::std::result::Result<f64, ::std::string::String>,
        }
        impl ::std::default::Default for DashboardPanelPosition {
            fn default() -> Self {
                Self {
                    h: Err("no value supplied for h".to_string()),
                    w: Err("no value supplied for w".to_string()),
                    x: Err("no value supplied for x".to_string()),
                    y: Err("no value supplied for y".to_string()),
                }
            }
        }
        impl DashboardPanelPosition {
            pub fn h<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.h = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for h: {e}"));
                self
            }
            pub fn w<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.w = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for w: {e}"));
                self
            }
            pub fn x<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.x = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for x: {e}"));
                self
            }
            pub fn y<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.y = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for y: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelPosition>
        for super::DashboardPanelPosition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelPosition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    h: value.h?,
                    w: value.w?,
                    x: value.x?,
                    y: value.y?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelPosition>
        for DashboardPanelPosition {
            fn from(value: super::DashboardPanelPosition) -> Self {
                Self {
                    h: Ok(value.h),
                    w: Ok(value.w),
                    x: Ok(value.x),
                    y: Ok(value.y),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelResponse {
            data: ::std::result::Result<
                super::DashboardPanelResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl DashboardPanelResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanelResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelResponse>
        for super::DashboardPanelResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelResponse>
        for DashboardPanelResponse {
            fn from(value: super::DashboardPanelResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardPanelResponseData {
            attributes: ::std::result::Result<
                super::DashboardPanel,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::DashboardPanelResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardPanelResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl DashboardPanelResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanel>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardPanelResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardPanelResponseData>
        for super::DashboardPanelResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardPanelResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardPanelResponseData>
        for DashboardPanelResponseData {
            fn from(value: super::DashboardPanelResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardResponse {
            data: ::std::result::Result<
                super::DashboardResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl DashboardResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardResponse> for super::DashboardResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardResponse> for DashboardResponse {
            fn from(value: super::DashboardResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DashboardResponseData {
            attributes: ::std::result::Result<super::Dashboard, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::DashboardResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DashboardResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl DashboardResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Dashboard>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DashboardResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DashboardResponseData>
        for super::DashboardResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DashboardResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::DashboardResponseData>
        for DashboardResponseData {
            fn from(value: super::DashboardResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DeleteAlertRouteResponse {
            data: ::std::result::Result<
                ::std::option::Option<super::DeleteAlertRouteResponseData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DeleteAlertRouteResponse {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl DeleteAlertRouteResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DeleteAlertRouteResponseData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DeleteAlertRouteResponse>
        for super::DeleteAlertRouteResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DeleteAlertRouteResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::DeleteAlertRouteResponse>
        for DeleteAlertRouteResponse {
            fn from(value: super::DeleteAlertRouteResponse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DeleteAlertRouteResponseData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::DeleteAlertRouteResponseDataAttributes>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DeleteAlertRouteResponseData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl DeleteAlertRouteResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::DeleteAlertRouteResponseDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DeleteAlertRouteResponseData>
        for super::DeleteAlertRouteResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DeleteAlertRouteResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::DeleteAlertRouteResponseData>
        for DeleteAlertRouteResponseData {
            fn from(value: super::DeleteAlertRouteResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DeleteAlertRouteResponseDataAttributes {
            deleted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DeleteAlertRouteResponseDataAttributes {
            fn default() -> Self {
                Self {
                    deleted: Ok(Default::default()),
                }
            }
        }
        impl DeleteAlertRouteResponseDataAttributes {
            pub fn deleted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.deleted = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for deleted: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DeleteAlertRouteResponseDataAttributes>
        for super::DeleteAlertRouteResponseDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DeleteAlertRouteResponseDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { deleted: value.deleted? })
            }
        }
        impl ::std::convert::From<super::DeleteAlertRouteResponseDataAttributes>
        for DeleteAlertRouteResponseDataAttributes {
            fn from(value: super::DeleteAlertRouteResponseDataAttributes) -> Self {
                Self { deleted: Ok(value.deleted) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DuplicateIncident {
            data: ::std::result::Result<
                super::DuplicateIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DuplicateIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl DuplicateIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DuplicateIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DuplicateIncident> for super::DuplicateIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DuplicateIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::DuplicateIncident> for DuplicateIncident {
            fn from(value: super::DuplicateIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DuplicateIncidentData {
            attributes: ::std::result::Result<
                super::DuplicateIncidentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::DuplicateIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DuplicateIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl DuplicateIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DuplicateIncidentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::DuplicateIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DuplicateIncidentData>
        for super::DuplicateIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DuplicateIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::DuplicateIncidentData>
        for DuplicateIncidentData {
            fn from(value: super::DuplicateIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct DuplicateIncidentDataAttributes {
            auto_cancel_incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            duplicate_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            reason_for_cancellation: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for DuplicateIncidentDataAttributes {
            fn default() -> Self {
                Self {
                    auto_cancel_incident: Ok(Default::default()),
                    duplicate_incident_id: Ok(Default::default()),
                    reason_for_cancellation: Ok(Default::default()),
                }
            }
        }
        impl DuplicateIncidentDataAttributes {
            pub fn auto_cancel_incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_cancel_incident = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_cancel_incident: {e}"
                        )
                    });
                self
            }
            pub fn duplicate_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.duplicate_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for duplicate_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn reason_for_cancellation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.reason_for_cancellation = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for reason_for_cancellation: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<DuplicateIncidentDataAttributes>
        for super::DuplicateIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: DuplicateIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_cancel_incident: value.auto_cancel_incident?,
                    duplicate_incident_id: value.duplicate_incident_id?,
                    reason_for_cancellation: value.reason_for_cancellation?,
                })
            }
        }
        impl ::std::convert::From<super::DuplicateIncidentDataAttributes>
        for DuplicateIncidentDataAttributes {
            fn from(value: super::DuplicateIncidentDataAttributes) -> Self {
                Self {
                    auto_cancel_incident: Ok(value.auto_cancel_incident),
                    duplicate_incident_id: Ok(value.duplicate_incident_id),
                    reason_for_cancellation: Ok(value.reason_for_cancellation),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnector {
            data: ::std::result::Result<super::EdgeConnectorData, ::std::string::String>,
        }
        impl ::std::default::Default for EdgeConnector {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl EdgeConnector {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnector> for super::EdgeConnector {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnector,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::EdgeConnector> for EdgeConnector {
            fn from(value: super::EdgeConnector) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnectorAction {
            data: ::std::result::Result<
                super::EdgeConnectorActionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EdgeConnectorAction {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl EdgeConnectorAction {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorActionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnectorAction>
        for super::EdgeConnectorAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnectorAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::EdgeConnectorAction> for EdgeConnectorAction {
            fn from(value: super::EdgeConnectorAction) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnectorActionData {
            attributes: ::std::result::Result<
                super::EdgeConnectorActionDataAttributes,
                ::std::string::String,
            >,
            id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            type_: ::std::result::Result<
                super::EdgeConnectorActionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EdgeConnectorActionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EdgeConnectorActionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorActionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorActionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnectorActionData>
        for super::EdgeConnectorActionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnectorActionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EdgeConnectorActionData>
        for EdgeConnectorActionData {
            fn from(value: super::EdgeConnectorActionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnectorActionDataAttributes {
            action_type: ::std::result::Result<
                super::EdgeConnectorActionDataAttributesActionType,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<super::EdgeConnectorActionDataAttributesIcon>,
                ::std::string::String,
            >,
            last_executed_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            parameters: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::EdgeConnectorActionDataAttributesParametersItem,
                    >,
                >,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            timeout: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EdgeConnectorActionDataAttributes {
            fn default() -> Self {
                Self {
                    action_type: Err("no value supplied for action_type".to_string()),
                    created_at: Ok(Default::default()),
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    last_executed_at: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    parameters: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    timeout: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl EdgeConnectorActionDataAttributes {
            pub fn action_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::EdgeConnectorActionDataAttributesActionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action_type: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EdgeConnectorActionDataAttributesIcon>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn last_executed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.last_executed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for last_executed_at: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn parameters<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::EdgeConnectorActionDataAttributesParametersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parameters = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parameters: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn timeout<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.timeout = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for timeout: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnectorActionDataAttributes>
        for super::EdgeConnectorActionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnectorActionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_type: value.action_type?,
                    created_at: value.created_at?,
                    description: value.description?,
                    icon: value.icon?,
                    last_executed_at: value.last_executed_at?,
                    name: value.name?,
                    parameters: value.parameters?,
                    slug: value.slug?,
                    timeout: value.timeout?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::EdgeConnectorActionDataAttributes>
        for EdgeConnectorActionDataAttributes {
            fn from(value: super::EdgeConnectorActionDataAttributes) -> Self {
                Self {
                    action_type: Ok(value.action_type),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    last_executed_at: Ok(value.last_executed_at),
                    name: Ok(value.name),
                    parameters: Ok(value.parameters),
                    slug: Ok(value.slug),
                    timeout: Ok(value.timeout),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnectorActionDataAttributesParametersItem {
            default: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            options: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::EdgeConnectorActionDataAttributesParametersItemType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for EdgeConnectorActionDataAttributesParametersItem {
            fn default() -> Self {
                Self {
                    default: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    options: Ok(Default::default()),
                    required: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl EdgeConnectorActionDataAttributesParametersItem {
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn options<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.options = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for options: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EdgeConnectorActionDataAttributesParametersItemType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnectorActionDataAttributesParametersItem>
        for super::EdgeConnectorActionDataAttributesParametersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnectorActionDataAttributesParametersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    default: value.default?,
                    description: value.description?,
                    name: value.name?,
                    options: value.options?,
                    required: value.required?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EdgeConnectorActionDataAttributesParametersItem>
        for EdgeConnectorActionDataAttributesParametersItem {
            fn from(
                value: super::EdgeConnectorActionDataAttributesParametersItem,
            ) -> Self {
                Self {
                    default: Ok(value.default),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    options: Ok(value.options),
                    required: Ok(value.required),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnectorData {
            attributes: ::std::result::Result<
                super::EdgeConnectorDataAttributes,
                ::std::string::String,
            >,
            id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            type_: ::std::result::Result<
                super::EdgeConnectorDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EdgeConnectorData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EdgeConnectorData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnectorData> for super::EdgeConnectorData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnectorData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EdgeConnectorData> for EdgeConnectorData {
            fn from(value: super::EdgeConnectorData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EdgeConnectorDataAttributes {
            created_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            deliveries_completed_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            deliveries_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            deliveries_failed_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            deliveries_queued_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            deliveries_running_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            last_poll_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            online: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::EdgeConnectorDataAttributesStatus,
                ::std::string::String,
            >,
            subscriptions: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EdgeConnectorDataAttributes {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    deliveries_completed_count: Ok(Default::default()),
                    deliveries_count: Ok(Default::default()),
                    deliveries_failed_count: Ok(Default::default()),
                    deliveries_queued_count: Ok(Default::default()),
                    deliveries_running_count: Ok(Default::default()),
                    description: Ok(Default::default()),
                    last_poll_at: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    online: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    subscriptions: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl EdgeConnectorDataAttributes {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn deliveries_completed_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.deliveries_completed_count = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deliveries_completed_count: {e}"
                        )
                    });
                self
            }
            pub fn deliveries_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.deliveries_count = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deliveries_count: {e}"
                        )
                    });
                self
            }
            pub fn deliveries_failed_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.deliveries_failed_count = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deliveries_failed_count: {e}"
                        )
                    });
                self
            }
            pub fn deliveries_queued_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.deliveries_queued_count = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deliveries_queued_count: {e}"
                        )
                    });
                self
            }
            pub fn deliveries_running_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.deliveries_running_count = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deliveries_running_count: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn last_poll_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.last_poll_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last_poll_at: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn online<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.online = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for online: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EdgeConnectorDataAttributesStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn subscriptions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subscriptions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subscriptions: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EdgeConnectorDataAttributes>
        for super::EdgeConnectorDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EdgeConnectorDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    deliveries_completed_count: value.deliveries_completed_count?,
                    deliveries_count: value.deliveries_count?,
                    deliveries_failed_count: value.deliveries_failed_count?,
                    deliveries_queued_count: value.deliveries_queued_count?,
                    deliveries_running_count: value.deliveries_running_count?,
                    description: value.description?,
                    last_poll_at: value.last_poll_at?,
                    name: value.name?,
                    online: value.online?,
                    status: value.status?,
                    subscriptions: value.subscriptions?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::EdgeConnectorDataAttributes>
        for EdgeConnectorDataAttributes {
            fn from(value: super::EdgeConnectorDataAttributes) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    deliveries_completed_count: Ok(value.deliveries_completed_count),
                    deliveries_count: Ok(value.deliveries_count),
                    deliveries_failed_count: Ok(value.deliveries_failed_count),
                    deliveries_queued_count: Ok(value.deliveries_queued_count),
                    deliveries_running_count: Ok(value.deliveries_running_count),
                    description: Ok(value.description),
                    last_poll_at: Ok(value.last_poll_at),
                    name: Ok(value.name),
                    online: Ok(value.online),
                    status: Ok(value.status),
                    subscriptions: Ok(value.subscriptions),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Environment {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::EnvironmentPropertiesItem>>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::EnvironmentSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::EnvironmentSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Environment {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Environment {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::EnvironmentPropertiesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::EnvironmentSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::EnvironmentSlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Environment> for super::Environment {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Environment,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    properties: value.properties?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Environment> for Environment {
            fn from(value: super::Environment) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::EnvironmentListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for EnvironmentList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl EnvironmentList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::EnvironmentListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentList> for super::EnvironmentList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentList> for EnvironmentList {
            fn from(value: super::EnvironmentList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentListDataItem {
            attributes: ::std::result::Result<super::Environment, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::EnvironmentListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EnvironmentListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EnvironmentListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Environment>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EnvironmentListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentListDataItem>
        for super::EnvironmentListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentListDataItem>
        for EnvironmentListDataItem {
            fn from(value: super::EnvironmentListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for EnvironmentPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl EnvironmentPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentPropertiesItem>
        for super::EnvironmentPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentPropertiesItem>
        for EnvironmentPropertiesItem {
            fn from(value: super::EnvironmentPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentResponse {
            data: ::std::result::Result<
                super::EnvironmentResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EnvironmentResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl EnvironmentResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EnvironmentResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentResponse>
        for super::EnvironmentResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentResponse> for EnvironmentResponse {
            fn from(value: super::EnvironmentResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentResponseData {
            attributes: ::std::result::Result<super::Environment, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::EnvironmentResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EnvironmentResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EnvironmentResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Environment>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EnvironmentResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentResponseData>
        for super::EnvironmentResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentResponseData>
        for EnvironmentResponseData {
            fn from(value: super::EnvironmentResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for EnvironmentSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl EnvironmentSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentSlackAliasesItem>
        for super::EnvironmentSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentSlackAliasesItem>
        for EnvironmentSlackAliasesItem {
            fn from(value: super::EnvironmentSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EnvironmentSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for EnvironmentSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl EnvironmentSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EnvironmentSlackChannelsItem>
        for super::EnvironmentSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EnvironmentSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::EnvironmentSlackChannelsItem>
        for EnvironmentSlackChannelsItem {
            fn from(value: super::EnvironmentSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ErrorsList {
            errors: ::std::result::Result<
                ::std::vec::Vec<super::ErrorsListErrorsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ErrorsList {
            fn default() -> Self {
                Self {
                    errors: Ok(Default::default()),
                }
            }
        }
        impl ErrorsList {
            pub fn errors<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::ErrorsListErrorsItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.errors = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for errors: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ErrorsList> for super::ErrorsList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ErrorsList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { errors: value.errors? })
            }
        }
        impl ::std::convert::From<super::ErrorsList> for ErrorsList {
            fn from(value: super::ErrorsList) -> Self {
                Self { errors: Ok(value.errors) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ErrorsListErrorsItem {
            code: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            detail: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<::std::string::String, ::std::string::String>,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for ErrorsListErrorsItem {
            fn default() -> Self {
                Self {
                    code: Ok(Default::default()),
                    detail: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl ErrorsListErrorsItem {
            pub fn code<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.code = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for code: {e}")
                    });
                self
            }
            pub fn detail<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.detail = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for detail: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ErrorsListErrorsItem>
        for super::ErrorsListErrorsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ErrorsListErrorsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    code: value.code?,
                    detail: value.detail?,
                    status: value.status?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::ErrorsListErrorsItem> for ErrorsListErrorsItem {
            fn from(value: super::ErrorsListErrorsItem) -> Self {
                Self {
                    code: Ok(value.code),
                    detail: Ok(value.detail),
                    status: Ok(value.status),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalateAlert {
            data: ::std::result::Result<
                ::std::option::Option<super::EscalateAlertData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalateAlert {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl EscalateAlert {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalateAlertData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalateAlert> for super::EscalateAlert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalateAlert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::EscalateAlert> for EscalateAlert {
            fn from(value: super::EscalateAlert) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalateAlertData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::EscalateAlertDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::EscalateAlertDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalateAlertData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl EscalateAlertData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalateAlertDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalateAlertDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalateAlertData> for super::EscalateAlertData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalateAlertData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EscalateAlertData> for EscalateAlertData {
            fn from(value: super::EscalateAlertData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalateAlertDataAttributes {
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            escalation_policy_level: ::std::result::Result<
                ::std::option::Option<::std::num::NonZeroU64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalateAlertDataAttributes {
            fn default() -> Self {
                Self {
                    escalation_policy_id: Ok(Default::default()),
                    escalation_policy_level: Ok(Default::default()),
                }
            }
        }
        impl EscalateAlertDataAttributes {
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_level<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::num::NonZeroU64>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_level = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_level: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalateAlertDataAttributes>
        for super::EscalateAlertDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalateAlertDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    escalation_policy_id: value.escalation_policy_id?,
                    escalation_policy_level: value.escalation_policy_level?,
                })
            }
        }
        impl ::std::convert::From<super::EscalateAlertDataAttributes>
        for EscalateAlertDataAttributes {
            fn from(value: super::EscalateAlertDataAttributes) -> Self {
                Self {
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    escalation_policy_level: Ok(value.escalation_policy_level),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicy {
            business_hours: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyBusinessHours>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_by_user_id: ::std::result::Result<i64, ::std::string::String>,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            last_updated_by_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            repeat_count: ::std::result::Result<i64, ::std::string::String>,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicy {
            fn default() -> Self {
                Self {
                    business_hours: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    created_by_user_id: Err(
                        "no value supplied for created_by_user_id".to_string(),
                    ),
                    description: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    last_updated_by_user_id: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    repeat_count: Err("no value supplied for repeat_count".to_string()),
                    service_ids: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicy {
            pub fn business_hours<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalationPolicyBusinessHours>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.business_hours = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for business_hours: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn created_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.created_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for created_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn last_updated_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_updated_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for last_updated_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn repeat_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_count: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicy> for super::EscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    business_hours: value.business_hours?,
                    created_at: value.created_at?,
                    created_by_user_id: value.created_by_user_id?,
                    description: value.description?,
                    group_ids: value.group_ids?,
                    last_updated_by_user_id: value.last_updated_by_user_id?,
                    name: value.name?,
                    repeat_count: value.repeat_count?,
                    service_ids: value.service_ids?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicy> for EscalationPolicy {
            fn from(value: super::EscalationPolicy) -> Self {
                Self {
                    business_hours: Ok(value.business_hours),
                    created_at: Ok(value.created_at),
                    created_by_user_id: Ok(value.created_by_user_id),
                    description: Ok(value.description),
                    group_ids: Ok(value.group_ids),
                    last_updated_by_user_id: Ok(value.last_updated_by_user_id),
                    name: Ok(value.name),
                    repeat_count: Ok(value.repeat_count),
                    service_ids: Ok(value.service_ids),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyBusinessHours {
            days: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::EscalationPolicyBusinessHoursDaysItem>,
                >,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyBusinessHoursTimeZone>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyBusinessHours {
            fn default() -> Self {
                Self {
                    days: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyBusinessHours {
            pub fn days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::EscalationPolicyBusinessHoursDaysItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for days: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalationPolicyBusinessHoursTimeZone>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyBusinessHours>
        for super::EscalationPolicyBusinessHours {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyBusinessHours,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    days: value.days?,
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyBusinessHours>
        for EscalationPolicyBusinessHours {
            fn from(value: super::EscalationPolicyBusinessHours) -> Self {
                Self {
                    days: Ok(value.days),
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyLevel {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            delay: ::std::result::Result<i64, ::std::string::String>,
            escalation_policy_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            escalation_policy_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_params: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<
                        super::EscalationPolicyLevelNotificationTargetParamsItem,
                    >,
                >,
                ::std::string::String,
            >,
            paging_strategy_configuration_schedule_strategy: ::std::result::Result<
                ::std::option::Option<
                    super::EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy,
                >,
                ::std::string::String,
            >,
            paging_strategy_configuration_strategy: ::std::result::Result<
                ::std::option::Option<
                    super::EscalationPolicyLevelPagingStrategyConfigurationStrategy,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyLevel {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    delay: Err("no value supplied for delay".to_string()),
                    escalation_policy_id: Err(
                        "no value supplied for escalation_policy_id".to_string(),
                    ),
                    escalation_policy_path_id: Ok(Default::default()),
                    notification_target_params: Err(
                        "no value supplied for notification_target_params".to_string(),
                    ),
                    paging_strategy_configuration_schedule_strategy: Ok(
                        Default::default(),
                    ),
                    paging_strategy_configuration_strategy: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyLevel {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay: {e}")
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_path_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<
                            super::EscalationPolicyLevelNotificationTargetParamsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_params: {e}"
                        )
                    });
                self
            }
            pub fn paging_strategy_configuration_schedule_strategy<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyLevelPagingStrategyConfigurationScheduleStrategy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_strategy_configuration_schedule_strategy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_strategy_configuration_schedule_strategy: {e}"
                        )
                    });
                self
            }
            pub fn paging_strategy_configuration_strategy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyLevelPagingStrategyConfigurationStrategy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_strategy_configuration_strategy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_strategy_configuration_strategy: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyLevel>
        for super::EscalationPolicyLevel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyLevel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    delay: value.delay?,
                    escalation_policy_id: value.escalation_policy_id?,
                    escalation_policy_path_id: value.escalation_policy_path_id?,
                    notification_target_params: value.notification_target_params?,
                    paging_strategy_configuration_schedule_strategy: value
                        .paging_strategy_configuration_schedule_strategy?,
                    paging_strategy_configuration_strategy: value
                        .paging_strategy_configuration_strategy?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyLevel>
        for EscalationPolicyLevel {
            fn from(value: super::EscalationPolicyLevel) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    delay: Ok(value.delay),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    escalation_policy_path_id: Ok(value.escalation_policy_path_id),
                    notification_target_params: Ok(value.notification_target_params),
                    paging_strategy_configuration_schedule_strategy: Ok(
                        value.paging_strategy_configuration_schedule_strategy,
                    ),
                    paging_strategy_configuration_strategy: Ok(
                        value.paging_strategy_configuration_strategy,
                    ),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyLevelList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::EscalationPolicyLevelListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for EscalationPolicyLevelList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl EscalationPolicyLevelList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::EscalationPolicyLevelListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyLevelList>
        for super::EscalationPolicyLevelList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyLevelList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyLevelList>
        for EscalationPolicyLevelList {
            fn from(value: super::EscalationPolicyLevelList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyLevelListDataItem {
            attributes: ::std::result::Result<
                super::EscalationPolicyLevel,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for EscalationPolicyLevelListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                }
            }
        }
        impl EscalationPolicyLevelListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyLevel>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyLevelListDataItem>
        for super::EscalationPolicyLevelListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyLevelListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyLevelListDataItem>
        for EscalationPolicyLevelListDataItem {
            fn from(value: super::EscalationPolicyLevelListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyLevelNotificationTargetParamsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            team_members: ::std::result::Result<
                ::std::option::Option<
                    super::EscalationPolicyLevelNotificationTargetParamsItemTeamMembers,
                >,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::EscalationPolicyLevelNotificationTargetParamsItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for EscalationPolicyLevelNotificationTargetParamsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    team_members: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EscalationPolicyLevelNotificationTargetParamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn team_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyLevelNotificationTargetParamsItemTeamMembers,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team_members = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team_members: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::EscalationPolicyLevelNotificationTargetParamsItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyLevelNotificationTargetParamsItem>
        for super::EscalationPolicyLevelNotificationTargetParamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyLevelNotificationTargetParamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    team_members: value.team_members?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::EscalationPolicyLevelNotificationTargetParamsItem,
        > for EscalationPolicyLevelNotificationTargetParamsItem {
            fn from(
                value: super::EscalationPolicyLevelNotificationTargetParamsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    team_members: Ok(value.team_members),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyLevelResponse {
            data: ::std::result::Result<
                super::EscalationPolicyLevelResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyLevelResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyLevelResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyLevelResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyLevelResponse>
        for super::EscalationPolicyLevelResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyLevelResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyLevelResponse>
        for EscalationPolicyLevelResponse {
            fn from(value: super::EscalationPolicyLevelResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyLevelResponseData {
            attributes: ::std::result::Result<
                super::EscalationPolicyLevel,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyLevelResponseDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyLevelResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyLevelResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyLevel>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalationPolicyLevelResponseDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyLevelResponseData>
        for super::EscalationPolicyLevelResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyLevelResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyLevelResponseData>
        for EscalationPolicyLevelResponseData {
            fn from(value: super::EscalationPolicyLevelResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::EscalationPolicyListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for EscalationPolicyList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl EscalationPolicyList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::EscalationPolicyListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyList>
        for super::EscalationPolicyList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyList> for EscalationPolicyList {
            fn from(value: super::EscalationPolicyList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyListDataItem {
            attributes: ::std::result::Result<
                super::EscalationPolicy,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::EscalationPolicyListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EscalationPolicyListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicy>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyListDataItem>
        for super::EscalationPolicyListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyListDataItem>
        for EscalationPolicyListDataItem {
            fn from(value: super::EscalationPolicyListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPath {
            after_deferral_behavior: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyPathAfterDeferralBehavior>,
                ::std::string::String,
            >,
            after_deferral_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<bool, ::std::string::String>,
            escalation_policy_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            initial_delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            match_mode: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyPathMatchMode>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notification_type: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            path_type: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyPathPathType>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            repeat_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::EscalationPolicyPathRulesItem>,
                >,
                ::std::string::String,
            >,
            time_restriction_time_zone: ::std::result::Result<
                ::std::option::Option<
                    super::EscalationPolicyPathTimeRestrictionTimeZone,
                >,
                ::std::string::String,
            >,
            time_restrictions: ::std::result::Result<
                ::std::vec::Vec<super::EscalationPolicyPathTimeRestrictionsItem>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyPath {
            fn default() -> Self {
                Self {
                    after_deferral_behavior: Ok(Default::default()),
                    after_deferral_path_id: Ok(Default::default()),
                    created_at: Ok(Default::default()),
                    default: Err("no value supplied for default".to_string()),
                    escalation_policy_id: Err(
                        "no value supplied for escalation_policy_id".to_string(),
                    ),
                    initial_delay: Ok(Default::default()),
                    match_mode: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notification_type: Err(
                        "no value supplied for notification_type".to_string(),
                    ),
                    path_type: Ok(Default::default()),
                    position: Ok(Default::default()),
                    repeat: Err("no value supplied for repeat".to_string()),
                    repeat_count: Err("no value supplied for repeat_count".to_string()),
                    rules: Ok(Default::default()),
                    time_restriction_time_zone: Ok(Default::default()),
                    time_restrictions: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyPath {
            pub fn after_deferral_behavior<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyPathAfterDeferralBehavior,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.after_deferral_behavior = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for after_deferral_behavior: {e}"
                        )
                    });
                self
            }
            pub fn after_deferral_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.after_deferral_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for after_deferral_path_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn initial_delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.initial_delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for initial_delay: {e}")
                    });
                self
            }
            pub fn match_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalationPolicyPathMatchMode>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.match_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for match_mode: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_type: {e}"
                        )
                    });
                self
            }
            pub fn path_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalationPolicyPathPathType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.path_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for path_type: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn repeat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat: {e}")
                    });
                self
            }
            pub fn repeat_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_count: {e}")
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::EscalationPolicyPathRulesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
            pub fn time_restriction_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyPathTimeRestrictionTimeZone,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_restriction_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_restriction_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn time_restrictions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::EscalationPolicyPathTimeRestrictionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_restrictions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_restrictions: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPath>
        for super::EscalationPolicyPath {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPath,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    after_deferral_behavior: value.after_deferral_behavior?,
                    after_deferral_path_id: value.after_deferral_path_id?,
                    created_at: value.created_at?,
                    default: value.default?,
                    escalation_policy_id: value.escalation_policy_id?,
                    initial_delay: value.initial_delay?,
                    match_mode: value.match_mode?,
                    name: value.name?,
                    notification_type: value.notification_type?,
                    path_type: value.path_type?,
                    position: value.position?,
                    repeat: value.repeat?,
                    repeat_count: value.repeat_count?,
                    rules: value.rules?,
                    time_restriction_time_zone: value.time_restriction_time_zone?,
                    time_restrictions: value.time_restrictions?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPath> for EscalationPolicyPath {
            fn from(value: super::EscalationPolicyPath) -> Self {
                Self {
                    after_deferral_behavior: Ok(value.after_deferral_behavior),
                    after_deferral_path_id: Ok(value.after_deferral_path_id),
                    created_at: Ok(value.created_at),
                    default: Ok(value.default),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    initial_delay: Ok(value.initial_delay),
                    match_mode: Ok(value.match_mode),
                    name: Ok(value.name),
                    notification_type: Ok(value.notification_type),
                    path_type: Ok(value.path_type),
                    position: Ok(value.position),
                    repeat: Ok(value.repeat),
                    repeat_count: Ok(value.repeat_count),
                    rules: Ok(value.rules),
                    time_restriction_time_zone: Ok(value.time_restriction_time_zone),
                    time_restrictions: Ok(value.time_restrictions),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPathList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::EscalationPolicyPathListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for EscalationPolicyPathList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl EscalationPolicyPathList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::EscalationPolicyPathListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPathList>
        for super::EscalationPolicyPathList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPathList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPathList>
        for EscalationPolicyPathList {
            fn from(value: super::EscalationPolicyPathList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPathListDataItem {
            attributes: ::std::result::Result<
                super::EscalationPolicyPath,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for EscalationPolicyPathListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                }
            }
        }
        impl EscalationPolicyPathListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyPath>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPathListDataItem>
        for super::EscalationPolicyPathListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPathListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPathListDataItem>
        for EscalationPolicyPathListDataItem {
            fn from(value: super::EscalationPolicyPathListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPathResponse {
            data: ::std::result::Result<
                super::EscalationPolicyPathResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyPathResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyPathResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyPathResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPathResponse>
        for super::EscalationPolicyPathResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPathResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPathResponse>
        for EscalationPolicyPathResponse {
            fn from(value: super::EscalationPolicyPathResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPathResponseData {
            attributes: ::std::result::Result<
                super::EscalationPolicyPath,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                ::std::option::Option<super::EscalationPolicyPathResponseDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyPathResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyPathResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyPath>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::EscalationPolicyPathResponseDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPathResponseData>
        for super::EscalationPolicyPathResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPathResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPathResponseData>
        for EscalationPolicyPathResponseData {
            fn from(value: super::EscalationPolicyPathResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPathRulesItemTimeBlocksItem {
            all_day: ::std::result::Result<bool, ::std::string::String>,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            friday: ::std::result::Result<bool, ::std::string::String>,
            monday: ::std::result::Result<bool, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            saturday: ::std::result::Result<bool, ::std::string::String>,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sunday: ::std::result::Result<bool, ::std::string::String>,
            thursday: ::std::result::Result<bool, ::std::string::String>,
            tuesday: ::std::result::Result<bool, ::std::string::String>,
            wednesday: ::std::result::Result<bool, ::std::string::String>,
        }
        impl ::std::default::Default for EscalationPolicyPathRulesItemTimeBlocksItem {
            fn default() -> Self {
                Self {
                    all_day: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    friday: Ok(Default::default()),
                    monday: Ok(Default::default()),
                    position: Ok(Default::default()),
                    saturday: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                    sunday: Ok(Default::default()),
                    thursday: Ok(Default::default()),
                    tuesday: Ok(Default::default()),
                    wednesday: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyPathRulesItemTimeBlocksItem {
            pub fn all_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.all_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for all_day: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn friday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.friday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for friday: {e}")
                    });
                self
            }
            pub fn monday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.monday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for monday: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn saturday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.saturday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for saturday: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn sunday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.sunday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sunday: {e}")
                    });
                self
            }
            pub fn thursday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.thursday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for thursday: {e}")
                    });
                self
            }
            pub fn tuesday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.tuesday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tuesday: {e}")
                    });
                self
            }
            pub fn wednesday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.wednesday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for wednesday: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPathRulesItemTimeBlocksItem>
        for super::EscalationPolicyPathRulesItemTimeBlocksItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPathRulesItemTimeBlocksItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    all_day: value.all_day?,
                    end_time: value.end_time?,
                    friday: value.friday?,
                    monday: value.monday?,
                    position: value.position?,
                    saturday: value.saturday?,
                    start_time: value.start_time?,
                    sunday: value.sunday?,
                    thursday: value.thursday?,
                    tuesday: value.tuesday?,
                    wednesday: value.wednesday?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPathRulesItemTimeBlocksItem>
        for EscalationPolicyPathRulesItemTimeBlocksItem {
            fn from(value: super::EscalationPolicyPathRulesItemTimeBlocksItem) -> Self {
                Self {
                    all_day: Ok(value.all_day),
                    end_time: Ok(value.end_time),
                    friday: Ok(value.friday),
                    monday: Ok(value.monday),
                    position: Ok(value.position),
                    saturday: Ok(value.saturday),
                    start_time: Ok(value.start_time),
                    sunday: Ok(value.sunday),
                    thursday: Ok(value.thursday),
                    tuesday: Ok(value.tuesday),
                    wednesday: Ok(value.wednesday),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyPathTimeRestrictionsItem {
            end_day: ::std::result::Result<
                ::std::option::Option<
                    super::EscalationPolicyPathTimeRestrictionsItemEndDay,
                >,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_day: ::std::result::Result<
                ::std::option::Option<
                    super::EscalationPolicyPathTimeRestrictionsItemStartDay,
                >,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyPathTimeRestrictionsItem {
            fn default() -> Self {
                Self {
                    end_day: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    start_day: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyPathTimeRestrictionsItem {
            pub fn end_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyPathTimeRestrictionsItemEndDay,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_day: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::EscalationPolicyPathTimeRestrictionsItemStartDay,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_day: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyPathTimeRestrictionsItem>
        for super::EscalationPolicyPathTimeRestrictionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyPathTimeRestrictionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_day: value.end_day?,
                    end_time: value.end_time?,
                    start_day: value.start_day?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyPathTimeRestrictionsItem>
        for EscalationPolicyPathTimeRestrictionsItem {
            fn from(value: super::EscalationPolicyPathTimeRestrictionsItem) -> Self {
                Self {
                    end_day: Ok(value.end_day),
                    end_time: Ok(value.end_time),
                    start_day: Ok(value.start_day),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyResponse {
            data: ::std::result::Result<
                super::EscalationPolicyResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl EscalationPolicyResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyResponse>
        for super::EscalationPolicyResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyResponse>
        for EscalationPolicyResponse {
            fn from(value: super::EscalationPolicyResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct EscalationPolicyResponseData {
            attributes: ::std::result::Result<
                super::EscalationPolicy,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::EscalationPolicyResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for EscalationPolicyResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl EscalationPolicyResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicy>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::EscalationPolicyResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<EscalationPolicyResponseData>
        for super::EscalationPolicyResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: EscalationPolicyResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::EscalationPolicyResponseData>
        for EscalationPolicyResponseData {
            fn from(value: super::EscalationPolicyResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormField {
            auto_set_by_catalog_property_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            default_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            input_kind: ::std::result::Result<
                super::FormFieldInputKind,
                ::std::string::String,
            >,
            kind: ::std::result::Result<super::FormFieldKind, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            required: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            show_on_incident_details: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shown: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value_kind: ::std::result::Result<
                super::FormFieldValueKind,
                ::std::string::String,
            >,
            value_kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormField {
            fn default() -> Self {
                Self {
                    auto_set_by_catalog_property_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    default_values: Err(
                        "no value supplied for default_values".to_string(),
                    ),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    input_kind: Err("no value supplied for input_kind".to_string()),
                    kind: Err("no value supplied for kind".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    required: Err("no value supplied for required".to_string()),
                    show_on_incident_details: Ok(Default::default()),
                    shown: Err("no value supplied for shown".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    value_kind: Err("no value supplied for value_kind".to_string()),
                    value_kind_catalog_id: Ok(Default::default()),
                }
            }
        }
        impl FormField {
            pub fn auto_set_by_catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_set_by_catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_set_by_catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn default_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for default_values: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn input_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldInputKind>,
                T::Error: ::std::fmt::Display,
            {
                self.input_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for input_kind: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn show_on_incident_details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_on_incident_details = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_on_incident_details: {e}"
                        )
                    });
                self
            }
            pub fn shown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shown = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shown: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn value_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldValueKind>,
                T::Error: ::std::fmt::Display,
            {
                self.value_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value_kind: {e}")
                    });
                self
            }
            pub fn value_kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value_kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for value_kind_catalog_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormField> for super::FormField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_set_by_catalog_property_id: value
                        .auto_set_by_catalog_property_id?,
                    created_at: value.created_at?,
                    default_values: value.default_values?,
                    description: value.description?,
                    enabled: value.enabled?,
                    input_kind: value.input_kind?,
                    kind: value.kind?,
                    name: value.name?,
                    required: value.required?,
                    show_on_incident_details: value.show_on_incident_details?,
                    shown: value.shown?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                    value_kind: value.value_kind?,
                    value_kind_catalog_id: value.value_kind_catalog_id?,
                })
            }
        }
        impl ::std::convert::From<super::FormField> for FormField {
            fn from(value: super::FormField) -> Self {
                Self {
                    auto_set_by_catalog_property_id: Ok(
                        value.auto_set_by_catalog_property_id,
                    ),
                    created_at: Ok(value.created_at),
                    default_values: Ok(value.default_values),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    input_kind: Ok(value.input_kind),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    required: Ok(value.required),
                    show_on_incident_details: Ok(value.show_on_incident_details),
                    shown: Ok(value.shown),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                    value_kind: Ok(value.value_kind),
                    value_kind_catalog_id: Ok(value.value_kind_catalog_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormFieldListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormFieldList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FormFieldListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldList> for super::FormFieldList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldList> for FormFieldList {
            fn from(value: super::FormFieldList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldListDataItem {
            attributes: ::std::result::Result<super::FormField, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldListDataItem>
        for super::FormFieldListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldListDataItem>
        for FormFieldListDataItem {
            fn from(value: super::FormFieldListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldOption {
            color: ::std::result::Result<::std::string::String, ::std::string::String>,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldOption {
            fn default() -> Self {
                Self {
                    color: Err("no value supplied for color".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    default: Ok(Default::default()),
                    form_field_id: Ok(Default::default()),
                    id: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl FormFieldOption {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldOption> for super::FormFieldOption {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldOption,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    default: value.default?,
                    form_field_id: value.form_field_id?,
                    id: value.id?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldOption> for FormFieldOption {
            fn from(value: super::FormFieldOption) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    default: Ok(value.default),
                    form_field_id: Ok(value.form_field_id),
                    id: Ok(value.id),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldOptionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormFieldOptionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldOptionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormFieldOptionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FormFieldOptionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldOptionList>
        for super::FormFieldOptionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldOptionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldOptionList> for FormFieldOptionList {
            fn from(value: super::FormFieldOptionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldOptionListDataItem {
            attributes: ::std::result::Result<
                super::FormFieldOption,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldOptionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldOptionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldOptionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldOption>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldOptionListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldOptionListDataItem>
        for super::FormFieldOptionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldOptionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldOptionListDataItem>
        for FormFieldOptionListDataItem {
            fn from(value: super::FormFieldOptionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldOptionResponse {
            data: ::std::result::Result<
                super::FormFieldOptionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldOptionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormFieldOptionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldOptionResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldOptionResponse>
        for super::FormFieldOptionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldOptionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldOptionResponse>
        for FormFieldOptionResponse {
            fn from(value: super::FormFieldOptionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldOptionResponseData {
            attributes: ::std::result::Result<
                super::FormFieldOption,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldOptionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldOptionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldOptionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldOption>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldOptionResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldOptionResponseData>
        for super::FormFieldOptionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldOptionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldOptionResponseData>
        for FormFieldOptionResponseData {
            fn from(value: super::FormFieldOptionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacement {
            form: ::std::result::Result<::std::string::String, ::std::string::String>,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            form_set_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            non_editable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            placement_operator: ::std::result::Result<
                ::std::option::Option<super::FormFieldPlacementPlacementOperator>,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            required: ::std::result::Result<bool, ::std::string::String>,
            required_operator: ::std::result::Result<
                ::std::option::Option<super::FormFieldPlacementRequiredOperator>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacement {
            fn default() -> Self {
                Self {
                    form: Err("no value supplied for form".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    form_set_id: Err("no value supplied for form_set_id".to_string()),
                    non_editable: Ok(Default::default()),
                    placement_operator: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    required: Err("no value supplied for required".to_string()),
                    required_operator: Ok(Default::default()),
                }
            }
        }
        impl FormFieldPlacement {
            pub fn form<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn form_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_set_id: {e}")
                    });
                self
            }
            pub fn non_editable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.non_editable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for non_editable: {e}")
                    });
                self
            }
            pub fn placement_operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::FormFieldPlacementPlacementOperator>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.placement_operator = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for placement_operator: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn required_operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::FormFieldPlacementRequiredOperator>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.required_operator = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for required_operator: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacement> for super::FormFieldPlacement {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacement,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form: value.form?,
                    form_field_id: value.form_field_id?,
                    form_set_id: value.form_set_id?,
                    non_editable: value.non_editable?,
                    placement_operator: value.placement_operator?,
                    position: value.position?,
                    required: value.required?,
                    required_operator: value.required_operator?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacement> for FormFieldPlacement {
            fn from(value: super::FormFieldPlacement) -> Self {
                Self {
                    form: Ok(value.form),
                    form_field_id: Ok(value.form_field_id),
                    form_set_id: Ok(value.form_set_id),
                    non_editable: Ok(value.non_editable),
                    placement_operator: Ok(value.placement_operator),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    required_operator: Ok(value.required_operator),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementCondition {
            comparison: ::std::result::Result<
                super::FormFieldPlacementConditionComparison,
                ::std::string::String,
            >,
            conditioned: ::std::result::Result<
                super::FormFieldPlacementConditionConditioned,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            form_field_placement_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementCondition {
            fn default() -> Self {
                Self {
                    comparison: Err("no value supplied for comparison".to_string()),
                    conditioned: Err("no value supplied for conditioned".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    form_field_placement_id: Err(
                        "no value supplied for form_field_placement_id".to_string(),
                    ),
                    position: Err("no value supplied for position".to_string()),
                    values: Err("no value supplied for values".to_string()),
                }
            }
        }
        impl FormFieldPlacementCondition {
            pub fn comparison<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacementConditionComparison>,
                T::Error: ::std::fmt::Display,
            {
                self.comparison = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comparison: {e}")
                    });
                self
            }
            pub fn conditioned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::FormFieldPlacementConditionConditioned,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditioned = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditioned: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn form_field_placement_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_placement_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for form_field_placement_id: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementCondition>
        for super::FormFieldPlacementCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comparison: value.comparison?,
                    conditioned: value.conditioned?,
                    form_field_id: value.form_field_id?,
                    form_field_placement_id: value.form_field_placement_id?,
                    position: value.position?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementCondition>
        for FormFieldPlacementCondition {
            fn from(value: super::FormFieldPlacementCondition) -> Self {
                Self {
                    comparison: Ok(value.comparison),
                    conditioned: Ok(value.conditioned),
                    form_field_id: Ok(value.form_field_id),
                    form_field_placement_id: Ok(value.form_field_placement_id),
                    position: Ok(value.position),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementConditionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormFieldPlacementConditionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldPlacementConditionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormFieldPlacementConditionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FormFieldPlacementConditionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementConditionList>
        for super::FormFieldPlacementConditionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementConditionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementConditionList>
        for FormFieldPlacementConditionList {
            fn from(value: super::FormFieldPlacementConditionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementConditionListDataItem {
            attributes: ::std::result::Result<
                super::FormFieldPlacementCondition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldPlacementConditionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementConditionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldPlacementConditionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacementCondition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::FormFieldPlacementConditionListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementConditionListDataItem>
        for super::FormFieldPlacementConditionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementConditionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementConditionListDataItem>
        for FormFieldPlacementConditionListDataItem {
            fn from(value: super::FormFieldPlacementConditionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementConditionResponse {
            data: ::std::result::Result<
                super::FormFieldPlacementConditionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementConditionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormFieldPlacementConditionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::FormFieldPlacementConditionResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementConditionResponse>
        for super::FormFieldPlacementConditionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementConditionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementConditionResponse>
        for FormFieldPlacementConditionResponse {
            fn from(value: super::FormFieldPlacementConditionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementConditionResponseData {
            attributes: ::std::result::Result<
                super::FormFieldPlacementCondition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldPlacementConditionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementConditionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldPlacementConditionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacementCondition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::FormFieldPlacementConditionResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementConditionResponseData>
        for super::FormFieldPlacementConditionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementConditionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementConditionResponseData>
        for FormFieldPlacementConditionResponseData {
            fn from(value: super::FormFieldPlacementConditionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormFieldPlacementListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldPlacementList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormFieldPlacementList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FormFieldPlacementListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementList>
        for super::FormFieldPlacementList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementList>
        for FormFieldPlacementList {
            fn from(value: super::FormFieldPlacementList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementListDataItem {
            attributes: ::std::result::Result<
                super::FormFieldPlacement,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldPlacementListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldPlacementListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacement>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacementListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementListDataItem>
        for super::FormFieldPlacementListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementListDataItem>
        for FormFieldPlacementListDataItem {
            fn from(value: super::FormFieldPlacementListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementResponse {
            data: ::std::result::Result<
                super::FormFieldPlacementResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormFieldPlacementResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacementResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementResponse>
        for super::FormFieldPlacementResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementResponse>
        for FormFieldPlacementResponse {
            fn from(value: super::FormFieldPlacementResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPlacementResponseData {
            attributes: ::std::result::Result<
                super::FormFieldPlacement,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldPlacementResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPlacementResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldPlacementResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacement>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPlacementResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPlacementResponseData>
        for super::FormFieldPlacementResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPlacementResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPlacementResponseData>
        for FormFieldPlacementResponseData {
            fn from(value: super::FormFieldPlacementResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPosition {
            form: ::std::result::Result<
                super::FormFieldPositionForm,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldPosition {
            fn default() -> Self {
                Self {
                    form: Err("no value supplied for form".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    position: Err("no value supplied for position".to_string()),
                }
            }
        }
        impl FormFieldPosition {
            pub fn form<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPositionForm>,
                T::Error: ::std::fmt::Display,
            {
                self.form = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPosition> for super::FormFieldPosition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPosition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form: value.form?,
                    form_field_id: value.form_field_id?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPosition> for FormFieldPosition {
            fn from(value: super::FormFieldPosition) -> Self {
                Self {
                    form: Ok(value.form),
                    form_field_id: Ok(value.form_field_id),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPositionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormFieldPositionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormFieldPositionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormFieldPositionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FormFieldPositionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPositionList>
        for super::FormFieldPositionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPositionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPositionList>
        for FormFieldPositionList {
            fn from(value: super::FormFieldPositionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPositionListDataItem {
            attributes: ::std::result::Result<
                super::FormFieldPosition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldPositionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPositionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldPositionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPosition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPositionListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPositionListDataItem>
        for super::FormFieldPositionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPositionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPositionListDataItem>
        for FormFieldPositionListDataItem {
            fn from(value: super::FormFieldPositionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPositionResponse {
            data: ::std::result::Result<
                super::FormFieldPositionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPositionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormFieldPositionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPositionResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPositionResponse>
        for super::FormFieldPositionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPositionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPositionResponse>
        for FormFieldPositionResponse {
            fn from(value: super::FormFieldPositionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldPositionResponseData {
            attributes: ::std::result::Result<
                super::FormFieldPosition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldPositionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldPositionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldPositionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPosition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldPositionResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldPositionResponseData>
        for super::FormFieldPositionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldPositionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldPositionResponseData>
        for FormFieldPositionResponseData {
            fn from(value: super::FormFieldPositionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldResponse {
            data: ::std::result::Result<
                super::FormFieldResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormFieldResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldResponse> for super::FormFieldResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldResponse> for FormFieldResponse {
            fn from(value: super::FormFieldResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormFieldResponseData {
            attributes: ::std::result::Result<super::FormField, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormFieldResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormFieldResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormFieldResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormField>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormFieldResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormFieldResponseData>
        for super::FormFieldResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormFieldResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormFieldResponseData>
        for FormFieldResponseData {
            fn from(value: super::FormFieldResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSet {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            forms: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            is_default: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSet {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    forms: Err("no value supplied for forms".to_string()),
                    is_default: Err("no value supplied for is_default".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl FormSet {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn forms<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.forms = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for forms: {e}")
                    });
                self
            }
            pub fn is_default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.is_default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_default: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSet> for super::FormSet {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSet,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    forms: value.forms?,
                    is_default: value.is_default?,
                    name: value.name?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::FormSet> for FormSet {
            fn from(value: super::FormSet) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    forms: Ok(value.forms),
                    is_default: Ok(value.is_default),
                    name: Ok(value.name),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetCondition {
            comparison: ::std::result::Result<
                super::FormSetConditionComparison,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            form_set_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetCondition {
            fn default() -> Self {
                Self {
                    comparison: Err("no value supplied for comparison".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    form_set_id: Err("no value supplied for form_set_id".to_string()),
                    values: Err("no value supplied for values".to_string()),
                }
            }
        }
        impl FormSetCondition {
            pub fn comparison<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetConditionComparison>,
                T::Error: ::std::fmt::Display,
            {
                self.comparison = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comparison: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn form_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_set_id: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetCondition> for super::FormSetCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comparison: value.comparison?,
                    form_field_id: value.form_field_id?,
                    form_set_id: value.form_set_id?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetCondition> for FormSetCondition {
            fn from(value: super::FormSetCondition) -> Self {
                Self {
                    comparison: Ok(value.comparison),
                    form_field_id: Ok(value.form_field_id),
                    form_set_id: Ok(value.form_set_id),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetConditionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormSetConditionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormSetConditionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormSetConditionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FormSetConditionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetConditionList>
        for super::FormSetConditionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetConditionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetConditionList> for FormSetConditionList {
            fn from(value: super::FormSetConditionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetConditionListDataItem {
            attributes: ::std::result::Result<
                super::FormSetCondition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormSetConditionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetConditionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormSetConditionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetCondition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetConditionListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetConditionListDataItem>
        for super::FormSetConditionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetConditionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetConditionListDataItem>
        for FormSetConditionListDataItem {
            fn from(value: super::FormSetConditionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetConditionResponse {
            data: ::std::result::Result<
                super::FormSetConditionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetConditionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormSetConditionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetConditionResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetConditionResponse>
        for super::FormSetConditionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetConditionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetConditionResponse>
        for FormSetConditionResponse {
            fn from(value: super::FormSetConditionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetConditionResponseData {
            attributes: ::std::result::Result<
                super::FormSetCondition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormSetConditionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetConditionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormSetConditionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetCondition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetConditionResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetConditionResponseData>
        for super::FormSetConditionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetConditionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetConditionResponseData>
        for FormSetConditionResponseData {
            fn from(value: super::FormSetConditionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FormSetListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FormSetList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FormSetList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::FormSetListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetList> for super::FormSetList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetList> for FormSetList {
            fn from(value: super::FormSetList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetListDataItem {
            attributes: ::std::result::Result<super::FormSet, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormSetListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormSetListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSet>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetListDataItem>
        for super::FormSetListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetListDataItem> for FormSetListDataItem {
            fn from(value: super::FormSetListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetResponse {
            data: ::std::result::Result<
                super::FormSetResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FormSetResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetResponse> for super::FormSetResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetResponse> for FormSetResponse {
            fn from(value: super::FormSetResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FormSetResponseData {
            attributes: ::std::result::Result<super::FormSet, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FormSetResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FormSetResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FormSetResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSet>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FormSetResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FormSetResponseData>
        for super::FormSetResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FormSetResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FormSetResponseData> for FormSetResponseData {
            fn from(value: super::FormSetResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Functionality {
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_team_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            owner_user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::FunctionalityPropertiesItem>,
                >,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::FunctionalitySlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::FunctionalitySlackChannelsItem>,
                >,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Functionality {
            fn default() -> Self {
                Self {
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    escalation_policy_id: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    opsgenie_team_id: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_ids: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Functionality {
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn opsgenie_team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_team_id: {e}"
                        )
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::FunctionalityPropertiesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::FunctionalitySlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::FunctionalitySlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Functionality> for super::Functionality {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Functionality,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    created_at: value.created_at?,
                    description: value.description?,
                    environment_ids: value.environment_ids?,
                    escalation_policy_id: value.escalation_policy_id?,
                    external_id: value.external_id?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    opsgenie_team_id: value.opsgenie_team_id?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_ids: value.owner_user_ids?,
                    pagerduty_id: value.pagerduty_id?,
                    position: value.position?,
                    properties: value.properties?,
                    public_description: value.public_description?,
                    service_ids: value.service_ids?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Functionality> for Functionality {
            fn from(value: super::Functionality) -> Self {
                Self {
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    environment_ids: Ok(value.environment_ids),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    external_id: Ok(value.external_id),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    opsgenie_team_id: Ok(value.opsgenie_team_id),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_ids: Ok(value.owner_user_ids),
                    pagerduty_id: Ok(value.pagerduty_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    public_description: Ok(value.public_description),
                    service_ids: Ok(value.service_ids),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalityList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::FunctionalityListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for FunctionalityList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl FunctionalityList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::FunctionalityListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalityList> for super::FunctionalityList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalityList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalityList> for FunctionalityList {
            fn from(value: super::FunctionalityList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalityListDataItem {
            attributes: ::std::result::Result<
                super::Functionality,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FunctionalityListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FunctionalityListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FunctionalityListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Functionality>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FunctionalityListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalityListDataItem>
        for super::FunctionalityListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalityListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalityListDataItem>
        for FunctionalityListDataItem {
            fn from(value: super::FunctionalityListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalityPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for FunctionalityPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl FunctionalityPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalityPropertiesItem>
        for super::FunctionalityPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalityPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalityPropertiesItem>
        for FunctionalityPropertiesItem {
            fn from(value: super::FunctionalityPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalityResponse {
            data: ::std::result::Result<
                super::FunctionalityResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FunctionalityResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl FunctionalityResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FunctionalityResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalityResponse>
        for super::FunctionalityResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalityResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalityResponse>
        for FunctionalityResponse {
            fn from(value: super::FunctionalityResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalityResponseData {
            attributes: ::std::result::Result<
                super::Functionality,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::FunctionalityResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for FunctionalityResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl FunctionalityResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Functionality>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::FunctionalityResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalityResponseData>
        for super::FunctionalityResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalityResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalityResponseData>
        for FunctionalityResponseData {
            fn from(value: super::FunctionalityResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalitySlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for FunctionalitySlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl FunctionalitySlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalitySlackAliasesItem>
        for super::FunctionalitySlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalitySlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalitySlackAliasesItem>
        for FunctionalitySlackAliasesItem {
            fn from(value: super::FunctionalitySlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct FunctionalitySlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for FunctionalitySlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl FunctionalitySlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<FunctionalitySlackChannelsItem>
        for super::FunctionalitySlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: FunctionalitySlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::FunctionalitySlackChannelsItem>
        for FunctionalitySlackChannelsItem {
            fn from(value: super::FunctionalitySlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetAlertsTaskParams {
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            environments_impacted_by_incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            parent_message_thread_task: ::std::result::Result<
                ::std::option::Option<super::GetAlertsTaskParamsParentMessageThreadTask>,
                ::std::string::String,
            >,
            past_duration: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<super::GetAlertsTaskParamsPostToSlackChannelsItem>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            services_impacted_by_incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            sources: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::GetAlertsTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for GetAlertsTaskParams {
            fn default() -> Self {
                Self {
                    environment_ids: Ok(Default::default()),
                    environments_impacted_by_incident: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    parent_message_thread_task: Ok(Default::default()),
                    past_duration: Err(
                        "no value supplied for past_duration".to_string(),
                    ),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    services_impacted_by_incident: Ok(Default::default()),
                    sources: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl GetAlertsTaskParams {
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn environments_impacted_by_incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.environments_impacted_by_incident = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environments_impacted_by_incident: {e}"
                        )
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn parent_message_thread_task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::GetAlertsTaskParamsParentMessageThreadTask,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parent_message_thread_task = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_message_thread_task: {e}"
                        )
                    });
                self
            }
            pub fn past_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.past_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for past_duration: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::GetAlertsTaskParamsPostToSlackChannelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn services_impacted_by_incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.services_impacted_by_incident = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_impacted_by_incident: {e}"
                        )
                    });
                self
            }
            pub fn sources<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sources = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sources: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::GetAlertsTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<GetAlertsTaskParams>
        for super::GetAlertsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetAlertsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    environment_ids: value.environment_ids?,
                    environments_impacted_by_incident: value
                        .environments_impacted_by_incident?,
                    labels: value.labels?,
                    parent_message_thread_task: value.parent_message_thread_task?,
                    past_duration: value.past_duration?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    service_ids: value.service_ids?,
                    services_impacted_by_incident: value.services_impacted_by_incident?,
                    sources: value.sources?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::GetAlertsTaskParams> for GetAlertsTaskParams {
            fn from(value: super::GetAlertsTaskParams) -> Self {
                Self {
                    environment_ids: Ok(value.environment_ids),
                    environments_impacted_by_incident: Ok(
                        value.environments_impacted_by_incident,
                    ),
                    labels: Ok(value.labels),
                    parent_message_thread_task: Ok(value.parent_message_thread_task),
                    past_duration: Ok(value.past_duration),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    service_ids: Ok(value.service_ids),
                    services_impacted_by_incident: Ok(
                        value.services_impacted_by_incident,
                    ),
                    sources: Ok(value.sources),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetAlertsTaskParamsParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for GetAlertsTaskParamsParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetAlertsTaskParamsParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<GetAlertsTaskParamsParentMessageThreadTask>
        for super::GetAlertsTaskParamsParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetAlertsTaskParamsParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::GetAlertsTaskParamsParentMessageThreadTask>
        for GetAlertsTaskParamsParentMessageThreadTask {
            fn from(value: super::GetAlertsTaskParamsParentMessageThreadTask) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetAlertsTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for GetAlertsTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetAlertsTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<GetAlertsTaskParamsPostToSlackChannelsItem>
        for super::GetAlertsTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetAlertsTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::GetAlertsTaskParamsPostToSlackChannelsItem>
        for GetAlertsTaskParamsPostToSlackChannelsItem {
            fn from(value: super::GetAlertsTaskParamsPostToSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem,
        > for super::GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem,
        > for GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem {
            fn from(
                value: super::GetGithubCommitsTaskParamsVariant0PostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem,
        > for super::GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem,
        > for GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem {
            fn from(
                value: super::GetGithubCommitsTaskParamsVariant1PostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem,
        > for super::GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem,
        > for GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem {
            fn from(
                value: super::GetGitlabCommitsTaskParamsVariant0PostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem,
        > for super::GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem,
        > for GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem {
            fn from(
                value: super::GetGitlabCommitsTaskParamsVariant1PostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetPulsesTaskParams {
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            environments_impacted_by_incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            parent_message_thread_task: ::std::result::Result<
                ::std::option::Option<super::GetPulsesTaskParamsParentMessageThreadTask>,
                ::std::string::String,
            >,
            past_duration: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<super::GetPulsesTaskParamsPostToSlackChannelsItem>,
                ::std::string::String,
            >,
            refs: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            services_impacted_by_incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            sources: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::GetPulsesTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for GetPulsesTaskParams {
            fn default() -> Self {
                Self {
                    environment_ids: Ok(Default::default()),
                    environments_impacted_by_incident: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    parent_message_thread_task: Ok(Default::default()),
                    past_duration: Err(
                        "no value supplied for past_duration".to_string(),
                    ),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    refs: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    services_impacted_by_incident: Ok(Default::default()),
                    sources: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl GetPulsesTaskParams {
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn environments_impacted_by_incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.environments_impacted_by_incident = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environments_impacted_by_incident: {e}"
                        )
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn parent_message_thread_task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::GetPulsesTaskParamsParentMessageThreadTask,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parent_message_thread_task = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_message_thread_task: {e}"
                        )
                    });
                self
            }
            pub fn past_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.past_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for past_duration: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::GetPulsesTaskParamsPostToSlackChannelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn refs<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.refs = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for refs: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn services_impacted_by_incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.services_impacted_by_incident = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_impacted_by_incident: {e}"
                        )
                    });
                self
            }
            pub fn sources<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sources = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sources: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::GetPulsesTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<GetPulsesTaskParams>
        for super::GetPulsesTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetPulsesTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    environment_ids: value.environment_ids?,
                    environments_impacted_by_incident: value
                        .environments_impacted_by_incident?,
                    labels: value.labels?,
                    parent_message_thread_task: value.parent_message_thread_task?,
                    past_duration: value.past_duration?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    refs: value.refs?,
                    service_ids: value.service_ids?,
                    services_impacted_by_incident: value.services_impacted_by_incident?,
                    sources: value.sources?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::GetPulsesTaskParams> for GetPulsesTaskParams {
            fn from(value: super::GetPulsesTaskParams) -> Self {
                Self {
                    environment_ids: Ok(value.environment_ids),
                    environments_impacted_by_incident: Ok(
                        value.environments_impacted_by_incident,
                    ),
                    labels: Ok(value.labels),
                    parent_message_thread_task: Ok(value.parent_message_thread_task),
                    past_duration: Ok(value.past_duration),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    refs: Ok(value.refs),
                    service_ids: Ok(value.service_ids),
                    services_impacted_by_incident: Ok(
                        value.services_impacted_by_incident,
                    ),
                    sources: Ok(value.sources),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetPulsesTaskParamsParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for GetPulsesTaskParamsParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetPulsesTaskParamsParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<GetPulsesTaskParamsParentMessageThreadTask>
        for super::GetPulsesTaskParamsParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetPulsesTaskParamsParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::GetPulsesTaskParamsParentMessageThreadTask>
        for GetPulsesTaskParamsParentMessageThreadTask {
            fn from(value: super::GetPulsesTaskParamsParentMessageThreadTask) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct GetPulsesTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for GetPulsesTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl GetPulsesTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<GetPulsesTaskParamsPostToSlackChannelsItem>
        for super::GetPulsesTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: GetPulsesTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::GetPulsesTaskParamsPostToSlackChannelsItem>
        for GetPulsesTaskParamsPostToSlackChannelsItem {
            fn from(value: super::GetPulsesTaskParamsPostToSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Heartbeat {
            alert_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_summary: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_address: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<bool, ::std::string::String>,
            expires_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            interval: ::std::result::Result<i64, ::std::string::String>,
            interval_unit: ::std::result::Result<
                super::HeartbeatIntervalUnit,
                ::std::string::String,
            >,
            last_pinged_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notification_target_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            notification_target_type: ::std::result::Result<
                super::HeartbeatNotificationTargetType,
                ::std::string::String,
            >,
            ping_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            secret: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<super::HeartbeatStatus, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Heartbeat {
            fn default() -> Self {
                Self {
                    alert_description: Ok(Default::default()),
                    alert_summary: Err(
                        "no value supplied for alert_summary".to_string(),
                    ),
                    alert_urgency_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    email_address: Err(
                        "no value supplied for email_address".to_string(),
                    ),
                    enabled: Err("no value supplied for enabled".to_string()),
                    expires_at: Ok(Default::default()),
                    interval: Err("no value supplied for interval".to_string()),
                    interval_unit: Err(
                        "no value supplied for interval_unit".to_string(),
                    ),
                    last_pinged_at: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notification_target_id: Err(
                        "no value supplied for notification_target_id".to_string(),
                    ),
                    notification_target_type: Err(
                        "no value supplied for notification_target_type".to_string(),
                    ),
                    ping_url: Ok(Default::default()),
                    secret: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Heartbeat {
            pub fn alert_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_description: {e}"
                        )
                    });
                self
            }
            pub fn alert_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_summary: {e}")
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn email_address<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.email_address = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_address: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn expires_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.expires_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expires_at: {e}")
                    });
                self
            }
            pub fn interval<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.interval = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for interval: {e}")
                    });
                self
            }
            pub fn interval_unit<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HeartbeatIntervalUnit>,
                T::Error: ::std::fmt::Display,
            {
                self.interval_unit = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for interval_unit: {e}")
                    });
                self
            }
            pub fn last_pinged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_pinged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for last_pinged_at: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HeartbeatNotificationTargetType>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_type: {e}"
                        )
                    });
                self
            }
            pub fn ping_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ping_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ping_url: {e}")
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HeartbeatStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Heartbeat> for super::Heartbeat {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Heartbeat,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_description: value.alert_description?,
                    alert_summary: value.alert_summary?,
                    alert_urgency_id: value.alert_urgency_id?,
                    created_at: value.created_at?,
                    description: value.description?,
                    email_address: value.email_address?,
                    enabled: value.enabled?,
                    expires_at: value.expires_at?,
                    interval: value.interval?,
                    interval_unit: value.interval_unit?,
                    last_pinged_at: value.last_pinged_at?,
                    name: value.name?,
                    notification_target_id: value.notification_target_id?,
                    notification_target_type: value.notification_target_type?,
                    ping_url: value.ping_url?,
                    secret: value.secret?,
                    status: value.status?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Heartbeat> for Heartbeat {
            fn from(value: super::Heartbeat) -> Self {
                Self {
                    alert_description: Ok(value.alert_description),
                    alert_summary: Ok(value.alert_summary),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    email_address: Ok(value.email_address),
                    enabled: Ok(value.enabled),
                    expires_at: Ok(value.expires_at),
                    interval: Ok(value.interval),
                    interval_unit: Ok(value.interval_unit),
                    last_pinged_at: Ok(value.last_pinged_at),
                    name: Ok(value.name),
                    notification_target_id: Ok(value.notification_target_id),
                    notification_target_type: Ok(value.notification_target_type),
                    ping_url: Ok(value.ping_url),
                    secret: Ok(value.secret),
                    status: Ok(value.status),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct HeartbeatList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::HeartbeatListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for HeartbeatList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl HeartbeatList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::HeartbeatListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<HeartbeatList> for super::HeartbeatList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: HeartbeatList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::HeartbeatList> for HeartbeatList {
            fn from(value: super::HeartbeatList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct HeartbeatListDataItem {
            attributes: ::std::result::Result<super::Heartbeat, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::HeartbeatListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for HeartbeatListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl HeartbeatListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Heartbeat>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HeartbeatListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<HeartbeatListDataItem>
        for super::HeartbeatListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: HeartbeatListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::HeartbeatListDataItem>
        for HeartbeatListDataItem {
            fn from(value: super::HeartbeatListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct HeartbeatResponse {
            data: ::std::result::Result<
                super::HeartbeatResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for HeartbeatResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl HeartbeatResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HeartbeatResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<HeartbeatResponse> for super::HeartbeatResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: HeartbeatResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::HeartbeatResponse> for HeartbeatResponse {
            fn from(value: super::HeartbeatResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct HeartbeatResponseData {
            attributes: ::std::result::Result<super::Heartbeat, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::HeartbeatResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for HeartbeatResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl HeartbeatResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Heartbeat>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HeartbeatResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<HeartbeatResponseData>
        for super::HeartbeatResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: HeartbeatResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::HeartbeatResponseData>
        for HeartbeatResponseData {
            fn from(value: super::HeartbeatResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct HttpClientTaskParams {
            body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            event_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            event_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            headers: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            method: ::std::result::Result<
                super::HttpClientTaskParamsMethod,
                ::std::string::String,
            >,
            params: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<super::HttpClientTaskParamsPostToSlackChannelsItem>,
                ::std::string::String,
            >,
            retry_count: ::std::result::Result<i64, ::std::string::String>,
            retry_wait_time: ::std::result::Result<i64, ::std::string::String>,
            succeed_on_status: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::HttpClientTaskParamsTaskType>,
                ::std::string::String,
            >,
            url: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for HttpClientTaskParams {
            fn default() -> Self {
                Self {
                    body: Ok(Default::default()),
                    event_message: Ok(Default::default()),
                    event_url: Ok(Default::default()),
                    headers: Ok(Default::default()),
                    method: Ok(super::defaults::http_client_task_params_method()),
                    params: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    retry_count: Ok(Default::default()),
                    retry_wait_time: Ok(super::defaults::default_u64::<i64, 1>()),
                    succeed_on_status: Err(
                        "no value supplied for succeed_on_status".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                    url: Err("no value supplied for url".to_string()),
                }
            }
        }
        impl HttpClientTaskParams {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn event_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event_message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_message: {e}")
                    });
                self
            }
            pub fn event_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_url: {e}")
                    });
                self
            }
            pub fn headers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.headers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for headers: {e}")
                    });
                self
            }
            pub fn method<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::HttpClientTaskParamsMethod>,
                T::Error: ::std::fmt::Display,
            {
                self.method = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for method: {e}")
                    });
                self
            }
            pub fn params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for params: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::HttpClientTaskParamsPostToSlackChannelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn retry_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.retry_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for retry_count: {e}")
                    });
                self
            }
            pub fn retry_wait_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.retry_wait_time = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retry_wait_time: {e}"
                        )
                    });
                self
            }
            pub fn succeed_on_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.succeed_on_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for succeed_on_status: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::HttpClientTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<HttpClientTaskParams>
        for super::HttpClientTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: HttpClientTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    event_message: value.event_message?,
                    event_url: value.event_url?,
                    headers: value.headers?,
                    method: value.method?,
                    params: value.params?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    retry_count: value.retry_count?,
                    retry_wait_time: value.retry_wait_time?,
                    succeed_on_status: value.succeed_on_status?,
                    task_type: value.task_type?,
                    url: value.url?,
                })
            }
        }
        impl ::std::convert::From<super::HttpClientTaskParams> for HttpClientTaskParams {
            fn from(value: super::HttpClientTaskParams) -> Self {
                Self {
                    body: Ok(value.body),
                    event_message: Ok(value.event_message),
                    event_url: Ok(value.event_url),
                    headers: Ok(value.headers),
                    method: Ok(value.method),
                    params: Ok(value.params),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    retry_count: Ok(value.retry_count),
                    retry_wait_time: Ok(value.retry_wait_time),
                    succeed_on_status: Ok(value.succeed_on_status),
                    task_type: Ok(value.task_type),
                    url: Ok(value.url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct HttpClientTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for HttpClientTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl HttpClientTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<HttpClientTaskParamsPostToSlackChannelsItem>
        for super::HttpClientTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: HttpClientTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::HttpClientTaskParamsPostToSlackChannelsItem>
        for HttpClientTaskParamsPostToSlackChannelsItem {
            fn from(value: super::HttpClientTaskParamsPostToSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ImportMeetingRecording {
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            meeting_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            platform: ::std::result::Result<
                super::ImportMeetingRecordingPlatform,
                ::std::string::String,
            >,
            recall_recording_id: ::std::result::Result<
                ::uuid::Uuid,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                super::ImportMeetingRecordingSource,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ImportMeetingRecording {
            fn default() -> Self {
                Self {
                    ended_at: Ok(Default::default()),
                    meeting_url: Ok(Default::default()),
                    platform: Err("no value supplied for platform".to_string()),
                    recall_recording_id: Err(
                        "no value supplied for recall_recording_id".to_string(),
                    ),
                    source: Err("no value supplied for source".to_string()),
                    started_at: Ok(Default::default()),
                }
            }
        }
        impl ImportMeetingRecording {
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn meeting_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.meeting_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meeting_url: {e}")
                    });
                self
            }
            pub fn platform<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ImportMeetingRecordingPlatform>,
                T::Error: ::std::fmt::Display,
            {
                self.platform = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for platform: {e}")
                    });
                self
            }
            pub fn recall_recording_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.recall_recording_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for recall_recording_id: {e}"
                        )
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ImportMeetingRecordingSource>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ImportMeetingRecording>
        for super::ImportMeetingRecording {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ImportMeetingRecording,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ended_at: value.ended_at?,
                    meeting_url: value.meeting_url?,
                    platform: value.platform?,
                    recall_recording_id: value.recall_recording_id?,
                    source: value.source?,
                    started_at: value.started_at?,
                })
            }
        }
        impl ::std::convert::From<super::ImportMeetingRecording>
        for ImportMeetingRecording {
            fn from(value: super::ImportMeetingRecording) -> Self {
                Self {
                    ended_at: Ok(value.ended_at),
                    meeting_url: Ok(value.meeting_url),
                    platform: Ok(value.platform),
                    recall_recording_id: Ok(value.recall_recording_id),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InTriageIncident {
            data: ::std::result::Result<
                super::InTriageIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InTriageIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl InTriageIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::InTriageIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InTriageIncident> for super::InTriageIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InTriageIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::InTriageIncident> for InTriageIncident {
            fn from(value: super::InTriageIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InTriageIncidentData {
            type_: ::std::result::Result<
                super::InTriageIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InTriageIncidentData {
            fn default() -> Self {
                Self {
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl InTriageIncidentData {
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::InTriageIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InTriageIncidentData>
        for super::InTriageIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InTriageIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { type_: value.type_? })
            }
        }
        impl ::std::convert::From<super::InTriageIncidentData> for InTriageIncidentData {
            fn from(value: super::InTriageIncidentData) -> Self {
                Self { type_: Ok(value.type_) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Incident {
            acknowledged_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            airtable_base_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            airtable_record_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            airtable_record_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            airtable_table_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            asana_task_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            asana_task_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cancellation_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cancelled_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cancelled_by: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            clickup_task_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            clickup_task_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            closed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            closed_by: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            confluence_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            confluence_page_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            datadog_notebook_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            datadog_notebook_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            detected_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            duplicate_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environments: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::EnvironmentResponse>>,
                ::std::string::String,
            >,
            freshservice_task_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            freshservice_task_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            freshservice_ticket_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            freshservice_ticket_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionalities: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::FunctionalityResponse>>,
                ::std::string::String,
            >,
            github_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_drive_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_drive_parent_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_drive_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_meeting_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_meeting_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            groups: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::TeamResponse>>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            in_triage_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            in_triage_by: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            incident_types: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::IncidentTypeResponse>>,
                ::std::string::String,
            >,
            jira_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            linear_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            linear_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mattermost_channel_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mattermost_channel_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mattermost_channel_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_channel_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_channel_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_channel_short_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_channel_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_chat_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_chat_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_meeting_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_meeting_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            microsoft_teams_team_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mitigated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mitigated_by: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            mitigation_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            motion_task_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            motion_task_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            muted_service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_alert_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_alert_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_incident_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_incident_number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_incident_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            parent_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            private: ::std::result::Result<bool, ::std::string::String>,
            public_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            quip_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            quip_page_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolution_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolved_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolved_by: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            retrospective_progress_status: ::std::result::Result<
                ::std::option::Option<super::IncidentRetrospectiveProgressStatus>,
                ::std::string::String,
            >,
            scheduled_for: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            scheduled_until: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sequential_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            service_now_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_now_incident_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_now_incident_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            services: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::ServiceResponse>>,
                ::std::string::String,
            >,
            severity: ::std::result::Result<
                ::std::option::Option<super::SeverityResponse>,
                ::std::string::String,
            >,
            sharepoint_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sharepoint_page_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            short_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shortcut_story_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shortcut_story_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shortcut_task_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shortcut_task_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_archived: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slack_channel_deep_link: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_short_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_last_message_ts: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_by: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            trello_card_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            trello_card_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            victor_ops_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            victor_ops_incident_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            webex_meeting_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            webex_meeting_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zendesk_ticket_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zendesk_ticket_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zoom_meeting_global_dial_in_numbers: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::IncidentZoomMeetingGlobalDialInNumbersItem>,
                >,
                ::std::string::String,
            >,
            zoom_meeting_h323_password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zoom_meeting_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zoom_meeting_join_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zoom_meeting_password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zoom_meeting_pstn_password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            zoom_meeting_start_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Incident {
            fn default() -> Self {
                Self {
                    acknowledged_at: Ok(Default::default()),
                    airtable_base_key: Ok(Default::default()),
                    airtable_record_id: Ok(Default::default()),
                    airtable_record_url: Ok(Default::default()),
                    airtable_table_name: Ok(Default::default()),
                    asana_task_id: Ok(Default::default()),
                    asana_task_url: Ok(Default::default()),
                    cancellation_message: Ok(Default::default()),
                    cancelled_at: Ok(Default::default()),
                    cancelled_by: Ok(Default::default()),
                    clickup_task_id: Ok(Default::default()),
                    clickup_task_url: Ok(Default::default()),
                    closed_at: Ok(Default::default()),
                    closed_by: Ok(Default::default()),
                    confluence_page_id: Ok(Default::default()),
                    confluence_page_url: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    datadog_notebook_id: Ok(Default::default()),
                    datadog_notebook_url: Ok(Default::default()),
                    detected_at: Ok(Default::default()),
                    duplicate_incident_id: Ok(Default::default()),
                    environments: Ok(Default::default()),
                    freshservice_task_id: Ok(Default::default()),
                    freshservice_task_url: Ok(Default::default()),
                    freshservice_ticket_id: Ok(Default::default()),
                    freshservice_ticket_url: Ok(Default::default()),
                    functionalities: Ok(Default::default()),
                    github_issue_id: Ok(Default::default()),
                    github_issue_url: Ok(Default::default()),
                    gitlab_issue_id: Ok(Default::default()),
                    gitlab_issue_url: Ok(Default::default()),
                    google_drive_id: Ok(Default::default()),
                    google_drive_parent_id: Ok(Default::default()),
                    google_drive_url: Ok(Default::default()),
                    google_meeting_id: Ok(Default::default()),
                    google_meeting_url: Ok(Default::default()),
                    groups: Ok(Default::default()),
                    id: Ok(Default::default()),
                    in_triage_at: Ok(Default::default()),
                    in_triage_by: Ok(Default::default()),
                    incident_types: Ok(Default::default()),
                    jira_issue_id: Ok(Default::default()),
                    jira_issue_key: Ok(Default::default()),
                    jira_issue_url: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    linear_issue_id: Ok(Default::default()),
                    linear_issue_url: Ok(Default::default()),
                    mattermost_channel_id: Ok(Default::default()),
                    mattermost_channel_name: Ok(Default::default()),
                    mattermost_channel_url: Ok(Default::default()),
                    microsoft_teams_channel_id: Ok(Default::default()),
                    microsoft_teams_channel_name: Ok(Default::default()),
                    microsoft_teams_channel_short_url: Ok(Default::default()),
                    microsoft_teams_channel_url: Ok(Default::default()),
                    microsoft_teams_chat_id: Ok(Default::default()),
                    microsoft_teams_chat_url: Ok(Default::default()),
                    microsoft_teams_meeting_id: Ok(Default::default()),
                    microsoft_teams_meeting_url: Ok(Default::default()),
                    microsoft_teams_team_id: Ok(Default::default()),
                    mitigated_at: Ok(Default::default()),
                    mitigated_by: Ok(Default::default()),
                    mitigation_message: Ok(Default::default()),
                    motion_task_id: Ok(Default::default()),
                    motion_task_url: Ok(Default::default()),
                    muted_service_ids: Ok(Default::default()),
                    opsgenie_alert_id: Ok(Default::default()),
                    opsgenie_alert_url: Ok(Default::default()),
                    opsgenie_incident_id: Ok(Default::default()),
                    opsgenie_incident_url: Ok(Default::default()),
                    pagerduty_incident_id: Ok(Default::default()),
                    pagerduty_incident_number: Ok(Default::default()),
                    pagerduty_incident_url: Ok(Default::default()),
                    parent_incident_id: Ok(Default::default()),
                    private: Ok(Default::default()),
                    public_title: Ok(Default::default()),
                    quip_page_id: Ok(Default::default()),
                    quip_page_url: Ok(Default::default()),
                    resolution_message: Ok(Default::default()),
                    resolved_at: Ok(Default::default()),
                    resolved_by: Ok(Default::default()),
                    retrospective_progress_status: Ok(Default::default()),
                    scheduled_for: Ok(Default::default()),
                    scheduled_until: Ok(Default::default()),
                    sequential_id: Ok(Default::default()),
                    service_now_incident_id: Ok(Default::default()),
                    service_now_incident_key: Ok(Default::default()),
                    service_now_incident_url: Ok(Default::default()),
                    services: Ok(Default::default()),
                    severity: Ok(Default::default()),
                    sharepoint_page_id: Ok(Default::default()),
                    sharepoint_page_url: Ok(Default::default()),
                    short_url: Ok(Default::default()),
                    shortcut_story_id: Ok(Default::default()),
                    shortcut_story_url: Ok(Default::default()),
                    shortcut_task_id: Ok(Default::default()),
                    shortcut_task_url: Ok(Default::default()),
                    slack_channel_archived: Ok(Default::default()),
                    slack_channel_deep_link: Ok(Default::default()),
                    slack_channel_id: Ok(Default::default()),
                    slack_channel_name: Ok(Default::default()),
                    slack_channel_short_url: Ok(Default::default()),
                    slack_channel_url: Ok(Default::default()),
                    slack_last_message_ts: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    source: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    started_by: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    trello_card_id: Ok(Default::default()),
                    trello_card_url: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    url: Ok(Default::default()),
                    user: Ok(Default::default()),
                    victor_ops_incident_id: Ok(Default::default()),
                    victor_ops_incident_url: Ok(Default::default()),
                    webex_meeting_id: Ok(Default::default()),
                    webex_meeting_url: Ok(Default::default()),
                    zendesk_ticket_id: Ok(Default::default()),
                    zendesk_ticket_url: Ok(Default::default()),
                    zoom_meeting_global_dial_in_numbers: Ok(Default::default()),
                    zoom_meeting_h323_password: Ok(Default::default()),
                    zoom_meeting_id: Ok(Default::default()),
                    zoom_meeting_join_url: Ok(Default::default()),
                    zoom_meeting_password: Ok(Default::default()),
                    zoom_meeting_pstn_password: Ok(Default::default()),
                    zoom_meeting_start_url: Ok(Default::default()),
                }
            }
        }
        impl Incident {
            pub fn acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn airtable_base_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.airtable_base_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for airtable_base_key: {e}"
                        )
                    });
                self
            }
            pub fn airtable_record_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.airtable_record_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for airtable_record_id: {e}"
                        )
                    });
                self
            }
            pub fn airtable_record_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.airtable_record_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for airtable_record_url: {e}"
                        )
                    });
                self
            }
            pub fn airtable_table_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.airtable_table_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for airtable_table_name: {e}"
                        )
                    });
                self
            }
            pub fn asana_task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.asana_task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for asana_task_id: {e}")
                    });
                self
            }
            pub fn asana_task_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.asana_task_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for asana_task_url: {e}"
                        )
                    });
                self
            }
            pub fn cancellation_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cancellation_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for cancellation_message: {e}"
                        )
                    });
                self
            }
            pub fn cancelled_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cancelled_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cancelled_at: {e}")
                    });
                self
            }
            pub fn cancelled_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.cancelled_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cancelled_by: {e}")
                    });
                self
            }
            pub fn clickup_task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.clickup_task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for clickup_task_id: {e}"
                        )
                    });
                self
            }
            pub fn clickup_task_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.clickup_task_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for clickup_task_url: {e}"
                        )
                    });
                self
            }
            pub fn closed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.closed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for closed_at: {e}")
                    });
                self
            }
            pub fn closed_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.closed_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for closed_by: {e}")
                    });
                self
            }
            pub fn confluence_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.confluence_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for confluence_page_id: {e}"
                        )
                    });
                self
            }
            pub fn confluence_page_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.confluence_page_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for confluence_page_url: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn datadog_notebook_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.datadog_notebook_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for datadog_notebook_id: {e}"
                        )
                    });
                self
            }
            pub fn datadog_notebook_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.datadog_notebook_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for datadog_notebook_url: {e}"
                        )
                    });
                self
            }
            pub fn detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for detected_at: {e}")
                    });
                self
            }
            pub fn duplicate_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.duplicate_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for duplicate_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn environments<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::EnvironmentResponse>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environments = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for environments: {e}")
                    });
                self
            }
            pub fn freshservice_task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.freshservice_task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for freshservice_task_id: {e}"
                        )
                    });
                self
            }
            pub fn freshservice_task_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.freshservice_task_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for freshservice_task_url: {e}"
                        )
                    });
                self
            }
            pub fn freshservice_ticket_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.freshservice_ticket_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for freshservice_ticket_id: {e}"
                        )
                    });
                self
            }
            pub fn freshservice_ticket_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.freshservice_ticket_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for freshservice_ticket_url: {e}"
                        )
                    });
                self
            }
            pub fn functionalities<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::FunctionalityResponse>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionalities = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionalities: {e}"
                        )
                    });
                self
            }
            pub fn github_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_issue_id: {e}"
                        )
                    });
                self
            }
            pub fn github_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_issue_id: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_id: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_parent_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_parent_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_parent_id: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_url: {e}"
                        )
                    });
                self
            }
            pub fn google_meeting_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_meeting_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_meeting_id: {e}"
                        )
                    });
                self
            }
            pub fn google_meeting_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_meeting_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_meeting_url: {e}"
                        )
                    });
                self
            }
            pub fn groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::TeamResponse>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for groups: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn in_triage_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.in_triage_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for in_triage_at: {e}")
                    });
                self
            }
            pub fn in_triage_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.in_triage_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for in_triage_by: {e}")
                    });
                self
            }
            pub fn incident_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::IncidentTypeResponse>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_types = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_types: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn linear_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.linear_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for linear_issue_id: {e}"
                        )
                    });
                self
            }
            pub fn linear_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.linear_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for linear_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn mattermost_channel_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mattermost_channel_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mattermost_channel_id: {e}"
                        )
                    });
                self
            }
            pub fn mattermost_channel_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mattermost_channel_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mattermost_channel_name: {e}"
                        )
                    });
                self
            }
            pub fn mattermost_channel_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mattermost_channel_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mattermost_channel_url: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_channel_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_channel_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_channel_id: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_channel_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_channel_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_channel_name: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_channel_short_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_channel_short_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_channel_short_url: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_channel_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_channel_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_channel_url: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_chat_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_chat_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_chat_id: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_chat_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_chat_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_chat_url: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_meeting_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_meeting_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_meeting_id: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_meeting_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_meeting_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_meeting_url: {e}"
                        )
                    });
                self
            }
            pub fn microsoft_teams_team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.microsoft_teams_team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for microsoft_teams_team_id: {e}"
                        )
                    });
                self
            }
            pub fn mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_at: {e}")
                    });
                self
            }
            pub fn mitigated_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_by: {e}")
                    });
                self
            }
            pub fn mitigation_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigation_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mitigation_message: {e}"
                        )
                    });
                self
            }
            pub fn motion_task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.motion_task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for motion_task_id: {e}"
                        )
                    });
                self
            }
            pub fn motion_task_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.motion_task_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for motion_task_url: {e}"
                        )
                    });
                self
            }
            pub fn muted_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.muted_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for muted_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn opsgenie_alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_alert_id: {e}"
                        )
                    });
                self
            }
            pub fn opsgenie_alert_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_alert_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_alert_url: {e}"
                        )
                    });
                self
            }
            pub fn opsgenie_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn opsgenie_incident_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_incident_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_incident_url: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_incident_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_incident_number = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_incident_number: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_incident_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_incident_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_incident_url: {e}"
                        )
                    });
                self
            }
            pub fn parent_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn quip_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.quip_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for quip_page_id: {e}")
                    });
                self
            }
            pub fn quip_page_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.quip_page_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for quip_page_url: {e}")
                    });
                self
            }
            pub fn resolution_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_message: {e}"
                        )
                    });
                self
            }
            pub fn resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_at: {e}")
                    });
                self
            }
            pub fn resolved_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_by: {e}")
                    });
                self
            }
            pub fn retrospective_progress_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentRetrospectiveProgressStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_progress_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_progress_status: {e}"
                        )
                    });
                self
            }
            pub fn scheduled_for<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scheduled_for = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scheduled_for: {e}")
                    });
                self
            }
            pub fn scheduled_until<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scheduled_until = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for scheduled_until: {e}"
                        )
                    });
                self
            }
            pub fn sequential_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.sequential_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sequential_id: {e}")
                    });
                self
            }
            pub fn service_now_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn service_now_incident_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_incident_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_incident_key: {e}"
                        )
                    });
                self
            }
            pub fn service_now_incident_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_incident_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_incident_url: {e}"
                        )
                    });
                self
            }
            pub fn services<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::ServiceResponse>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for services: {e}")
                    });
                self
            }
            pub fn severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SeverityResponse>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity: {e}")
                    });
                self
            }
            pub fn sharepoint_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sharepoint_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sharepoint_page_id: {e}"
                        )
                    });
                self
            }
            pub fn sharepoint_page_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sharepoint_page_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sharepoint_page_url: {e}"
                        )
                    });
                self
            }
            pub fn short_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.short_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for short_url: {e}")
                    });
                self
            }
            pub fn shortcut_story_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shortcut_story_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shortcut_story_id: {e}"
                        )
                    });
                self
            }
            pub fn shortcut_story_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shortcut_story_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shortcut_story_url: {e}"
                        )
                    });
                self
            }
            pub fn shortcut_task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shortcut_task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shortcut_task_id: {e}"
                        )
                    });
                self
            }
            pub fn shortcut_task_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shortcut_task_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shortcut_task_url: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_archived<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_archived = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_archived: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_deep_link<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_deep_link = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_deep_link: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_name: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_short_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_short_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_short_url: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_url: {e}"
                        )
                    });
                self
            }
            pub fn slack_last_message_ts<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_last_message_ts = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_last_message_ts: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn started_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_by: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn trello_card_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.trello_card_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for trello_card_id: {e}"
                        )
                    });
                self
            }
            pub fn trello_card_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.trello_card_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for trello_card_url: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
            pub fn user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user: {e}")
                    });
                self
            }
            pub fn victor_ops_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.victor_ops_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for victor_ops_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn victor_ops_incident_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.victor_ops_incident_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for victor_ops_incident_url: {e}"
                        )
                    });
                self
            }
            pub fn webex_meeting_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.webex_meeting_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webex_meeting_id: {e}"
                        )
                    });
                self
            }
            pub fn webex_meeting_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.webex_meeting_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webex_meeting_url: {e}"
                        )
                    });
                self
            }
            pub fn zendesk_ticket_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zendesk_ticket_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zendesk_ticket_id: {e}"
                        )
                    });
                self
            }
            pub fn zendesk_ticket_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zendesk_ticket_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zendesk_ticket_url: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_global_dial_in_numbers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::IncidentZoomMeetingGlobalDialInNumbersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_global_dial_in_numbers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_global_dial_in_numbers: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_h323_password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_h323_password = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_h323_password: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_id: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_join_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_join_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_join_url: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_password = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_password: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_pstn_password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_pstn_password = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_pstn_password: {e}"
                        )
                    });
                self
            }
            pub fn zoom_meeting_start_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.zoom_meeting_start_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for zoom_meeting_start_url: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Incident> for super::Incident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Incident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    acknowledged_at: value.acknowledged_at?,
                    airtable_base_key: value.airtable_base_key?,
                    airtable_record_id: value.airtable_record_id?,
                    airtable_record_url: value.airtable_record_url?,
                    airtable_table_name: value.airtable_table_name?,
                    asana_task_id: value.asana_task_id?,
                    asana_task_url: value.asana_task_url?,
                    cancellation_message: value.cancellation_message?,
                    cancelled_at: value.cancelled_at?,
                    cancelled_by: value.cancelled_by?,
                    clickup_task_id: value.clickup_task_id?,
                    clickup_task_url: value.clickup_task_url?,
                    closed_at: value.closed_at?,
                    closed_by: value.closed_by?,
                    confluence_page_id: value.confluence_page_id?,
                    confluence_page_url: value.confluence_page_url?,
                    created_at: value.created_at?,
                    datadog_notebook_id: value.datadog_notebook_id?,
                    datadog_notebook_url: value.datadog_notebook_url?,
                    detected_at: value.detected_at?,
                    duplicate_incident_id: value.duplicate_incident_id?,
                    environments: value.environments?,
                    freshservice_task_id: value.freshservice_task_id?,
                    freshservice_task_url: value.freshservice_task_url?,
                    freshservice_ticket_id: value.freshservice_ticket_id?,
                    freshservice_ticket_url: value.freshservice_ticket_url?,
                    functionalities: value.functionalities?,
                    github_issue_id: value.github_issue_id?,
                    github_issue_url: value.github_issue_url?,
                    gitlab_issue_id: value.gitlab_issue_id?,
                    gitlab_issue_url: value.gitlab_issue_url?,
                    google_drive_id: value.google_drive_id?,
                    google_drive_parent_id: value.google_drive_parent_id?,
                    google_drive_url: value.google_drive_url?,
                    google_meeting_id: value.google_meeting_id?,
                    google_meeting_url: value.google_meeting_url?,
                    groups: value.groups?,
                    id: value.id?,
                    in_triage_at: value.in_triage_at?,
                    in_triage_by: value.in_triage_by?,
                    incident_types: value.incident_types?,
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    jira_issue_url: value.jira_issue_url?,
                    kind: value.kind?,
                    labels: value.labels?,
                    linear_issue_id: value.linear_issue_id?,
                    linear_issue_url: value.linear_issue_url?,
                    mattermost_channel_id: value.mattermost_channel_id?,
                    mattermost_channel_name: value.mattermost_channel_name?,
                    mattermost_channel_url: value.mattermost_channel_url?,
                    microsoft_teams_channel_id: value.microsoft_teams_channel_id?,
                    microsoft_teams_channel_name: value.microsoft_teams_channel_name?,
                    microsoft_teams_channel_short_url: value
                        .microsoft_teams_channel_short_url?,
                    microsoft_teams_channel_url: value.microsoft_teams_channel_url?,
                    microsoft_teams_chat_id: value.microsoft_teams_chat_id?,
                    microsoft_teams_chat_url: value.microsoft_teams_chat_url?,
                    microsoft_teams_meeting_id: value.microsoft_teams_meeting_id?,
                    microsoft_teams_meeting_url: value.microsoft_teams_meeting_url?,
                    microsoft_teams_team_id: value.microsoft_teams_team_id?,
                    mitigated_at: value.mitigated_at?,
                    mitigated_by: value.mitigated_by?,
                    mitigation_message: value.mitigation_message?,
                    motion_task_id: value.motion_task_id?,
                    motion_task_url: value.motion_task_url?,
                    muted_service_ids: value.muted_service_ids?,
                    opsgenie_alert_id: value.opsgenie_alert_id?,
                    opsgenie_alert_url: value.opsgenie_alert_url?,
                    opsgenie_incident_id: value.opsgenie_incident_id?,
                    opsgenie_incident_url: value.opsgenie_incident_url?,
                    pagerduty_incident_id: value.pagerduty_incident_id?,
                    pagerduty_incident_number: value.pagerduty_incident_number?,
                    pagerduty_incident_url: value.pagerduty_incident_url?,
                    parent_incident_id: value.parent_incident_id?,
                    private: value.private?,
                    public_title: value.public_title?,
                    quip_page_id: value.quip_page_id?,
                    quip_page_url: value.quip_page_url?,
                    resolution_message: value.resolution_message?,
                    resolved_at: value.resolved_at?,
                    resolved_by: value.resolved_by?,
                    retrospective_progress_status: value.retrospective_progress_status?,
                    scheduled_for: value.scheduled_for?,
                    scheduled_until: value.scheduled_until?,
                    sequential_id: value.sequential_id?,
                    service_now_incident_id: value.service_now_incident_id?,
                    service_now_incident_key: value.service_now_incident_key?,
                    service_now_incident_url: value.service_now_incident_url?,
                    services: value.services?,
                    severity: value.severity?,
                    sharepoint_page_id: value.sharepoint_page_id?,
                    sharepoint_page_url: value.sharepoint_page_url?,
                    short_url: value.short_url?,
                    shortcut_story_id: value.shortcut_story_id?,
                    shortcut_story_url: value.shortcut_story_url?,
                    shortcut_task_id: value.shortcut_task_id?,
                    shortcut_task_url: value.shortcut_task_url?,
                    slack_channel_archived: value.slack_channel_archived?,
                    slack_channel_deep_link: value.slack_channel_deep_link?,
                    slack_channel_id: value.slack_channel_id?,
                    slack_channel_name: value.slack_channel_name?,
                    slack_channel_short_url: value.slack_channel_short_url?,
                    slack_channel_url: value.slack_channel_url?,
                    slack_last_message_ts: value.slack_last_message_ts?,
                    slug: value.slug?,
                    source: value.source?,
                    started_at: value.started_at?,
                    started_by: value.started_by?,
                    status: value.status?,
                    summary: value.summary?,
                    title: value.title?,
                    trello_card_id: value.trello_card_id?,
                    trello_card_url: value.trello_card_url?,
                    updated_at: value.updated_at?,
                    url: value.url?,
                    user: value.user?,
                    victor_ops_incident_id: value.victor_ops_incident_id?,
                    victor_ops_incident_url: value.victor_ops_incident_url?,
                    webex_meeting_id: value.webex_meeting_id?,
                    webex_meeting_url: value.webex_meeting_url?,
                    zendesk_ticket_id: value.zendesk_ticket_id?,
                    zendesk_ticket_url: value.zendesk_ticket_url?,
                    zoom_meeting_global_dial_in_numbers: value
                        .zoom_meeting_global_dial_in_numbers?,
                    zoom_meeting_h323_password: value.zoom_meeting_h323_password?,
                    zoom_meeting_id: value.zoom_meeting_id?,
                    zoom_meeting_join_url: value.zoom_meeting_join_url?,
                    zoom_meeting_password: value.zoom_meeting_password?,
                    zoom_meeting_pstn_password: value.zoom_meeting_pstn_password?,
                    zoom_meeting_start_url: value.zoom_meeting_start_url?,
                })
            }
        }
        impl ::std::convert::From<super::Incident> for Incident {
            fn from(value: super::Incident) -> Self {
                Self {
                    acknowledged_at: Ok(value.acknowledged_at),
                    airtable_base_key: Ok(value.airtable_base_key),
                    airtable_record_id: Ok(value.airtable_record_id),
                    airtable_record_url: Ok(value.airtable_record_url),
                    airtable_table_name: Ok(value.airtable_table_name),
                    asana_task_id: Ok(value.asana_task_id),
                    asana_task_url: Ok(value.asana_task_url),
                    cancellation_message: Ok(value.cancellation_message),
                    cancelled_at: Ok(value.cancelled_at),
                    cancelled_by: Ok(value.cancelled_by),
                    clickup_task_id: Ok(value.clickup_task_id),
                    clickup_task_url: Ok(value.clickup_task_url),
                    closed_at: Ok(value.closed_at),
                    closed_by: Ok(value.closed_by),
                    confluence_page_id: Ok(value.confluence_page_id),
                    confluence_page_url: Ok(value.confluence_page_url),
                    created_at: Ok(value.created_at),
                    datadog_notebook_id: Ok(value.datadog_notebook_id),
                    datadog_notebook_url: Ok(value.datadog_notebook_url),
                    detected_at: Ok(value.detected_at),
                    duplicate_incident_id: Ok(value.duplicate_incident_id),
                    environments: Ok(value.environments),
                    freshservice_task_id: Ok(value.freshservice_task_id),
                    freshservice_task_url: Ok(value.freshservice_task_url),
                    freshservice_ticket_id: Ok(value.freshservice_ticket_id),
                    freshservice_ticket_url: Ok(value.freshservice_ticket_url),
                    functionalities: Ok(value.functionalities),
                    github_issue_id: Ok(value.github_issue_id),
                    github_issue_url: Ok(value.github_issue_url),
                    gitlab_issue_id: Ok(value.gitlab_issue_id),
                    gitlab_issue_url: Ok(value.gitlab_issue_url),
                    google_drive_id: Ok(value.google_drive_id),
                    google_drive_parent_id: Ok(value.google_drive_parent_id),
                    google_drive_url: Ok(value.google_drive_url),
                    google_meeting_id: Ok(value.google_meeting_id),
                    google_meeting_url: Ok(value.google_meeting_url),
                    groups: Ok(value.groups),
                    id: Ok(value.id),
                    in_triage_at: Ok(value.in_triage_at),
                    in_triage_by: Ok(value.in_triage_by),
                    incident_types: Ok(value.incident_types),
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    jira_issue_url: Ok(value.jira_issue_url),
                    kind: Ok(value.kind),
                    labels: Ok(value.labels),
                    linear_issue_id: Ok(value.linear_issue_id),
                    linear_issue_url: Ok(value.linear_issue_url),
                    mattermost_channel_id: Ok(value.mattermost_channel_id),
                    mattermost_channel_name: Ok(value.mattermost_channel_name),
                    mattermost_channel_url: Ok(value.mattermost_channel_url),
                    microsoft_teams_channel_id: Ok(value.microsoft_teams_channel_id),
                    microsoft_teams_channel_name: Ok(value.microsoft_teams_channel_name),
                    microsoft_teams_channel_short_url: Ok(
                        value.microsoft_teams_channel_short_url,
                    ),
                    microsoft_teams_channel_url: Ok(value.microsoft_teams_channel_url),
                    microsoft_teams_chat_id: Ok(value.microsoft_teams_chat_id),
                    microsoft_teams_chat_url: Ok(value.microsoft_teams_chat_url),
                    microsoft_teams_meeting_id: Ok(value.microsoft_teams_meeting_id),
                    microsoft_teams_meeting_url: Ok(value.microsoft_teams_meeting_url),
                    microsoft_teams_team_id: Ok(value.microsoft_teams_team_id),
                    mitigated_at: Ok(value.mitigated_at),
                    mitigated_by: Ok(value.mitigated_by),
                    mitigation_message: Ok(value.mitigation_message),
                    motion_task_id: Ok(value.motion_task_id),
                    motion_task_url: Ok(value.motion_task_url),
                    muted_service_ids: Ok(value.muted_service_ids),
                    opsgenie_alert_id: Ok(value.opsgenie_alert_id),
                    opsgenie_alert_url: Ok(value.opsgenie_alert_url),
                    opsgenie_incident_id: Ok(value.opsgenie_incident_id),
                    opsgenie_incident_url: Ok(value.opsgenie_incident_url),
                    pagerduty_incident_id: Ok(value.pagerduty_incident_id),
                    pagerduty_incident_number: Ok(value.pagerduty_incident_number),
                    pagerduty_incident_url: Ok(value.pagerduty_incident_url),
                    parent_incident_id: Ok(value.parent_incident_id),
                    private: Ok(value.private),
                    public_title: Ok(value.public_title),
                    quip_page_id: Ok(value.quip_page_id),
                    quip_page_url: Ok(value.quip_page_url),
                    resolution_message: Ok(value.resolution_message),
                    resolved_at: Ok(value.resolved_at),
                    resolved_by: Ok(value.resolved_by),
                    retrospective_progress_status: Ok(
                        value.retrospective_progress_status,
                    ),
                    scheduled_for: Ok(value.scheduled_for),
                    scheduled_until: Ok(value.scheduled_until),
                    sequential_id: Ok(value.sequential_id),
                    service_now_incident_id: Ok(value.service_now_incident_id),
                    service_now_incident_key: Ok(value.service_now_incident_key),
                    service_now_incident_url: Ok(value.service_now_incident_url),
                    services: Ok(value.services),
                    severity: Ok(value.severity),
                    sharepoint_page_id: Ok(value.sharepoint_page_id),
                    sharepoint_page_url: Ok(value.sharepoint_page_url),
                    short_url: Ok(value.short_url),
                    shortcut_story_id: Ok(value.shortcut_story_id),
                    shortcut_story_url: Ok(value.shortcut_story_url),
                    shortcut_task_id: Ok(value.shortcut_task_id),
                    shortcut_task_url: Ok(value.shortcut_task_url),
                    slack_channel_archived: Ok(value.slack_channel_archived),
                    slack_channel_deep_link: Ok(value.slack_channel_deep_link),
                    slack_channel_id: Ok(value.slack_channel_id),
                    slack_channel_name: Ok(value.slack_channel_name),
                    slack_channel_short_url: Ok(value.slack_channel_short_url),
                    slack_channel_url: Ok(value.slack_channel_url),
                    slack_last_message_ts: Ok(value.slack_last_message_ts),
                    slug: Ok(value.slug),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                    started_by: Ok(value.started_by),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    title: Ok(value.title),
                    trello_card_id: Ok(value.trello_card_id),
                    trello_card_url: Ok(value.trello_card_url),
                    updated_at: Ok(value.updated_at),
                    url: Ok(value.url),
                    user: Ok(value.user),
                    victor_ops_incident_id: Ok(value.victor_ops_incident_id),
                    victor_ops_incident_url: Ok(value.victor_ops_incident_url),
                    webex_meeting_id: Ok(value.webex_meeting_id),
                    webex_meeting_url: Ok(value.webex_meeting_url),
                    zendesk_ticket_id: Ok(value.zendesk_ticket_id),
                    zendesk_ticket_url: Ok(value.zendesk_ticket_url),
                    zoom_meeting_global_dial_in_numbers: Ok(
                        value.zoom_meeting_global_dial_in_numbers,
                    ),
                    zoom_meeting_h323_password: Ok(value.zoom_meeting_h323_password),
                    zoom_meeting_id: Ok(value.zoom_meeting_id),
                    zoom_meeting_join_url: Ok(value.zoom_meeting_join_url),
                    zoom_meeting_password: Ok(value.zoom_meeting_password),
                    zoom_meeting_pstn_password: Ok(value.zoom_meeting_pstn_password),
                    zoom_meeting_start_url: Ok(value.zoom_meeting_start_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentActionItem {
            assigned_to: ::std::result::Result<
                ::std::option::Option<super::UserFlatResponse>,
                ::std::string::String,
            >,
            assigned_to_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::IncidentActionItemKind>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::IncidentActionItemPriority>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::IncidentActionItemStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentActionItem {
            fn default() -> Self {
                Self {
                    assigned_to: Ok(Default::default()),
                    assigned_to_group_ids: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    jira_issue_id: Ok(Default::default()),
                    jira_issue_key: Ok(Default::default()),
                    jira_issue_url: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentActionItem {
            pub fn assigned_to<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UserFlatResponse>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for assigned_to: {e}")
                    });
                self
            }
            pub fn assigned_to_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentActionItemKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentActionItemPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentActionItemStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentActionItem> for super::IncidentActionItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentActionItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_to: value.assigned_to?,
                    assigned_to_group_ids: value.assigned_to_group_ids?,
                    created_at: value.created_at?,
                    description: value.description?,
                    due_date: value.due_date?,
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    jira_issue_url: value.jira_issue_url?,
                    kind: value.kind?,
                    priority: value.priority?,
                    status: value.status?,
                    summary: value.summary?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentActionItem> for IncidentActionItem {
            fn from(value: super::IncidentActionItem) -> Self {
                Self {
                    assigned_to: Ok(value.assigned_to),
                    assigned_to_group_ids: Ok(value.assigned_to_group_ids),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    jira_issue_url: Ok(value.jira_issue_url),
                    kind: Ok(value.kind),
                    priority: Ok(value.priority),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentActionItemList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentActionItemListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentActionItemList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentActionItemList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentActionItemListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentActionItemList>
        for super::IncidentActionItemList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentActionItemList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentActionItemList>
        for IncidentActionItemList {
            fn from(value: super::IncidentActionItemList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentActionItemListDataItem {
            attributes: ::std::result::Result<
                super::IncidentActionItem,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentActionItemListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentActionItemListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentActionItemListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentActionItem>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentActionItemListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentActionItemListDataItem>
        for super::IncidentActionItemListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentActionItemListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentActionItemListDataItem>
        for IncidentActionItemListDataItem {
            fn from(value: super::IncidentActionItemListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentActionItemResponse {
            data: ::std::result::Result<
                super::IncidentActionItemResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentActionItemResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentActionItemResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentActionItemResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentActionItemResponse>
        for super::IncidentActionItemResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentActionItemResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentActionItemResponse>
        for IncidentActionItemResponse {
            fn from(value: super::IncidentActionItemResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentActionItemResponseData {
            attributes: ::std::result::Result<
                super::IncidentActionItem,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentActionItemResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentActionItemResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentActionItemResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentActionItem>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentActionItemResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentActionItemResponseData>
        for super::IncidentActionItemResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentActionItemResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentActionItemResponseData>
        for IncidentActionItemResponseData {
            fn from(value: super::IncidentActionItemResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentCustomFieldSelection {
            custom_field_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentCustomFieldSelection {
            fn default() -> Self {
                Self {
                    custom_field_id: Ok(Default::default()),
                    incident_id: Ok(Default::default()),
                    selected_option_ids: Err(
                        "no value supplied for selected_option_ids".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl IncidentCustomFieldSelection {
            pub fn custom_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_field_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentCustomFieldSelection>
        for super::IncidentCustomFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentCustomFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_field_id: value.custom_field_id?,
                    incident_id: value.incident_id?,
                    selected_option_ids: value.selected_option_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentCustomFieldSelection>
        for IncidentCustomFieldSelection {
            fn from(value: super::IncidentCustomFieldSelection) -> Self {
                Self {
                    custom_field_id: Ok(value.custom_field_id),
                    incident_id: Ok(value.incident_id),
                    selected_option_ids: Ok(value.selected_option_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentCustomFieldSelectionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentCustomFieldSelectionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentCustomFieldSelectionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentCustomFieldSelectionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentCustomFieldSelectionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentCustomFieldSelectionList>
        for super::IncidentCustomFieldSelectionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentCustomFieldSelectionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentCustomFieldSelectionList>
        for IncidentCustomFieldSelectionList {
            fn from(value: super::IncidentCustomFieldSelectionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentCustomFieldSelectionListDataItem {
            attributes: ::std::result::Result<
                super::IncidentCustomFieldSelection,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentCustomFieldSelectionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentCustomFieldSelectionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentCustomFieldSelectionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentCustomFieldSelection>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentCustomFieldSelectionListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentCustomFieldSelectionListDataItem>
        for super::IncidentCustomFieldSelectionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentCustomFieldSelectionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentCustomFieldSelectionListDataItem>
        for IncidentCustomFieldSelectionListDataItem {
            fn from(value: super::IncidentCustomFieldSelectionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentCustomFieldSelectionResponse {
            data: ::std::result::Result<
                super::IncidentCustomFieldSelectionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentCustomFieldSelectionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentCustomFieldSelectionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentCustomFieldSelectionResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentCustomFieldSelectionResponse>
        for super::IncidentCustomFieldSelectionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentCustomFieldSelectionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentCustomFieldSelectionResponse>
        for IncidentCustomFieldSelectionResponse {
            fn from(value: super::IncidentCustomFieldSelectionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentCustomFieldSelectionResponseData {
            attributes: ::std::result::Result<
                super::IncidentCustomFieldSelection,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentCustomFieldSelectionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentCustomFieldSelectionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentCustomFieldSelectionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentCustomFieldSelection>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentCustomFieldSelectionResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentCustomFieldSelectionResponseData>
        for super::IncidentCustomFieldSelectionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentCustomFieldSelectionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentCustomFieldSelectionResponseData>
        for IncidentCustomFieldSelectionResponseData {
            fn from(value: super::IncidentCustomFieldSelectionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEvent {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            event: ::std::result::Result<::std::string::String, ::std::string::String>,
            occurred_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            visibility: ::std::result::Result<
                ::std::option::Option<super::IncidentEventVisibility>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEvent {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    event: Err("no value supplied for event".to_string()),
                    occurred_at: Err("no value supplied for occurred_at".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    visibility: Ok(Default::default()),
                }
            }
        }
        impl IncidentEvent {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn occurred_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.occurred_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for occurred_at: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn visibility<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentEventVisibility>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.visibility = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for visibility: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEvent> for super::IncidentEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    event: value.event?,
                    occurred_at: value.occurred_at?,
                    updated_at: value.updated_at?,
                    visibility: value.visibility?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEvent> for IncidentEvent {
            fn from(value: super::IncidentEvent) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    event: Ok(value.event),
                    occurred_at: Ok(value.occurred_at),
                    updated_at: Ok(value.updated_at),
                    visibility: Ok(value.visibility),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventFunctionality {
            functionality_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_event_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::IncidentEventFunctionalityStatus,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventFunctionality {
            fn default() -> Self {
                Self {
                    functionality_id: Err(
                        "no value supplied for functionality_id".to_string(),
                    ),
                    incident_event_id: Err(
                        "no value supplied for incident_event_id".to_string(),
                    ),
                    status: Err("no value supplied for status".to_string()),
                }
            }
        }
        impl IncidentEventFunctionality {
            pub fn functionality_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_event_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_event_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_event_id: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventFunctionalityStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventFunctionality>
        for super::IncidentEventFunctionality {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventFunctionality,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    functionality_id: value.functionality_id?,
                    incident_event_id: value.incident_event_id?,
                    status: value.status?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventFunctionality>
        for IncidentEventFunctionality {
            fn from(value: super::IncidentEventFunctionality) -> Self {
                Self {
                    functionality_id: Ok(value.functionality_id),
                    incident_event_id: Ok(value.incident_event_id),
                    status: Ok(value.status),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventFunctionalityList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentEventFunctionalityListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentEventFunctionalityList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentEventFunctionalityList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentEventFunctionalityListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventFunctionalityList>
        for super::IncidentEventFunctionalityList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventFunctionalityList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventFunctionalityList>
        for IncidentEventFunctionalityList {
            fn from(value: super::IncidentEventFunctionalityList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventFunctionalityListDataItem {
            attributes: ::std::result::Result<
                super::IncidentEventFunctionality,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentEventFunctionalityListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventFunctionalityListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentEventFunctionalityListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventFunctionality>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentEventFunctionalityListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventFunctionalityListDataItem>
        for super::IncidentEventFunctionalityListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventFunctionalityListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventFunctionalityListDataItem>
        for IncidentEventFunctionalityListDataItem {
            fn from(value: super::IncidentEventFunctionalityListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventFunctionalityResponse {
            data: ::std::result::Result<
                super::IncidentEventFunctionalityResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventFunctionalityResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentEventFunctionalityResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentEventFunctionalityResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventFunctionalityResponse>
        for super::IncidentEventFunctionalityResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventFunctionalityResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventFunctionalityResponse>
        for IncidentEventFunctionalityResponse {
            fn from(value: super::IncidentEventFunctionalityResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventFunctionalityResponseData {
            attributes: ::std::result::Result<
                super::IncidentEventFunctionality,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentEventFunctionalityResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventFunctionalityResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentEventFunctionalityResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventFunctionality>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentEventFunctionalityResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventFunctionalityResponseData>
        for super::IncidentEventFunctionalityResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventFunctionalityResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventFunctionalityResponseData>
        for IncidentEventFunctionalityResponseData {
            fn from(value: super::IncidentEventFunctionalityResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentEventListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentEventList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentEventList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentEventListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventList> for super::IncidentEventList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventList> for IncidentEventList {
            fn from(value: super::IncidentEventList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventListDataItem {
            attributes: ::std::result::Result<
                super::IncidentEvent,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentEventListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentEventListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventListDataItem>
        for super::IncidentEventListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventListDataItem>
        for IncidentEventListDataItem {
            fn from(value: super::IncidentEventListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventResponse {
            data: ::std::result::Result<
                super::IncidentEventResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentEventResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventResponse>
        for super::IncidentEventResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventResponse>
        for IncidentEventResponse {
            fn from(value: super::IncidentEventResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventResponseData {
            attributes: ::std::result::Result<
                super::IncidentEvent,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentEventResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentEventResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventResponseData>
        for super::IncidentEventResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventResponseData>
        for IncidentEventResponseData {
            fn from(value: super::IncidentEventResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventService {
            incident_event_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            service_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::IncidentEventServiceStatus,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventService {
            fn default() -> Self {
                Self {
                    incident_event_id: Err(
                        "no value supplied for incident_event_id".to_string(),
                    ),
                    service_id: Err("no value supplied for service_id".to_string()),
                    status: Err("no value supplied for status".to_string()),
                }
            }
        }
        impl IncidentEventService {
            pub fn incident_event_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_event_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_event_id: {e}"
                        )
                    });
                self
            }
            pub fn service_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.service_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_id: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventServiceStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventService>
        for super::IncidentEventService {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventService,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_event_id: value.incident_event_id?,
                    service_id: value.service_id?,
                    status: value.status?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventService> for IncidentEventService {
            fn from(value: super::IncidentEventService) -> Self {
                Self {
                    incident_event_id: Ok(value.incident_event_id),
                    service_id: Ok(value.service_id),
                    status: Ok(value.status),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventServiceList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentEventServiceListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentEventServiceList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentEventServiceList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentEventServiceListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventServiceList>
        for super::IncidentEventServiceList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventServiceList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventServiceList>
        for IncidentEventServiceList {
            fn from(value: super::IncidentEventServiceList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventServiceListDataItem {
            attributes: ::std::result::Result<
                super::IncidentEventService,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentEventServiceListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventServiceListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentEventServiceListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventService>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventServiceListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventServiceListDataItem>
        for super::IncidentEventServiceListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventServiceListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventServiceListDataItem>
        for IncidentEventServiceListDataItem {
            fn from(value: super::IncidentEventServiceListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventServiceResponse {
            data: ::std::result::Result<
                super::IncidentEventServiceResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventServiceResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentEventServiceResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventServiceResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventServiceResponse>
        for super::IncidentEventServiceResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventServiceResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventServiceResponse>
        for IncidentEventServiceResponse {
            fn from(value: super::IncidentEventServiceResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentEventServiceResponseData {
            attributes: ::std::result::Result<
                super::IncidentEventService,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentEventServiceResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentEventServiceResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentEventServiceResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventService>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentEventServiceResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentEventServiceResponseData>
        for super::IncidentEventServiceResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentEventServiceResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentEventServiceResponseData>
        for IncidentEventServiceResponseData {
            fn from(value: super::IncidentEventServiceResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFeedback {
            anonymous: ::std::result::Result<bool, ::std::string::String>,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            feedback: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            rating: ::std::result::Result<
                super::IncidentFeedbackRating,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFeedback {
            fn default() -> Self {
                Self {
                    anonymous: Err("no value supplied for anonymous".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    feedback: Err("no value supplied for feedback".to_string()),
                    rating: Err("no value supplied for rating".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentFeedback {
            pub fn anonymous<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.anonymous = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for anonymous: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn feedback<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.feedback = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for feedback: {e}")
                    });
                self
            }
            pub fn rating<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFeedbackRating>,
                T::Error: ::std::fmt::Display,
            {
                self.rating = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rating: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFeedback> for super::IncidentFeedback {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFeedback,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    anonymous: value.anonymous?,
                    created_at: value.created_at?,
                    feedback: value.feedback?,
                    rating: value.rating?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFeedback> for IncidentFeedback {
            fn from(value: super::IncidentFeedback) -> Self {
                Self {
                    anonymous: Ok(value.anonymous),
                    created_at: Ok(value.created_at),
                    feedback: Ok(value.feedback),
                    rating: Ok(value.rating),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFeedbackList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentFeedbackListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentFeedbackList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentFeedbackList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentFeedbackListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFeedbackList>
        for super::IncidentFeedbackList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFeedbackList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFeedbackList> for IncidentFeedbackList {
            fn from(value: super::IncidentFeedbackList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFeedbackListDataItem {
            attributes: ::std::result::Result<
                super::IncidentFeedback,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentFeedbackListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFeedbackListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentFeedbackListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFeedback>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFeedbackListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFeedbackListDataItem>
        for super::IncidentFeedbackListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFeedbackListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFeedbackListDataItem>
        for IncidentFeedbackListDataItem {
            fn from(value: super::IncidentFeedbackListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFeedbackResponse {
            data: ::std::result::Result<
                super::IncidentFeedbackResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFeedbackResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentFeedbackResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFeedbackResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFeedbackResponse>
        for super::IncidentFeedbackResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFeedbackResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFeedbackResponse>
        for IncidentFeedbackResponse {
            fn from(value: super::IncidentFeedbackResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFeedbackResponseData {
            attributes: ::std::result::Result<
                super::IncidentFeedback,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentFeedbackResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFeedbackResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentFeedbackResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFeedback>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFeedbackResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFeedbackResponseData>
        for super::IncidentFeedbackResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFeedbackResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFeedbackResponseData>
        for IncidentFeedbackResponseData {
            fn from(value: super::IncidentFeedbackResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFormFieldSelection {
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFormFieldSelection {
            fn default() -> Self {
                Self {
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl IncidentFormFieldSelection {
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFormFieldSelection>
        for super::IncidentFormFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFormFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form_field_id: value.form_field_id?,
                    incident_id: value.incident_id?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFormFieldSelection>
        for IncidentFormFieldSelection {
            fn from(value: super::IncidentFormFieldSelection) -> Self {
                Self {
                    form_field_id: Ok(value.form_field_id),
                    incident_id: Ok(value.incident_id),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFormFieldSelectionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentFormFieldSelectionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentFormFieldSelectionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentFormFieldSelectionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentFormFieldSelectionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFormFieldSelectionList>
        for super::IncidentFormFieldSelectionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFormFieldSelectionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFormFieldSelectionList>
        for IncidentFormFieldSelectionList {
            fn from(value: super::IncidentFormFieldSelectionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFormFieldSelectionListDataItem {
            attributes: ::std::result::Result<
                super::IncidentFormFieldSelection,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentFormFieldSelectionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFormFieldSelectionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentFormFieldSelectionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFormFieldSelection>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentFormFieldSelectionListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFormFieldSelectionListDataItem>
        for super::IncidentFormFieldSelectionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFormFieldSelectionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFormFieldSelectionListDataItem>
        for IncidentFormFieldSelectionListDataItem {
            fn from(value: super::IncidentFormFieldSelectionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFormFieldSelectionResponse {
            data: ::std::result::Result<
                super::IncidentFormFieldSelectionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFormFieldSelectionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentFormFieldSelectionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentFormFieldSelectionResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFormFieldSelectionResponse>
        for super::IncidentFormFieldSelectionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFormFieldSelectionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFormFieldSelectionResponse>
        for IncidentFormFieldSelectionResponse {
            fn from(value: super::IncidentFormFieldSelectionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentFormFieldSelectionResponseData {
            attributes: ::std::result::Result<
                super::IncidentFormFieldSelection,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentFormFieldSelectionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentFormFieldSelectionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentFormFieldSelectionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentFormFieldSelection>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentFormFieldSelectionResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentFormFieldSelectionResponseData>
        for super::IncidentFormFieldSelectionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentFormFieldSelectionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentFormFieldSelectionResponseData>
        for IncidentFormFieldSelectionResponseData {
            fn from(value: super::IncidentFormFieldSelectionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::IncidentListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentList> for super::IncidentList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentList> for IncidentList {
            fn from(value: super::IncidentList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentListDataItem {
            attributes: ::std::result::Result<super::Incident, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Incident>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentListDataItem>
        for super::IncidentListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentListDataItem> for IncidentListDataItem {
            fn from(value: super::IncidentListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSet {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            private_incident_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::IncidentPermissionSetPrivateIncidentPermissionsItem,
                >,
                ::std::string::String,
            >,
            public_incident_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::IncidentPermissionSetPublicIncidentPermissionsItem,
                >,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSet {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    private_incident_permissions: Ok(Default::default()),
                    public_incident_permissions: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentPermissionSet {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn private_incident_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::IncidentPermissionSetPrivateIncidentPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private_incident_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for private_incident_permissions: {e}"
                        )
                    });
                self
            }
            pub fn public_incident_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::IncidentPermissionSetPublicIncidentPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.public_incident_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_incident_permissions: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSet>
        for super::IncidentPermissionSet {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSet,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    private_incident_permissions: value.private_incident_permissions?,
                    public_incident_permissions: value.public_incident_permissions?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSet>
        for IncidentPermissionSet {
            fn from(value: super::IncidentPermissionSet) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    private_incident_permissions: Ok(value.private_incident_permissions),
                    public_incident_permissions: Ok(value.public_incident_permissions),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetBoolean {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            incident_permission_set_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::IncidentPermissionSetBooleanKind,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetBoolean {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    enabled: Ok(Default::default()),
                    incident_permission_set_id: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    private: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentPermissionSetBoolean {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetBooleanKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetBoolean>
        for super::IncidentPermissionSetBoolean {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetBoolean,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    enabled: value.enabled?,
                    incident_permission_set_id: value.incident_permission_set_id?,
                    kind: value.kind?,
                    private: value.private?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetBoolean>
        for IncidentPermissionSetBoolean {
            fn from(value: super::IncidentPermissionSetBoolean) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    enabled: Ok(value.enabled),
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    kind: Ok(value.kind),
                    private: Ok(value.private),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetBooleanList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentPermissionSetBooleanListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentPermissionSetBooleanList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentPermissionSetBooleanList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentPermissionSetBooleanListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetBooleanList>
        for super::IncidentPermissionSetBooleanList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetBooleanList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetBooleanList>
        for IncidentPermissionSetBooleanList {
            fn from(value: super::IncidentPermissionSetBooleanList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetBooleanListDataItem {
            attributes: ::std::result::Result<
                super::IncidentPermissionSetBoolean,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPermissionSetBooleanListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetBooleanListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPermissionSetBooleanListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetBoolean>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentPermissionSetBooleanListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetBooleanListDataItem>
        for super::IncidentPermissionSetBooleanListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetBooleanListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetBooleanListDataItem>
        for IncidentPermissionSetBooleanListDataItem {
            fn from(value: super::IncidentPermissionSetBooleanListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetBooleanResponse {
            data: ::std::result::Result<
                super::IncidentPermissionSetBooleanResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetBooleanResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentPermissionSetBooleanResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentPermissionSetBooleanResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetBooleanResponse>
        for super::IncidentPermissionSetBooleanResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetBooleanResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetBooleanResponse>
        for IncidentPermissionSetBooleanResponse {
            fn from(value: super::IncidentPermissionSetBooleanResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetBooleanResponseData {
            attributes: ::std::result::Result<
                super::IncidentPermissionSetBoolean,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPermissionSetBooleanResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetBooleanResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPermissionSetBooleanResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetBoolean>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentPermissionSetBooleanResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetBooleanResponseData>
        for super::IncidentPermissionSetBooleanResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetBooleanResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetBooleanResponseData>
        for IncidentPermissionSetBooleanResponseData {
            fn from(value: super::IncidentPermissionSetBooleanResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentPermissionSetListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentPermissionSetList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentPermissionSetList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentPermissionSetListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetList>
        for super::IncidentPermissionSetList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetList>
        for IncidentPermissionSetList {
            fn from(value: super::IncidentPermissionSetList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetListDataItem {
            attributes: ::std::result::Result<
                super::IncidentPermissionSet,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPermissionSetListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPermissionSetListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSet>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetListDataItem>
        for super::IncidentPermissionSetListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetListDataItem>
        for IncidentPermissionSetListDataItem {
            fn from(value: super::IncidentPermissionSetListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResource {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_permission_set_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::IncidentPermissionSetResourceKind,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            resource_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resource_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetResource {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    incident_permission_set_id: Err(
                        "no value supplied for incident_permission_set_id".to_string(),
                    ),
                    kind: Err("no value supplied for kind".to_string()),
                    private: Ok(Default::default()),
                    resource_id: Ok(Default::default()),
                    resource_type: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentPermissionSetResource {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetResourceKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn resource_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resource_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource_id: {e}")
                    });
                self
            }
            pub fn resource_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resource_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource_type: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResource>
        for super::IncidentPermissionSetResource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    incident_permission_set_id: value.incident_permission_set_id?,
                    kind: value.kind?,
                    private: value.private?,
                    resource_id: value.resource_id?,
                    resource_type: value.resource_type?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResource>
        for IncidentPermissionSetResource {
            fn from(value: super::IncidentPermissionSetResource) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    kind: Ok(value.kind),
                    private: Ok(value.private),
                    resource_id: Ok(value.resource_id),
                    resource_type: Ok(value.resource_type),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResourceList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentPermissionSetResourceListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentPermissionSetResourceList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentPermissionSetResourceList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentPermissionSetResourceListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResourceList>
        for super::IncidentPermissionSetResourceList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResourceList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResourceList>
        for IncidentPermissionSetResourceList {
            fn from(value: super::IncidentPermissionSetResourceList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResourceListDataItem {
            attributes: ::std::result::Result<
                super::IncidentPermissionSetResource,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPermissionSetResourceListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetResourceListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPermissionSetResourceListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetResource>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentPermissionSetResourceListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResourceListDataItem>
        for super::IncidentPermissionSetResourceListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResourceListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResourceListDataItem>
        for IncidentPermissionSetResourceListDataItem {
            fn from(value: super::IncidentPermissionSetResourceListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResourceResponse {
            data: ::std::result::Result<
                super::IncidentPermissionSetResourceResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetResourceResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentPermissionSetResourceResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentPermissionSetResourceResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResourceResponse>
        for super::IncidentPermissionSetResourceResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResourceResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResourceResponse>
        for IncidentPermissionSetResourceResponse {
            fn from(value: super::IncidentPermissionSetResourceResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResourceResponseData {
            attributes: ::std::result::Result<
                super::IncidentPermissionSetResource,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPermissionSetResourceResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetResourceResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPermissionSetResourceResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetResource>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentPermissionSetResourceResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResourceResponseData>
        for super::IncidentPermissionSetResourceResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResourceResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResourceResponseData>
        for IncidentPermissionSetResourceResponseData {
            fn from(value: super::IncidentPermissionSetResourceResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResponse {
            data: ::std::result::Result<
                super::IncidentPermissionSetResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentPermissionSetResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResponse>
        for super::IncidentPermissionSetResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResponse>
        for IncidentPermissionSetResponse {
            fn from(value: super::IncidentPermissionSetResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPermissionSetResponseData {
            attributes: ::std::result::Result<
                super::IncidentPermissionSet,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPermissionSetResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPermissionSetResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPermissionSetResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSet>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPermissionSetResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPermissionSetResponseData>
        for super::IncidentPermissionSetResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPermissionSetResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPermissionSetResponseData>
        for IncidentPermissionSetResponseData {
            fn from(value: super::IncidentPermissionSetResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPostMortem {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            mitigated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolved_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            show_alerts_attached: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_functionalities_impacted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_groups_impacted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_services_impacted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_action_items: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_genius: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_order: ::std::result::Result<
                super::IncidentPostMortemShowTimelineOrder,
                ::std::string::String,
            >,
            show_timeline_tasks: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_trail: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::IncidentPostMortemStatus>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPostMortem {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    mitigated_at: Ok(Default::default()),
                    resolved_at: Ok(Default::default()),
                    show_alerts_attached: Ok(Default::default()),
                    show_functionalities_impacted: Ok(Default::default()),
                    show_groups_impacted: Ok(Default::default()),
                    show_services_impacted: Ok(Default::default()),
                    show_timeline: Ok(Default::default()),
                    show_timeline_action_items: Ok(Default::default()),
                    show_timeline_genius: Ok(Default::default()),
                    show_timeline_order: Ok(
                        super::defaults::incident_post_mortem_show_timeline_order(),
                    ),
                    show_timeline_tasks: Ok(Default::default()),
                    show_timeline_trail: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    url: Ok(Default::default()),
                }
            }
        }
        impl IncidentPostMortem {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_at: {e}")
                    });
                self
            }
            pub fn resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_at: {e}")
                    });
                self
            }
            pub fn show_alerts_attached<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_alerts_attached = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_alerts_attached: {e}"
                        )
                    });
                self
            }
            pub fn show_functionalities_impacted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_functionalities_impacted = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_functionalities_impacted: {e}"
                        )
                    });
                self
            }
            pub fn show_groups_impacted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_groups_impacted = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_groups_impacted: {e}"
                        )
                    });
                self
            }
            pub fn show_services_impacted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_services_impacted = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_services_impacted: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_timeline: {e}")
                    });
                self
            }
            pub fn show_timeline_action_items<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_action_items = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_action_items: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_genius<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_genius = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_genius: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_order<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPostMortemShowTimelineOrder>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_order = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_order: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_tasks<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_tasks = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_tasks: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_trail<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_trail = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_trail: {e}"
                        )
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentPostMortemStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPostMortem> for super::IncidentPostMortem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPostMortem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    created_at: value.created_at?,
                    mitigated_at: value.mitigated_at?,
                    resolved_at: value.resolved_at?,
                    show_alerts_attached: value.show_alerts_attached?,
                    show_functionalities_impacted: value.show_functionalities_impacted?,
                    show_groups_impacted: value.show_groups_impacted?,
                    show_services_impacted: value.show_services_impacted?,
                    show_timeline: value.show_timeline?,
                    show_timeline_action_items: value.show_timeline_action_items?,
                    show_timeline_genius: value.show_timeline_genius?,
                    show_timeline_order: value.show_timeline_order?,
                    show_timeline_tasks: value.show_timeline_tasks?,
                    show_timeline_trail: value.show_timeline_trail?,
                    started_at: value.started_at?,
                    status: value.status?,
                    title: value.title?,
                    updated_at: value.updated_at?,
                    url: value.url?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPostMortem> for IncidentPostMortem {
            fn from(value: super::IncidentPostMortem) -> Self {
                Self {
                    content: Ok(value.content),
                    created_at: Ok(value.created_at),
                    mitigated_at: Ok(value.mitigated_at),
                    resolved_at: Ok(value.resolved_at),
                    show_alerts_attached: Ok(value.show_alerts_attached),
                    show_functionalities_impacted: Ok(
                        value.show_functionalities_impacted,
                    ),
                    show_groups_impacted: Ok(value.show_groups_impacted),
                    show_services_impacted: Ok(value.show_services_impacted),
                    show_timeline: Ok(value.show_timeline),
                    show_timeline_action_items: Ok(value.show_timeline_action_items),
                    show_timeline_genius: Ok(value.show_timeline_genius),
                    show_timeline_order: Ok(value.show_timeline_order),
                    show_timeline_tasks: Ok(value.show_timeline_tasks),
                    show_timeline_trail: Ok(value.show_timeline_trail),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    title: Ok(value.title),
                    updated_at: Ok(value.updated_at),
                    url: Ok(value.url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPostMortemList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentPostMortemListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentPostMortemList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentPostMortemList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentPostMortemListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPostMortemList>
        for super::IncidentPostMortemList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPostMortemList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPostMortemList>
        for IncidentPostMortemList {
            fn from(value: super::IncidentPostMortemList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPostMortemListDataItem {
            attributes: ::std::result::Result<
                super::IncidentPostMortem,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPostMortemListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPostMortemListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPostMortemListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPostMortem>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPostMortemListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPostMortemListDataItem>
        for super::IncidentPostMortemListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPostMortemListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPostMortemListDataItem>
        for IncidentPostMortemListDataItem {
            fn from(value: super::IncidentPostMortemListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPostMortemResponse {
            data: ::std::result::Result<
                super::IncidentPostMortemResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPostMortemResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentPostMortemResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPostMortemResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPostMortemResponse>
        for super::IncidentPostMortemResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPostMortemResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPostMortemResponse>
        for IncidentPostMortemResponse {
            fn from(value: super::IncidentPostMortemResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentPostMortemResponseData {
            attributes: ::std::result::Result<
                super::IncidentPostMortem,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentPostMortemResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentPostMortemResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentPostMortemResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPostMortem>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentPostMortemResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentPostMortemResponseData>
        for super::IncidentPostMortemResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentPostMortemResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentPostMortemResponseData>
        for IncidentPostMortemResponseData {
            fn from(value: super::IncidentPostMortemResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentResponse {
            data: ::std::result::Result<
                super::IncidentResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentResponse> for super::IncidentResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentResponse> for IncidentResponse {
            fn from(value: super::IncidentResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentResponseData {
            attributes: ::std::result::Result<super::Incident, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Incident>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentResponseData>
        for super::IncidentResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentResponseData> for IncidentResponseData {
            fn from(value: super::IncidentResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRetrospectiveStep {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            retrospective_step_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            skippable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::IncidentRetrospectiveStepStatus>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRetrospectiveStep {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    kind: Ok(Default::default()),
                    position: Ok(Default::default()),
                    retrospective_step_id: Err(
                        "no value supplied for retrospective_step_id".to_string(),
                    ),
                    skippable: Ok(Default::default()),
                    status: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentRetrospectiveStep {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn retrospective_step_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_step_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_step_id: {e}"
                        )
                    });
                self
            }
            pub fn skippable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skippable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for skippable: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentRetrospectiveStepStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRetrospectiveStep>
        for super::IncidentRetrospectiveStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRetrospectiveStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    due_date: value.due_date?,
                    incident_id: value.incident_id?,
                    kind: value.kind?,
                    position: value.position?,
                    retrospective_step_id: value.retrospective_step_id?,
                    skippable: value.skippable?,
                    status: value.status?,
                    title: value.title?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRetrospectiveStep>
        for IncidentRetrospectiveStep {
            fn from(value: super::IncidentRetrospectiveStep) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    incident_id: Ok(value.incident_id),
                    kind: Ok(value.kind),
                    position: Ok(value.position),
                    retrospective_step_id: Ok(value.retrospective_step_id),
                    skippable: Ok(value.skippable),
                    status: Ok(value.status),
                    title: Ok(value.title),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRetrospectiveStepResponse {
            data: ::std::result::Result<
                super::IncidentRetrospectiveStepResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRetrospectiveStepResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentRetrospectiveStepResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRetrospectiveStepResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRetrospectiveStepResponse>
        for super::IncidentRetrospectiveStepResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRetrospectiveStepResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRetrospectiveStepResponse>
        for IncidentRetrospectiveStepResponse {
            fn from(value: super::IncidentRetrospectiveStepResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRetrospectiveStepResponseData {
            attributes: ::std::result::Result<
                super::IncidentRetrospectiveStep,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentRetrospectiveStepResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRetrospectiveStepResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentRetrospectiveStepResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRetrospectiveStep>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentRetrospectiveStepResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRetrospectiveStepResponseData>
        for super::IncidentRetrospectiveStepResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRetrospectiveStepResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRetrospectiveStepResponseData>
        for IncidentRetrospectiveStepResponseData {
            fn from(value: super::IncidentRetrospectiveStepResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRole {
            allow_multi_user_assignment: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            optional: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRole {
            fn default() -> Self {
                Self {
                    allow_multi_user_assignment: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    optional: Ok(Default::default()),
                    position: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentRole {
            pub fn allow_multi_user_assignment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.allow_multi_user_assignment = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for allow_multi_user_assignment: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn optional<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.optional = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for optional: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRole> for super::IncidentRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    allow_multi_user_assignment: value.allow_multi_user_assignment?,
                    created_at: value.created_at?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                    optional: value.optional?,
                    position: value.position?,
                    slug: value.slug?,
                    summary: value.summary?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRole> for IncidentRole {
            fn from(value: super::IncidentRole) -> Self {
                Self {
                    allow_multi_user_assignment: Ok(value.allow_multi_user_assignment),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    optional: Ok(value.optional),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                    summary: Ok(value.summary),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentRoleListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentRoleList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentRoleList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentRoleListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleList> for super::IncidentRoleList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleList> for IncidentRoleList {
            fn from(value: super::IncidentRoleList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleListDataItem {
            attributes: ::std::result::Result<
                super::IncidentRole,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentRoleListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentRoleListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRole>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleListDataItem>
        for super::IncidentRoleListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleListDataItem>
        for IncidentRoleListDataItem {
            fn from(value: super::IncidentRoleListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleResponse {
            data: ::std::result::Result<
                super::IncidentRoleResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentRoleResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleResponse>
        for super::IncidentRoleResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleResponse> for IncidentRoleResponse {
            fn from(value: super::IncidentRoleResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleResponseData {
            attributes: ::std::result::Result<
                super::IncidentRole,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentRoleResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentRoleResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRole>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleResponseData>
        for super::IncidentRoleResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleResponseData>
        for IncidentRoleResponseData {
            fn from(value: super::IncidentRoleResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleTask {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::IncidentRoleTaskPriority>,
                ::std::string::String,
            >,
            task: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleTask {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    incident_role_id: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    task: Err("no value supplied for task".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentRoleTask {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentRoleTaskPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleTask> for super::IncidentRoleTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    incident_role_id: value.incident_role_id?,
                    priority: value.priority?,
                    task: value.task?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleTask> for IncidentRoleTask {
            fn from(value: super::IncidentRoleTask) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    incident_role_id: Ok(value.incident_role_id),
                    priority: Ok(value.priority),
                    task: Ok(value.task),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleTaskList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentRoleTaskListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentRoleTaskList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentRoleTaskList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentRoleTaskListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleTaskList>
        for super::IncidentRoleTaskList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleTaskList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleTaskList> for IncidentRoleTaskList {
            fn from(value: super::IncidentRoleTaskList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleTaskListDataItem {
            attributes: ::std::result::Result<
                super::IncidentRoleTask,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentRoleTaskListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleTaskListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentRoleTaskListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleTask>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleTaskListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleTaskListDataItem>
        for super::IncidentRoleTaskListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleTaskListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleTaskListDataItem>
        for IncidentRoleTaskListDataItem {
            fn from(value: super::IncidentRoleTaskListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleTaskResponse {
            data: ::std::result::Result<
                super::IncidentRoleTaskResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleTaskResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentRoleTaskResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleTaskResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleTaskResponse>
        for super::IncidentRoleTaskResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleTaskResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleTaskResponse>
        for IncidentRoleTaskResponse {
            fn from(value: super::IncidentRoleTaskResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentRoleTaskResponseData {
            attributes: ::std::result::Result<
                super::IncidentRoleTask,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentRoleTaskResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentRoleTaskResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentRoleTaskResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleTask>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentRoleTaskResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentRoleTaskResponseData>
        for super::IncidentRoleTaskResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentRoleTaskResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentRoleTaskResponseData>
        for IncidentRoleTaskResponseData {
            fn from(value: super::IncidentRoleTaskResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentStatusPageEvent {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            event: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_subscribers: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            should_tweet: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::IncidentStatusPageEventStatus>,
                ::std::string::String,
            >,
            status_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentStatusPageEvent {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    event: Err("no value supplied for event".to_string()),
                    notify_subscribers: Ok(Default::default()),
                    should_tweet: Ok(Default::default()),
                    started_at: Err("no value supplied for started_at".to_string()),
                    status: Ok(Default::default()),
                    status_page_id: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentStatusPageEvent {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn should_tweet<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_tweet = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for should_tweet: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::IncidentStatusPageEventStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn status_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_id: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentStatusPageEvent>
        for super::IncidentStatusPageEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentStatusPageEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    event: value.event?,
                    notify_subscribers: value.notify_subscribers?,
                    should_tweet: value.should_tweet?,
                    started_at: value.started_at?,
                    status: value.status?,
                    status_page_id: value.status_page_id?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentStatusPageEvent>
        for IncidentStatusPageEvent {
            fn from(value: super::IncidentStatusPageEvent) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    event: Ok(value.event),
                    notify_subscribers: Ok(value.notify_subscribers),
                    should_tweet: Ok(value.should_tweet),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    status_page_id: Ok(value.status_page_id),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentStatusPageEventList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentStatusPageEventListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentStatusPageEventList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentStatusPageEventList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentStatusPageEventListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentStatusPageEventList>
        for super::IncidentStatusPageEventList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentStatusPageEventList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentStatusPageEventList>
        for IncidentStatusPageEventList {
            fn from(value: super::IncidentStatusPageEventList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentStatusPageEventListDataItem {
            attributes: ::std::result::Result<
                super::IncidentStatusPageEvent,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentStatusPageEventListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentStatusPageEventListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentStatusPageEventListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentStatusPageEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentStatusPageEventListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentStatusPageEventListDataItem>
        for super::IncidentStatusPageEventListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentStatusPageEventListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentStatusPageEventListDataItem>
        for IncidentStatusPageEventListDataItem {
            fn from(value: super::IncidentStatusPageEventListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentStatusPageEventResponse {
            data: ::std::result::Result<
                super::IncidentStatusPageEventResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentStatusPageEventResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentStatusPageEventResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentStatusPageEventResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentStatusPageEventResponse>
        for super::IncidentStatusPageEventResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentStatusPageEventResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentStatusPageEventResponse>
        for IncidentStatusPageEventResponse {
            fn from(value: super::IncidentStatusPageEventResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentStatusPageEventResponseData {
            attributes: ::std::result::Result<
                super::IncidentStatusPageEvent,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentStatusPageEventResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentStatusPageEventResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentStatusPageEventResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentStatusPageEvent>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentStatusPageEventResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentStatusPageEventResponseData>
        for super::IncidentStatusPageEventResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentStatusPageEventResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentStatusPageEventResponseData>
        for IncidentStatusPageEventResponseData {
            fn from(value: super::IncidentStatusPageEventResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentSubStatus {
            assigned_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            assigned_by_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentSubStatus {
            fn default() -> Self {
                Self {
                    assigned_at: Err("no value supplied for assigned_at".to_string()),
                    assigned_by_user_id: Ok(Default::default()),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    sub_status_id: Err("no value supplied for sub_status_id".to_string()),
                }
            }
        }
        impl IncidentSubStatus {
            pub fn assigned_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for assigned_at: {e}")
                    });
                self
            }
            pub fn assigned_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentSubStatus> for super::IncidentSubStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentSubStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_at: value.assigned_at?,
                    assigned_by_user_id: value.assigned_by_user_id?,
                    incident_id: value.incident_id?,
                    sub_status_id: value.sub_status_id?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentSubStatus> for IncidentSubStatus {
            fn from(value: super::IncidentSubStatus) -> Self {
                Self {
                    assigned_at: Ok(value.assigned_at),
                    assigned_by_user_id: Ok(value.assigned_by_user_id),
                    incident_id: Ok(value.incident_id),
                    sub_status_id: Ok(value.sub_status_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentSubStatusList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentSubStatusListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentSubStatusList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentSubStatusList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentSubStatusListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentSubStatusList>
        for super::IncidentSubStatusList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentSubStatusList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentSubStatusList>
        for IncidentSubStatusList {
            fn from(value: super::IncidentSubStatusList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentSubStatusListDataItem {
            attributes: ::std::result::Result<
                super::IncidentSubStatus,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentSubStatusListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentSubStatusListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentSubStatusListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentSubStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentSubStatusListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentSubStatusListDataItem>
        for super::IncidentSubStatusListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentSubStatusListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentSubStatusListDataItem>
        for IncidentSubStatusListDataItem {
            fn from(value: super::IncidentSubStatusListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentSubStatusResponse {
            data: ::std::result::Result<
                super::IncidentSubStatusResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentSubStatusResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentSubStatusResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentSubStatusResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentSubStatusResponse>
        for super::IncidentSubStatusResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentSubStatusResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentSubStatusResponse>
        for IncidentSubStatusResponse {
            fn from(value: super::IncidentSubStatusResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentSubStatusResponseData {
            attributes: ::std::result::Result<
                super::IncidentSubStatus,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentSubStatusResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentSubStatusResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentSubStatusResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentSubStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentSubStatusResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentSubStatusResponseData>
        for super::IncidentSubStatusResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentSubStatusResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentSubStatusResponseData>
        for IncidentSubStatusResponseData {
            fn from(value: super::IncidentSubStatusResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTriggerParams {
            incident_condition: ::std::result::Result<
                super::IncidentTriggerParamsIncidentCondition,
                ::std::string::String,
            >,
            incident_condition_acknowledged_at: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionAcknowledgedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_cause: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionCause,
                ::std::string::String,
            >,
            incident_condition_detected_at: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionDetectedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_environment: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionEnvironment,
                ::std::string::String,
            >,
            incident_condition_functionality: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionFunctionality,
                ::std::string::String,
            >,
            incident_condition_group: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionGroup,
                ::std::string::String,
            >,
            incident_condition_incident_roles: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionIncidentRoles,
                ::std::string::String,
            >,
            incident_condition_incident_type: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionIncidentType,
                ::std::string::String,
            >,
            incident_condition_kind: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionKind,
                ::std::string::String,
            >,
            incident_condition_mitigated_at: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionMitigatedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_resolved_at: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionResolvedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_service: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionService,
                ::std::string::String,
            >,
            incident_condition_severity: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionSeverity,
                ::std::string::String,
            >,
            incident_condition_started_at: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionStartedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_status: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionStatus,
                ::std::string::String,
            >,
            incident_condition_sub_status: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionSubStatus,
                ::std::string::String,
            >,
            incident_condition_summary: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionSummary,
                >,
                ::std::string::String,
            >,
            incident_condition_visibility: ::std::result::Result<
                super::IncidentTriggerParamsIncidentConditionVisibility,
                ::std::string::String,
            >,
            incident_conditional_inactivity: ::std::result::Result<
                ::std::option::Option<
                    super::IncidentTriggerParamsIncidentConditionalInactivity,
                >,
                ::std::string::String,
            >,
            incident_inactivity_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_kinds: ::std::result::Result<
                ::std::vec::Vec<super::IncidentTriggerParamsIncidentKindsItem>,
                ::std::string::String,
            >,
            incident_post_mortem_condition_cause: ::std::result::Result<
                super::IncidentTriggerParamsIncidentPostMortemConditionCause,
                ::std::string::String,
            >,
            incident_statuses: ::std::result::Result<
                ::std::vec::Vec<super::IncidentTriggerParamsIncidentStatusesItem>,
                ::std::string::String,
            >,
            incident_visibilities: ::std::result::Result<
                ::std::vec::Vec<bool>,
                ::std::string::String,
            >,
            trigger_type: ::std::result::Result<
                super::IncidentTriggerParamsTriggerType,
                ::std::string::String,
            >,
            triggers: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentTriggerParams {
            fn default() -> Self {
                Self {
                    incident_condition: Ok(
                        super::defaults::incident_trigger_params_incident_condition(),
                    ),
                    incident_condition_acknowledged_at: Ok(Default::default()),
                    incident_condition_cause: Ok(
                        super::defaults::incident_trigger_params_incident_condition_cause(),
                    ),
                    incident_condition_detected_at: Ok(Default::default()),
                    incident_condition_environment: Ok(
                        super::defaults::incident_trigger_params_incident_condition_environment(),
                    ),
                    incident_condition_functionality: Ok(
                        super::defaults::incident_trigger_params_incident_condition_functionality(),
                    ),
                    incident_condition_group: Ok(
                        super::defaults::incident_trigger_params_incident_condition_group(),
                    ),
                    incident_condition_incident_roles: Ok(
                        super::defaults::incident_trigger_params_incident_condition_incident_roles(),
                    ),
                    incident_condition_incident_type: Ok(
                        super::defaults::incident_trigger_params_incident_condition_incident_type(),
                    ),
                    incident_condition_kind: Ok(
                        super::defaults::incident_trigger_params_incident_condition_kind(),
                    ),
                    incident_condition_mitigated_at: Ok(Default::default()),
                    incident_condition_resolved_at: Ok(Default::default()),
                    incident_condition_service: Ok(
                        super::defaults::incident_trigger_params_incident_condition_service(),
                    ),
                    incident_condition_severity: Ok(
                        super::defaults::incident_trigger_params_incident_condition_severity(),
                    ),
                    incident_condition_started_at: Ok(Default::default()),
                    incident_condition_status: Ok(
                        super::defaults::incident_trigger_params_incident_condition_status(),
                    ),
                    incident_condition_sub_status: Ok(
                        super::defaults::incident_trigger_params_incident_condition_sub_status(),
                    ),
                    incident_condition_summary: Ok(Default::default()),
                    incident_condition_visibility: Ok(
                        super::defaults::incident_trigger_params_incident_condition_visibility(),
                    ),
                    incident_conditional_inactivity: Ok(Default::default()),
                    incident_inactivity_duration: Ok(Default::default()),
                    incident_kinds: Ok(Default::default()),
                    incident_post_mortem_condition_cause: Ok(
                        super::defaults::incident_trigger_params_incident_post_mortem_condition_cause(),
                    ),
                    incident_statuses: Ok(Default::default()),
                    incident_visibilities: Ok(Default::default()),
                    trigger_type: Err("no value supplied for trigger_type".to_string()),
                    triggers: Ok(Default::default()),
                }
            }
        }
        impl IncidentTriggerParams {
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionAcknowledgedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_cause<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionCause,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_cause = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_cause: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionDetectedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_detected_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_environment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionEnvironment,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_environment = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_environment: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_functionality<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionFunctionality,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_functionality = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_functionality: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionGroup,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_group: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_incident_roles<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionIncidentRoles,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_incident_roles = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_incident_roles: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_incident_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionIncidentType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_incident_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_incident_type: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_kind: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionMitigatedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_mitigated_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionResolvedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_resolved_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_service<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionService,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_service = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_service: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionSeverity,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_severity = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_severity: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionStartedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_started_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_sub_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionSubStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_sub_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_sub_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionSummary,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_summary: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_visibility<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentConditionVisibility,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_visibility = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_visibility: {e}"
                        )
                    });
                self
            }
            pub fn incident_conditional_inactivity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::IncidentTriggerParamsIncidentConditionalInactivity,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_conditional_inactivity = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_conditional_inactivity: {e}"
                        )
                    });
                self
            }
            pub fn incident_inactivity_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_inactivity_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_inactivity_duration: {e}"
                        )
                    });
                self
            }
            pub fn incident_kinds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentTriggerParamsIncidentKindsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_kinds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_kinds: {e}"
                        )
                    });
                self
            }
            pub fn incident_post_mortem_condition_cause<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::IncidentTriggerParamsIncidentPostMortemConditionCause,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_post_mortem_condition_cause = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_post_mortem_condition_cause: {e}"
                        )
                    });
                self
            }
            pub fn incident_statuses<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentTriggerParamsIncidentStatusesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_statuses = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_statuses: {e}"
                        )
                    });
                self
            }
            pub fn incident_visibilities<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_visibilities = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_visibilities: {e}"
                        )
                    });
                self
            }
            pub fn trigger_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentTriggerParamsTriggerType>,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for trigger_type: {e}")
                    });
                self
            }
            pub fn triggers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.triggers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggers: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTriggerParams>
        for super::IncidentTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_condition: value.incident_condition?,
                    incident_condition_acknowledged_at: value
                        .incident_condition_acknowledged_at?,
                    incident_condition_cause: value.incident_condition_cause?,
                    incident_condition_detected_at: value
                        .incident_condition_detected_at?,
                    incident_condition_environment: value
                        .incident_condition_environment?,
                    incident_condition_functionality: value
                        .incident_condition_functionality?,
                    incident_condition_group: value.incident_condition_group?,
                    incident_condition_incident_roles: value
                        .incident_condition_incident_roles?,
                    incident_condition_incident_type: value
                        .incident_condition_incident_type?,
                    incident_condition_kind: value.incident_condition_kind?,
                    incident_condition_mitigated_at: value
                        .incident_condition_mitigated_at?,
                    incident_condition_resolved_at: value
                        .incident_condition_resolved_at?,
                    incident_condition_service: value.incident_condition_service?,
                    incident_condition_severity: value.incident_condition_severity?,
                    incident_condition_started_at: value.incident_condition_started_at?,
                    incident_condition_status: value.incident_condition_status?,
                    incident_condition_sub_status: value.incident_condition_sub_status?,
                    incident_condition_summary: value.incident_condition_summary?,
                    incident_condition_visibility: value.incident_condition_visibility?,
                    incident_conditional_inactivity: value
                        .incident_conditional_inactivity?,
                    incident_inactivity_duration: value.incident_inactivity_duration?,
                    incident_kinds: value.incident_kinds?,
                    incident_post_mortem_condition_cause: value
                        .incident_post_mortem_condition_cause?,
                    incident_statuses: value.incident_statuses?,
                    incident_visibilities: value.incident_visibilities?,
                    trigger_type: value.trigger_type?,
                    triggers: value.triggers?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTriggerParams>
        for IncidentTriggerParams {
            fn from(value: super::IncidentTriggerParams) -> Self {
                Self {
                    incident_condition: Ok(value.incident_condition),
                    incident_condition_acknowledged_at: Ok(
                        value.incident_condition_acknowledged_at,
                    ),
                    incident_condition_cause: Ok(value.incident_condition_cause),
                    incident_condition_detected_at: Ok(
                        value.incident_condition_detected_at,
                    ),
                    incident_condition_environment: Ok(
                        value.incident_condition_environment,
                    ),
                    incident_condition_functionality: Ok(
                        value.incident_condition_functionality,
                    ),
                    incident_condition_group: Ok(value.incident_condition_group),
                    incident_condition_incident_roles: Ok(
                        value.incident_condition_incident_roles,
                    ),
                    incident_condition_incident_type: Ok(
                        value.incident_condition_incident_type,
                    ),
                    incident_condition_kind: Ok(value.incident_condition_kind),
                    incident_condition_mitigated_at: Ok(
                        value.incident_condition_mitigated_at,
                    ),
                    incident_condition_resolved_at: Ok(
                        value.incident_condition_resolved_at,
                    ),
                    incident_condition_service: Ok(value.incident_condition_service),
                    incident_condition_severity: Ok(value.incident_condition_severity),
                    incident_condition_started_at: Ok(
                        value.incident_condition_started_at,
                    ),
                    incident_condition_status: Ok(value.incident_condition_status),
                    incident_condition_sub_status: Ok(
                        value.incident_condition_sub_status,
                    ),
                    incident_condition_summary: Ok(value.incident_condition_summary),
                    incident_condition_visibility: Ok(
                        value.incident_condition_visibility,
                    ),
                    incident_conditional_inactivity: Ok(
                        value.incident_conditional_inactivity,
                    ),
                    incident_inactivity_duration: Ok(value.incident_inactivity_duration),
                    incident_kinds: Ok(value.incident_kinds),
                    incident_post_mortem_condition_cause: Ok(
                        value.incident_post_mortem_condition_cause,
                    ),
                    incident_statuses: Ok(value.incident_statuses),
                    incident_visibilities: Ok(value.incident_visibilities),
                    trigger_type: Ok(value.trigger_type),
                    triggers: Ok(value.triggers),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentType {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::IncidentTypePropertiesItem>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::IncidentTypeSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::IncidentTypeSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentType {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl IncidentType {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentTypePropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::IncidentTypeSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::IncidentTypeSlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentType> for super::IncidentType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    properties: value.properties?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentType> for IncidentType {
            fn from(value: super::IncidentType) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypeList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::IncidentTypeListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentTypeList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl IncidentTypeList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::IncidentTypeListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypeList> for super::IncidentTypeList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypeList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypeList> for IncidentTypeList {
            fn from(value: super::IncidentTypeList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypeListDataItem {
            attributes: ::std::result::Result<
                super::IncidentType,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentTypeListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentTypeListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentTypeListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentType>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentTypeListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypeListDataItem>
        for super::IncidentTypeListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypeListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypeListDataItem>
        for IncidentTypeListDataItem {
            fn from(value: super::IncidentTypeListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypePropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentTypePropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl IncidentTypePropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypePropertiesItem>
        for super::IncidentTypePropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypePropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypePropertiesItem>
        for IncidentTypePropertiesItem {
            fn from(value: super::IncidentTypePropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypeResponse {
            data: ::std::result::Result<
                super::IncidentTypeResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentTypeResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl IncidentTypeResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentTypeResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypeResponse>
        for super::IncidentTypeResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypeResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypeResponse> for IncidentTypeResponse {
            fn from(value: super::IncidentTypeResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypeResponseData {
            attributes: ::std::result::Result<
                super::IncidentType,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IncidentTypeResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentTypeResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IncidentTypeResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentType>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IncidentTypeResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypeResponseData>
        for super::IncidentTypeResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypeResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypeResponseData>
        for IncidentTypeResponseData {
            fn from(value: super::IncidentTypeResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypeSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentTypeSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl IncidentTypeSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypeSlackAliasesItem>
        for super::IncidentTypeSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypeSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypeSlackAliasesItem>
        for IncidentTypeSlackAliasesItem {
            fn from(value: super::IncidentTypeSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentTypeSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for IncidentTypeSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl IncidentTypeSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentTypeSlackChannelsItem>
        for super::IncidentTypeSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentTypeSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentTypeSlackChannelsItem>
        for IncidentTypeSlackChannelsItem {
            fn from(value: super::IncidentTypeSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentZoomMeetingGlobalDialInNumbersItem {
            city: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            country: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            country_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentZoomMeetingGlobalDialInNumbersItem {
            fn default() -> Self {
                Self {
                    city: Ok(Default::default()),
                    country: Ok(Default::default()),
                    country_name: Ok(Default::default()),
                    number: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl IncidentZoomMeetingGlobalDialInNumbersItem {
            pub fn city<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.city = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for city: {e}")
                    });
                self
            }
            pub fn country<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.country = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for country: {e}")
                    });
                self
            }
            pub fn country_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.country_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for country_name: {e}")
                    });
                self
            }
            pub fn number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.number = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for number: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentZoomMeetingGlobalDialInNumbersItem>
        for super::IncidentZoomMeetingGlobalDialInNumbersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentZoomMeetingGlobalDialInNumbersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    city: value.city?,
                    country: value.country?,
                    country_name: value.country_name?,
                    number: value.number?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IncidentZoomMeetingGlobalDialInNumbersItem>
        for IncidentZoomMeetingGlobalDialInNumbersItem {
            fn from(value: super::IncidentZoomMeetingGlobalDialInNumbersItem) -> Self {
                Self {
                    city: Ok(value.city),
                    country: Ok(value.country),
                    country_name: Ok(value.country_name),
                    number: Ok(value.number),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IncidentsChartResponse {
            data: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IncidentsChartResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl IncidentsChartResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IncidentsChartResponse>
        for super::IncidentsChartResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IncidentsChartResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::IncidentsChartResponse>
        for IncidentsChartResponse {
            fn from(value: super::IncidentsChartResponse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToGoogleChatSpaceTaskParams {
            emails: ::std::result::Result<::std::string::String, ::std::string::String>,
            space: ::std::result::Result<
                super::InviteToGoogleChatSpaceTaskParamsSpace,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::InviteToGoogleChatSpaceTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToGoogleChatSpaceTaskParams {
            fn default() -> Self {
                Self {
                    emails: Err("no value supplied for emails".to_string()),
                    space: Err("no value supplied for space".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl InviteToGoogleChatSpaceTaskParams {
            pub fn emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for emails: {e}")
                    });
                self
            }
            pub fn space<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::InviteToGoogleChatSpaceTaskParamsSpace,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.space = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for space: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToGoogleChatSpaceTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToGoogleChatSpaceTaskParams>
        for super::InviteToGoogleChatSpaceTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToGoogleChatSpaceTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    emails: value.emails?,
                    space: value.space?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToGoogleChatSpaceTaskParams>
        for InviteToGoogleChatSpaceTaskParams {
            fn from(value: super::InviteToGoogleChatSpaceTaskParams) -> Self {
                Self {
                    emails: Ok(value.emails),
                    space: Ok(value.space),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToGoogleChatSpaceTaskParamsSpace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToGoogleChatSpaceTaskParamsSpace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToGoogleChatSpaceTaskParamsSpace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToGoogleChatSpaceTaskParamsSpace>
        for super::InviteToGoogleChatSpaceTaskParamsSpace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToGoogleChatSpaceTaskParamsSpace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToGoogleChatSpaceTaskParamsSpace>
        for InviteToGoogleChatSpaceTaskParamsSpace {
            fn from(value: super::InviteToGoogleChatSpaceTaskParamsSpace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToMicrosoftTeamsChannelTaskParams {
            channel: ::std::result::Result<
                super::InviteToMicrosoftTeamsChannelTaskParamsChannel,
                ::std::string::String,
            >,
            emails: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToMicrosoftTeamsChannelTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToMicrosoftTeamsChannelTaskParamsTeam,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToMicrosoftTeamsChannelTaskParams {
            fn default() -> Self {
                Self {
                    channel: Err("no value supplied for channel".to_string()),
                    emails: Err("no value supplied for emails".to_string()),
                    task_type: Ok(Default::default()),
                    team: Ok(Default::default()),
                }
            }
        }
        impl InviteToMicrosoftTeamsChannelTaskParams {
            pub fn channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::InviteToMicrosoftTeamsChannelTaskParamsChannel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channel: {e}")
                    });
                self
            }
            pub fn emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for emails: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToMicrosoftTeamsChannelTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToMicrosoftTeamsChannelTaskParamsTeam,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToMicrosoftTeamsChannelTaskParams>
        for super::InviteToMicrosoftTeamsChannelTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToMicrosoftTeamsChannelTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channel: value.channel?,
                    emails: value.emails?,
                    task_type: value.task_type?,
                    team: value.team?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToMicrosoftTeamsChannelTaskParams>
        for InviteToMicrosoftTeamsChannelTaskParams {
            fn from(value: super::InviteToMicrosoftTeamsChannelTaskParams) -> Self {
                Self {
                    channel: Ok(value.channel),
                    emails: Ok(value.emails),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToMicrosoftTeamsChannelTaskParamsChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToMicrosoftTeamsChannelTaskParamsChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToMicrosoftTeamsChannelTaskParamsChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToMicrosoftTeamsChannelTaskParamsChannel>
        for super::InviteToMicrosoftTeamsChannelTaskParamsChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToMicrosoftTeamsChannelTaskParamsChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToMicrosoftTeamsChannelTaskParamsChannel>
        for InviteToMicrosoftTeamsChannelTaskParamsChannel {
            fn from(
                value: super::InviteToMicrosoftTeamsChannelTaskParamsChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToMicrosoftTeamsChannelTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToMicrosoftTeamsChannelTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToMicrosoftTeamsChannelTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToMicrosoftTeamsChannelTaskParamsTeam>
        for super::InviteToMicrosoftTeamsChannelTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToMicrosoftTeamsChannelTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToMicrosoftTeamsChannelTaskParamsTeam>
        for InviteToMicrosoftTeamsChannelTaskParamsTeam {
            fn from(value: super::InviteToMicrosoftTeamsChannelTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelOpsgenieTaskParams {
            channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::InviteToSlackChannelOpsgenieTaskParamsChannelsItem,
                >,
                ::std::string::String,
            >,
            schedule: ::std::result::Result<
                super::InviteToSlackChannelOpsgenieTaskParamsSchedule,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelOpsgenieTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelOpsgenieTaskParams {
            fn default() -> Self {
                Self {
                    channels: Err("no value supplied for channels".to_string()),
                    schedule: Err("no value supplied for schedule".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelOpsgenieTaskParams {
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::InviteToSlackChannelOpsgenieTaskParamsChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn schedule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::InviteToSlackChannelOpsgenieTaskParamsSchedule,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelOpsgenieTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelOpsgenieTaskParams>
        for super::InviteToSlackChannelOpsgenieTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelOpsgenieTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channels: value.channels?,
                    schedule: value.schedule?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelOpsgenieTaskParams>
        for InviteToSlackChannelOpsgenieTaskParams {
            fn from(value: super::InviteToSlackChannelOpsgenieTaskParams) -> Self {
                Self {
                    channels: Ok(value.channels),
                    schedule: Ok(value.schedule),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelOpsgenieTaskParamsChannelsItem>
        for super::InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelOpsgenieTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelOpsgenieTaskParamsChannelsItem,
        > for InviteToSlackChannelOpsgenieTaskParamsChannelsItem {
            fn from(
                value: super::InviteToSlackChannelOpsgenieTaskParamsChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelOpsgenieTaskParamsSchedule {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelOpsgenieTaskParamsSchedule {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelOpsgenieTaskParamsSchedule {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelOpsgenieTaskParamsSchedule>
        for super::InviteToSlackChannelOpsgenieTaskParamsSchedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelOpsgenieTaskParamsSchedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelOpsgenieTaskParamsSchedule>
        for InviteToSlackChannelOpsgenieTaskParamsSchedule {
            fn from(
                value: super::InviteToSlackChannelOpsgenieTaskParamsSchedule,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant0ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant0EscalationPolicy,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant0Schedule,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant0Service,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant0Service,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant0Service,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant0Service {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant0Service,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant1ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant1EscalationPolicy,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant1Schedule,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelPagerdutyTaskParamsVariant1Service,
        > for super::InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelPagerdutyTaskParamsVariant1Service,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelPagerdutyTaskParamsVariant1Service,
        > for InviteToSlackChannelPagerdutyTaskParamsVariant1Service {
            fn from(
                value: super::InviteToSlackChannelPagerdutyTaskParamsVariant1Service,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParams {
            channels: ::std::result::Result<
                ::std::vec::Vec<super::InviteToSlackChannelRootlyTaskParamsChannelsItem>,
                ::std::string::String,
            >,
            escalation_policy_target: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
                >,
                ::std::string::String,
            >,
            group_target: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelRootlyTaskParamsGroupTarget,
                >,
                ::std::string::String,
            >,
            schedule_target: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelRootlyTaskParamsScheduleTarget,
                >,
                ::std::string::String,
            >,
            service_target: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelRootlyTaskParamsServiceTarget,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelRootlyTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            user_target: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelRootlyTaskParamsUserTarget,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelRootlyTaskParams {
            fn default() -> Self {
                Self {
                    channels: Err("no value supplied for channels".to_string()),
                    escalation_policy_target: Ok(Default::default()),
                    group_target: Ok(Default::default()),
                    schedule_target: Ok(Default::default()),
                    service_target: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    user_target: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParams {
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::InviteToSlackChannelRootlyTaskParamsChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn escalation_policy_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_target: {e}"
                        )
                    });
                self
            }
            pub fn group_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelRootlyTaskParamsGroupTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_target = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_target: {e}")
                    });
                self
            }
            pub fn schedule_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelRootlyTaskParamsScheduleTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_target: {e}"
                        )
                    });
                self
            }
            pub fn service_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelRootlyTaskParamsServiceTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_target: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelRootlyTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn user_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelRootlyTaskParamsUserTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user_target = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_target: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelRootlyTaskParams>
        for super::InviteToSlackChannelRootlyTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channels: value.channels?,
                    escalation_policy_target: value.escalation_policy_target?,
                    group_target: value.group_target?,
                    schedule_target: value.schedule_target?,
                    service_target: value.service_target?,
                    task_type: value.task_type?,
                    user_target: value.user_target?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelRootlyTaskParams>
        for InviteToSlackChannelRootlyTaskParams {
            fn from(value: super::InviteToSlackChannelRootlyTaskParams) -> Self {
                Self {
                    channels: Ok(value.channels),
                    escalation_policy_target: Ok(value.escalation_policy_target),
                    group_target: Ok(value.group_target),
                    schedule_target: Ok(value.schedule_target),
                    service_target: Ok(value.service_target),
                    task_type: Ok(value.task_type),
                    user_target: Ok(value.user_target),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelRootlyTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelRootlyTaskParamsChannelsItem>
        for super::InviteToSlackChannelRootlyTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelRootlyTaskParamsChannelsItem,
        > for InviteToSlackChannelRootlyTaskParamsChannelsItem {
            fn from(
                value: super::InviteToSlackChannelRootlyTaskParamsChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
        > for super::InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
        > for InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget {
            fn from(
                value: super::InviteToSlackChannelRootlyTaskParamsEscalationPolicyTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParamsGroupTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelRootlyTaskParamsGroupTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParamsGroupTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelRootlyTaskParamsGroupTarget>
        for super::InviteToSlackChannelRootlyTaskParamsGroupTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParamsGroupTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelRootlyTaskParamsGroupTarget>
        for InviteToSlackChannelRootlyTaskParamsGroupTarget {
            fn from(
                value: super::InviteToSlackChannelRootlyTaskParamsGroupTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParamsScheduleTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelRootlyTaskParamsScheduleTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParamsScheduleTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelRootlyTaskParamsScheduleTarget>
        for super::InviteToSlackChannelRootlyTaskParamsScheduleTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParamsScheduleTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelRootlyTaskParamsScheduleTarget,
        > for InviteToSlackChannelRootlyTaskParamsScheduleTarget {
            fn from(
                value: super::InviteToSlackChannelRootlyTaskParamsScheduleTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParamsServiceTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelRootlyTaskParamsServiceTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParamsServiceTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelRootlyTaskParamsServiceTarget>
        for super::InviteToSlackChannelRootlyTaskParamsServiceTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParamsServiceTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelRootlyTaskParamsServiceTarget,
        > for InviteToSlackChannelRootlyTaskParamsServiceTarget {
            fn from(
                value: super::InviteToSlackChannelRootlyTaskParamsServiceTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelRootlyTaskParamsUserTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelRootlyTaskParamsUserTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelRootlyTaskParamsUserTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelRootlyTaskParamsUserTarget>
        for super::InviteToSlackChannelRootlyTaskParamsUserTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelRootlyTaskParamsUserTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelRootlyTaskParamsUserTarget>
        for InviteToSlackChannelRootlyTaskParamsUserTarget {
            fn from(
                value: super::InviteToSlackChannelRootlyTaskParamsUserTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant0Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelTaskParamsVariant0Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant0Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelTaskParamsVariant0Channel>
        for super::InviteToSlackChannelTaskParamsVariant0Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant0Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelTaskParamsVariant0Channel>
        for InviteToSlackChannelTaskParamsVariant0Channel {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant0Channel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem,
        > for super::InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem,
        > for InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant0SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelTaskParamsVariant0SlackUsersItem,
        > for super::InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant0SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelTaskParamsVariant0SlackUsersItem,
        > for InviteToSlackChannelTaskParamsVariant0SlackUsersItem {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant0SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant1Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelTaskParamsVariant1Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant1Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelTaskParamsVariant1Channel>
        for super::InviteToSlackChannelTaskParamsVariant1Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant1Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelTaskParamsVariant1Channel>
        for InviteToSlackChannelTaskParamsVariant1Channel {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant1Channel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem,
        > for super::InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem,
        > for InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant1SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelTaskParamsVariant1SlackUsersItem,
        > for super::InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant1SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelTaskParamsVariant1SlackUsersItem,
        > for InviteToSlackChannelTaskParamsVariant1SlackUsersItem {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant1SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant2Channel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelTaskParamsVariant2Channel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant2Channel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelTaskParamsVariant2Channel>
        for super::InviteToSlackChannelTaskParamsVariant2Channel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant2Channel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelTaskParamsVariant2Channel>
        for InviteToSlackChannelTaskParamsVariant2Channel {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant2Channel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem,
        > for super::InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem,
        > for InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant2SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            InviteToSlackChannelTaskParamsVariant2SlackUsersItem,
        > for super::InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelTaskParamsVariant2SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelTaskParamsVariant2SlackUsersItem,
        > for InviteToSlackChannelTaskParamsVariant2SlackUsersItem {
            fn from(
                value: super::InviteToSlackChannelTaskParamsVariant2SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelVictorOpsTaskParams {
            channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::InviteToSlackChannelVictorOpsTaskParamsChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::InviteToSlackChannelVictorOpsTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                super::InviteToSlackChannelVictorOpsTaskParamsTeam,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelVictorOpsTaskParams {
            fn default() -> Self {
                Self {
                    channels: Err("no value supplied for channels".to_string()),
                    task_type: Ok(Default::default()),
                    team: Err("no value supplied for team".to_string()),
                }
            }
        }
        impl InviteToSlackChannelVictorOpsTaskParams {
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::InviteToSlackChannelVictorOpsTaskParamsChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::InviteToSlackChannelVictorOpsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::InviteToSlackChannelVictorOpsTaskParamsTeam,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelVictorOpsTaskParams>
        for super::InviteToSlackChannelVictorOpsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelVictorOpsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channels: value.channels?,
                    task_type: value.task_type?,
                    team: value.team?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelVictorOpsTaskParams>
        for InviteToSlackChannelVictorOpsTaskParams {
            fn from(value: super::InviteToSlackChannelVictorOpsTaskParams) -> Self {
                Self {
                    channels: Ok(value.channels),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelVictorOpsTaskParamsChannelsItem>
        for super::InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelVictorOpsTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::InviteToSlackChannelVictorOpsTaskParamsChannelsItem,
        > for InviteToSlackChannelVictorOpsTaskParamsChannelsItem {
            fn from(
                value: super::InviteToSlackChannelVictorOpsTaskParamsChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct InviteToSlackChannelVictorOpsTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for InviteToSlackChannelVictorOpsTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl InviteToSlackChannelVictorOpsTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<InviteToSlackChannelVictorOpsTaskParamsTeam>
        for super::InviteToSlackChannelVictorOpsTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: InviteToSlackChannelVictorOpsTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::InviteToSlackChannelVictorOpsTaskParamsTeam>
        for InviteToSlackChannelVictorOpsTaskParamsTeam {
            fn from(value: super::InviteToSlackChannelVictorOpsTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IpRanges {
            integrations_ipv4: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            integrations_ipv6: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            webhooks_ipv4: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            webhooks_ipv6: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IpRanges {
            fn default() -> Self {
                Self {
                    integrations_ipv4: Err(
                        "no value supplied for integrations_ipv4".to_string(),
                    ),
                    integrations_ipv6: Err(
                        "no value supplied for integrations_ipv6".to_string(),
                    ),
                    webhooks_ipv4: Err(
                        "no value supplied for webhooks_ipv4".to_string(),
                    ),
                    webhooks_ipv6: Err("no value supplied for webhooks_ipv6".to_string()),
                }
            }
        }
        impl IpRanges {
            pub fn integrations_ipv4<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_ipv4 = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_ipv4: {e}"
                        )
                    });
                self
            }
            pub fn integrations_ipv6<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_ipv6 = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_ipv6: {e}"
                        )
                    });
                self
            }
            pub fn webhooks_ipv4<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_ipv4 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for webhooks_ipv4: {e}")
                    });
                self
            }
            pub fn webhooks_ipv6<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_ipv6 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for webhooks_ipv6: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IpRanges> for super::IpRanges {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IpRanges,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    integrations_ipv4: value.integrations_ipv4?,
                    integrations_ipv6: value.integrations_ipv6?,
                    webhooks_ipv4: value.webhooks_ipv4?,
                    webhooks_ipv6: value.webhooks_ipv6?,
                })
            }
        }
        impl ::std::convert::From<super::IpRanges> for IpRanges {
            fn from(value: super::IpRanges) -> Self {
                Self {
                    integrations_ipv4: Ok(value.integrations_ipv4),
                    integrations_ipv6: Ok(value.integrations_ipv6),
                    webhooks_ipv4: Ok(value.webhooks_ipv4),
                    webhooks_ipv6: Ok(value.webhooks_ipv6),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IpRangesResponse {
            data: ::std::result::Result<
                super::IpRangesResponseData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IpRangesResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl IpRangesResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IpRangesResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IpRangesResponse> for super::IpRangesResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IpRangesResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::IpRangesResponse> for IpRangesResponse {
            fn from(value: super::IpRangesResponse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct IpRangesResponseData {
            attributes: ::std::result::Result<super::IpRanges, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::IpRangesResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for IpRangesResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl IpRangesResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IpRanges>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::IpRangesResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<IpRangesResponseData>
        for super::IpRangesResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: IpRangesResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::IpRangesResponseData> for IpRangesResponseData {
            fn from(value: super::IpRangesResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct JsonapiIncludedResource {
            attributes: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            relationships: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for JsonapiIncludedResource {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Err("no value supplied for id".to_string()),
                    relationships: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl JsonapiIncludedResource {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn relationships<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.relationships = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for relationships: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<JsonapiIncludedResource>
        for super::JsonapiIncludedResource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: JsonapiIncludedResource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    relationships: value.relationships?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::JsonapiIncludedResource>
        for JsonapiIncludedResource {
            fn from(value: super::JsonapiIncludedResource) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    relationships: Ok(value.relationships),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Links {
            first: ::std::result::Result<::std::string::String, ::std::string::String>,
            last: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            next: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            prev: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            self_: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for Links {
            fn default() -> Self {
                Self {
                    first: Err("no value supplied for first".to_string()),
                    last: Err("no value supplied for last".to_string()),
                    next: Err("no value supplied for next".to_string()),
                    prev: Err("no value supplied for prev".to_string()),
                    self_: Err("no value supplied for self_".to_string()),
                }
            }
        }
        impl Links {
            pub fn first<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.first = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for first: {e}")
                    });
                self
            }
            pub fn last<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last: {e}")
                    });
                self
            }
            pub fn next<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.next = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for next: {e}")
                    });
                self
            }
            pub fn prev<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.prev = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prev: {e}")
                    });
                self
            }
            pub fn self_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.self_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for self_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Links> for super::Links {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Links,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    first: value.first?,
                    last: value.last?,
                    next: value.next?,
                    prev: value.prev?,
                    self_: value.self_?,
                })
            }
        }
        impl ::std::convert::From<super::Links> for Links {
            fn from(value: super::Links) -> Self {
                Self {
                    first: Ok(value.first),
                    last: Ok(value.last),
                    next: Ok(value.next),
                    prev: Ok(value.prev),
                    self_: Ok(value.self_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouter {
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            caller_greeting: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            calling_tree_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            country_code: ::std::result::Result<
                ::std::option::Option<super::LiveCallRouterCountryCode>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            escalation_level_delay_in_seconds: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            escalation_policy_trigger_params: ::std::result::Result<
                ::std::option::Option<
                    super::LiveCallRouterEscalationPolicyTriggerParams,
                >,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::LiveCallRouterKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            paging_targets: ::std::result::Result<
                ::std::vec::Vec<super::LiveCallRouterPagingTargetsItem>,
                ::std::string::String,
            >,
            phone_number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            phone_type: ::std::result::Result<
                ::std::option::Option<super::LiveCallRouterPhoneType>,
                ::std::string::String,
            >,
            sent_to_voicemail_delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            should_auto_resolve_alert_on_call_end: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            should_redirect_to_voicemail_on_no_answer: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            voicemail_greeting: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            waiting_music_url: ::std::result::Result<
                ::std::option::Option<super::LiveCallRouterWaitingMusicUrl>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for LiveCallRouter {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Ok(Default::default()),
                    caller_greeting: Ok(Default::default()),
                    calling_tree_prompt: Ok(Default::default()),
                    country_code: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    enabled: Ok(Default::default()),
                    escalation_level_delay_in_seconds: Ok(Default::default()),
                    escalation_policy_trigger_params: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    paging_targets: Ok(Default::default()),
                    phone_number: Ok(Default::default()),
                    phone_type: Ok(Default::default()),
                    sent_to_voicemail_delay: Ok(Default::default()),
                    should_auto_resolve_alert_on_call_end: Ok(Default::default()),
                    should_redirect_to_voicemail_on_no_answer: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    voicemail_greeting: Ok(Default::default()),
                    waiting_music_url: Ok(Default::default()),
                }
            }
        }
        impl LiveCallRouter {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn caller_greeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.caller_greeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for caller_greeting: {e}"
                        )
                    });
                self
            }
            pub fn calling_tree_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.calling_tree_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for calling_tree_prompt: {e}"
                        )
                    });
                self
            }
            pub fn country_code<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::LiveCallRouterCountryCode>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.country_code = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for country_code: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn escalation_level_delay_in_seconds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_level_delay_in_seconds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_level_delay_in_seconds: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_trigger_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::LiveCallRouterEscalationPolicyTriggerParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_trigger_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_trigger_params: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::LiveCallRouterKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn paging_targets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::LiveCallRouterPagingTargetsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_targets = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_targets: {e}"
                        )
                    });
                self
            }
            pub fn phone_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_number = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_number: {e}")
                    });
                self
            }
            pub fn phone_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::LiveCallRouterPhoneType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.phone_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_type: {e}")
                    });
                self
            }
            pub fn sent_to_voicemail_delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.sent_to_voicemail_delay = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sent_to_voicemail_delay: {e}"
                        )
                    });
                self
            }
            pub fn should_auto_resolve_alert_on_call_end<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_auto_resolve_alert_on_call_end = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_auto_resolve_alert_on_call_end: {e}"
                        )
                    });
                self
            }
            pub fn should_redirect_to_voicemail_on_no_answer<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_redirect_to_voicemail_on_no_answer = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_redirect_to_voicemail_on_no_answer: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn voicemail_greeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.voicemail_greeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for voicemail_greeting: {e}"
                        )
                    });
                self
            }
            pub fn waiting_music_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::LiveCallRouterWaitingMusicUrl>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.waiting_music_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for waiting_music_url: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouter> for super::LiveCallRouter {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouter,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    caller_greeting: value.caller_greeting?,
                    calling_tree_prompt: value.calling_tree_prompt?,
                    country_code: value.country_code?,
                    created_at: value.created_at?,
                    enabled: value.enabled?,
                    escalation_level_delay_in_seconds: value
                        .escalation_level_delay_in_seconds?,
                    escalation_policy_trigger_params: value
                        .escalation_policy_trigger_params?,
                    kind: value.kind?,
                    name: value.name?,
                    paging_targets: value.paging_targets?,
                    phone_number: value.phone_number?,
                    phone_type: value.phone_type?,
                    sent_to_voicemail_delay: value.sent_to_voicemail_delay?,
                    should_auto_resolve_alert_on_call_end: value
                        .should_auto_resolve_alert_on_call_end?,
                    should_redirect_to_voicemail_on_no_answer: value
                        .should_redirect_to_voicemail_on_no_answer?,
                    updated_at: value.updated_at?,
                    voicemail_greeting: value.voicemail_greeting?,
                    waiting_music_url: value.waiting_music_url?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouter> for LiveCallRouter {
            fn from(value: super::LiveCallRouter) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    caller_greeting: Ok(value.caller_greeting),
                    calling_tree_prompt: Ok(value.calling_tree_prompt),
                    country_code: Ok(value.country_code),
                    created_at: Ok(value.created_at),
                    enabled: Ok(value.enabled),
                    escalation_level_delay_in_seconds: Ok(
                        value.escalation_level_delay_in_seconds,
                    ),
                    escalation_policy_trigger_params: Ok(
                        value.escalation_policy_trigger_params,
                    ),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    paging_targets: Ok(value.paging_targets),
                    phone_number: Ok(value.phone_number),
                    phone_type: Ok(value.phone_type),
                    sent_to_voicemail_delay: Ok(value.sent_to_voicemail_delay),
                    should_auto_resolve_alert_on_call_end: Ok(
                        value.should_auto_resolve_alert_on_call_end,
                    ),
                    should_redirect_to_voicemail_on_no_answer: Ok(
                        value.should_redirect_to_voicemail_on_no_answer,
                    ),
                    updated_at: Ok(value.updated_at),
                    voicemail_greeting: Ok(value.voicemail_greeting),
                    waiting_music_url: Ok(value.waiting_music_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouterEscalationPolicyTriggerParams {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::LiveCallRouterEscalationPolicyTriggerParamsType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for LiveCallRouterEscalationPolicyTriggerParams {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl LiveCallRouterEscalationPolicyTriggerParams {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::LiveCallRouterEscalationPolicyTriggerParamsType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouterEscalationPolicyTriggerParams>
        for super::LiveCallRouterEscalationPolicyTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouterEscalationPolicyTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouterEscalationPolicyTriggerParams>
        for LiveCallRouterEscalationPolicyTriggerParams {
            fn from(value: super::LiveCallRouterEscalationPolicyTriggerParams) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouterList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::LiveCallRouterListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for LiveCallRouterList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl LiveCallRouterList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::LiveCallRouterListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouterList> for super::LiveCallRouterList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouterList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouterList> for LiveCallRouterList {
            fn from(value: super::LiveCallRouterList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouterListDataItem {
            attributes: ::std::result::Result<
                super::LiveCallRouter,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::LiveCallRouterListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for LiveCallRouterListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl LiveCallRouterListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::LiveCallRouter>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::LiveCallRouterListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouterListDataItem>
        for super::LiveCallRouterListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouterListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouterListDataItem>
        for LiveCallRouterListDataItem {
            fn from(value: super::LiveCallRouterListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouterPagingTargetsItem {
            alert_urgency_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::LiveCallRouterPagingTargetsItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for LiveCallRouterPagingTargetsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Err(
                        "no value supplied for alert_urgency_id".to_string(),
                    ),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl LiveCallRouterPagingTargetsItem {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::LiveCallRouterPagingTargetsItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouterPagingTargetsItem>
        for super::LiveCallRouterPagingTargetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouterPagingTargetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouterPagingTargetsItem>
        for LiveCallRouterPagingTargetsItem {
            fn from(value: super::LiveCallRouterPagingTargetsItem) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouterResponse {
            data: ::std::result::Result<
                super::LiveCallRouterResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for LiveCallRouterResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl LiveCallRouterResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::LiveCallRouterResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouterResponse>
        for super::LiveCallRouterResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouterResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouterResponse>
        for LiveCallRouterResponse {
            fn from(value: super::LiveCallRouterResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct LiveCallRouterResponseData {
            attributes: ::std::result::Result<
                super::LiveCallRouter,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::LiveCallRouterResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for LiveCallRouterResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl LiveCallRouterResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::LiveCallRouter>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::LiveCallRouterResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<LiveCallRouterResponseData>
        for super::LiveCallRouterResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: LiveCallRouterResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::LiveCallRouterResponseData>
        for LiveCallRouterResponseData {
            fn from(value: super::LiveCallRouterResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct MeetingRecording {
            created_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            duration_minutes: ::std::result::Result<
                ::std::option::Option<f64>,
                ::std::string::String,
            >,
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            has_video: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            platform: ::std::result::Result<
                super::MeetingRecordingPlatform,
                ::std::string::String,
            >,
            session_number: ::std::result::Result<i64, ::std::string::String>,
            speaker_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::MeetingRecordingStatus,
                ::std::string::String,
            >,
            transcript_summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            word_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for MeetingRecording {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    duration_minutes: Ok(Default::default()),
                    ended_at: Ok(Default::default()),
                    has_video: Ok(Default::default()),
                    platform: Err("no value supplied for platform".to_string()),
                    session_number: Err(
                        "no value supplied for session_number".to_string(),
                    ),
                    speaker_count: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    transcript_summary: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    word_count: Ok(Default::default()),
                }
            }
        }
        impl MeetingRecording {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn duration_minutes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<f64>>,
                T::Error: ::std::fmt::Display,
            {
                self.duration_minutes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for duration_minutes: {e}"
                        )
                    });
                self
            }
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn has_video<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.has_video = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for has_video: {e}")
                    });
                self
            }
            pub fn platform<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MeetingRecordingPlatform>,
                T::Error: ::std::fmt::Display,
            {
                self.platform = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for platform: {e}")
                    });
                self
            }
            pub fn session_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.session_number = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for session_number: {e}"
                        )
                    });
                self
            }
            pub fn speaker_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.speaker_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for speaker_count: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MeetingRecordingStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn transcript_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.transcript_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for transcript_summary: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn word_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.word_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for word_count: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<MeetingRecording> for super::MeetingRecording {
            type Error = super::error::ConversionError;
            fn try_from(
                value: MeetingRecording,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    duration_minutes: value.duration_minutes?,
                    ended_at: value.ended_at?,
                    has_video: value.has_video?,
                    platform: value.platform?,
                    session_number: value.session_number?,
                    speaker_count: value.speaker_count?,
                    started_at: value.started_at?,
                    status: value.status?,
                    transcript_summary: value.transcript_summary?,
                    updated_at: value.updated_at?,
                    word_count: value.word_count?,
                })
            }
        }
        impl ::std::convert::From<super::MeetingRecording> for MeetingRecording {
            fn from(value: super::MeetingRecording) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    duration_minutes: Ok(value.duration_minutes),
                    ended_at: Ok(value.ended_at),
                    has_video: Ok(value.has_video),
                    platform: Ok(value.platform),
                    session_number: Ok(value.session_number),
                    speaker_count: Ok(value.speaker_count),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    transcript_summary: Ok(value.transcript_summary),
                    updated_at: Ok(value.updated_at),
                    word_count: Ok(value.word_count),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct MeetingRecordingList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::MeetingRecordingListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for MeetingRecordingList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl MeetingRecordingList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::MeetingRecordingListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<MeetingRecordingList>
        for super::MeetingRecordingList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: MeetingRecordingList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::MeetingRecordingList> for MeetingRecordingList {
            fn from(value: super::MeetingRecordingList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct MeetingRecordingListDataItem {
            attributes: ::std::result::Result<
                super::MeetingRecording,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::MeetingRecordingListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for MeetingRecordingListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl MeetingRecordingListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MeetingRecording>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MeetingRecordingListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<MeetingRecordingListDataItem>
        for super::MeetingRecordingListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: MeetingRecordingListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::MeetingRecordingListDataItem>
        for MeetingRecordingListDataItem {
            fn from(value: super::MeetingRecordingListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Meta {
            current_page: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            next_cursor: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            next_page: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            prev_page: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            total_count: ::std::result::Result<i64, ::std::string::String>,
            total_pages: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for Meta {
            fn default() -> Self {
                Self {
                    current_page: Err("no value supplied for current_page".to_string()),
                    next_cursor: Ok(Default::default()),
                    next_page: Err("no value supplied for next_page".to_string()),
                    prev_page: Err("no value supplied for prev_page".to_string()),
                    total_count: Err("no value supplied for total_count".to_string()),
                    total_pages: Err("no value supplied for total_pages".to_string()),
                }
            }
        }
        impl Meta {
            pub fn current_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.current_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for current_page: {e}")
                    });
                self
            }
            pub fn next_cursor<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.next_cursor = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for next_cursor: {e}")
                    });
                self
            }
            pub fn next_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.next_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for next_page: {e}")
                    });
                self
            }
            pub fn prev_page<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.prev_page = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for prev_page: {e}")
                    });
                self
            }
            pub fn total_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.total_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for total_count: {e}")
                    });
                self
            }
            pub fn total_pages<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.total_pages = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for total_pages: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Meta> for super::Meta {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Meta,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    current_page: value.current_page?,
                    next_cursor: value.next_cursor?,
                    next_page: value.next_page?,
                    prev_page: value.prev_page?,
                    total_count: value.total_count?,
                    total_pages: value.total_pages?,
                })
            }
        }
        impl ::std::convert::From<super::Meta> for Meta {
            fn from(value: super::Meta) -> Self {
                Self {
                    current_page: Ok(value.current_page),
                    next_cursor: Ok(value.next_cursor),
                    next_page: Ok(value.next_page),
                    prev_page: Ok(value.prev_page),
                    total_count: Ok(value.total_count),
                    total_pages: Ok(value.total_pages),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct MitigateIncident {
            data: ::std::result::Result<
                super::MitigateIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for MitigateIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl MitigateIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MitigateIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<MitigateIncident> for super::MitigateIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: MitigateIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::MitigateIncident> for MitigateIncident {
            fn from(value: super::MitigateIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct MitigateIncidentData {
            attributes: ::std::result::Result<
                super::MitigateIncidentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::MitigateIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for MitigateIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl MitigateIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MitigateIncidentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::MitigateIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<MitigateIncidentData>
        for super::MitigateIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: MitigateIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::MitigateIncidentData> for MitigateIncidentData {
            fn from(value: super::MitigateIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct MitigateIncidentDataAttributes {
            mitigation_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for MitigateIncidentDataAttributes {
            fn default() -> Self {
                Self {
                    mitigation_message: Ok(Default::default()),
                }
            }
        }
        impl MitigateIncidentDataAttributes {
            pub fn mitigation_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigation_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mitigation_message: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<MitigateIncidentDataAttributes>
        for super::MitigateIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: MitigateIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    mitigation_message: value.mitigation_message?,
                })
            }
        }
        impl ::std::convert::From<super::MitigateIncidentDataAttributes>
        for MitigateIncidentDataAttributes {
            fn from(value: super::MitigateIncidentDataAttributes) -> Self {
                Self {
                    mitigation_message: Ok(value.mitigation_message),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlert {
            data: ::std::result::Result<super::NewAlertData, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlert {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlert {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlert> for super::NewAlert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlert> for NewAlert {
            fn from(value: super::NewAlert) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertData {
            attributes: ::std::result::Result<
                super::NewAlertDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<super::NewAlertDataType, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlertData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertData> for super::NewAlertData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertData> for NewAlertData {
            fn from(value: super::NewAlertData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertDataAttributes {
            alert_field_values_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<
                        super::NewAlertDataAttributesAlertFieldValuesAttributesItem,
                    >,
                >,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            data: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            deduplication_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::NewAlertDataAttributesLabelsItem>,
                >,
                ::std::string::String,
            >,
            noise: ::std::result::Result<
                ::std::option::Option<super::NewAlertDataAttributesNoise>,
                ::std::string::String,
            >,
            notification_target_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertDataAttributesNotificationTargetType,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::NewAlertDataAttributesStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlertDataAttributes {
            fn default() -> Self {
                Self {
                    alert_field_values_attributes: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    data: Ok(Default::default()),
                    deduplication_key: Ok(Default::default()),
                    description: Ok(Default::default()),
                    ended_at: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    noise: Ok(Default::default()),
                    notification_target_id: Ok(Default::default()),
                    notification_target_type: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    source: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                }
            }
        }
        impl NewAlertDataAttributes {
            pub fn alert_field_values_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<
                            super::NewAlertDataAttributesAlertFieldValuesAttributesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_values_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_values_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn deduplication_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::NewAlertDataAttributesLabelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn noise<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewAlertDataAttributesNoise>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.noise = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for noise: {e}")
                    });
                self
            }
            pub fn notification_target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertDataAttributesNotificationTargetType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_type: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewAlertDataAttributesStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertDataAttributes>
        for super::NewAlertDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_values_attributes: value.alert_field_values_attributes?,
                    alert_urgency_id: value.alert_urgency_id?,
                    data: value.data?,
                    deduplication_key: value.deduplication_key?,
                    description: value.description?,
                    ended_at: value.ended_at?,
                    environment_ids: value.environment_ids?,
                    external_id: value.external_id?,
                    external_url: value.external_url?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    labels: value.labels?,
                    noise: value.noise?,
                    notification_target_id: value.notification_target_id?,
                    notification_target_type: value.notification_target_type?,
                    service_ids: value.service_ids?,
                    source: value.source?,
                    started_at: value.started_at?,
                    status: value.status?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertDataAttributes>
        for NewAlertDataAttributes {
            fn from(value: super::NewAlertDataAttributes) -> Self {
                Self {
                    alert_field_values_attributes: Ok(
                        value.alert_field_values_attributes,
                    ),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    data: Ok(value.data),
                    deduplication_key: Ok(value.deduplication_key),
                    description: Ok(value.description),
                    ended_at: Ok(value.ended_at),
                    environment_ids: Ok(value.environment_ids),
                    external_id: Ok(value.external_id),
                    external_url: Ok(value.external_url),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    labels: Ok(value.labels),
                    noise: Ok(value.noise),
                    notification_target_id: Ok(value.notification_target_id),
                    notification_target_type: Ok(value.notification_target_type),
                    service_ids: Ok(value.service_ids),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertDataAttributesAlertFieldValuesAttributesItem {
            alert_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for NewAlertDataAttributesAlertFieldValuesAttributesItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Err(
                        "no value supplied for alert_field_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewAlertDataAttributesAlertFieldValuesAttributesItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertDataAttributesAlertFieldValuesAttributesItem,
        > for super::NewAlertDataAttributesAlertFieldValuesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertDataAttributesAlertFieldValuesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertDataAttributesAlertFieldValuesAttributesItem,
        > for NewAlertDataAttributesAlertFieldValuesAttributesItem {
            fn from(
                value: super::NewAlertDataAttributesAlertFieldValuesAttributesItem,
            ) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertDataAttributesLabelsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<
                super::NewAlertDataAttributesLabelsItemValue,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertDataAttributesLabelsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewAlertDataAttributesLabelsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertDataAttributesLabelsItemValue>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertDataAttributesLabelsItem>
        for super::NewAlertDataAttributesLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertDataAttributesLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertDataAttributesLabelsItem>
        for NewAlertDataAttributesLabelsItem {
            fn from(value: super::NewAlertDataAttributesLabelsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertEvent {
            data: ::std::result::Result<super::NewAlertEventData, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlertEvent {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlertEvent {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertEventData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertEvent> for super::NewAlertEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertEvent> for NewAlertEvent {
            fn from(value: super::NewAlertEvent) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertEventData {
            attributes: ::std::result::Result<
                super::NewAlertEventDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAlertEventDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertEventData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertEventData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertEventDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertEventDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertEventData> for super::NewAlertEventData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertEventData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertEventData> for NewAlertEventData {
            fn from(value: super::NewAlertEventData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertEventDataAttributes {
            details: ::std::result::Result<::std::string::String, ::std::string::String>,
            kind: ::std::result::Result<
                super::NewAlertEventDataAttributesKind,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertEventDataAttributes {
            fn default() -> Self {
                Self {
                    details: Err("no value supplied for details".to_string()),
                    kind: Err("no value supplied for kind".to_string()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl NewAlertEventDataAttributes {
            pub fn details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.details = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for details: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertEventDataAttributesKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertEventDataAttributes>
        for super::NewAlertEventDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertEventDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    details: value.details?,
                    kind: value.kind?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertEventDataAttributes>
        for NewAlertEventDataAttributes {
            fn from(value: super::NewAlertEventDataAttributes) -> Self {
                Self {
                    details: Ok(value.details),
                    kind: Ok(value.kind),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertField {
            data: ::std::result::Result<super::NewAlertFieldData, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlertField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlertField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertField> for super::NewAlertField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertField> for NewAlertField {
            fn from(value: super::NewAlertField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertFieldData {
            attributes: ::std::result::Result<
                super::NewAlertFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAlertFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertFieldData> for super::NewAlertFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertFieldData> for NewAlertFieldData {
            fn from(value: super::NewAlertFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertFieldDataAttributes {
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlertFieldDataAttributes {
            fn default() -> Self {
                Self {
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewAlertFieldDataAttributes {
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertFieldDataAttributes>
        for super::NewAlertFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { name: value.name? })
            }
        }
        impl ::std::convert::From<super::NewAlertFieldDataAttributes>
        for NewAlertFieldDataAttributes {
            fn from(value: super::NewAlertFieldDataAttributes) -> Self {
                Self { name: Ok(value.name) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertGroup {
            data: ::std::result::Result<super::NewAlertGroupData, ::std::string::String>,
        }
        impl ::std::default::Default for NewAlertGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlertGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertGroup> for super::NewAlertGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertGroup> for NewAlertGroup {
            fn from(value: super::NewAlertGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertGroupData {
            attributes: ::std::result::Result<
                super::NewAlertGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAlertGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertGroupDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertGroupData> for super::NewAlertGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertGroupData> for NewAlertGroupData {
            fn from(value: super::NewAlertGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertGroupDataAttributes {
            attributes: ::std::result::Result<
                ::std::vec::Vec<super::NewAlertGroupDataAttributesAttributesItem>,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                ::std::option::Option<super::NewAlertGroupDataAttributesConditionType>,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::NewAlertGroupDataAttributesConditionsItem>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_by_alert_title: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertGroupDataAttributesGroupByAlertTitle,
                >,
                ::std::string::String,
            >,
            group_by_alert_urgency: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertGroupDataAttributesGroupByAlertUrgency,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            targets: ::std::result::Result<
                ::std::vec::Vec<super::NewAlertGroupDataAttributesTargetsItem>,
                ::std::string::String,
            >,
            time_window: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertGroupDataAttributes {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    condition_type: Ok(Default::default()),
                    conditions: Ok(Default::default()),
                    description: Ok(Default::default()),
                    group_by_alert_title: Ok(Default::default()),
                    group_by_alert_urgency: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    targets: Ok(Default::default()),
                    time_window: Ok(Default::default()),
                }
            }
        }
        impl NewAlertGroupDataAttributes {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewAlertGroupDataAttributesAttributesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertGroupDataAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewAlertGroupDataAttributesConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_by_alert_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertGroupDataAttributesGroupByAlertTitle,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by_alert_title = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_by_alert_title: {e}"
                        )
                    });
                self
            }
            pub fn group_by_alert_urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertGroupDataAttributesGroupByAlertUrgency,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by_alert_urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_by_alert_urgency: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn targets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewAlertGroupDataAttributesTargetsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.targets = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for targets: {e}")
                    });
                self
            }
            pub fn time_window<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_window = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_window: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertGroupDataAttributes>
        for super::NewAlertGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    condition_type: value.condition_type?,
                    conditions: value.conditions?,
                    description: value.description?,
                    group_by_alert_title: value.group_by_alert_title?,
                    group_by_alert_urgency: value.group_by_alert_urgency?,
                    name: value.name?,
                    targets: value.targets?,
                    time_window: value.time_window?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertGroupDataAttributes>
        for NewAlertGroupDataAttributes {
            fn from(value: super::NewAlertGroupDataAttributes) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    condition_type: Ok(value.condition_type),
                    conditions: Ok(value.conditions),
                    description: Ok(value.description),
                    group_by_alert_title: Ok(value.group_by_alert_title),
                    group_by_alert_urgency: Ok(value.group_by_alert_urgency),
                    name: Ok(value.name),
                    targets: Ok(value.targets),
                    time_window: Ok(value.time_window),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertGroupDataAttributesAttributesItem {
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertGroupDataAttributesAttributesItem {
            fn default() -> Self {
                Self {
                    json_path: Ok(Default::default()),
                }
            }
        }
        impl NewAlertGroupDataAttributesAttributesItem {
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertGroupDataAttributesAttributesItem>
        for super::NewAlertGroupDataAttributesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertGroupDataAttributesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    json_path: value.json_path?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertGroupDataAttributesAttributesItem>
        for NewAlertGroupDataAttributesAttributesItem {
            fn from(value: super::NewAlertGroupDataAttributesAttributesItem) -> Self {
                Self {
                    json_path: Ok(value.json_path),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertGroupDataAttributesConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertGroupDataAttributesConditionsItemConditionableType,
                >,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::NewAlertGroupDataAttributesConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertGroupDataAttributesConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl NewAlertGroupDataAttributesConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertGroupDataAttributesConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertGroupDataAttributesConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertGroupDataAttributesConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertGroupDataAttributesConditionsItem>
        for super::NewAlertGroupDataAttributesConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertGroupDataAttributesConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertGroupDataAttributesConditionsItem>
        for NewAlertGroupDataAttributesConditionsItem {
            fn from(value: super::NewAlertGroupDataAttributesConditionsItem) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertGroupDataAttributesTargetsItem {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::NewAlertGroupDataAttributesTargetsItemTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertGroupDataAttributesTargetsItem {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl NewAlertGroupDataAttributesTargetsItem {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertGroupDataAttributesTargetsItemTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertGroupDataAttributesTargetsItem>
        for super::NewAlertGroupDataAttributesTargetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertGroupDataAttributesTargetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertGroupDataAttributesTargetsItem>
        for NewAlertGroupDataAttributesTargetsItem {
            fn from(value: super::NewAlertGroupDataAttributesTargetsItem) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRoute {
            data: ::std::result::Result<
                ::std::option::Option<super::NewAlertRouteData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRoute {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRoute {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewAlertRouteData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRoute> for super::NewAlertRoute {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRoute,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertRoute> for NewAlertRoute {
            fn from(value: super::NewAlertRoute) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRouteData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::NewAlertRouteDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::NewAlertRouteDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRouteData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRouteData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewAlertRouteDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewAlertRouteDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRouteData> for super::NewAlertRouteData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRouteData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRouteData> for NewAlertRouteData {
            fn from(value: super::NewAlertRouteData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRouteDataAttributes {
            alerts_source_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owning_team_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<super::NewAlertRouteDataAttributesRulesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRouteDataAttributes {
            fn default() -> Self {
                Self {
                    alerts_source_ids: Err(
                        "no value supplied for alerts_source_ids".to_string(),
                    ),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owning_team_ids: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRouteDataAttributes {
            pub fn alerts_source_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_ids: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owning_team_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.owning_team_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owning_team_ids: {e}"
                        )
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewAlertRouteDataAttributesRulesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRouteDataAttributes>
        for super::NewAlertRouteDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRouteDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_ids: value.alerts_source_ids?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owning_team_ids: value.owning_team_ids?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRouteDataAttributes>
        for NewAlertRouteDataAttributes {
            fn from(value: super::NewAlertRouteDataAttributes) -> Self {
                Self {
                    alerts_source_ids: Ok(value.alerts_source_ids),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owning_team_ids: Ok(value.owning_team_ids),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRouteDataAttributesRulesItem {
            condition_groups: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
                >,
                ::std::string::String,
            >,
            destinations: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertRouteDataAttributesRulesItemDestinationsItem,
                >,
                ::std::string::String,
            >,
            fallback_rule: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRouteDataAttributesRulesItem {
            fn default() -> Self {
                Self {
                    condition_groups: Err(
                        "no value supplied for condition_groups".to_string(),
                    ),
                    destinations: Err("no value supplied for destinations".to_string()),
                    fallback_rule: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRouteDataAttributesRulesItem {
            pub fn condition_groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_groups = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_groups: {e}"
                        )
                    });
                self
            }
            pub fn destinations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertRouteDataAttributesRulesItemDestinationsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destinations = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destinations: {e}")
                    });
                self
            }
            pub fn fallback_rule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fallback_rule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fallback_rule: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRouteDataAttributesRulesItem>
        for super::NewAlertRouteDataAttributesRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRouteDataAttributesRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_groups: value.condition_groups?,
                    destinations: value.destinations?,
                    fallback_rule: value.fallback_rule?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRouteDataAttributesRulesItem>
        for NewAlertRouteDataAttributesRulesItem {
            fn from(value: super::NewAlertRouteDataAttributesRulesItem) -> Self {
                Self {
                    condition_groups: Ok(value.condition_groups),
                    destinations: Ok(value.destinations),
                    fallback_rule: Ok(value.fallback_rule),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
            fn default() -> Self {
                Self {
                    conditions: Err("no value supplied for conditions".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
        > for super::NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
        > for NewAlertRouteDataAttributesRulesItemConditionGroupsItem {
            fn from(
                value: super::NewAlertRouteDataAttributesRulesItemConditionGroupsItem,
            ) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
                >,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        >
        for super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        > for NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            fn from(
                value: super::NewAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
            ) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRouteDataAttributesRulesItemDestinationsItem {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertRouteDataAttributesRulesItemDestinationsItem {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl NewAlertRouteDataAttributesRulesItemDestinationsItem {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertRouteDataAttributesRulesItemDestinationsItem,
        > for super::NewAlertRouteDataAttributesRulesItemDestinationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRouteDataAttributesRulesItemDestinationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertRouteDataAttributesRulesItemDestinationsItem,
        > for NewAlertRouteDataAttributesRulesItemDestinationsItem {
            fn from(
                value: super::NewAlertRouteDataAttributesRulesItemDestinationsItem,
            ) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRoutingRule {
            data: ::std::result::Result<
                super::NewAlertRoutingRuleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRoutingRule {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlertRoutingRule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertRoutingRuleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRoutingRule>
        for super::NewAlertRoutingRule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRoutingRule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertRoutingRule> for NewAlertRoutingRule {
            fn from(value: super::NewAlertRoutingRule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRoutingRuleData {
            attributes: ::std::result::Result<
                super::NewAlertRoutingRuleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAlertRoutingRuleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRoutingRuleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertRoutingRuleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertRoutingRuleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertRoutingRuleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRoutingRuleData>
        for super::NewAlertRoutingRuleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRoutingRuleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRoutingRuleData>
        for NewAlertRoutingRuleData {
            fn from(value: super::NewAlertRoutingRuleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRoutingRuleDataAttributes {
            alerts_source_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertRoutingRuleDataAttributesConditionType,
                >,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::NewAlertRoutingRuleDataAttributesConditionsItem>,
                ::std::string::String,
            >,
            destination: ::std::result::Result<
                super::NewAlertRoutingRuleDataAttributesDestination,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owning_team_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRoutingRuleDataAttributes {
            fn default() -> Self {
                Self {
                    alerts_source_id: Err(
                        "no value supplied for alerts_source_id".to_string(),
                    ),
                    condition_type: Ok(Default::default()),
                    conditions: Ok(Default::default()),
                    destination: Err("no value supplied for destination".to_string()),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owning_team_ids: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRoutingRuleDataAttributes {
            pub fn alerts_source_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertRoutingRuleDataAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertRoutingRuleDataAttributesConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn destination<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRoutingRuleDataAttributesDestination,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destination = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destination: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owning_team_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.owning_team_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owning_team_ids: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRoutingRuleDataAttributes>
        for super::NewAlertRoutingRuleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRoutingRuleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_id: value.alerts_source_id?,
                    condition_type: value.condition_type?,
                    conditions: value.conditions?,
                    destination: value.destination?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owning_team_ids: value.owning_team_ids?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRoutingRuleDataAttributes>
        for NewAlertRoutingRuleDataAttributes {
            fn from(value: super::NewAlertRoutingRuleDataAttributes) -> Self {
                Self {
                    alerts_source_id: Ok(value.alerts_source_id),
                    condition_type: Ok(value.condition_type),
                    conditions: Ok(value.conditions),
                    destination: Ok(value.destination),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owning_team_ids: Ok(value.owning_team_ids),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRoutingRuleDataAttributesConditionsItem {
            property_field_condition_type: ::std::result::Result<
                super::NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertRoutingRuleDataAttributesConditionsItem {
            fn default() -> Self {
                Self {
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Err(
                        "no value supplied for property_field_name".to_string(),
                    ),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl NewAlertRoutingRuleDataAttributesConditionsItem {
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRoutingRuleDataAttributesConditionsItem>
        for super::NewAlertRoutingRuleDataAttributesConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRoutingRuleDataAttributesConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRoutingRuleDataAttributesConditionsItem>
        for NewAlertRoutingRuleDataAttributesConditionsItem {
            fn from(
                value: super::NewAlertRoutingRuleDataAttributesConditionsItem,
            ) -> Self {
                Self {
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertRoutingRuleDataAttributesDestination {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::NewAlertRoutingRuleDataAttributesDestinationTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertRoutingRuleDataAttributesDestination {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl NewAlertRoutingRuleDataAttributesDestination {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAlertRoutingRuleDataAttributesDestinationTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertRoutingRuleDataAttributesDestination>
        for super::NewAlertRoutingRuleDataAttributesDestination {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertRoutingRuleDataAttributesDestination,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertRoutingRuleDataAttributesDestination>
        for NewAlertRoutingRuleDataAttributesDestination {
            fn from(value: super::NewAlertRoutingRuleDataAttributesDestination) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertUrgency {
            data: ::std::result::Result<
                super::NewAlertUrgencyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertUrgency {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlertUrgency {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertUrgencyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertUrgency> for super::NewAlertUrgency {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertUrgency,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertUrgency> for NewAlertUrgency {
            fn from(value: super::NewAlertUrgency) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertUrgencyData {
            attributes: ::std::result::Result<
                super::NewAlertUrgencyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAlertUrgencyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertUrgencyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertUrgencyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertUrgencyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertUrgencyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertUrgencyData>
        for super::NewAlertUrgencyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertUrgencyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertUrgencyData> for NewAlertUrgencyData {
            fn from(value: super::NewAlertUrgencyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertUrgencyDataAttributes {
            description: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertUrgencyDataAttributes {
            fn default() -> Self {
                Self {
                    description: Err("no value supplied for description".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewAlertUrgencyDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertUrgencyDataAttributes>
        for super::NewAlertUrgencyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertUrgencyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertUrgencyDataAttributes>
        for NewAlertUrgencyDataAttributes {
            fn from(value: super::NewAlertUrgencyDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSource {
            data: ::std::result::Result<
                super::NewAlertsSourceData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertsSource {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAlertsSource {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertsSourceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertsSource> for super::NewAlertsSource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAlertsSource> for NewAlertsSource {
            fn from(value: super::NewAlertsSource) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceData {
            attributes: ::std::result::Result<
                super::NewAlertsSourceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAlertsSourceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertsSourceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAlertsSourceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertsSourceDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAlertsSourceDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertsSourceData>
        for super::NewAlertsSourceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertsSourceData> for NewAlertsSourceData {
            fn from(value: super::NewAlertsSourceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributes {
            alert_source_fields_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
                >,
                ::std::string::String,
            >,
            alert_source_urgency_rules_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
                >,
                ::std::string::String,
            >,
            alert_template_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesAlertTemplateAttributes,
                >,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            deduplicate_alerts_by_key: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            deduplication_key_kind: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesDeduplicationKeyKind,
                >,
                ::std::string::String,
            >,
            deduplication_key_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            deduplication_key_regexp: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owner_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            resolution_rule_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributes,
                >,
                ::std::string::String,
            >,
            source_type: ::std::result::Result<
                ::std::option::Option<super::NewAlertsSourceDataAttributesSourceType>,
                ::std::string::String,
            >,
            sourceable_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesSourceableAttributes,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAlertsSourceDataAttributes {
            fn default() -> Self {
                Self {
                    alert_source_fields_attributes: Ok(Default::default()),
                    alert_source_urgency_rules_attributes: Ok(Default::default()),
                    alert_template_attributes: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    deduplicate_alerts_by_key: Ok(Default::default()),
                    deduplication_key_kind: Ok(Default::default()),
                    deduplication_key_path: Ok(Default::default()),
                    deduplication_key_regexp: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owner_group_ids: Ok(Default::default()),
                    resolution_rule_attributes: Ok(Default::default()),
                    source_type: Ok(Default::default()),
                    sourceable_attributes: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributes {
            pub fn alert_source_fields_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_source_fields_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_source_fields_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_source_urgency_rules_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_source_urgency_rules_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_source_urgency_rules_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_template_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesAlertTemplateAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_template_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_template_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn deduplicate_alerts_by_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplicate_alerts_by_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplicate_alerts_by_key: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesDeduplicationKeyKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_kind: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_path: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_regexp: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn resolution_rule_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_rule_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_rule_attributes: {e}"
                        )
                    });
                self
            }
            pub fn source_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewAlertsSourceDataAttributesSourceType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.source_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source_type: {e}")
                    });
                self
            }
            pub fn sourceable_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesSourceableAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.sourceable_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sourceable_attributes: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertsSourceDataAttributes>
        for super::NewAlertsSourceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_source_fields_attributes: value
                        .alert_source_fields_attributes?,
                    alert_source_urgency_rules_attributes: value
                        .alert_source_urgency_rules_attributes?,
                    alert_template_attributes: value.alert_template_attributes?,
                    alert_urgency_id: value.alert_urgency_id?,
                    deduplicate_alerts_by_key: value.deduplicate_alerts_by_key?,
                    deduplication_key_kind: value.deduplication_key_kind?,
                    deduplication_key_path: value.deduplication_key_path?,
                    deduplication_key_regexp: value.deduplication_key_regexp?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owner_group_ids: value.owner_group_ids?,
                    resolution_rule_attributes: value.resolution_rule_attributes?,
                    source_type: value.source_type?,
                    sourceable_attributes: value.sourceable_attributes?,
                })
            }
        }
        impl ::std::convert::From<super::NewAlertsSourceDataAttributes>
        for NewAlertsSourceDataAttributes {
            fn from(value: super::NewAlertsSourceDataAttributes) -> Self {
                Self {
                    alert_source_fields_attributes: Ok(
                        value.alert_source_fields_attributes,
                    ),
                    alert_source_urgency_rules_attributes: Ok(
                        value.alert_source_urgency_rules_attributes,
                    ),
                    alert_template_attributes: Ok(value.alert_template_attributes),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    deduplicate_alerts_by_key: Ok(value.deduplicate_alerts_by_key),
                    deduplication_key_kind: Ok(value.deduplication_key_kind),
                    deduplication_key_path: Ok(value.deduplication_key_path),
                    deduplication_key_regexp: Ok(value.deduplication_key_regexp),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owner_group_ids: Ok(value.owner_group_ids),
                    resolution_rule_attributes: Ok(value.resolution_rule_attributes),
                    source_type: Ok(value.source_type),
                    sourceable_attributes: Ok(value.sourceable_attributes),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            alert_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            template_body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Ok(Default::default()),
                    template_body: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn template_body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_body: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
        > for super::NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    template_body: value.template_body?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
        > for NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            fn from(
                value: super::NewAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
            ) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    template_body: Ok(value.template_body),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType,
                >,
                ::std::string::String,
            >,
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind,
                >,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    json_path: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
        > for super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    json_path: value.json_path?,
                    kind: value.kind?,
                    operator: value.operator?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
        > for NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            fn from(
                value: super::NewAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
            ) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    json_path: Ok(value.json_path),
                    kind: Ok(value.kind),
                    operator: Ok(value.operator),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesAlertTemplateAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesAlertTemplateAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesAlertTemplateAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertsSourceDataAttributesAlertTemplateAttributes,
        > for super::NewAlertsSourceDataAttributesAlertTemplateAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesAlertTemplateAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    external_url: value.external_url?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesAlertTemplateAttributes,
        > for NewAlertsSourceDataAttributesAlertTemplateAttributes {
            fn from(
                value: super::NewAlertsSourceDataAttributesAlertTemplateAttributes,
            ) -> Self {
                Self {
                    description: Ok(value.description),
                    external_url: Ok(value.external_url),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesResolutionRuleAttributes {
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType,
                >,
                ::std::string::String,
            >,
            conditions_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
                >,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            identifier_json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            identifier_matchable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            identifier_matchable_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType,
                >,
                ::std::string::String,
            >,
            identifier_reference_kind: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind,
                >,
                ::std::string::String,
            >,
            identifier_value_regex: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesResolutionRuleAttributes {
            fn default() -> Self {
                Self {
                    condition_type: Ok(Default::default()),
                    conditions_attributes: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    identifier_json_path: Ok(Default::default()),
                    identifier_matchable_id: Ok(Default::default()),
                    identifier_matchable_type: Ok(Default::default()),
                    identifier_reference_kind: Ok(Default::default()),
                    identifier_value_regex: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesResolutionRuleAttributes {
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditions_attributes: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn identifier_json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_json_path: {e}"
                        )
                    });
                self
            }
            pub fn identifier_matchable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_matchable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_matchable_id: {e}"
                        )
                    });
                self
            }
            pub fn identifier_matchable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_matchable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_matchable_type: {e}"
                        )
                    });
                self
            }
            pub fn identifier_reference_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_reference_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_reference_kind: {e}"
                        )
                    });
                self
            }
            pub fn identifier_value_regex<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_value_regex = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_value_regex: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertsSourceDataAttributesResolutionRuleAttributes,
        > for super::NewAlertsSourceDataAttributesResolutionRuleAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesResolutionRuleAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_type: value.condition_type?,
                    conditions_attributes: value.conditions_attributes?,
                    enabled: value.enabled?,
                    identifier_json_path: value.identifier_json_path?,
                    identifier_matchable_id: value.identifier_matchable_id?,
                    identifier_matchable_type: value.identifier_matchable_type?,
                    identifier_reference_kind: value.identifier_reference_kind?,
                    identifier_value_regex: value.identifier_value_regex?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesResolutionRuleAttributes,
        > for NewAlertsSourceDataAttributesResolutionRuleAttributes {
            fn from(
                value: super::NewAlertsSourceDataAttributesResolutionRuleAttributes,
            ) -> Self {
                Self {
                    condition_type: Ok(value.condition_type),
                    conditions_attributes: Ok(value.conditions_attributes),
                    enabled: Ok(value.enabled),
                    identifier_json_path: Ok(value.identifier_json_path),
                    identifier_matchable_id: Ok(value.identifier_matchable_id),
                    identifier_matchable_type: Ok(value.identifier_matchable_type),
                    identifier_reference_kind: Ok(value.identifier_reference_kind),
                    identifier_value_regex: Ok(value.identifier_value_regex),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType,
                >,
                ::std::string::String,
            >,
            field: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind,
                >,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            fn default() -> Self {
                Self {
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    field: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn field<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.field = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
        >
        for super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    field: value.field?,
                    kind: value.kind?,
                    operator: value.operator?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
        >
        for NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            fn from(
                value: super::NewAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
            ) -> Self {
                Self {
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    field: Ok(value.field),
                    kind: Ok(value.kind),
                    operator: Ok(value.operator),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesSourceableAttributes {
            accept_threaded_emails: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            auto_resolve: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            field_mappings_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
                >,
                ::std::string::String,
            >,
            resolve_state: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesSourceableAttributes {
            fn default() -> Self {
                Self {
                    accept_threaded_emails: Ok(Default::default()),
                    auto_resolve: Ok(Default::default()),
                    field_mappings_attributes: Ok(Default::default()),
                    resolve_state: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesSourceableAttributes {
            pub fn accept_threaded_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.accept_threaded_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for accept_threaded_emails: {e}"
                        )
                    });
                self
            }
            pub fn auto_resolve<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_resolve = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auto_resolve: {e}")
                    });
                self
            }
            pub fn field_mappings_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field_mappings_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for field_mappings_attributes: {e}"
                        )
                    });
                self
            }
            pub fn resolve_state<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolve_state = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolve_state: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAlertsSourceDataAttributesSourceableAttributes>
        for super::NewAlertsSourceDataAttributesSourceableAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesSourceableAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    accept_threaded_emails: value.accept_threaded_emails?,
                    auto_resolve: value.auto_resolve?,
                    field_mappings_attributes: value.field_mappings_attributes?,
                    resolve_state: value.resolve_state?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesSourceableAttributes,
        > for NewAlertsSourceDataAttributesSourceableAttributes {
            fn from(
                value: super::NewAlertsSourceDataAttributesSourceableAttributes,
            ) -> Self {
                Self {
                    accept_threaded_emails: Ok(value.accept_threaded_emails),
                    auto_resolve: Ok(value.auto_resolve),
                    field_mappings_attributes: Ok(value.field_mappings_attributes),
                    resolve_state: Ok(value.resolve_state),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            field: ::std::result::Result<
                ::std::option::Option<
                    super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField,
                >,
                ::std::string::String,
            >,
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            fn default() -> Self {
                Self {
                    field: Ok(Default::default()),
                    json_path: Ok(Default::default()),
                }
            }
        }
        impl NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            pub fn field<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field: {e}")
                    });
                self
            }
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
        >
        for super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    field: value.field?,
                    json_path: value.json_path?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
        >
        for NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            fn from(
                value: super::NewAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
            ) -> Self {
                Self {
                    field: Ok(value.field),
                    json_path: Ok(value.json_path),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewApiKey {
            data: ::std::result::Result<super::NewApiKeyData, ::std::string::String>,
        }
        impl ::std::default::Default for NewApiKey {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewApiKey {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewApiKeyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewApiKey> for super::NewApiKey {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewApiKey,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewApiKey> for NewApiKey {
            fn from(value: super::NewApiKey) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewApiKeyData {
            attributes: ::std::result::Result<
                super::NewApiKeyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewApiKeyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewApiKeyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewApiKeyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewApiKeyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewApiKeyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewApiKeyData> for super::NewApiKeyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewApiKeyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewApiKeyData> for NewApiKeyData {
            fn from(value: super::NewApiKeyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewApiKeyDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expires_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            group_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewApiKeyDataAttributesKind,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            on_call_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewApiKeyDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    expires_at: Err("no value supplied for expires_at".to_string()),
                    group_id: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    on_call_role_id: Ok(Default::default()),
                    role_id: Ok(Default::default()),
                }
            }
        }
        impl NewApiKeyDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expires_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.expires_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expires_at: {e}")
                    });
                self
            }
            pub fn group_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_id: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewApiKeyDataAttributesKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn on_call_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_role_id: {e}"
                        )
                    });
                self
            }
            pub fn role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for role_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewApiKeyDataAttributes>
        for super::NewApiKeyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewApiKeyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    expires_at: value.expires_at?,
                    group_id: value.group_id?,
                    kind: value.kind?,
                    name: value.name?,
                    on_call_role_id: value.on_call_role_id?,
                    role_id: value.role_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewApiKeyDataAttributes>
        for NewApiKeyDataAttributes {
            fn from(value: super::NewApiKeyDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    expires_at: Ok(value.expires_at),
                    group_id: Ok(value.group_id),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    on_call_role_id: Ok(value.on_call_role_id),
                    role_id: Ok(value.role_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAuthorization {
            data: ::std::result::Result<
                super::NewAuthorizationData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAuthorization {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewAuthorization {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAuthorizationData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAuthorization> for super::NewAuthorization {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAuthorization,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewAuthorization> for NewAuthorization {
            fn from(value: super::NewAuthorization) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAuthorizationData {
            attributes: ::std::result::Result<
                super::NewAuthorizationDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewAuthorizationDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAuthorizationData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewAuthorizationData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAuthorizationDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewAuthorizationDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAuthorizationData>
        for super::NewAuthorizationData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAuthorizationData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewAuthorizationData> for NewAuthorizationData {
            fn from(value: super::NewAuthorizationData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewAuthorizationDataAttributes {
            authorizable_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            authorizable_type: ::std::result::Result<
                super::NewAuthorizationDataAttributesAuthorizableType,
                ::std::string::String,
            >,
            grantee_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            grantee_type: ::std::result::Result<
                super::NewAuthorizationDataAttributesGranteeType,
                ::std::string::String,
            >,
            permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewAuthorizationDataAttributesPermissionsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewAuthorizationDataAttributes {
            fn default() -> Self {
                Self {
                    authorizable_id: Err(
                        "no value supplied for authorizable_id".to_string(),
                    ),
                    authorizable_type: Err(
                        "no value supplied for authorizable_type".to_string(),
                    ),
                    grantee_id: Err("no value supplied for grantee_id".to_string()),
                    grantee_type: Err("no value supplied for grantee_type".to_string()),
                    permissions: Err("no value supplied for permissions".to_string()),
                }
            }
        }
        impl NewAuthorizationDataAttributes {
            pub fn authorizable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.authorizable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authorizable_id: {e}"
                        )
                    });
                self
            }
            pub fn authorizable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAuthorizationDataAttributesAuthorizableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.authorizable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authorizable_type: {e}"
                        )
                    });
                self
            }
            pub fn grantee_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.grantee_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for grantee_id: {e}")
                    });
                self
            }
            pub fn grantee_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewAuthorizationDataAttributesGranteeType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.grantee_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for grantee_type: {e}")
                    });
                self
            }
            pub fn permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewAuthorizationDataAttributesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for permissions: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewAuthorizationDataAttributes>
        for super::NewAuthorizationDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewAuthorizationDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    authorizable_id: value.authorizable_id?,
                    authorizable_type: value.authorizable_type?,
                    grantee_id: value.grantee_id?,
                    grantee_type: value.grantee_type?,
                    permissions: value.permissions?,
                })
            }
        }
        impl ::std::convert::From<super::NewAuthorizationDataAttributes>
        for NewAuthorizationDataAttributes {
            fn from(value: super::NewAuthorizationDataAttributes) -> Self {
                Self {
                    authorizable_id: Ok(value.authorizable_id),
                    authorizable_type: Ok(value.authorizable_type),
                    grantee_id: Ok(value.grantee_id),
                    grantee_type: Ok(value.grantee_type),
                    permissions: Ok(value.permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalog {
            data: ::std::result::Result<super::NewCatalogData, ::std::string::String>,
        }
        impl ::std::default::Default for NewCatalog {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCatalog {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalog> for super::NewCatalog {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalog,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCatalog> for NewCatalog {
            fn from(value: super::NewCatalog) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogChecklistTemplate {
            data: ::std::result::Result<
                super::NewCatalogChecklistTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogChecklistTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCatalogChecklistTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogChecklistTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogChecklistTemplate>
        for super::NewCatalogChecklistTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogChecklistTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCatalogChecklistTemplate>
        for NewCatalogChecklistTemplate {
            fn from(value: super::NewCatalogChecklistTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogChecklistTemplateData {
            attributes: ::std::result::Result<
                super::NewCatalogChecklistTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCatalogChecklistTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogChecklistTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogChecklistTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCatalogChecklistTemplateDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogChecklistTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogChecklistTemplateData>
        for super::NewCatalogChecklistTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogChecklistTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogChecklistTemplateData>
        for NewCatalogChecklistTemplateData {
            fn from(value: super::NewCatalogChecklistTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogChecklistTemplateDataAttributes {
            catalog_type: ::std::result::Result<
                super::NewCatalogChecklistTemplateDataAttributesCatalogType,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            fields: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewCatalogChecklistTemplateDataAttributesFieldsItem,
                    >,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owners: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewCatalogChecklistTemplateDataAttributesOwnersItem,
                    >,
                >,
                ::std::string::String,
            >,
            scope_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            scope_type: ::std::result::Result<
                super::NewCatalogChecklistTemplateDataAttributesScopeType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogChecklistTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_type: Err("no value supplied for catalog_type".to_string()),
                    description: Ok(Default::default()),
                    fields: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owners: Ok(Default::default()),
                    scope_id: Ok(Default::default()),
                    scope_type: Err("no value supplied for scope_type".to_string()),
                }
            }
        }
        impl NewCatalogChecklistTemplateDataAttributes {
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCatalogChecklistTemplateDataAttributesCatalogType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewCatalogChecklistTemplateDataAttributesFieldsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.fields = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fields: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owners<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewCatalogChecklistTemplateDataAttributesOwnersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owners = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owners: {e}")
                    });
                self
            }
            pub fn scope_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scope_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scope_id: {e}")
                    });
                self
            }
            pub fn scope_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCatalogChecklistTemplateDataAttributesScopeType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.scope_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scope_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogChecklistTemplateDataAttributes>
        for super::NewCatalogChecklistTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogChecklistTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_type: value.catalog_type?,
                    description: value.description?,
                    fields: value.fields?,
                    name: value.name?,
                    owners: value.owners?,
                    scope_id: value.scope_id?,
                    scope_type: value.scope_type?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogChecklistTemplateDataAttributes>
        for NewCatalogChecklistTemplateDataAttributes {
            fn from(value: super::NewCatalogChecklistTemplateDataAttributes) -> Self {
                Self {
                    catalog_type: Ok(value.catalog_type),
                    description: Ok(value.description),
                    fields: Ok(value.fields),
                    name: Ok(value.name),
                    owners: Ok(value.owners),
                    scope_id: Ok(value.scope_id),
                    scope_type: Ok(value.scope_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogChecklistTemplateDataAttributesOwnersItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::NewCatalogChecklistTemplateDataAttributesOwnersItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewCatalogChecklistTemplateDataAttributesOwnersItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogChecklistTemplateDataAttributesOwnersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCatalogChecklistTemplateDataAttributesOwnersItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogChecklistTemplateDataAttributesOwnersItem>
        for super::NewCatalogChecklistTemplateDataAttributesOwnersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogChecklistTemplateDataAttributesOwnersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewCatalogChecklistTemplateDataAttributesOwnersItem,
        > for NewCatalogChecklistTemplateDataAttributesOwnersItem {
            fn from(
                value: super::NewCatalogChecklistTemplateDataAttributesOwnersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogData {
            attributes: ::std::result::Result<
                super::NewCatalogDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCatalogDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogData> for super::NewCatalogData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogData> for NewCatalogData {
            fn from(value: super::NewCatalogData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<super::NewCatalogDataAttributesIcon>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewCatalogDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewCatalogDataAttributesIcon>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogDataAttributes>
        for super::NewCatalogDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    icon: value.icon?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogDataAttributes>
        for NewCatalogDataAttributes {
            fn from(value: super::NewCatalogDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntity {
            data: ::std::result::Result<
                super::NewCatalogEntityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogEntity {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCatalogEntity {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogEntityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntity> for super::NewCatalogEntity {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntity,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntity> for NewCatalogEntity {
            fn from(value: super::NewCatalogEntity) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntityData {
            attributes: ::std::result::Result<
                super::NewCatalogEntityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCatalogEntityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogEntityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogEntityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogEntityDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogEntityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntityData>
        for super::NewCatalogEntityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntityData> for NewCatalogEntityData {
            fn from(value: super::NewCatalogEntityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntityDataAttributes {
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewCatalogEntityDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogEntityDataAttributes {
            fn default() -> Self {
                Self {
                    backstage_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                }
            }
        }
        impl NewCatalogEntityDataAttributes {
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewCatalogEntityDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntityDataAttributes>
        for super::NewCatalogEntityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    backstage_id: value.backstage_id?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    properties: value.properties?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntityDataAttributes>
        for NewCatalogEntityDataAttributes {
            fn from(value: super::NewCatalogEntityDataAttributes) -> Self {
                Self {
                    backstage_id: Ok(value.backstage_id),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntityDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewCatalogEntityDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewCatalogEntityDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntityDataAttributesPropertiesItem>
        for super::NewCatalogEntityDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntityDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntityDataAttributesPropertiesItem>
        for NewCatalogEntityDataAttributesPropertiesItem {
            fn from(value: super::NewCatalogEntityDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntityProperty {
            data: ::std::result::Result<
                super::NewCatalogEntityPropertyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogEntityProperty {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCatalogEntityProperty {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogEntityPropertyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntityProperty>
        for super::NewCatalogEntityProperty {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntityProperty,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntityProperty>
        for NewCatalogEntityProperty {
            fn from(value: super::NewCatalogEntityProperty) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntityPropertyData {
            attributes: ::std::result::Result<
                super::NewCatalogEntityPropertyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCatalogEntityPropertyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogEntityPropertyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogEntityPropertyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCatalogEntityPropertyDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogEntityPropertyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntityPropertyData>
        for super::NewCatalogEntityPropertyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntityPropertyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntityPropertyData>
        for NewCatalogEntityPropertyData {
            fn from(value: super::NewCatalogEntityPropertyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogEntityPropertyDataAttributes {
            catalog_entity_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            catalog_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                super::NewCatalogEntityPropertyDataAttributesKey,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewCatalogEntityPropertyDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_entity_id: Ok(Default::default()),
                    catalog_field_id: Err(
                        "no value supplied for catalog_field_id".to_string(),
                    ),
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewCatalogEntityPropertyDataAttributes {
            pub fn catalog_entity_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_entity_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_entity_id: {e}"
                        )
                    });
                self
            }
            pub fn catalog_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_field_id: {e}"
                        )
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCatalogEntityPropertyDataAttributesKey,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogEntityPropertyDataAttributes>
        for super::NewCatalogEntityPropertyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogEntityPropertyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_entity_id: value.catalog_entity_id?,
                    catalog_field_id: value.catalog_field_id?,
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogEntityPropertyDataAttributes>
        for NewCatalogEntityPropertyDataAttributes {
            fn from(value: super::NewCatalogEntityPropertyDataAttributes) -> Self {
                Self {
                    catalog_entity_id: Ok(value.catalog_entity_id),
                    catalog_field_id: Ok(value.catalog_field_id),
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogField {
            data: ::std::result::Result<
                super::NewCatalogFieldData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCatalogField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogField> for super::NewCatalogField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCatalogField> for NewCatalogField {
            fn from(value: super::NewCatalogField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogFieldData {
            attributes: ::std::result::Result<
                super::NewCatalogFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCatalogFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogFieldData>
        for super::NewCatalogFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogFieldData> for NewCatalogFieldData {
            fn from(value: super::NewCatalogFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogFieldDataAttributes {
            catalog_type: ::std::result::Result<
                ::std::option::Option<super::NewCatalogFieldDataAttributesCatalogType>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewCatalogFieldDataAttributesKind,
                ::std::string::String,
            >,
            kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            multiple: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogFieldDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_type: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    kind_catalog_id: Ok(Default::default()),
                    multiple: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                }
            }
        }
        impl NewCatalogFieldDataAttributes {
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewCatalogFieldDataAttributesCatalogType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogFieldDataAttributesKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kind_catalog_id: {e}"
                        )
                    });
                self
            }
            pub fn multiple<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.multiple = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for multiple: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogFieldDataAttributes>
        for super::NewCatalogFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_type: value.catalog_type?,
                    kind: value.kind?,
                    kind_catalog_id: value.kind_catalog_id?,
                    multiple: value.multiple?,
                    name: value.name?,
                    position: value.position?,
                    required: value.required?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogFieldDataAttributes>
        for NewCatalogFieldDataAttributes {
            fn from(value: super::NewCatalogFieldDataAttributes) -> Self {
                Self {
                    catalog_type: Ok(value.catalog_type),
                    kind: Ok(value.kind),
                    kind_catalog_id: Ok(value.kind_catalog_id),
                    multiple: Ok(value.multiple),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    required: Ok(value.required),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogProperty {
            data: ::std::result::Result<
                super::NewCatalogPropertyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogProperty {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCatalogProperty {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogPropertyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogProperty> for super::NewCatalogProperty {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogProperty,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCatalogProperty> for NewCatalogProperty {
            fn from(value: super::NewCatalogProperty) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogPropertyData {
            attributes: ::std::result::Result<
                super::NewCatalogPropertyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCatalogPropertyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogPropertyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCatalogPropertyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogPropertyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogPropertyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogPropertyData>
        for super::NewCatalogPropertyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogPropertyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogPropertyData>
        for NewCatalogPropertyData {
            fn from(value: super::NewCatalogPropertyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCatalogPropertyDataAttributes {
            catalog_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewCatalogPropertyDataAttributesCatalogType,
                >,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewCatalogPropertyDataAttributesKind,
                ::std::string::String,
            >,
            kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            multiple: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCatalogPropertyDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_type: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    kind_catalog_id: Ok(Default::default()),
                    multiple: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                }
            }
        }
        impl NewCatalogPropertyDataAttributes {
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewCatalogPropertyDataAttributesCatalogType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCatalogPropertyDataAttributesKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kind_catalog_id: {e}"
                        )
                    });
                self
            }
            pub fn multiple<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.multiple = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for multiple: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCatalogPropertyDataAttributes>
        for super::NewCatalogPropertyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCatalogPropertyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_type: value.catalog_type?,
                    kind: value.kind?,
                    kind_catalog_id: value.kind_catalog_id?,
                    multiple: value.multiple?,
                    name: value.name?,
                    position: value.position?,
                    required: value.required?,
                })
            }
        }
        impl ::std::convert::From<super::NewCatalogPropertyDataAttributes>
        for NewCatalogPropertyDataAttributes {
            fn from(value: super::NewCatalogPropertyDataAttributes) -> Self {
                Self {
                    catalog_type: Ok(value.catalog_type),
                    kind: Ok(value.kind),
                    kind_catalog_id: Ok(value.kind_catalog_id),
                    multiple: Ok(value.multiple),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    required: Ok(value.required),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCause {
            data: ::std::result::Result<super::NewCauseData, ::std::string::String>,
        }
        impl ::std::default::Default for NewCause {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCause {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCauseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCause> for super::NewCause {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCause,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCause> for NewCause {
            fn from(value: super::NewCause) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCauseData {
            attributes: ::std::result::Result<
                super::NewCauseDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<super::NewCauseDataType, ::std::string::String>,
        }
        impl ::std::default::Default for NewCauseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCauseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCauseDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCauseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCauseData> for super::NewCauseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCauseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCauseData> for NewCauseData {
            fn from(value: super::NewCauseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCauseDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewCauseDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCauseDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                }
            }
        }
        impl NewCauseDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewCauseDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCauseDataAttributes>
        for super::NewCauseDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCauseDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    properties: value.properties?,
                })
            }
        }
        impl ::std::convert::From<super::NewCauseDataAttributes>
        for NewCauseDataAttributes {
            fn from(value: super::NewCauseDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCauseDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewCauseDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewCauseDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCauseDataAttributesPropertiesItem>
        for super::NewCauseDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCauseDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewCauseDataAttributesPropertiesItem>
        for NewCauseDataAttributesPropertiesItem {
            fn from(value: super::NewCauseDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsGroup {
            data: ::std::result::Result<
                super::NewCommunicationsGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCommunicationsGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsGroup>
        for super::NewCommunicationsGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsGroup>
        for NewCommunicationsGroup {
            fn from(value: super::NewCommunicationsGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsGroupData {
            attributes: ::std::result::Result<
                super::NewCommunicationsGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCommunicationsGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCommunicationsGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsGroupDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsGroupData>
        for super::NewCommunicationsGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsGroupData>
        for NewCommunicationsGroupData {
            fn from(value: super::NewCommunicationsGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsGroupDataAttributes {
            communication_external_group_members: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_group_conditions: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_type_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewCommunicationsGroupDataAttributesConditionType,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_channel: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            is_private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            member_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slack_channel_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            sms_channel: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsGroupDataAttributes {
            fn default() -> Self {
                Self {
                    communication_external_group_members: Ok(Default::default()),
                    communication_group_conditions: Ok(Default::default()),
                    communication_type_id: Err(
                        "no value supplied for communication_type_id".to_string(),
                    ),
                    condition_type: Ok(Default::default()),
                    description: Ok(Default::default()),
                    email_channel: Ok(Default::default()),
                    is_private: Ok(Default::default()),
                    member_ids: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    slack_channel_ids: Ok(Default::default()),
                    sms_channel: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsGroupDataAttributes {
            pub fn communication_external_group_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_external_group_members = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_external_group_members: {e}"
                        )
                    });
                self
            }
            pub fn communication_group_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_group_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_group_conditions: {e}"
                        )
                    });
                self
            }
            pub fn communication_type_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewCommunicationsGroupDataAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn email_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_channel: {e}")
                    });
                self
            }
            pub fn is_private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_private: {e}")
                    });
                self
            }
            pub fn member_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.member_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_ids: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slack_channel_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_ids: {e}"
                        )
                    });
                self
            }
            pub fn sms_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.sms_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sms_channel: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsGroupDataAttributes>
        for super::NewCommunicationsGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_external_group_members: value
                        .communication_external_group_members?,
                    communication_group_conditions: value
                        .communication_group_conditions?,
                    communication_type_id: value.communication_type_id?,
                    condition_type: value.condition_type?,
                    description: value.description?,
                    email_channel: value.email_channel?,
                    is_private: value.is_private?,
                    member_ids: value.member_ids?,
                    name: value.name?,
                    slack_channel_ids: value.slack_channel_ids?,
                    sms_channel: value.sms_channel?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsGroupDataAttributes>
        for NewCommunicationsGroupDataAttributes {
            fn from(value: super::NewCommunicationsGroupDataAttributes) -> Self {
                Self {
                    communication_external_group_members: Ok(
                        value.communication_external_group_members,
                    ),
                    communication_group_conditions: Ok(
                        value.communication_group_conditions,
                    ),
                    communication_type_id: Ok(value.communication_type_id),
                    condition_type: Ok(value.condition_type),
                    description: Ok(value.description),
                    email_channel: Ok(value.email_channel),
                    is_private: Ok(value.is_private),
                    member_ids: Ok(value.member_ids),
                    name: Ok(value.name),
                    slack_channel_ids: Ok(value.slack_channel_ids),
                    sms_channel: Ok(value.sms_channel),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            phone_number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            fn default() -> Self {
                Self {
                    email: Ok(Default::default()),
                    name: Ok(Default::default()),
                    phone_number: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn phone_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_number = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_number: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
        >
        for super::NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    email: value.email?,
                    name: value.name?,
                    phone_number: value.phone_number?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
        > for NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            fn from(
                value: super::NewCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
            ) -> Self {
                Self {
                    email: Ok(value.email),
                    name: Ok(value.name),
                    phone_number: Ok(value.phone_number),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            property_type: ::std::result::Result<
                ::std::option::Option<
                    super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            fn default() -> Self {
                Self {
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    property_type: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn property_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for property_type: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
        >
        for super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    property_type: value.property_type?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
        > for NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            fn from(
                value: super::NewCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
            ) -> Self {
                Self {
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    property_type: Ok(value.property_type),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsStage {
            data: ::std::result::Result<
                super::NewCommunicationsStageData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsStage {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCommunicationsStage {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsStageData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsStage>
        for super::NewCommunicationsStage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsStage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsStage>
        for NewCommunicationsStage {
            fn from(value: super::NewCommunicationsStage) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsStageData {
            attributes: ::std::result::Result<
                super::NewCommunicationsStageDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCommunicationsStageDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsStageData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCommunicationsStageData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsStageDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsStageDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsStageData>
        for super::NewCommunicationsStageData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsStageData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsStageData>
        for NewCommunicationsStageData {
            fn from(value: super::NewCommunicationsStageData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsStageDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsStageDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsStageDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsStageDataAttributes>
        for super::NewCommunicationsStageDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsStageDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsStageDataAttributes>
        for NewCommunicationsStageDataAttributes {
            fn from(value: super::NewCommunicationsStageDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsTemplate {
            data: ::std::result::Result<
                super::NewCommunicationsTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCommunicationsTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsTemplate>
        for super::NewCommunicationsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsTemplate>
        for NewCommunicationsTemplate {
            fn from(value: super::NewCommunicationsTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsTemplateData {
            attributes: ::std::result::Result<
                super::NewCommunicationsTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCommunicationsTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCommunicationsTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewCommunicationsTemplateDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsTemplateData>
        for super::NewCommunicationsTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsTemplateData>
        for NewCommunicationsTemplateData {
            fn from(value: super::NewCommunicationsTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsTemplateDataAttributes {
            communication_template_stages_attributes: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_type_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    communication_template_stages_attributes: Ok(Default::default()),
                    communication_type_id: Err(
                        "no value supplied for communication_type_id".to_string(),
                    ),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsTemplateDataAttributes {
            pub fn communication_template_stages_attributes<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_template_stages_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_template_stages_attributes: {e}"
                        )
                    });
                self
            }
            pub fn communication_type_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsTemplateDataAttributes>
        for super::NewCommunicationsTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_template_stages_attributes: value
                        .communication_template_stages_attributes?,
                    communication_type_id: value.communication_type_id?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsTemplateDataAttributes>
        for NewCommunicationsTemplateDataAttributes {
            fn from(value: super::NewCommunicationsTemplateDataAttributes) -> Self {
                Self {
                    communication_template_stages_attributes: Ok(
                        value.communication_template_stages_attributes,
                    ),
                    communication_type_id: Ok(value.communication_type_id),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            communication_stage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_subject: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sms_content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            fn default() -> Self {
                Self {
                    communication_stage_id: Ok(Default::default()),
                    email_body: Ok(Default::default()),
                    email_subject: Ok(Default::default()),
                    slack_content: Ok(Default::default()),
                    sms_content: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            pub fn communication_stage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_stage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_stage_id: {e}"
                        )
                    });
                self
            }
            pub fn email_body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_body: {e}")
                    });
                self
            }
            pub fn email_subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_subject: {e}")
                    });
                self
            }
            pub fn slack_content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_content: {e}")
                    });
                self
            }
            pub fn sms_content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sms_content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sms_content: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
        >
        for super::NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_stage_id: value.communication_stage_id?,
                    email_body: value.email_body?,
                    email_subject: value.email_subject?,
                    slack_content: value.slack_content?,
                    sms_content: value.sms_content?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
        >
        for NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            fn from(
                value: super::NewCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
            ) -> Self {
                Self {
                    communication_stage_id: Ok(value.communication_stage_id),
                    email_body: Ok(value.email_body),
                    email_subject: Ok(value.email_subject),
                    slack_content: Ok(value.slack_content),
                    sms_content: Ok(value.sms_content),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsType {
            data: ::std::result::Result<
                super::NewCommunicationsTypeData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsType {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCommunicationsType {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsTypeData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsType>
        for super::NewCommunicationsType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsType>
        for NewCommunicationsType {
            fn from(value: super::NewCommunicationsType) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsTypeData {
            attributes: ::std::result::Result<
                super::NewCommunicationsTypeDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCommunicationsTypeDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsTypeData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCommunicationsTypeData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsTypeDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCommunicationsTypeDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsTypeData>
        for super::NewCommunicationsTypeData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsTypeData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsTypeData>
        for NewCommunicationsTypeData {
            fn from(value: super::NewCommunicationsTypeData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCommunicationsTypeDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCommunicationsTypeDataAttributes {
            fn default() -> Self {
                Self {
                    color: Err("no value supplied for color".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewCommunicationsTypeDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCommunicationsTypeDataAttributes>
        for super::NewCommunicationsTypeDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCommunicationsTypeDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewCommunicationsTypeDataAttributes>
        for NewCommunicationsTypeDataAttributes {
            fn from(value: super::NewCommunicationsTypeDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomField {
            data: ::std::result::Result<
                super::NewCustomFieldData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCustomField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCustomField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomField> for super::NewCustomField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCustomField> for NewCustomField {
            fn from(value: super::NewCustomField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFieldData {
            attributes: ::std::result::Result<
                super::NewCustomFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCustomFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCustomFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCustomFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFieldData> for super::NewCustomFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCustomFieldData> for NewCustomFieldData {
            fn from(value: super::NewCustomFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFieldDataAttributes {
            default: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            label: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewCustomFieldDataAttributesRequiredItem>,
                >,
                ::std::string::String,
            >,
            shown: ::std::result::Result<
                ::std::vec::Vec<super::NewCustomFieldDataAttributesShownItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCustomFieldDataAttributes {
            fn default() -> Self {
                Self {
                    default: Ok(Default::default()),
                    description: Ok(Default::default()),
                    label: Err("no value supplied for label".to_string()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                    shown: Ok(Default::default()),
                }
            }
        }
        impl NewCustomFieldDataAttributes {
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn label<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.label = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for label: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::NewCustomFieldDataAttributesRequiredItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn shown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewCustomFieldDataAttributesShownItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shown = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shown: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFieldDataAttributes>
        for super::NewCustomFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    default: value.default?,
                    description: value.description?,
                    label: value.label?,
                    position: value.position?,
                    required: value.required?,
                    shown: value.shown?,
                })
            }
        }
        impl ::std::convert::From<super::NewCustomFieldDataAttributes>
        for NewCustomFieldDataAttributes {
            fn from(value: super::NewCustomFieldDataAttributes) -> Self {
                Self {
                    default: Ok(value.default),
                    description: Ok(value.description),
                    label: Ok(value.label),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    shown: Ok(value.shown),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFieldOption {
            data: ::std::result::Result<
                super::NewCustomFieldOptionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCustomFieldOption {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCustomFieldOption {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFieldOptionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFieldOption>
        for super::NewCustomFieldOption {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFieldOption,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCustomFieldOption> for NewCustomFieldOption {
            fn from(value: super::NewCustomFieldOption) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFieldOptionData {
            attributes: ::std::result::Result<
                super::NewCustomFieldOptionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCustomFieldOptionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCustomFieldOptionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCustomFieldOptionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFieldOptionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFieldOptionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFieldOptionData>
        for super::NewCustomFieldOptionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFieldOptionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCustomFieldOptionData>
        for NewCustomFieldOptionData {
            fn from(value: super::NewCustomFieldOptionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFieldOptionDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewCustomFieldOptionDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    default: Ok(Default::default()),
                    position: Ok(Default::default()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewCustomFieldOptionDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFieldOptionDataAttributes>
        for super::NewCustomFieldOptionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFieldOptionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    default: value.default?,
                    position: value.position?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewCustomFieldOptionDataAttributes>
        for NewCustomFieldOptionDataAttributes {
            fn from(value: super::NewCustomFieldOptionDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    default: Ok(value.default),
                    position: Ok(value.position),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomForm {
            data: ::std::result::Result<super::NewCustomFormData, ::std::string::String>,
        }
        impl ::std::default::Default for NewCustomForm {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewCustomForm {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFormData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomForm> for super::NewCustomForm {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomForm,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewCustomForm> for NewCustomForm {
            fn from(value: super::NewCustomForm) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFormData {
            attributes: ::std::result::Result<
                super::NewCustomFormDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewCustomFormDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewCustomFormData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewCustomFormData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFormDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewCustomFormDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFormData> for super::NewCustomFormData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFormData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewCustomFormData> for NewCustomFormData {
            fn from(value: super::NewCustomFormData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewCustomFormDataAttributes {
            command: ::std::result::Result<::std::string::String, ::std::string::String>,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewCustomFormDataAttributes {
            fn default() -> Self {
                Self {
                    command: Err("no value supplied for command".to_string()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewCustomFormDataAttributes {
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewCustomFormDataAttributes>
        for super::NewCustomFormDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewCustomFormDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    command: value.command?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewCustomFormDataAttributes>
        for NewCustomFormDataAttributes {
            fn from(value: super::NewCustomFormDataAttributes) -> Self {
                Self {
                    command: Ok(value.command),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboard {
            data: ::std::result::Result<super::NewDashboardData, ::std::string::String>,
        }
        impl ::std::default::Default for NewDashboard {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewDashboard {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboard> for super::NewDashboard {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboard,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewDashboard> for NewDashboard {
            fn from(value: super::NewDashboard) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardData {
            attributes: ::std::result::Result<
                super::NewDashboardDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewDashboardDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewDashboardData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardData> for super::NewDashboardData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewDashboardData> for NewDashboardData {
            fn from(value: super::NewDashboardData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardDataAttributes {
            auto_refresh: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<super::NewDashboardDataAttributesColor>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owner: ::std::result::Result<
                super::NewDashboardDataAttributesOwner,
                ::std::string::String,
            >,
            period: ::std::result::Result<
                ::std::option::Option<super::NewDashboardDataAttributesPeriod>,
                ::std::string::String,
            >,
            public: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            range: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardDataAttributes {
            fn default() -> Self {
                Self {
                    auto_refresh: Ok(Default::default()),
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owner: Err("no value supplied for owner".to_string()),
                    period: Ok(Default::default()),
                    public: Ok(Default::default()),
                    range: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardDataAttributes {
            pub fn auto_refresh<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_refresh = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auto_refresh: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewDashboardDataAttributesColor>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardDataAttributesOwner>,
                T::Error: ::std::fmt::Display,
            {
                self.owner = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner: {e}")
                    });
                self
            }
            pub fn period<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewDashboardDataAttributesPeriod>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.period = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for period: {e}")
                    });
                self
            }
            pub fn public<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.public = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public: {e}")
                    });
                self
            }
            pub fn range<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.range = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for range: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardDataAttributes>
        for super::NewDashboardDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_refresh: value.auto_refresh?,
                    color: value.color?,
                    description: value.description?,
                    icon: value.icon?,
                    name: value.name?,
                    owner: value.owner?,
                    period: value.period?,
                    public: value.public?,
                    range: value.range?,
                })
            }
        }
        impl ::std::convert::From<super::NewDashboardDataAttributes>
        for NewDashboardDataAttributes {
            fn from(value: super::NewDashboardDataAttributes) -> Self {
                Self {
                    auto_refresh: Ok(value.auto_refresh),
                    color: Ok(value.color),
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    name: Ok(value.name),
                    owner: Ok(value.owner),
                    period: Ok(value.period),
                    public: Ok(value.public),
                    range: Ok(value.range),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanel {
            data: ::std::result::Result<
                super::NewDashboardPanelData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardPanel {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewDashboardPanel {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardPanelData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanel> for super::NewDashboardPanel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanel> for NewDashboardPanel {
            fn from(value: super::NewDashboardPanel) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelData {
            attributes: ::std::result::Result<
                super::NewDashboardPanelDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewDashboardPanelDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardPanelData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewDashboardPanelData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardPanelDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardPanelDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelData>
        for super::NewDashboardPanelData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanelData>
        for NewDashboardPanelData {
            fn from(value: super::NewDashboardPanelData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributes {
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            params: ::std::result::Result<
                super::NewDashboardPanelDataAttributesParams,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<super::NewDashboardPanelDataAttributesPosition>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardPanelDataAttributes {
            fn default() -> Self {
                Self {
                    name: Ok(Default::default()),
                    params: Err("no value supplied for params".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributes {
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewDashboardPanelDataAttributesParams>,
                T::Error: ::std::fmt::Display,
            {
                self.params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for params: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewDashboardPanelDataAttributesPosition>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelDataAttributes>
        for super::NewDashboardPanelDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    name: value.name?,
                    params: value.params?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanelDataAttributes>
        for NewDashboardPanelDataAttributes {
            fn from(value: super::NewDashboardPanelDataAttributes) -> Self {
                Self {
                    name: Ok(value.name),
                    params: Ok(value.params),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParams {
            datalabels: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatalabels,
                >,
                ::std::string::String,
            >,
            datasets: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItem,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            display: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDisplay,
                >,
                ::std::string::String,
            >,
            legend: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsLegend,
                >,
                ::std::string::String,
            >,
            table_fields: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardPanelDataAttributesParams {
            fn default() -> Self {
                Self {
                    datalabels: Ok(Default::default()),
                    datasets: Ok(Default::default()),
                    description: Ok(Default::default()),
                    display: Ok(Default::default()),
                    legend: Ok(Default::default()),
                    table_fields: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParams {
            pub fn datalabels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatalabels,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.datalabels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for datalabels: {e}")
                    });
                self
            }
            pub fn datasets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.datasets = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for datasets: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn display<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDisplay,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.display = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for display: {e}")
                    });
                self
            }
            pub fn legend<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsLegend,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.legend = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for legend: {e}")
                    });
                self
            }
            pub fn table_fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.table_fields = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for table_fields: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelDataAttributesParams>
        for super::NewDashboardPanelDataAttributesParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    datalabels: value.datalabels?,
                    datasets: value.datasets?,
                    description: value.description?,
                    display: value.display?,
                    legend: value.legend?,
                    table_fields: value.table_fields?,
                })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanelDataAttributesParams>
        for NewDashboardPanelDataAttributesParams {
            fn from(value: super::NewDashboardPanelDataAttributesParams) -> Self {
                Self {
                    datalabels: Ok(value.datalabels),
                    datasets: Ok(value.datasets),
                    description: Ok(value.description),
                    display: Ok(value.display),
                    legend: Ok(value.legend),
                    table_fields: Ok(value.table_fields),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsDatalabels {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewDashboardPanelDataAttributesParamsDatalabels {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsDatalabels {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelDataAttributesParamsDatalabels>
        for super::NewDashboardPanelDataAttributesParamsDatalabels {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsDatalabels,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { enabled: value.enabled? })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanelDataAttributesParamsDatalabels>
        for NewDashboardPanelDataAttributesParamsDatalabels {
            fn from(
                value: super::NewDashboardPanelDataAttributesParamsDatalabels,
            ) -> Self {
                Self { enabled: Ok(value.enabled) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsDatasetsItem {
            aggregate: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
                >,
                ::std::string::String,
            >,
            collection: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemCollection,
                >,
                ::std::string::String,
            >,
            filter: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
                >,
                ::std::string::String,
            >,
            group_by: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewDashboardPanelDataAttributesParamsDatasetsItem {
            fn default() -> Self {
                Self {
                    aggregate: Ok(Default::default()),
                    collection: Ok(Default::default()),
                    filter: Ok(Default::default()),
                    group_by: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsDatasetsItem {
            pub fn aggregate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.aggregate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for aggregate: {e}")
                    });
                self
            }
            pub fn collection<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemCollection,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.collection = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for collection: {e}")
                    });
                self
            }
            pub fn filter<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.filter = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for filter: {e}")
                    });
                self
            }
            pub fn group_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupBy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_by: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelDataAttributesParamsDatasetsItem>
        for super::NewDashboardPanelDataAttributesParamsDatasetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsDatasetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    aggregate: value.aggregate?,
                    collection: value.collection?,
                    filter: value.filter?,
                    group_by: value.group_by?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewDashboardPanelDataAttributesParamsDatasetsItem,
        > for NewDashboardPanelDataAttributesParamsDatasetsItem {
            fn from(
                value: super::NewDashboardPanelDataAttributesParamsDatasetsItem,
            ) -> Self {
                Self {
                    aggregate: Ok(value.aggregate),
                    collection: Ok(value.collection),
                    filter: Ok(value.filter),
                    group_by: Ok(value.group_by),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            cumulative: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            fn default() -> Self {
                Self {
                    cumulative: Ok(Default::default()),
                    key: Ok(Default::default()),
                    operation: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            pub fn cumulative<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.cumulative = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cumulative: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
        > for super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cumulative: value.cumulative?,
                    key: value.key?,
                    operation: value.operation?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
        > for NewDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            fn from(
                value: super::NewDashboardPanelDataAttributesParamsDatasetsItemAggregate,
            ) -> Self {
                Self {
                    cumulative: Ok(value.cumulative),
                    key: Ok(value.key),
                    operation: Ok(value.operation),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation,
                >,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            fn default() -> Self {
                Self {
                    operation: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
        > for super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    operation: value.operation?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
        > for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            fn from(
                value: super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
            ) -> Self {
                Self {
                    operation: Ok(value.operation),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            condition: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            fn default() -> Self {
                Self {
                    condition: Ok(Default::default()),
                    key: Ok(Default::default()),
                    operation: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            pub fn condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.condition = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for condition: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
        >
        for super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition: value.condition?,
                    key: value.key?,
                    operation: value.operation?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
        > for NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            fn from(
                value: super::NewDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
            ) -> Self {
                Self {
                    condition: Ok(value.condition),
                    key: Ok(value.key),
                    operation: Ok(value.operation),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            key: ::std::result::Result<
                super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
        > for super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
        > for NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            fn from(
                value: super::NewDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            ) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesParamsLegend {
            groups: ::std::result::Result<
                super::NewDashboardPanelDataAttributesParamsLegendGroups,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewDashboardPanelDataAttributesParamsLegend {
            fn default() -> Self {
                Self {
                    groups: Ok(
                        super::defaults::new_dashboard_panel_data_attributes_params_legend_groups(),
                    ),
                }
            }
        }
        impl NewDashboardPanelDataAttributesParamsLegend {
            pub fn groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewDashboardPanelDataAttributesParamsLegendGroups,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for groups: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelDataAttributesParamsLegend>
        for super::NewDashboardPanelDataAttributesParamsLegend {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesParamsLegend,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { groups: value.groups? })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanelDataAttributesParamsLegend>
        for NewDashboardPanelDataAttributesParamsLegend {
            fn from(value: super::NewDashboardPanelDataAttributesParamsLegend) -> Self {
                Self { groups: Ok(value.groups) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewDashboardPanelDataAttributesPosition {
            h: ::std::result::Result<f64, ::std::string::String>,
            w: ::std::result::Result<f64, ::std::string::String>,
            x: ::std::result::Result<f64, ::std::string::String>,
            y: ::std::result::Result<f64, ::std::string::String>,
        }
        impl ::std::default::Default for NewDashboardPanelDataAttributesPosition {
            fn default() -> Self {
                Self {
                    h: Err("no value supplied for h".to_string()),
                    w: Err("no value supplied for w".to_string()),
                    x: Err("no value supplied for x".to_string()),
                    y: Err("no value supplied for y".to_string()),
                }
            }
        }
        impl NewDashboardPanelDataAttributesPosition {
            pub fn h<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.h = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for h: {e}"));
                self
            }
            pub fn w<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.w = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for w: {e}"));
                self
            }
            pub fn x<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.x = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for x: {e}"));
                self
            }
            pub fn y<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.y = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for y: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<NewDashboardPanelDataAttributesPosition>
        for super::NewDashboardPanelDataAttributesPosition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewDashboardPanelDataAttributesPosition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    h: value.h?,
                    w: value.w?,
                    x: value.x?,
                    y: value.y?,
                })
            }
        }
        impl ::std::convert::From<super::NewDashboardPanelDataAttributesPosition>
        for NewDashboardPanelDataAttributesPosition {
            fn from(value: super::NewDashboardPanelDataAttributesPosition) -> Self {
                Self {
                    h: Ok(value.h),
                    w: Ok(value.w),
                    x: Ok(value.x),
                    y: Ok(value.y),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEdgeConnector {
            edge_connector: ::std::result::Result<
                super::NewEdgeConnectorEdgeConnector,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEdgeConnector {
            fn default() -> Self {
                Self {
                    edge_connector: Err(
                        "no value supplied for edge_connector".to_string(),
                    ),
                }
            }
        }
        impl NewEdgeConnector {
            pub fn edge_connector<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEdgeConnectorEdgeConnector>,
                T::Error: ::std::fmt::Display,
            {
                self.edge_connector = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for edge_connector: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEdgeConnector> for super::NewEdgeConnector {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEdgeConnector,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    edge_connector: value.edge_connector?,
                })
            }
        }
        impl ::std::convert::From<super::NewEdgeConnector> for NewEdgeConnector {
            fn from(value: super::NewEdgeConnector) -> Self {
                Self {
                    edge_connector: Ok(value.edge_connector),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEdgeConnectorAction {
            action: ::std::result::Result<
                super::NewEdgeConnectorActionAction,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEdgeConnectorAction {
            fn default() -> Self {
                Self {
                    action: Err("no value supplied for action".to_string()),
                }
            }
        }
        impl NewEdgeConnectorAction {
            pub fn action<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEdgeConnectorActionAction>,
                T::Error: ::std::fmt::Display,
            {
                self.action = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEdgeConnectorAction>
        for super::NewEdgeConnectorAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEdgeConnectorAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { action: value.action? })
            }
        }
        impl ::std::convert::From<super::NewEdgeConnectorAction>
        for NewEdgeConnectorAction {
            fn from(value: super::NewEdgeConnectorAction) -> Self {
                Self { action: Ok(value.action) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEdgeConnectorActionAction {
            action_type: ::std::result::Result<
                super::NewEdgeConnectorActionActionActionType,
                ::std::string::String,
            >,
            metadata: ::std::result::Result<
                ::std::option::Option<super::NewEdgeConnectorActionActionMetadata>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewEdgeConnectorActionAction {
            fn default() -> Self {
                Self {
                    action_type: Err("no value supplied for action_type".to_string()),
                    metadata: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewEdgeConnectorActionAction {
            pub fn action_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEdgeConnectorActionActionActionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action_type: {e}")
                    });
                self
            }
            pub fn metadata<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewEdgeConnectorActionActionMetadata>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.metadata = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for metadata: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEdgeConnectorActionAction>
        for super::NewEdgeConnectorActionAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEdgeConnectorActionAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_type: value.action_type?,
                    metadata: value.metadata?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewEdgeConnectorActionAction>
        for NewEdgeConnectorActionAction {
            fn from(value: super::NewEdgeConnectorActionAction) -> Self {
                Self {
                    action_type: Ok(value.action_type),
                    metadata: Ok(value.metadata),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEdgeConnectorActionActionMetadata {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<super::NewEdgeConnectorActionActionMetadataIcon>,
                ::std::string::String,
            >,
            parameters: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewEdgeConnectorActionActionMetadataParametersItem,
                    >,
                >,
                ::std::string::String,
            >,
            timeout: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEdgeConnectorActionActionMetadata {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    parameters: Ok(Default::default()),
                    timeout: Ok(Default::default()),
                }
            }
        }
        impl NewEdgeConnectorActionActionMetadata {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEdgeConnectorActionActionMetadataIcon,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn parameters<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewEdgeConnectorActionActionMetadataParametersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parameters = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parameters: {e}")
                    });
                self
            }
            pub fn timeout<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.timeout = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for timeout: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEdgeConnectorActionActionMetadata>
        for super::NewEdgeConnectorActionActionMetadata {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEdgeConnectorActionActionMetadata,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    icon: value.icon?,
                    parameters: value.parameters?,
                    timeout: value.timeout?,
                })
            }
        }
        impl ::std::convert::From<super::NewEdgeConnectorActionActionMetadata>
        for NewEdgeConnectorActionActionMetadata {
            fn from(value: super::NewEdgeConnectorActionActionMetadata) -> Self {
                Self {
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    parameters: Ok(value.parameters),
                    timeout: Ok(value.timeout),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEdgeConnectorActionActionMetadataParametersItem {
            default: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            options: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::NewEdgeConnectorActionActionMetadataParametersItemType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewEdgeConnectorActionActionMetadataParametersItem {
            fn default() -> Self {
                Self {
                    default: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    options: Ok(Default::default()),
                    required: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl NewEdgeConnectorActionActionMetadataParametersItem {
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn options<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.options = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for options: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEdgeConnectorActionActionMetadataParametersItemType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEdgeConnectorActionActionMetadataParametersItem>
        for super::NewEdgeConnectorActionActionMetadataParametersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEdgeConnectorActionActionMetadataParametersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    default: value.default?,
                    description: value.description?,
                    name: value.name?,
                    options: value.options?,
                    required: value.required?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewEdgeConnectorActionActionMetadataParametersItem,
        > for NewEdgeConnectorActionActionMetadataParametersItem {
            fn from(
                value: super::NewEdgeConnectorActionActionMetadataParametersItem,
            ) -> Self {
                Self {
                    default: Ok(value.default),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    options: Ok(value.options),
                    required: Ok(value.required),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEdgeConnectorEdgeConnector {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            status: ::std::result::Result<
                ::std::option::Option<super::NewEdgeConnectorEdgeConnectorStatus>,
                ::std::string::String,
            >,
            subscriptions: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEdgeConnectorEdgeConnector {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    status: Ok(Default::default()),
                    subscriptions: Ok(Default::default()),
                }
            }
        }
        impl NewEdgeConnectorEdgeConnector {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewEdgeConnectorEdgeConnectorStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn subscriptions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subscriptions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subscriptions: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEdgeConnectorEdgeConnector>
        for super::NewEdgeConnectorEdgeConnector {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEdgeConnectorEdgeConnector,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    status: value.status?,
                    subscriptions: value.subscriptions?,
                })
            }
        }
        impl ::std::convert::From<super::NewEdgeConnectorEdgeConnector>
        for NewEdgeConnectorEdgeConnector {
            fn from(value: super::NewEdgeConnectorEdgeConnector) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    status: Ok(value.status),
                    subscriptions: Ok(value.subscriptions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEnvironment {
            data: ::std::result::Result<
                super::NewEnvironmentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEnvironment {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewEnvironment {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEnvironmentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEnvironment> for super::NewEnvironment {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEnvironment,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewEnvironment> for NewEnvironment {
            fn from(value: super::NewEnvironment) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEnvironmentData {
            attributes: ::std::result::Result<
                super::NewEnvironmentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewEnvironmentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEnvironmentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewEnvironmentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEnvironmentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEnvironmentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEnvironmentData> for super::NewEnvironmentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEnvironmentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewEnvironmentData> for NewEnvironmentData {
            fn from(value: super::NewEnvironmentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEnvironmentDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewEnvironmentDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewEnvironmentDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewEnvironmentDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEnvironmentDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl NewEnvironmentDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewEnvironmentDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewEnvironmentDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewEnvironmentDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEnvironmentDataAttributes>
        for super::NewEnvironmentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEnvironmentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    properties: value.properties?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::NewEnvironmentDataAttributes>
        for NewEnvironmentDataAttributes {
            fn from(value: super::NewEnvironmentDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEnvironmentDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewEnvironmentDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewEnvironmentDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEnvironmentDataAttributesPropertiesItem>
        for super::NewEnvironmentDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEnvironmentDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewEnvironmentDataAttributesPropertiesItem>
        for NewEnvironmentDataAttributesPropertiesItem {
            fn from(value: super::NewEnvironmentDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEnvironmentDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewEnvironmentDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewEnvironmentDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEnvironmentDataAttributesSlackAliasesItem>
        for super::NewEnvironmentDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEnvironmentDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewEnvironmentDataAttributesSlackAliasesItem>
        for NewEnvironmentDataAttributesSlackAliasesItem {
            fn from(value: super::NewEnvironmentDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEnvironmentDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewEnvironmentDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewEnvironmentDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEnvironmentDataAttributesSlackChannelsItem>
        for super::NewEnvironmentDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEnvironmentDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewEnvironmentDataAttributesSlackChannelsItem>
        for NewEnvironmentDataAttributesSlackChannelsItem {
            fn from(
                value: super::NewEnvironmentDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicy {
            data: ::std::result::Result<
                super::NewEscalationPolicyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicy {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewEscalationPolicy {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicy>
        for super::NewEscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicy> for NewEscalationPolicy {
            fn from(value: super::NewEscalationPolicy) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyData {
            attributes: ::std::result::Result<
                super::NewEscalationPolicyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewEscalationPolicyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewEscalationPolicyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyData>
        for super::NewEscalationPolicyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyData>
        for NewEscalationPolicyData {
            fn from(value: super::NewEscalationPolicyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyDataAttributes {
            business_hours: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyDataAttributesBusinessHours,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            repeat_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyDataAttributes {
            fn default() -> Self {
                Self {
                    business_hours: Ok(Default::default()),
                    description: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    repeat_count: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                }
            }
        }
        impl NewEscalationPolicyDataAttributes {
            pub fn business_hours<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyDataAttributesBusinessHours,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.business_hours = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for business_hours: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn repeat_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_count: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyDataAttributes>
        for super::NewEscalationPolicyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    business_hours: value.business_hours?,
                    description: value.description?,
                    group_ids: value.group_ids?,
                    name: value.name?,
                    repeat_count: value.repeat_count?,
                    service_ids: value.service_ids?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyDataAttributes>
        for NewEscalationPolicyDataAttributes {
            fn from(value: super::NewEscalationPolicyDataAttributes) -> Self {
                Self {
                    business_hours: Ok(value.business_hours),
                    description: Ok(value.description),
                    group_ids: Ok(value.group_ids),
                    name: Ok(value.name),
                    repeat_count: Ok(value.repeat_count),
                    service_ids: Ok(value.service_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyDataAttributesBusinessHours {
            days: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewEscalationPolicyDataAttributesBusinessHoursDaysItem,
                    >,
                >,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyDataAttributesBusinessHoursTimeZone,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyDataAttributesBusinessHours {
            fn default() -> Self {
                Self {
                    days: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                }
            }
        }
        impl NewEscalationPolicyDataAttributesBusinessHours {
            pub fn days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewEscalationPolicyDataAttributesBusinessHoursDaysItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for days: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyDataAttributesBusinessHoursTimeZone,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyDataAttributesBusinessHours>
        for super::NewEscalationPolicyDataAttributesBusinessHours {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyDataAttributesBusinessHours,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    days: value.days?,
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyDataAttributesBusinessHours>
        for NewEscalationPolicyDataAttributesBusinessHours {
            fn from(
                value: super::NewEscalationPolicyDataAttributesBusinessHours,
            ) -> Self {
                Self {
                    days: Ok(value.days),
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyLevel {
            data: ::std::result::Result<
                super::NewEscalationPolicyLevelData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyLevel {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewEscalationPolicyLevel {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyLevelData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyLevel>
        for super::NewEscalationPolicyLevel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyLevel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyLevel>
        for NewEscalationPolicyLevel {
            fn from(value: super::NewEscalationPolicyLevel) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyLevelData {
            attributes: ::std::result::Result<
                super::NewEscalationPolicyLevelDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewEscalationPolicyLevelDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyLevelData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewEscalationPolicyLevelData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyLevelDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyLevelDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyLevelData>
        for super::NewEscalationPolicyLevelData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyLevelData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyLevelData>
        for NewEscalationPolicyLevelData {
            fn from(value: super::NewEscalationPolicyLevelData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyLevelDataAttributes {
            delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            escalation_policy_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_params: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<
                        super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
                    >,
                >,
                ::std::string::String,
            >,
            paging_strategy_configuration_schedule_strategy: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy,
                >,
                ::std::string::String,
            >,
            paging_strategy_configuration_strategy: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for NewEscalationPolicyLevelDataAttributes {
            fn default() -> Self {
                Self {
                    delay: Ok(Default::default()),
                    escalation_policy_path_id: Ok(Default::default()),
                    notification_target_params: Err(
                        "no value supplied for notification_target_params".to_string(),
                    ),
                    paging_strategy_configuration_schedule_strategy: Ok(
                        Default::default(),
                    ),
                    paging_strategy_configuration_strategy: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                }
            }
        }
        impl NewEscalationPolicyLevelDataAttributes {
            pub fn delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay: {e}")
                    });
                self
            }
            pub fn escalation_policy_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_path_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<
                            super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_params: {e}"
                        )
                    });
                self
            }
            pub fn paging_strategy_configuration_schedule_strategy<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_strategy_configuration_schedule_strategy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_strategy_configuration_schedule_strategy: {e}"
                        )
                    });
                self
            }
            pub fn paging_strategy_configuration_strategy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_strategy_configuration_strategy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_strategy_configuration_strategy: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyLevelDataAttributes>
        for super::NewEscalationPolicyLevelDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyLevelDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    delay: value.delay?,
                    escalation_policy_path_id: value.escalation_policy_path_id?,
                    notification_target_params: value.notification_target_params?,
                    paging_strategy_configuration_schedule_strategy: value
                        .paging_strategy_configuration_schedule_strategy?,
                    paging_strategy_configuration_strategy: value
                        .paging_strategy_configuration_strategy?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyLevelDataAttributes>
        for NewEscalationPolicyLevelDataAttributes {
            fn from(value: super::NewEscalationPolicyLevelDataAttributes) -> Self {
                Self {
                    delay: Ok(value.delay),
                    escalation_policy_path_id: Ok(value.escalation_policy_path_id),
                    notification_target_params: Ok(value.notification_target_params),
                    paging_strategy_configuration_schedule_strategy: Ok(
                        value.paging_strategy_configuration_schedule_strategy,
                    ),
                    paging_strategy_configuration_strategy: Ok(
                        value.paging_strategy_configuration_strategy,
                    ),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            team_members: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers,
                >,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    team_members: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn team_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team_members = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team_members: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
        > for super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    team_members: value.team_members?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
        > for NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            fn from(
                value: super::NewEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    team_members: Ok(value.team_members),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyPath {
            data: ::std::result::Result<
                super::NewEscalationPolicyPathData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyPath {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewEscalationPolicyPath {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyPathData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyPath>
        for super::NewEscalationPolicyPath {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyPath,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyPath>
        for NewEscalationPolicyPath {
            fn from(value: super::NewEscalationPolicyPath) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyPathData {
            attributes: ::std::result::Result<
                super::NewEscalationPolicyPathDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewEscalationPolicyPathDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyPathData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewEscalationPolicyPathData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyPathDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewEscalationPolicyPathDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyPathData>
        for super::NewEscalationPolicyPathData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyPathData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyPathData>
        for NewEscalationPolicyPathData {
            fn from(value: super::NewEscalationPolicyPathData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyPathDataAttributes {
            after_deferral_behavior: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyPathDataAttributesAfterDeferralBehavior,
                >,
                ::std::string::String,
            >,
            after_deferral_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            initial_delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            match_mode: ::std::result::Result<
                super::NewEscalationPolicyPathDataAttributesMatchMode,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notification_type: ::std::result::Result<
                super::NewEscalationPolicyPathDataAttributesNotificationType,
                ::std::string::String,
            >,
            path_type: ::std::result::Result<
                super::NewEscalationPolicyPathDataAttributesPathType,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            repeat_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<super::NewEscalationPolicyPathDataAttributesRulesItem>,
                ::std::string::String,
            >,
            time_restriction_time_zone: ::std::result::Result<
                ::std::option::Option<
                    super::NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone,
                >,
                ::std::string::String,
            >,
            time_restrictions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewEscalationPolicyPathDataAttributes {
            fn default() -> Self {
                Self {
                    after_deferral_behavior: Ok(Default::default()),
                    after_deferral_path_id: Ok(Default::default()),
                    default: Ok(Default::default()),
                    initial_delay: Ok(Default::default()),
                    match_mode: Ok(
                        super::defaults::new_escalation_policy_path_data_attributes_match_mode(),
                    ),
                    name: Err("no value supplied for name".to_string()),
                    notification_type: Ok(
                        super::defaults::new_escalation_policy_path_data_attributes_notification_type(),
                    ),
                    path_type: Ok(
                        super::defaults::new_escalation_policy_path_data_attributes_path_type(),
                    ),
                    position: Ok(Default::default()),
                    repeat: Ok(Default::default()),
                    repeat_count: Ok(Default::default()),
                    rules: Ok(Default::default()),
                    time_restriction_time_zone: Ok(Default::default()),
                    time_restrictions: Ok(Default::default()),
                }
            }
        }
        impl NewEscalationPolicyPathDataAttributes {
            pub fn after_deferral_behavior<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyPathDataAttributesAfterDeferralBehavior,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.after_deferral_behavior = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for after_deferral_behavior: {e}"
                        )
                    });
                self
            }
            pub fn after_deferral_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.after_deferral_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for after_deferral_path_id: {e}"
                        )
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn initial_delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.initial_delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for initial_delay: {e}")
                    });
                self
            }
            pub fn match_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyPathDataAttributesMatchMode,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.match_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for match_mode: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyPathDataAttributesNotificationType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_type: {e}"
                        )
                    });
                self
            }
            pub fn path_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyPathDataAttributesPathType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.path_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for path_type: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn repeat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat: {e}")
                    });
                self
            }
            pub fn repeat_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_count: {e}")
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewEscalationPolicyPathDataAttributesRulesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
            pub fn time_restriction_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewEscalationPolicyPathDataAttributesTimeRestrictionTimeZone,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_restriction_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_restriction_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn time_restrictions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_restrictions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_restrictions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewEscalationPolicyPathDataAttributes>
        for super::NewEscalationPolicyPathDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyPathDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    after_deferral_behavior: value.after_deferral_behavior?,
                    after_deferral_path_id: value.after_deferral_path_id?,
                    default: value.default?,
                    initial_delay: value.initial_delay?,
                    match_mode: value.match_mode?,
                    name: value.name?,
                    notification_type: value.notification_type?,
                    path_type: value.path_type?,
                    position: value.position?,
                    repeat: value.repeat?,
                    repeat_count: value.repeat_count?,
                    rules: value.rules?,
                    time_restriction_time_zone: value.time_restriction_time_zone?,
                    time_restrictions: value.time_restrictions?,
                })
            }
        }
        impl ::std::convert::From<super::NewEscalationPolicyPathDataAttributes>
        for NewEscalationPolicyPathDataAttributes {
            fn from(value: super::NewEscalationPolicyPathDataAttributes) -> Self {
                Self {
                    after_deferral_behavior: Ok(value.after_deferral_behavior),
                    after_deferral_path_id: Ok(value.after_deferral_path_id),
                    default: Ok(value.default),
                    initial_delay: Ok(value.initial_delay),
                    match_mode: Ok(value.match_mode),
                    name: Ok(value.name),
                    notification_type: Ok(value.notification_type),
                    path_type: Ok(value.path_type),
                    position: Ok(value.position),
                    repeat: Ok(value.repeat),
                    repeat_count: Ok(value.repeat_count),
                    rules: Ok(value.rules),
                    time_restriction_time_zone: Ok(value.time_restriction_time_zone),
                    time_restrictions: Ok(value.time_restrictions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            all_day: ::std::result::Result<bool, ::std::string::String>,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            friday: ::std::result::Result<bool, ::std::string::String>,
            monday: ::std::result::Result<bool, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            saturday: ::std::result::Result<bool, ::std::string::String>,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sunday: ::std::result::Result<bool, ::std::string::String>,
            thursday: ::std::result::Result<bool, ::std::string::String>,
            tuesday: ::std::result::Result<bool, ::std::string::String>,
            wednesday: ::std::result::Result<bool, ::std::string::String>,
        }
        impl ::std::default::Default
        for NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            fn default() -> Self {
                Self {
                    all_day: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    friday: Ok(Default::default()),
                    monday: Ok(Default::default()),
                    position: Ok(Default::default()),
                    saturday: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                    sunday: Ok(Default::default()),
                    thursday: Ok(Default::default()),
                    tuesday: Ok(Default::default()),
                    wednesday: Ok(Default::default()),
                }
            }
        }
        impl NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            pub fn all_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.all_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for all_day: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn friday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.friday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for friday: {e}")
                    });
                self
            }
            pub fn monday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.monday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for monday: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn saturday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.saturday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for saturday: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn sunday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.sunday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sunday: {e}")
                    });
                self
            }
            pub fn thursday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.thursday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for thursday: {e}")
                    });
                self
            }
            pub fn tuesday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.tuesday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tuesday: {e}")
                    });
                self
            }
            pub fn wednesday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.wednesday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for wednesday: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
        > for super::NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    all_day: value.all_day?,
                    end_time: value.end_time?,
                    friday: value.friday?,
                    monday: value.monday?,
                    position: value.position?,
                    saturday: value.saturday?,
                    start_time: value.start_time?,
                    sunday: value.sunday?,
                    thursday: value.thursday?,
                    tuesday: value.tuesday?,
                    wednesday: value.wednesday?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
        > for NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            fn from(
                value: super::NewEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
            ) -> Self {
                Self {
                    all_day: Ok(value.all_day),
                    end_time: Ok(value.end_time),
                    friday: Ok(value.friday),
                    monday: Ok(value.monday),
                    position: Ok(value.position),
                    saturday: Ok(value.saturday),
                    start_time: Ok(value.start_time),
                    sunday: Ok(value.sunday),
                    thursday: Ok(value.thursday),
                    tuesday: Ok(value.tuesday),
                    wednesday: Ok(value.wednesday),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            end_day: ::std::result::Result<
                super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            start_day: ::std::result::Result<
                super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            fn default() -> Self {
                Self {
                    end_day: Err("no value supplied for end_day".to_string()),
                    end_time: Err("no value supplied for end_time".to_string()),
                    start_day: Err("no value supplied for start_day".to_string()),
                    start_time: Err("no value supplied for start_time".to_string()),
                }
            }
        }
        impl NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            pub fn end_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_day: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_day: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
        > for super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_day: value.end_day?,
                    end_time: value.end_time?,
                    start_day: value.start_day?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
        > for NewEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            fn from(
                value: super::NewEscalationPolicyPathDataAttributesTimeRestrictionsItem,
            ) -> Self {
                Self {
                    end_day: Ok(value.end_day),
                    end_time: Ok(value.end_time),
                    start_day: Ok(value.start_day),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormField {
            data: ::std::result::Result<super::NewFormFieldData, ::std::string::String>,
        }
        impl ::std::default::Default for NewFormField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormField> for super::NewFormField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormField> for NewFormField {
            fn from(value: super::NewFormField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldData {
            attributes: ::std::result::Result<
                super::NewFormFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldData> for super::NewFormFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldData> for NewFormFieldData {
            fn from(value: super::NewFormFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldDataAttributes {
            auto_set_by_catalog_property_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            input_kind: ::std::result::Result<
                ::std::option::Option<super::NewFormFieldDataAttributesInputKind>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewFormFieldDataAttributesKind,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            required: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            show_on_incident_details: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shown: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            value_kind: ::std::result::Result<
                ::std::option::Option<super::NewFormFieldDataAttributesValueKind>,
                ::std::string::String,
            >,
            value_kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldDataAttributes {
            fn default() -> Self {
                Self {
                    auto_set_by_catalog_property_id: Ok(Default::default()),
                    default_values: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    input_kind: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    required: Ok(Default::default()),
                    show_on_incident_details: Ok(Default::default()),
                    shown: Ok(Default::default()),
                    value_kind: Ok(Default::default()),
                    value_kind_catalog_id: Ok(Default::default()),
                }
            }
        }
        impl NewFormFieldDataAttributes {
            pub fn auto_set_by_catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_set_by_catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_set_by_catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn default_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for default_values: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn input_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewFormFieldDataAttributesInputKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.input_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for input_kind: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldDataAttributesKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn show_on_incident_details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_on_incident_details = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_on_incident_details: {e}"
                        )
                    });
                self
            }
            pub fn shown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shown = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shown: {e}")
                    });
                self
            }
            pub fn value_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewFormFieldDataAttributesValueKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.value_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value_kind: {e}")
                    });
                self
            }
            pub fn value_kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value_kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for value_kind_catalog_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldDataAttributes>
        for super::NewFormFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_set_by_catalog_property_id: value
                        .auto_set_by_catalog_property_id?,
                    default_values: value.default_values?,
                    description: value.description?,
                    enabled: value.enabled?,
                    input_kind: value.input_kind?,
                    kind: value.kind?,
                    name: value.name?,
                    required: value.required?,
                    show_on_incident_details: value.show_on_incident_details?,
                    shown: value.shown?,
                    value_kind: value.value_kind?,
                    value_kind_catalog_id: value.value_kind_catalog_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldDataAttributes>
        for NewFormFieldDataAttributes {
            fn from(value: super::NewFormFieldDataAttributes) -> Self {
                Self {
                    auto_set_by_catalog_property_id: Ok(
                        value.auto_set_by_catalog_property_id,
                    ),
                    default_values: Ok(value.default_values),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    input_kind: Ok(value.input_kind),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    required: Ok(value.required),
                    show_on_incident_details: Ok(value.show_on_incident_details),
                    shown: Ok(value.shown),
                    value_kind: Ok(value.value_kind),
                    value_kind_catalog_id: Ok(value.value_kind_catalog_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldOption {
            data: ::std::result::Result<
                super::NewFormFieldOptionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldOption {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormFieldOption {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldOptionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldOption> for super::NewFormFieldOption {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldOption,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormFieldOption> for NewFormFieldOption {
            fn from(value: super::NewFormFieldOption) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldOptionData {
            attributes: ::std::result::Result<
                super::NewFormFieldOptionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormFieldOptionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldOptionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormFieldOptionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldOptionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldOptionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldOptionData>
        for super::NewFormFieldOptionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldOptionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldOptionData>
        for NewFormFieldOptionData {
            fn from(value: super::NewFormFieldOptionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldOptionDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewFormFieldOptionDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    default: Ok(Default::default()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    position: Ok(Default::default()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewFormFieldOptionDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldOptionDataAttributes>
        for super::NewFormFieldOptionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldOptionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    default: value.default?,
                    form_field_id: value.form_field_id?,
                    position: value.position?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldOptionDataAttributes>
        for NewFormFieldOptionDataAttributes {
            fn from(value: super::NewFormFieldOptionDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    default: Ok(value.default),
                    form_field_id: Ok(value.form_field_id),
                    position: Ok(value.position),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPlacement {
            data: ::std::result::Result<
                super::NewFormFieldPlacementData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPlacement {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormFieldPlacement {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPlacementData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPlacement>
        for super::NewFormFieldPlacement {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPlacement,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPlacement>
        for NewFormFieldPlacement {
            fn from(value: super::NewFormFieldPlacement) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPlacementCondition {
            data: ::std::result::Result<
                super::NewFormFieldPlacementConditionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPlacementCondition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormFieldPlacementCondition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPlacementConditionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPlacementCondition>
        for super::NewFormFieldPlacementCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPlacementCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPlacementCondition>
        for NewFormFieldPlacementCondition {
            fn from(value: super::NewFormFieldPlacementCondition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPlacementConditionData {
            attributes: ::std::result::Result<
                super::NewFormFieldPlacementConditionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormFieldPlacementConditionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPlacementConditionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormFieldPlacementConditionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewFormFieldPlacementConditionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewFormFieldPlacementConditionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPlacementConditionData>
        for super::NewFormFieldPlacementConditionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPlacementConditionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPlacementConditionData>
        for NewFormFieldPlacementConditionData {
            fn from(value: super::NewFormFieldPlacementConditionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPlacementConditionDataAttributes {
            comparison: ::std::result::Result<
                super::NewFormFieldPlacementConditionDataAttributesComparison,
                ::std::string::String,
            >,
            conditioned: ::std::result::Result<
                super::NewFormFieldPlacementConditionDataAttributesConditioned,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPlacementConditionDataAttributes {
            fn default() -> Self {
                Self {
                    comparison: Err("no value supplied for comparison".to_string()),
                    conditioned: Err("no value supplied for conditioned".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    position: Ok(Default::default()),
                    values: Err("no value supplied for values".to_string()),
                }
            }
        }
        impl NewFormFieldPlacementConditionDataAttributes {
            pub fn comparison<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewFormFieldPlacementConditionDataAttributesComparison,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.comparison = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comparison: {e}")
                    });
                self
            }
            pub fn conditioned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewFormFieldPlacementConditionDataAttributesConditioned,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditioned = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditioned: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPlacementConditionDataAttributes>
        for super::NewFormFieldPlacementConditionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPlacementConditionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comparison: value.comparison?,
                    conditioned: value.conditioned?,
                    form_field_id: value.form_field_id?,
                    position: value.position?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPlacementConditionDataAttributes>
        for NewFormFieldPlacementConditionDataAttributes {
            fn from(value: super::NewFormFieldPlacementConditionDataAttributes) -> Self {
                Self {
                    comparison: Ok(value.comparison),
                    conditioned: Ok(value.conditioned),
                    form_field_id: Ok(value.form_field_id),
                    position: Ok(value.position),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPlacementData {
            attributes: ::std::result::Result<
                super::NewFormFieldPlacementDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormFieldPlacementDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPlacementData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormFieldPlacementData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPlacementDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPlacementDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPlacementData>
        for super::NewFormFieldPlacementData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPlacementData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPlacementData>
        for NewFormFieldPlacementData {
            fn from(value: super::NewFormFieldPlacementData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPlacementDataAttributes {
            form: ::std::result::Result<::std::string::String, ::std::string::String>,
            form_set_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            non_editable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            placement_operator: ::std::result::Result<
                ::std::option::Option<
                    super::NewFormFieldPlacementDataAttributesPlacementOperator,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            required_operator: ::std::result::Result<
                ::std::option::Option<
                    super::NewFormFieldPlacementDataAttributesRequiredOperator,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPlacementDataAttributes {
            fn default() -> Self {
                Self {
                    form: Err("no value supplied for form".to_string()),
                    form_set_id: Err("no value supplied for form_set_id".to_string()),
                    non_editable: Ok(Default::default()),
                    placement_operator: Ok(Default::default()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                    required_operator: Ok(Default::default()),
                }
            }
        }
        impl NewFormFieldPlacementDataAttributes {
            pub fn form<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form: {e}")
                    });
                self
            }
            pub fn form_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_set_id: {e}")
                    });
                self
            }
            pub fn non_editable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.non_editable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for non_editable: {e}")
                    });
                self
            }
            pub fn placement_operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewFormFieldPlacementDataAttributesPlacementOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.placement_operator = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for placement_operator: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn required_operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewFormFieldPlacementDataAttributesRequiredOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.required_operator = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for required_operator: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPlacementDataAttributes>
        for super::NewFormFieldPlacementDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPlacementDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form: value.form?,
                    form_set_id: value.form_set_id?,
                    non_editable: value.non_editable?,
                    placement_operator: value.placement_operator?,
                    position: value.position?,
                    required: value.required?,
                    required_operator: value.required_operator?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPlacementDataAttributes>
        for NewFormFieldPlacementDataAttributes {
            fn from(value: super::NewFormFieldPlacementDataAttributes) -> Self {
                Self {
                    form: Ok(value.form),
                    form_set_id: Ok(value.form_set_id),
                    non_editable: Ok(value.non_editable),
                    placement_operator: Ok(value.placement_operator),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    required_operator: Ok(value.required_operator),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPosition {
            data: ::std::result::Result<
                super::NewFormFieldPositionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPosition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormFieldPosition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPositionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPosition>
        for super::NewFormFieldPosition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPosition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPosition> for NewFormFieldPosition {
            fn from(value: super::NewFormFieldPosition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPositionData {
            attributes: ::std::result::Result<
                super::NewFormFieldPositionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormFieldPositionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormFieldPositionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormFieldPositionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPositionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormFieldPositionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPositionData>
        for super::NewFormFieldPositionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPositionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPositionData>
        for NewFormFieldPositionData {
            fn from(value: super::NewFormFieldPositionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormFieldPositionDataAttributes {
            form: ::std::result::Result<
                super::NewFormFieldPositionDataAttributesForm,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for NewFormFieldPositionDataAttributes {
            fn default() -> Self {
                Self {
                    form: Err("no value supplied for form".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    position: Err("no value supplied for position".to_string()),
                }
            }
        }
        impl NewFormFieldPositionDataAttributes {
            pub fn form<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewFormFieldPositionDataAttributesForm,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormFieldPositionDataAttributes>
        for super::NewFormFieldPositionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormFieldPositionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form: value.form?,
                    form_field_id: value.form_field_id?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormFieldPositionDataAttributes>
        for NewFormFieldPositionDataAttributes {
            fn from(value: super::NewFormFieldPositionDataAttributes) -> Self {
                Self {
                    form: Ok(value.form),
                    form_field_id: Ok(value.form_field_id),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormSet {
            data: ::std::result::Result<super::NewFormSetData, ::std::string::String>,
        }
        impl ::std::default::Default for NewFormSet {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormSet {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormSetData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormSet> for super::NewFormSet {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormSet,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormSet> for NewFormSet {
            fn from(value: super::NewFormSet) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormSetCondition {
            data: ::std::result::Result<
                super::NewFormSetConditionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormSetCondition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFormSetCondition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormSetConditionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormSetCondition>
        for super::NewFormSetCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormSetCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFormSetCondition> for NewFormSetCondition {
            fn from(value: super::NewFormSetCondition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormSetConditionData {
            attributes: ::std::result::Result<
                super::NewFormSetConditionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormSetConditionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormSetConditionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormSetConditionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormSetConditionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormSetConditionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormSetConditionData>
        for super::NewFormSetConditionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormSetConditionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormSetConditionData>
        for NewFormSetConditionData {
            fn from(value: super::NewFormSetConditionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormSetConditionDataAttributes {
            comparison: ::std::result::Result<
                super::NewFormSetConditionDataAttributesComparison,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormSetConditionDataAttributes {
            fn default() -> Self {
                Self {
                    comparison: Err("no value supplied for comparison".to_string()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    values: Err("no value supplied for values".to_string()),
                }
            }
        }
        impl NewFormSetConditionDataAttributes {
            pub fn comparison<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewFormSetConditionDataAttributesComparison,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.comparison = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comparison: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormSetConditionDataAttributes>
        for super::NewFormSetConditionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormSetConditionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comparison: value.comparison?,
                    form_field_id: value.form_field_id?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormSetConditionDataAttributes>
        for NewFormSetConditionDataAttributes {
            fn from(value: super::NewFormSetConditionDataAttributes) -> Self {
                Self {
                    comparison: Ok(value.comparison),
                    form_field_id: Ok(value.form_field_id),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormSetData {
            attributes: ::std::result::Result<
                super::NewFormSetDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFormSetDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFormSetData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFormSetData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormSetDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFormSetDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormSetData> for super::NewFormSetData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormSetData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormSetData> for NewFormSetData {
            fn from(value: super::NewFormSetData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFormSetDataAttributes {
            forms: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewFormSetDataAttributes {
            fn default() -> Self {
                Self {
                    forms: Err("no value supplied for forms".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewFormSetDataAttributes {
            pub fn forms<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.forms = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for forms: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFormSetDataAttributes>
        for super::NewFormSetDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFormSetDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    forms: value.forms?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewFormSetDataAttributes>
        for NewFormSetDataAttributes {
            fn from(value: super::NewFormSetDataAttributes) -> Self {
                Self {
                    forms: Ok(value.forms),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFunctionality {
            data: ::std::result::Result<
                super::NewFunctionalityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFunctionality {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewFunctionality {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFunctionalityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFunctionality> for super::NewFunctionality {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFunctionality,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewFunctionality> for NewFunctionality {
            fn from(value: super::NewFunctionality) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFunctionalityData {
            attributes: ::std::result::Result<
                super::NewFunctionalityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewFunctionalityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFunctionalityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewFunctionalityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFunctionalityDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewFunctionalityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFunctionalityData>
        for super::NewFunctionalityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFunctionalityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewFunctionalityData> for NewFunctionalityData {
            fn from(value: super::NewFunctionalityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFunctionalityDataAttributes {
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_team_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            owner_user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewFunctionalityDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            show_uptime: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_uptime_last_days: ::std::result::Result<
                ::std::option::Option<
                    super::NewFunctionalityDataAttributesShowUptimeLastDays,
                >,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewFunctionalityDataAttributesSlackAliasesItem,
                    >,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewFunctionalityDataAttributesSlackChannelsItem,
                    >,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewFunctionalityDataAttributes {
            fn default() -> Self {
                Self {
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    escalation_policy_id: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    opsgenie_team_id: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_ids: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    show_uptime: Ok(Default::default()),
                    show_uptime_last_days: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl NewFunctionalityDataAttributes {
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn opsgenie_team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_team_id: {e}"
                        )
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewFunctionalityDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn show_uptime<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_uptime: {e}")
                    });
                self
            }
            pub fn show_uptime_last_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewFunctionalityDataAttributesShowUptimeLastDays,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime_last_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_uptime_last_days: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewFunctionalityDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewFunctionalityDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFunctionalityDataAttributes>
        for super::NewFunctionalityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFunctionalityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    description: value.description?,
                    environment_ids: value.environment_ids?,
                    escalation_policy_id: value.escalation_policy_id?,
                    external_id: value.external_id?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    opsgenie_team_id: value.opsgenie_team_id?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_ids: value.owner_user_ids?,
                    pagerduty_id: value.pagerduty_id?,
                    position: value.position?,
                    properties: value.properties?,
                    public_description: value.public_description?,
                    service_ids: value.service_ids?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    show_uptime: value.show_uptime?,
                    show_uptime_last_days: value.show_uptime_last_days?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::NewFunctionalityDataAttributes>
        for NewFunctionalityDataAttributes {
            fn from(value: super::NewFunctionalityDataAttributes) -> Self {
                Self {
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    description: Ok(value.description),
                    environment_ids: Ok(value.environment_ids),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    external_id: Ok(value.external_id),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    opsgenie_team_id: Ok(value.opsgenie_team_id),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_ids: Ok(value.owner_user_ids),
                    pagerduty_id: Ok(value.pagerduty_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    public_description: Ok(value.public_description),
                    service_ids: Ok(value.service_ids),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    show_uptime: Ok(value.show_uptime),
                    show_uptime_last_days: Ok(value.show_uptime_last_days),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFunctionalityDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewFunctionalityDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewFunctionalityDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFunctionalityDataAttributesPropertiesItem>
        for super::NewFunctionalityDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFunctionalityDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewFunctionalityDataAttributesPropertiesItem>
        for NewFunctionalityDataAttributesPropertiesItem {
            fn from(value: super::NewFunctionalityDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFunctionalityDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewFunctionalityDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewFunctionalityDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFunctionalityDataAttributesSlackAliasesItem>
        for super::NewFunctionalityDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFunctionalityDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewFunctionalityDataAttributesSlackAliasesItem>
        for NewFunctionalityDataAttributesSlackAliasesItem {
            fn from(
                value: super::NewFunctionalityDataAttributesSlackAliasesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewFunctionalityDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for NewFunctionalityDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewFunctionalityDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewFunctionalityDataAttributesSlackChannelsItem>
        for super::NewFunctionalityDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewFunctionalityDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewFunctionalityDataAttributesSlackChannelsItem>
        for NewFunctionalityDataAttributesSlackChannelsItem {
            fn from(
                value: super::NewFunctionalityDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewHeartbeat {
            data: ::std::result::Result<super::NewHeartbeatData, ::std::string::String>,
        }
        impl ::std::default::Default for NewHeartbeat {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewHeartbeat {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewHeartbeatData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewHeartbeat> for super::NewHeartbeat {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewHeartbeat,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewHeartbeat> for NewHeartbeat {
            fn from(value: super::NewHeartbeat) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewHeartbeatData {
            attributes: ::std::result::Result<
                super::NewHeartbeatDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewHeartbeatDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewHeartbeatData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewHeartbeatData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewHeartbeatDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewHeartbeatDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewHeartbeatData> for super::NewHeartbeatData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewHeartbeatData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewHeartbeatData> for NewHeartbeatData {
            fn from(value: super::NewHeartbeatData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewHeartbeatDataAttributes {
            alert_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_summary: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            interval: ::std::result::Result<i64, ::std::string::String>,
            interval_unit: ::std::result::Result<
                super::NewHeartbeatDataAttributesIntervalUnit,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notification_target_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            notification_target_type: ::std::result::Result<
                super::NewHeartbeatDataAttributesNotificationTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewHeartbeatDataAttributes {
            fn default() -> Self {
                Self {
                    alert_description: Ok(Default::default()),
                    alert_summary: Err(
                        "no value supplied for alert_summary".to_string(),
                    ),
                    alert_urgency_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    interval: Err("no value supplied for interval".to_string()),
                    interval_unit: Err(
                        "no value supplied for interval_unit".to_string(),
                    ),
                    name: Err("no value supplied for name".to_string()),
                    notification_target_id: Err(
                        "no value supplied for notification_target_id".to_string(),
                    ),
                    notification_target_type: Err(
                        "no value supplied for notification_target_type".to_string(),
                    ),
                }
            }
        }
        impl NewHeartbeatDataAttributes {
            pub fn alert_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_description: {e}"
                        )
                    });
                self
            }
            pub fn alert_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_summary: {e}")
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn interval<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.interval = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for interval: {e}")
                    });
                self
            }
            pub fn interval_unit<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewHeartbeatDataAttributesIntervalUnit,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.interval_unit = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for interval_unit: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewHeartbeatDataAttributesNotificationTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_type: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewHeartbeatDataAttributes>
        for super::NewHeartbeatDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewHeartbeatDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_description: value.alert_description?,
                    alert_summary: value.alert_summary?,
                    alert_urgency_id: value.alert_urgency_id?,
                    description: value.description?,
                    enabled: value.enabled?,
                    interval: value.interval?,
                    interval_unit: value.interval_unit?,
                    name: value.name?,
                    notification_target_id: value.notification_target_id?,
                    notification_target_type: value.notification_target_type?,
                })
            }
        }
        impl ::std::convert::From<super::NewHeartbeatDataAttributes>
        for NewHeartbeatDataAttributes {
            fn from(value: super::NewHeartbeatDataAttributes) -> Self {
                Self {
                    alert_description: Ok(value.alert_description),
                    alert_summary: Ok(value.alert_summary),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    interval: Ok(value.interval),
                    interval_unit: Ok(value.interval_unit),
                    name: Ok(value.name),
                    notification_target_id: Ok(value.notification_target_id),
                    notification_target_type: Ok(value.notification_target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncident {
            data: ::std::result::Result<super::NewIncidentData, ::std::string::String>,
        }
        impl ::std::default::Default for NewIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncident> for super::NewIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncident> for NewIncident {
            fn from(value: super::NewIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentActionItem {
            data: ::std::result::Result<
                super::NewIncidentActionItemData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentActionItem {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentActionItem {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentActionItemData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentActionItem>
        for super::NewIncidentActionItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentActionItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentActionItem>
        for NewIncidentActionItem {
            fn from(value: super::NewIncidentActionItem) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentActionItemData {
            attributes: ::std::result::Result<
                super::NewIncidentActionItemDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentActionItemDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentActionItemData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentActionItemData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentActionItemDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentActionItemDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentActionItemData>
        for super::NewIncidentActionItemData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentActionItemData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentActionItemData>
        for NewIncidentActionItemData {
            fn from(value: super::NewIncidentActionItemData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentActionItemDataAttributes {
            assigned_to_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            assigned_to_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            form_field_selections: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewIncidentActionItemDataAttributesFormFieldSelectionsItem,
                    >,
                >,
                ::std::string::String,
            >,
            jira_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::NewIncidentActionItemDataAttributesKind>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<
                    super::NewIncidentActionItemDataAttributesPriority,
                >,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::NewIncidentActionItemDataAttributesStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewIncidentActionItemDataAttributes {
            fn default() -> Self {
                Self {
                    assigned_to_group_ids: Ok(Default::default()),
                    assigned_to_user_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    form_field_selections: Ok(Default::default()),
                    jira_issue_id: Ok(Default::default()),
                    jira_issue_key: Ok(Default::default()),
                    jira_issue_url: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                }
            }
        }
        impl NewIncidentActionItemDataAttributes {
            pub fn assigned_to_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn assigned_to_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn form_field_selections<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewIncidentActionItemDataAttributesFormFieldSelectionsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_selections = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for form_field_selections: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewIncidentActionItemDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentActionItemDataAttributesPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentActionItemDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentActionItemDataAttributes>
        for super::NewIncidentActionItemDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentActionItemDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_to_group_ids: value.assigned_to_group_ids?,
                    assigned_to_user_id: value.assigned_to_user_id?,
                    description: value.description?,
                    due_date: value.due_date?,
                    form_field_selections: value.form_field_selections?,
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    jira_issue_url: value.jira_issue_url?,
                    kind: value.kind?,
                    priority: value.priority?,
                    status: value.status?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentActionItemDataAttributes>
        for NewIncidentActionItemDataAttributes {
            fn from(value: super::NewIncidentActionItemDataAttributes) -> Self {
                Self {
                    assigned_to_group_ids: Ok(value.assigned_to_group_ids),
                    assigned_to_user_id: Ok(value.assigned_to_user_id),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    form_field_selections: Ok(value.form_field_selections),
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    jira_issue_url: Ok(value.jira_issue_url),
                    kind: Ok(value.kind),
                    priority: Ok(value.priority),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
            destroy: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<
                    super::NewIncidentActionItemDataAttributesFormFieldSelectionsItemValue,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
            fn default() -> Self {
                Self {
                    destroy: Ok(Default::default()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    id: Ok(Default::default()),
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
            pub fn destroy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.destroy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destroy: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentActionItemDataAttributesFormFieldSelectionsItemValue,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewIncidentActionItemDataAttributesFormFieldSelectionsItem,
        > for super::NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentActionItemDataAttributesFormFieldSelectionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    destroy: value.destroy?,
                    form_field_id: value.form_field_id?,
                    id: value.id?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewIncidentActionItemDataAttributesFormFieldSelectionsItem,
        > for NewIncidentActionItemDataAttributesFormFieldSelectionsItem {
            fn from(
                value: super::NewIncidentActionItemDataAttributesFormFieldSelectionsItem,
            ) -> Self {
                Self {
                    destroy: Ok(value.destroy),
                    form_field_id: Ok(value.form_field_id),
                    id: Ok(value.id),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentCustomFieldSelection {
            data: ::std::result::Result<
                super::NewIncidentCustomFieldSelectionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentCustomFieldSelection {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentCustomFieldSelection {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentCustomFieldSelectionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentCustomFieldSelection>
        for super::NewIncidentCustomFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentCustomFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentCustomFieldSelection>
        for NewIncidentCustomFieldSelection {
            fn from(value: super::NewIncidentCustomFieldSelection) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentCustomFieldSelectionData {
            attributes: ::std::result::Result<
                super::NewIncidentCustomFieldSelectionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentCustomFieldSelectionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentCustomFieldSelectionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentCustomFieldSelectionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentCustomFieldSelectionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentCustomFieldSelectionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentCustomFieldSelectionData>
        for super::NewIncidentCustomFieldSelectionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentCustomFieldSelectionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentCustomFieldSelectionData>
        for NewIncidentCustomFieldSelectionData {
            fn from(value: super::NewIncidentCustomFieldSelectionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentCustomFieldSelectionDataAttributes {
            custom_field_id: ::std::result::Result<i64, ::std::string::String>,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentCustomFieldSelectionDataAttributes {
            fn default() -> Self {
                Self {
                    custom_field_id: Err(
                        "no value supplied for custom_field_id".to_string(),
                    ),
                    selected_option_ids: Ok(Default::default()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewIncidentCustomFieldSelectionDataAttributes {
            pub fn custom_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_field_id: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentCustomFieldSelectionDataAttributes>
        for super::NewIncidentCustomFieldSelectionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentCustomFieldSelectionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_field_id: value.custom_field_id?,
                    selected_option_ids: value.selected_option_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentCustomFieldSelectionDataAttributes>
        for NewIncidentCustomFieldSelectionDataAttributes {
            fn from(
                value: super::NewIncidentCustomFieldSelectionDataAttributes,
            ) -> Self {
                Self {
                    custom_field_id: Ok(value.custom_field_id),
                    selected_option_ids: Ok(value.selected_option_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentData {
            attributes: ::std::result::Result<
                super::NewIncidentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentData> for super::NewIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentData> for NewIncidentData {
            fn from(value: super::NewIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentDataAttributes {
            acknowledged_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            cancelled_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cause_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            closed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            detected_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            duplicate_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            google_drive_parent_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_drive_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            in_triage_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            jira_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::NewIncidentDataAttributesKind>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            mitigated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            muted_service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            parent_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            public_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolved_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            scheduled_for: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            scheduled_until: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_archived: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slack_channel_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::NewIncidentDataAttributesStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentDataAttributes {
            fn default() -> Self {
                Self {
                    acknowledged_at: Ok(Default::default()),
                    alert_ids: Ok(Default::default()),
                    cancelled_at: Ok(Default::default()),
                    cause_ids: Ok(Default::default()),
                    closed_at: Ok(Default::default()),
                    detected_at: Ok(Default::default()),
                    duplicate_incident_id: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    google_drive_parent_id: Ok(Default::default()),
                    google_drive_url: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    in_triage_at: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    jira_issue_id: Ok(Default::default()),
                    jira_issue_key: Ok(Default::default()),
                    jira_issue_url: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    mitigated_at: Ok(Default::default()),
                    muted_service_ids: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    parent_incident_id: Ok(Default::default()),
                    private: Ok(Default::default()),
                    public_title: Ok(Default::default()),
                    resolved_at: Ok(Default::default()),
                    scheduled_for: Ok(Default::default()),
                    scheduled_until: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_id: Ok(Default::default()),
                    slack_channel_archived: Ok(Default::default()),
                    slack_channel_id: Ok(Default::default()),
                    slack_channel_name: Ok(Default::default()),
                    slack_channel_url: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    title: Ok(Default::default()),
                    url: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentDataAttributes {
            pub fn acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn alert_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_ids: {e}")
                    });
                self
            }
            pub fn cancelled_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cancelled_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cancelled_at: {e}")
                    });
                self
            }
            pub fn cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cause_ids: {e}")
                    });
                self
            }
            pub fn closed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.closed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for closed_at: {e}")
                    });
                self
            }
            pub fn detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for detected_at: {e}")
                    });
                self
            }
            pub fn duplicate_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.duplicate_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for duplicate_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_parent_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_parent_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_parent_id: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_url: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn in_triage_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.in_triage_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for in_triage_at: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewIncidentDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_at: {e}")
                    });
                self
            }
            pub fn muted_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.muted_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for muted_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn parent_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_at: {e}")
                    });
                self
            }
            pub fn scheduled_for<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scheduled_for = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scheduled_for: {e}")
                    });
                self
            }
            pub fn scheduled_until<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scheduled_until = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for scheduled_until: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_id: {e}")
                    });
                self
            }
            pub fn slack_channel_archived<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_archived = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_archived: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_name: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_url: {e}"
                        )
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewIncidentDataAttributesStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentDataAttributes>
        for super::NewIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    acknowledged_at: value.acknowledged_at?,
                    alert_ids: value.alert_ids?,
                    cancelled_at: value.cancelled_at?,
                    cause_ids: value.cause_ids?,
                    closed_at: value.closed_at?,
                    detected_at: value.detected_at?,
                    duplicate_incident_id: value.duplicate_incident_id?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    google_drive_parent_id: value.google_drive_parent_id?,
                    google_drive_url: value.google_drive_url?,
                    group_ids: value.group_ids?,
                    in_triage_at: value.in_triage_at?,
                    incident_type_ids: value.incident_type_ids?,
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    jira_issue_url: value.jira_issue_url?,
                    kind: value.kind?,
                    labels: value.labels?,
                    mitigated_at: value.mitigated_at?,
                    muted_service_ids: value.muted_service_ids?,
                    notify_emails: value.notify_emails?,
                    parent_incident_id: value.parent_incident_id?,
                    private: value.private?,
                    public_title: value.public_title?,
                    resolved_at: value.resolved_at?,
                    scheduled_for: value.scheduled_for?,
                    scheduled_until: value.scheduled_until?,
                    service_ids: value.service_ids?,
                    severity_id: value.severity_id?,
                    slack_channel_archived: value.slack_channel_archived?,
                    slack_channel_id: value.slack_channel_id?,
                    slack_channel_name: value.slack_channel_name?,
                    slack_channel_url: value.slack_channel_url?,
                    started_at: value.started_at?,
                    status: value.status?,
                    summary: value.summary?,
                    title: value.title?,
                    url: value.url?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentDataAttributes>
        for NewIncidentDataAttributes {
            fn from(value: super::NewIncidentDataAttributes) -> Self {
                Self {
                    acknowledged_at: Ok(value.acknowledged_at),
                    alert_ids: Ok(value.alert_ids),
                    cancelled_at: Ok(value.cancelled_at),
                    cause_ids: Ok(value.cause_ids),
                    closed_at: Ok(value.closed_at),
                    detected_at: Ok(value.detected_at),
                    duplicate_incident_id: Ok(value.duplicate_incident_id),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    google_drive_parent_id: Ok(value.google_drive_parent_id),
                    google_drive_url: Ok(value.google_drive_url),
                    group_ids: Ok(value.group_ids),
                    in_triage_at: Ok(value.in_triage_at),
                    incident_type_ids: Ok(value.incident_type_ids),
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    jira_issue_url: Ok(value.jira_issue_url),
                    kind: Ok(value.kind),
                    labels: Ok(value.labels),
                    mitigated_at: Ok(value.mitigated_at),
                    muted_service_ids: Ok(value.muted_service_ids),
                    notify_emails: Ok(value.notify_emails),
                    parent_incident_id: Ok(value.parent_incident_id),
                    private: Ok(value.private),
                    public_title: Ok(value.public_title),
                    resolved_at: Ok(value.resolved_at),
                    scheduled_for: Ok(value.scheduled_for),
                    scheduled_until: Ok(value.scheduled_until),
                    service_ids: Ok(value.service_ids),
                    severity_id: Ok(value.severity_id),
                    slack_channel_archived: Ok(value.slack_channel_archived),
                    slack_channel_id: Ok(value.slack_channel_id),
                    slack_channel_name: Ok(value.slack_channel_name),
                    slack_channel_url: Ok(value.slack_channel_url),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    title: Ok(value.title),
                    url: Ok(value.url),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEvent {
            data: ::std::result::Result<
                super::NewIncidentEventData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEvent {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentEvent {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEvent> for super::NewIncidentEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentEvent> for NewIncidentEvent {
            fn from(value: super::NewIncidentEvent) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventData {
            attributes: ::std::result::Result<
                super::NewIncidentEventDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentEventDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentEventData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventData>
        for super::NewIncidentEventData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventData> for NewIncidentEventData {
            fn from(value: super::NewIncidentEventData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventDataAttributes {
            event: ::std::result::Result<::std::string::String, ::std::string::String>,
            visibility: ::std::result::Result<
                ::std::option::Option<super::NewIncidentEventDataAttributesVisibility>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventDataAttributes {
            fn default() -> Self {
                Self {
                    event: Err("no value supplied for event".to_string()),
                    visibility: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentEventDataAttributes {
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn visibility<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentEventDataAttributesVisibility,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.visibility = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for visibility: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventDataAttributes>
        for super::NewIncidentEventDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    event: value.event?,
                    visibility: value.visibility?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventDataAttributes>
        for NewIncidentEventDataAttributes {
            fn from(value: super::NewIncidentEventDataAttributes) -> Self {
                Self {
                    event: Ok(value.event),
                    visibility: Ok(value.visibility),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventFunctionality {
            data: ::std::result::Result<
                super::NewIncidentEventFunctionalityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventFunctionality {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentEventFunctionality {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventFunctionalityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventFunctionality>
        for super::NewIncidentEventFunctionality {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventFunctionality,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventFunctionality>
        for NewIncidentEventFunctionality {
            fn from(value: super::NewIncidentEventFunctionality) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventFunctionalityData {
            attributes: ::std::result::Result<
                super::NewIncidentEventFunctionalityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentEventFunctionalityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventFunctionalityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentEventFunctionalityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentEventFunctionalityDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventFunctionalityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventFunctionalityData>
        for super::NewIncidentEventFunctionalityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventFunctionalityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventFunctionalityData>
        for NewIncidentEventFunctionalityData {
            fn from(value: super::NewIncidentEventFunctionalityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventFunctionalityDataAttributes {
            functionality_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_event_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::NewIncidentEventFunctionalityDataAttributesStatus,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventFunctionalityDataAttributes {
            fn default() -> Self {
                Self {
                    functionality_id: Err(
                        "no value supplied for functionality_id".to_string(),
                    ),
                    incident_event_id: Err(
                        "no value supplied for incident_event_id".to_string(),
                    ),
                    status: Err("no value supplied for status".to_string()),
                }
            }
        }
        impl NewIncidentEventFunctionalityDataAttributes {
            pub fn functionality_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_event_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_event_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_event_id: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentEventFunctionalityDataAttributesStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventFunctionalityDataAttributes>
        for super::NewIncidentEventFunctionalityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventFunctionalityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    functionality_id: value.functionality_id?,
                    incident_event_id: value.incident_event_id?,
                    status: value.status?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventFunctionalityDataAttributes>
        for NewIncidentEventFunctionalityDataAttributes {
            fn from(value: super::NewIncidentEventFunctionalityDataAttributes) -> Self {
                Self {
                    functionality_id: Ok(value.functionality_id),
                    incident_event_id: Ok(value.incident_event_id),
                    status: Ok(value.status),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventService {
            data: ::std::result::Result<
                super::NewIncidentEventServiceData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventService {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentEventService {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventServiceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventService>
        for super::NewIncidentEventService {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventService,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventService>
        for NewIncidentEventService {
            fn from(value: super::NewIncidentEventService) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventServiceData {
            attributes: ::std::result::Result<
                super::NewIncidentEventServiceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentEventServiceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventServiceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentEventServiceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventServiceDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentEventServiceDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventServiceData>
        for super::NewIncidentEventServiceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventServiceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventServiceData>
        for NewIncidentEventServiceData {
            fn from(value: super::NewIncidentEventServiceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentEventServiceDataAttributes {
            incident_event_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            service_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::NewIncidentEventServiceDataAttributesStatus,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentEventServiceDataAttributes {
            fn default() -> Self {
                Self {
                    incident_event_id: Err(
                        "no value supplied for incident_event_id".to_string(),
                    ),
                    service_id: Err("no value supplied for service_id".to_string()),
                    status: Err("no value supplied for status".to_string()),
                }
            }
        }
        impl NewIncidentEventServiceDataAttributes {
            pub fn incident_event_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_event_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_event_id: {e}"
                        )
                    });
                self
            }
            pub fn service_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.service_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_id: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentEventServiceDataAttributesStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentEventServiceDataAttributes>
        for super::NewIncidentEventServiceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentEventServiceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_event_id: value.incident_event_id?,
                    service_id: value.service_id?,
                    status: value.status?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentEventServiceDataAttributes>
        for NewIncidentEventServiceDataAttributes {
            fn from(value: super::NewIncidentEventServiceDataAttributes) -> Self {
                Self {
                    incident_event_id: Ok(value.incident_event_id),
                    service_id: Ok(value.service_id),
                    status: Ok(value.status),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentFeedback {
            data: ::std::result::Result<
                super::NewIncidentFeedbackData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentFeedback {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentFeedback {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentFeedbackData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentFeedback>
        for super::NewIncidentFeedback {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentFeedback,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentFeedback> for NewIncidentFeedback {
            fn from(value: super::NewIncidentFeedback) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentFeedbackData {
            attributes: ::std::result::Result<
                super::NewIncidentFeedbackDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentFeedbackDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentFeedbackData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentFeedbackData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentFeedbackDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentFeedbackDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentFeedbackData>
        for super::NewIncidentFeedbackData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentFeedbackData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentFeedbackData>
        for NewIncidentFeedbackData {
            fn from(value: super::NewIncidentFeedbackData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentFeedbackDataAttributes {
            anonymous: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            feedback: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            rating: ::std::result::Result<
                super::NewIncidentFeedbackDataAttributesRating,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentFeedbackDataAttributes {
            fn default() -> Self {
                Self {
                    anonymous: Ok(Default::default()),
                    feedback: Err("no value supplied for feedback".to_string()),
                    rating: Err("no value supplied for rating".to_string()),
                }
            }
        }
        impl NewIncidentFeedbackDataAttributes {
            pub fn anonymous<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.anonymous = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for anonymous: {e}")
                    });
                self
            }
            pub fn feedback<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.feedback = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for feedback: {e}")
                    });
                self
            }
            pub fn rating<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentFeedbackDataAttributesRating,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rating = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rating: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentFeedbackDataAttributes>
        for super::NewIncidentFeedbackDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentFeedbackDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    anonymous: value.anonymous?,
                    feedback: value.feedback?,
                    rating: value.rating?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentFeedbackDataAttributes>
        for NewIncidentFeedbackDataAttributes {
            fn from(value: super::NewIncidentFeedbackDataAttributes) -> Self {
                Self {
                    anonymous: Ok(value.anonymous),
                    feedback: Ok(value.feedback),
                    rating: Ok(value.rating),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentFormFieldSelection {
            data: ::std::result::Result<
                super::NewIncidentFormFieldSelectionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentFormFieldSelection {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentFormFieldSelection {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentFormFieldSelectionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentFormFieldSelection>
        for super::NewIncidentFormFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentFormFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentFormFieldSelection>
        for NewIncidentFormFieldSelection {
            fn from(value: super::NewIncidentFormFieldSelection) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentFormFieldSelectionData {
            attributes: ::std::result::Result<
                super::NewIncidentFormFieldSelectionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentFormFieldSelectionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentFormFieldSelectionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentFormFieldSelectionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentFormFieldSelectionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentFormFieldSelectionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentFormFieldSelectionData>
        for super::NewIncidentFormFieldSelectionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentFormFieldSelectionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentFormFieldSelectionData>
        for NewIncidentFormFieldSelectionData {
            fn from(value: super::NewIncidentFormFieldSelectionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentFormFieldSelectionDataAttributes {
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentFormFieldSelectionDataAttributes {
            fn default() -> Self {
                Self {
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentFormFieldSelectionDataAttributes {
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentFormFieldSelectionDataAttributes>
        for super::NewIncidentFormFieldSelectionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentFormFieldSelectionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form_field_id: value.form_field_id?,
                    incident_id: value.incident_id?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentFormFieldSelectionDataAttributes>
        for NewIncidentFormFieldSelectionDataAttributes {
            fn from(value: super::NewIncidentFormFieldSelectionDataAttributes) -> Self {
                Self {
                    form_field_id: Ok(value.form_field_id),
                    incident_id: Ok(value.incident_id),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSet {
            data: ::std::result::Result<
                super::NewIncidentPermissionSetData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSet {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentPermissionSet {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentPermissionSetData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSet>
        for super::NewIncidentPermissionSet {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSet,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSet>
        for NewIncidentPermissionSet {
            fn from(value: super::NewIncidentPermissionSet) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetBoolean {
            data: ::std::result::Result<
                super::NewIncidentPermissionSetBooleanData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetBoolean {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentPermissionSetBoolean {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentPermissionSetBooleanData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetBoolean>
        for super::NewIncidentPermissionSetBoolean {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetBoolean,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetBoolean>
        for NewIncidentPermissionSetBoolean {
            fn from(value: super::NewIncidentPermissionSetBoolean) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetBooleanData {
            attributes: ::std::result::Result<
                super::NewIncidentPermissionSetBooleanDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentPermissionSetBooleanDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetBooleanData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentPermissionSetBooleanData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetBooleanDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetBooleanDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetBooleanData>
        for super::NewIncidentPermissionSetBooleanData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetBooleanData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetBooleanData>
        for NewIncidentPermissionSetBooleanData {
            fn from(value: super::NewIncidentPermissionSetBooleanData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetBooleanDataAttributes {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            incident_permission_set_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewIncidentPermissionSetBooleanDataAttributesKind,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            severity_params: ::std::result::Result<
                ::std::option::Option<
                    super::NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetBooleanDataAttributes {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                    incident_permission_set_id: Err(
                        "no value supplied for incident_permission_set_id".to_string(),
                    ),
                    kind: Err("no value supplied for kind".to_string()),
                    private: Ok(Default::default()),
                    severity_params: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentPermissionSetBooleanDataAttributes {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetBooleanDataAttributesKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn severity_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severity_params: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetBooleanDataAttributes>
        for super::NewIncidentPermissionSetBooleanDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetBooleanDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    enabled: value.enabled?,
                    incident_permission_set_id: value.incident_permission_set_id?,
                    kind: value.kind?,
                    private: value.private?,
                    severity_params: value.severity_params?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetBooleanDataAttributes>
        for NewIncidentPermissionSetBooleanDataAttributes {
            fn from(
                value: super::NewIncidentPermissionSetBooleanDataAttributes,
            ) -> Self {
                Self {
                    enabled: Ok(value.enabled),
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    kind: Ok(value.kind),
                    private: Ok(value.private),
                    severity_params: Ok(value.severity_params),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
            applies_to_unassigned: ::std::result::Result<bool, ::std::string::String>,
            create_enabled: ::std::result::Result<bool, ::std::string::String>,
            fully_enabled: ::std::result::Result<bool, ::std::string::String>,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
            fn default() -> Self {
                Self {
                    applies_to_unassigned: Ok(super::defaults::default_bool::<true>()),
                    create_enabled: Ok(Default::default()),
                    fully_enabled: Ok(super::defaults::default_bool::<true>()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
            pub fn applies_to_unassigned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.applies_to_unassigned = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for applies_to_unassigned: {e}"
                        )
                    });
                self
            }
            pub fn create_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.create_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for create_enabled: {e}"
                        )
                    });
                self
            }
            pub fn fully_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fully_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fully_enabled: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
        > for super::NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    applies_to_unassigned: value.applies_to_unassigned?,
                    create_enabled: value.create_enabled?,
                    fully_enabled: value.fully_enabled?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
        > for NewIncidentPermissionSetBooleanDataAttributesSeverityParams {
            fn from(
                value: super::NewIncidentPermissionSetBooleanDataAttributesSeverityParams,
            ) -> Self {
                Self {
                    applies_to_unassigned: Ok(value.applies_to_unassigned),
                    create_enabled: Ok(value.create_enabled),
                    fully_enabled: Ok(value.fully_enabled),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetData {
            attributes: ::std::result::Result<
                super::NewIncidentPermissionSetDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentPermissionSetDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentPermissionSetData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentPermissionSetDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetData>
        for super::NewIncidentPermissionSetData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetData>
        for NewIncidentPermissionSetData {
            fn from(value: super::NewIncidentPermissionSetData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            private_incident_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem,
                >,
                ::std::string::String,
            >,
            public_incident_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    private_incident_permissions: Ok(Default::default()),
                    public_incident_permissions: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentPermissionSetDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn private_incident_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private_incident_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for private_incident_permissions: {e}"
                        )
                    });
                self
            }
            pub fn public_incident_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.public_incident_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_incident_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetDataAttributes>
        for super::NewIncidentPermissionSetDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    private_incident_permissions: value.private_incident_permissions?,
                    public_incident_permissions: value.public_incident_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetDataAttributes>
        for NewIncidentPermissionSetDataAttributes {
            fn from(value: super::NewIncidentPermissionSetDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    private_incident_permissions: Ok(value.private_incident_permissions),
                    public_incident_permissions: Ok(value.public_incident_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetResource {
            data: ::std::result::Result<
                super::NewIncidentPermissionSetResourceData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetResource {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentPermissionSetResource {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentPermissionSetResourceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetResource>
        for super::NewIncidentPermissionSetResource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetResource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetResource>
        for NewIncidentPermissionSetResource {
            fn from(value: super::NewIncidentPermissionSetResource) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetResourceData {
            attributes: ::std::result::Result<
                super::NewIncidentPermissionSetResourceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentPermissionSetResourceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetResourceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentPermissionSetResourceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetResourceDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetResourceDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetResourceData>
        for super::NewIncidentPermissionSetResourceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetResourceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetResourceData>
        for NewIncidentPermissionSetResourceData {
            fn from(value: super::NewIncidentPermissionSetResourceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetResourceDataAttributes {
            incident_permission_set_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewIncidentPermissionSetResourceDataAttributesKind,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            resource_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resource_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            severity_params: ::std::result::Result<
                ::std::option::Option<
                    super::NewIncidentPermissionSetResourceDataAttributesSeverityParams,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentPermissionSetResourceDataAttributes {
            fn default() -> Self {
                Self {
                    incident_permission_set_id: Err(
                        "no value supplied for incident_permission_set_id".to_string(),
                    ),
                    kind: Err("no value supplied for kind".to_string()),
                    private: Ok(Default::default()),
                    resource_id: Ok(Default::default()),
                    resource_type: Ok(Default::default()),
                    severity_params: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentPermissionSetResourceDataAttributes {
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentPermissionSetResourceDataAttributesKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn resource_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resource_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource_id: {e}")
                    });
                self
            }
            pub fn resource_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resource_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource_type: {e}")
                    });
                self
            }
            pub fn severity_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentPermissionSetResourceDataAttributesSeverityParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severity_params: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentPermissionSetResourceDataAttributes>
        for super::NewIncidentPermissionSetResourceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetResourceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_permission_set_id: value.incident_permission_set_id?,
                    kind: value.kind?,
                    private: value.private?,
                    resource_id: value.resource_id?,
                    resource_type: value.resource_type?,
                    severity_params: value.severity_params?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentPermissionSetResourceDataAttributes>
        for NewIncidentPermissionSetResourceDataAttributes {
            fn from(
                value: super::NewIncidentPermissionSetResourceDataAttributes,
            ) -> Self {
                Self {
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    kind: Ok(value.kind),
                    private: Ok(value.private),
                    resource_id: Ok(value.resource_id),
                    resource_type: Ok(value.resource_type),
                    severity_params: Ok(value.severity_params),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentPermissionSetResourceDataAttributesSeverityParams {
            applies_to_unassigned: ::std::result::Result<bool, ::std::string::String>,
            create_enabled: ::std::result::Result<bool, ::std::string::String>,
            fully_enabled: ::std::result::Result<bool, ::std::string::String>,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewIncidentPermissionSetResourceDataAttributesSeverityParams {
            fn default() -> Self {
                Self {
                    applies_to_unassigned: Ok(super::defaults::default_bool::<true>()),
                    create_enabled: Ok(Default::default()),
                    fully_enabled: Ok(super::defaults::default_bool::<true>()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentPermissionSetResourceDataAttributesSeverityParams {
            pub fn applies_to_unassigned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.applies_to_unassigned = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for applies_to_unassigned: {e}"
                        )
                    });
                self
            }
            pub fn create_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.create_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for create_enabled: {e}"
                        )
                    });
                self
            }
            pub fn fully_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fully_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fully_enabled: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewIncidentPermissionSetResourceDataAttributesSeverityParams,
        > for super::NewIncidentPermissionSetResourceDataAttributesSeverityParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentPermissionSetResourceDataAttributesSeverityParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    applies_to_unassigned: value.applies_to_unassigned?,
                    create_enabled: value.create_enabled?,
                    fully_enabled: value.fully_enabled?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewIncidentPermissionSetResourceDataAttributesSeverityParams,
        > for NewIncidentPermissionSetResourceDataAttributesSeverityParams {
            fn from(
                value: super::NewIncidentPermissionSetResourceDataAttributesSeverityParams,
            ) -> Self {
                Self {
                    applies_to_unassigned: Ok(value.applies_to_unassigned),
                    create_enabled: Ok(value.create_enabled),
                    fully_enabled: Ok(value.fully_enabled),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentRole {
            data: ::std::result::Result<
                super::NewIncidentRoleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentRole {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentRole {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentRoleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentRole> for super::NewIncidentRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentRole> for NewIncidentRole {
            fn from(value: super::NewIncidentRole) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentRoleData {
            attributes: ::std::result::Result<
                super::NewIncidentRoleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentRoleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentRoleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentRoleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentRoleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentRoleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentRoleData>
        for super::NewIncidentRoleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentRoleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentRoleData> for NewIncidentRoleData {
            fn from(value: super::NewIncidentRoleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentRoleDataAttributes {
            allow_multi_user_assignment: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            optional: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentRoleDataAttributes {
            fn default() -> Self {
                Self {
                    allow_multi_user_assignment: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    optional: Ok(Default::default()),
                    position: Ok(Default::default()),
                    summary: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentRoleDataAttributes {
            pub fn allow_multi_user_assignment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.allow_multi_user_assignment = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for allow_multi_user_assignment: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn optional<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.optional = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for optional: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentRoleDataAttributes>
        for super::NewIncidentRoleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentRoleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    allow_multi_user_assignment: value.allow_multi_user_assignment?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                    optional: value.optional?,
                    position: value.position?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentRoleDataAttributes>
        for NewIncidentRoleDataAttributes {
            fn from(value: super::NewIncidentRoleDataAttributes) -> Self {
                Self {
                    allow_multi_user_assignment: Ok(value.allow_multi_user_assignment),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    optional: Ok(value.optional),
                    position: Ok(value.position),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentRoleTask {
            data: ::std::result::Result<
                super::NewIncidentRoleTaskData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentRoleTask {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentRoleTask {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentRoleTaskData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentRoleTask>
        for super::NewIncidentRoleTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentRoleTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentRoleTask> for NewIncidentRoleTask {
            fn from(value: super::NewIncidentRoleTask) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentRoleTaskData {
            attributes: ::std::result::Result<
                super::NewIncidentRoleTaskDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentRoleTaskDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentRoleTaskData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentRoleTaskData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentRoleTaskDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentRoleTaskDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentRoleTaskData>
        for super::NewIncidentRoleTaskData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentRoleTaskData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentRoleTaskData>
        for NewIncidentRoleTaskData {
            fn from(value: super::NewIncidentRoleTaskData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentRoleTaskDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::NewIncidentRoleTaskDataAttributesPriority>,
                ::std::string::String,
            >,
            task: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewIncidentRoleTaskDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    incident_role_id: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    task: Err("no value supplied for task".to_string()),
                }
            }
        }
        impl NewIncidentRoleTaskDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentRoleTaskDataAttributesPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentRoleTaskDataAttributes>
        for super::NewIncidentRoleTaskDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentRoleTaskDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    incident_role_id: value.incident_role_id?,
                    priority: value.priority?,
                    task: value.task?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentRoleTaskDataAttributes>
        for NewIncidentRoleTaskDataAttributes {
            fn from(value: super::NewIncidentRoleTaskDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    incident_role_id: Ok(value.incident_role_id),
                    priority: Ok(value.priority),
                    task: Ok(value.task),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentStatusPageEvent {
            data: ::std::result::Result<
                super::NewIncidentStatusPageEventData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentStatusPageEvent {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentStatusPageEvent {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentStatusPageEventData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentStatusPageEvent>
        for super::NewIncidentStatusPageEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentStatusPageEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentStatusPageEvent>
        for NewIncidentStatusPageEvent {
            fn from(value: super::NewIncidentStatusPageEvent) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentStatusPageEventData {
            attributes: ::std::result::Result<
                super::NewIncidentStatusPageEventDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentStatusPageEventDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentStatusPageEventData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentStatusPageEventData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewIncidentStatusPageEventDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentStatusPageEventDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentStatusPageEventData>
        for super::NewIncidentStatusPageEventData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentStatusPageEventData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentStatusPageEventData>
        for NewIncidentStatusPageEventData {
            fn from(value: super::NewIncidentStatusPageEventData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentStatusPageEventDataAttributes {
            event: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_subscribers: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            should_tweet: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::NewIncidentStatusPageEventDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            status_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentStatusPageEventDataAttributes {
            fn default() -> Self {
                Self {
                    event: Err("no value supplied for event".to_string()),
                    notify_subscribers: Ok(Default::default()),
                    should_tweet: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    status_page_id: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentStatusPageEventDataAttributes {
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn should_tweet<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_tweet = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for should_tweet: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewIncidentStatusPageEventDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn status_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentStatusPageEventDataAttributes>
        for super::NewIncidentStatusPageEventDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentStatusPageEventDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    event: value.event?,
                    notify_subscribers: value.notify_subscribers?,
                    should_tweet: value.should_tweet?,
                    started_at: value.started_at?,
                    status: value.status?,
                    status_page_id: value.status_page_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentStatusPageEventDataAttributes>
        for NewIncidentStatusPageEventDataAttributes {
            fn from(value: super::NewIncidentStatusPageEventDataAttributes) -> Self {
                Self {
                    event: Ok(value.event),
                    notify_subscribers: Ok(value.notify_subscribers),
                    should_tweet: Ok(value.should_tweet),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    status_page_id: Ok(value.status_page_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentSubStatus {
            data: ::std::result::Result<
                super::NewIncidentSubStatusData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentSubStatus {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentSubStatus {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentSubStatusData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentSubStatus>
        for super::NewIncidentSubStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentSubStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentSubStatus> for NewIncidentSubStatus {
            fn from(value: super::NewIncidentSubStatus) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentSubStatusData {
            attributes: ::std::result::Result<
                super::NewIncidentSubStatusDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentSubStatusDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentSubStatusData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentSubStatusData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentSubStatusDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentSubStatusDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentSubStatusData>
        for super::NewIncidentSubStatusData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentSubStatusData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentSubStatusData>
        for NewIncidentSubStatusData {
            fn from(value: super::NewIncidentSubStatusData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentSubStatusDataAttributes {
            assigned_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            assigned_by_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentSubStatusDataAttributes {
            fn default() -> Self {
                Self {
                    assigned_at: Err("no value supplied for assigned_at".to_string()),
                    assigned_by_user_id: Ok(Default::default()),
                    sub_status_id: Err("no value supplied for sub_status_id".to_string()),
                }
            }
        }
        impl NewIncidentSubStatusDataAttributes {
            pub fn assigned_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for assigned_at: {e}")
                    });
                self
            }
            pub fn assigned_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentSubStatusDataAttributes>
        for super::NewIncidentSubStatusDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentSubStatusDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_at: value.assigned_at?,
                    assigned_by_user_id: value.assigned_by_user_id?,
                    sub_status_id: value.sub_status_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentSubStatusDataAttributes>
        for NewIncidentSubStatusDataAttributes {
            fn from(value: super::NewIncidentSubStatusDataAttributes) -> Self {
                Self {
                    assigned_at: Ok(value.assigned_at),
                    assigned_by_user_id: Ok(value.assigned_by_user_id),
                    sub_status_id: Ok(value.sub_status_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentType {
            data: ::std::result::Result<
                super::NewIncidentTypeData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentType {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewIncidentType {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentTypeData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentType> for super::NewIncidentType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewIncidentType> for NewIncidentType {
            fn from(value: super::NewIncidentType) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentTypeData {
            attributes: ::std::result::Result<
                super::NewIncidentTypeDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewIncidentTypeDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentTypeData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewIncidentTypeData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentTypeDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewIncidentTypeDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentTypeData>
        for super::NewIncidentTypeData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentTypeData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentTypeData> for NewIncidentTypeData {
            fn from(value: super::NewIncidentTypeData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentTypeDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewIncidentTypeDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewIncidentTypeDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewIncidentTypeDataAttributesSlackChannelsItem,
                    >,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewIncidentTypeDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl NewIncidentTypeDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewIncidentTypeDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewIncidentTypeDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewIncidentTypeDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentTypeDataAttributes>
        for super::NewIncidentTypeDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentTypeDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    properties: value.properties?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentTypeDataAttributes>
        for NewIncidentTypeDataAttributes {
            fn from(value: super::NewIncidentTypeDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentTypeDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewIncidentTypeDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewIncidentTypeDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentTypeDataAttributesPropertiesItem>
        for super::NewIncidentTypeDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentTypeDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentTypeDataAttributesPropertiesItem>
        for NewIncidentTypeDataAttributesPropertiesItem {
            fn from(value: super::NewIncidentTypeDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentTypeDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewIncidentTypeDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewIncidentTypeDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentTypeDataAttributesSlackAliasesItem>
        for super::NewIncidentTypeDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentTypeDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentTypeDataAttributesSlackAliasesItem>
        for NewIncidentTypeDataAttributesSlackAliasesItem {
            fn from(
                value: super::NewIncidentTypeDataAttributesSlackAliasesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewIncidentTypeDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewIncidentTypeDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewIncidentTypeDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewIncidentTypeDataAttributesSlackChannelsItem>
        for super::NewIncidentTypeDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewIncidentTypeDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewIncidentTypeDataAttributesSlackChannelsItem>
        for NewIncidentTypeDataAttributesSlackChannelsItem {
            fn from(
                value: super::NewIncidentTypeDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewLiveCallRouter {
            data: ::std::result::Result<
                super::NewLiveCallRouterData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewLiveCallRouter {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewLiveCallRouter {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewLiveCallRouterData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewLiveCallRouter> for super::NewLiveCallRouter {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewLiveCallRouter,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewLiveCallRouter> for NewLiveCallRouter {
            fn from(value: super::NewLiveCallRouter) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewLiveCallRouterData {
            attributes: ::std::result::Result<
                super::NewLiveCallRouterDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewLiveCallRouterDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewLiveCallRouterData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewLiveCallRouterData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewLiveCallRouterDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewLiveCallRouterDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewLiveCallRouterData>
        for super::NewLiveCallRouterData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewLiveCallRouterData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewLiveCallRouterData>
        for NewLiveCallRouterData {
            fn from(value: super::NewLiveCallRouterData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewLiveCallRouterDataAttributes {
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            caller_greeting: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            calling_tree_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            calling_tree_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            country_code: ::std::result::Result<
                super::NewLiveCallRouterDataAttributesCountryCode,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            escalation_level_delay_in_seconds: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            escalation_policy_trigger_params: ::std::result::Result<
                ::std::option::Option<
                    super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
                >,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::NewLiveCallRouterDataAttributesKind,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            paging_targets: ::std::result::Result<
                ::std::vec::Vec<super::NewLiveCallRouterDataAttributesPagingTargetsItem>,
                ::std::string::String,
            >,
            phone_number: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            phone_type: ::std::result::Result<
                super::NewLiveCallRouterDataAttributesPhoneType,
                ::std::string::String,
            >,
            sent_to_voicemail_delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            should_auto_resolve_alert_on_call_end: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            should_redirect_to_voicemail_on_no_answer: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            voicemail_greeting: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            waiting_music_url: ::std::result::Result<
                ::std::option::Option<
                    super::NewLiveCallRouterDataAttributesWaitingMusicUrl,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewLiveCallRouterDataAttributes {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Ok(Default::default()),
                    caller_greeting: Ok(Default::default()),
                    calling_tree_enabled: Ok(Default::default()),
                    calling_tree_prompt: Ok(Default::default()),
                    country_code: Err("no value supplied for country_code".to_string()),
                    enabled: Ok(Default::default()),
                    escalation_level_delay_in_seconds: Ok(Default::default()),
                    escalation_policy_trigger_params: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    paging_targets: Err(
                        "no value supplied for paging_targets".to_string(),
                    ),
                    phone_number: Err("no value supplied for phone_number".to_string()),
                    phone_type: Err("no value supplied for phone_type".to_string()),
                    sent_to_voicemail_delay: Ok(Default::default()),
                    should_auto_resolve_alert_on_call_end: Ok(Default::default()),
                    should_redirect_to_voicemail_on_no_answer: Ok(Default::default()),
                    voicemail_greeting: Err(
                        "no value supplied for voicemail_greeting".to_string(),
                    ),
                    waiting_music_url: Ok(Default::default()),
                }
            }
        }
        impl NewLiveCallRouterDataAttributes {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn caller_greeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.caller_greeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for caller_greeting: {e}"
                        )
                    });
                self
            }
            pub fn calling_tree_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.calling_tree_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for calling_tree_enabled: {e}"
                        )
                    });
                self
            }
            pub fn calling_tree_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.calling_tree_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for calling_tree_prompt: {e}"
                        )
                    });
                self
            }
            pub fn country_code<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewLiveCallRouterDataAttributesCountryCode,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.country_code = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for country_code: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn escalation_level_delay_in_seconds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_level_delay_in_seconds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_level_delay_in_seconds: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_trigger_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_trigger_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_trigger_params: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewLiveCallRouterDataAttributesKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn paging_targets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewLiveCallRouterDataAttributesPagingTargetsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_targets = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_targets: {e}"
                        )
                    });
                self
            }
            pub fn phone_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_number = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_number: {e}")
                    });
                self
            }
            pub fn phone_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewLiveCallRouterDataAttributesPhoneType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.phone_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_type: {e}")
                    });
                self
            }
            pub fn sent_to_voicemail_delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.sent_to_voicemail_delay = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sent_to_voicemail_delay: {e}"
                        )
                    });
                self
            }
            pub fn should_auto_resolve_alert_on_call_end<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_auto_resolve_alert_on_call_end = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_auto_resolve_alert_on_call_end: {e}"
                        )
                    });
                self
            }
            pub fn should_redirect_to_voicemail_on_no_answer<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_redirect_to_voicemail_on_no_answer = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_redirect_to_voicemail_on_no_answer: {e}"
                        )
                    });
                self
            }
            pub fn voicemail_greeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.voicemail_greeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for voicemail_greeting: {e}"
                        )
                    });
                self
            }
            pub fn waiting_music_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewLiveCallRouterDataAttributesWaitingMusicUrl,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.waiting_music_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for waiting_music_url: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewLiveCallRouterDataAttributes>
        for super::NewLiveCallRouterDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewLiveCallRouterDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    caller_greeting: value.caller_greeting?,
                    calling_tree_enabled: value.calling_tree_enabled?,
                    calling_tree_prompt: value.calling_tree_prompt?,
                    country_code: value.country_code?,
                    enabled: value.enabled?,
                    escalation_level_delay_in_seconds: value
                        .escalation_level_delay_in_seconds?,
                    escalation_policy_trigger_params: value
                        .escalation_policy_trigger_params?,
                    kind: value.kind?,
                    name: value.name?,
                    paging_targets: value.paging_targets?,
                    phone_number: value.phone_number?,
                    phone_type: value.phone_type?,
                    sent_to_voicemail_delay: value.sent_to_voicemail_delay?,
                    should_auto_resolve_alert_on_call_end: value
                        .should_auto_resolve_alert_on_call_end?,
                    should_redirect_to_voicemail_on_no_answer: value
                        .should_redirect_to_voicemail_on_no_answer?,
                    voicemail_greeting: value.voicemail_greeting?,
                    waiting_music_url: value.waiting_music_url?,
                })
            }
        }
        impl ::std::convert::From<super::NewLiveCallRouterDataAttributes>
        for NewLiveCallRouterDataAttributes {
            fn from(value: super::NewLiveCallRouterDataAttributes) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    caller_greeting: Ok(value.caller_greeting),
                    calling_tree_enabled: Ok(value.calling_tree_enabled),
                    calling_tree_prompt: Ok(value.calling_tree_prompt),
                    country_code: Ok(value.country_code),
                    enabled: Ok(value.enabled),
                    escalation_level_delay_in_seconds: Ok(
                        value.escalation_level_delay_in_seconds,
                    ),
                    escalation_policy_trigger_params: Ok(
                        value.escalation_policy_trigger_params,
                    ),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    paging_targets: Ok(value.paging_targets),
                    phone_number: Ok(value.phone_number),
                    phone_type: Ok(value.phone_type),
                    sent_to_voicemail_delay: Ok(value.sent_to_voicemail_delay),
                    should_auto_resolve_alert_on_call_end: Ok(
                        value.should_auto_resolve_alert_on_call_end,
                    ),
                    should_redirect_to_voicemail_on_no_answer: Ok(
                        value.should_redirect_to_voicemail_on_no_answer,
                    ),
                    voicemail_greeting: Ok(value.voicemail_greeting),
                    waiting_music_url: Ok(value.waiting_music_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
        > for super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
        > for NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            fn from(
                value: super::NewLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewLiveCallRouterDataAttributesPagingTargetsItem {
            alert_urgency_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::NewLiveCallRouterDataAttributesPagingTargetsItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewLiveCallRouterDataAttributesPagingTargetsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Err(
                        "no value supplied for alert_urgency_id".to_string(),
                    ),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewLiveCallRouterDataAttributesPagingTargetsItem {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewLiveCallRouterDataAttributesPagingTargetsItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewLiveCallRouterDataAttributesPagingTargetsItem>
        for super::NewLiveCallRouterDataAttributesPagingTargetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewLiveCallRouterDataAttributesPagingTargetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewLiveCallRouterDataAttributesPagingTargetsItem,
        > for NewLiveCallRouterDataAttributesPagingTargetsItem {
            fn from(
                value: super::NewLiveCallRouterDataAttributesPagingTargetsItem,
            ) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallPayReport {
            data: ::std::result::Result<
                super::NewOnCallPayReportData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallPayReport {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewOnCallPayReport {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallPayReportData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallPayReport> for super::NewOnCallPayReport {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallPayReport,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewOnCallPayReport> for NewOnCallPayReport {
            fn from(value: super::NewOnCallPayReport) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallPayReportData {
            attributes: ::std::result::Result<
                super::NewOnCallPayReportDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewOnCallPayReportDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallPayReportData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewOnCallPayReportData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallPayReportDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallPayReportDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallPayReportData>
        for super::NewOnCallPayReportData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallPayReportData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewOnCallPayReportData>
        for NewOnCallPayReportData {
            fn from(value: super::NewOnCallPayReportData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallPayReportDataAttributes {
            end_date: ::std::result::Result<
                ::chrono::naive::NaiveDate,
                ::std::string::String,
            >,
            schedule_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            start_date: ::std::result::Result<
                ::chrono::naive::NaiveDate,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            use_responders_time_zone: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallPayReportDataAttributes {
            fn default() -> Self {
                Self {
                    end_date: Err("no value supplied for end_date".to_string()),
                    schedule_ids: Ok(Default::default()),
                    start_date: Err("no value supplied for start_date".to_string()),
                    time_zone: Ok(Default::default()),
                    use_responders_time_zone: Ok(Default::default()),
                }
            }
        }
        impl NewOnCallPayReportDataAttributes {
            pub fn end_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::naive::NaiveDate>,
                T::Error: ::std::fmt::Display,
            {
                self.end_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_date: {e}")
                    });
                self
            }
            pub fn schedule_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_ids: {e}")
                    });
                self
            }
            pub fn start_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::naive::NaiveDate>,
                T::Error: ::std::fmt::Display,
            {
                self.start_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_date: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn use_responders_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.use_responders_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for use_responders_time_zone: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallPayReportDataAttributes>
        for super::NewOnCallPayReportDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallPayReportDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_date: value.end_date?,
                    schedule_ids: value.schedule_ids?,
                    start_date: value.start_date?,
                    time_zone: value.time_zone?,
                    use_responders_time_zone: value.use_responders_time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::NewOnCallPayReportDataAttributes>
        for NewOnCallPayReportDataAttributes {
            fn from(value: super::NewOnCallPayReportDataAttributes) -> Self {
                Self {
                    end_date: Ok(value.end_date),
                    schedule_ids: Ok(value.schedule_ids),
                    start_date: Ok(value.start_date),
                    time_zone: Ok(value.time_zone),
                    use_responders_time_zone: Ok(value.use_responders_time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallRole {
            data: ::std::result::Result<super::NewOnCallRoleData, ::std::string::String>,
        }
        impl ::std::default::Default for NewOnCallRole {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewOnCallRole {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallRoleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallRole> for super::NewOnCallRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewOnCallRole> for NewOnCallRole {
            fn from(value: super::NewOnCallRole) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallRoleData {
            attributes: ::std::result::Result<
                super::NewOnCallRoleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewOnCallRoleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallRoleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewOnCallRoleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallRoleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallRoleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallRoleData> for super::NewOnCallRoleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallRoleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewOnCallRoleData> for NewOnCallRoleData {
            fn from(value: super::NewOnCallRoleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallRoleDataAttributes {
            alert_fields_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesAlertFieldsPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_groups_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesAlertGroupsPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_routing_rules_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_sources_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesAlertSourcesPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_urgency_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem,
                >,
                ::std::string::String,
            >,
            alerts_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewOnCallRoleDataAttributesAlertsPermissionsItem>,
                ::std::string::String,
            >,
            api_keys_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesApiKeysPermissionsItem,
                >,
                ::std::string::String,
            >,
            audits_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewOnCallRoleDataAttributesAuditsPermissionsItem>,
                ::std::string::String,
            >,
            catalogs_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesCatalogsPermissionsItem,
                >,
                ::std::string::String,
            >,
            contacts_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesContactsPermissionsItem,
                >,
                ::std::string::String,
            >,
            escalation_policies_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem,
                >,
                ::std::string::String,
            >,
            groups_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewOnCallRoleDataAttributesGroupsPermissionsItem>,
                ::std::string::String,
            >,
            heartbeats_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesHeartbeatsPermissionsItem,
                >,
                ::std::string::String,
            >,
            integrations_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesIntegrationsPermissionsItem,
                >,
                ::std::string::String,
            >,
            invitations_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesInvitationsPermissionsItem,
                >,
                ::std::string::String,
            >,
            live_call_routing_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            on_call_readiness_report_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem,
                >,
                ::std::string::String,
            >,
            on_call_roles_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesOnCallRolesPermissionsItem,
                >,
                ::std::string::String,
            >,
            schedule_override_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesScheduleOverridePermissionsItem,
                >,
                ::std::string::String,
            >,
            schedules_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesSchedulesPermissionsItem,
                >,
                ::std::string::String,
            >,
            services_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesServicesPermissionsItem,
                >,
                ::std::string::String,
            >,
            system_role: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            webhooks_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesWebhooksPermissionsItem,
                >,
                ::std::string::String,
            >,
            workflows_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewOnCallRoleDataAttributesWorkflowsPermissionsItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallRoleDataAttributes {
            fn default() -> Self {
                Self {
                    alert_fields_permissions: Ok(Default::default()),
                    alert_groups_permissions: Ok(Default::default()),
                    alert_routing_rules_permissions: Ok(Default::default()),
                    alert_sources_permissions: Ok(Default::default()),
                    alert_urgency_permissions: Ok(Default::default()),
                    alerts_permissions: Ok(Default::default()),
                    api_keys_permissions: Ok(Default::default()),
                    audits_permissions: Ok(Default::default()),
                    catalogs_permissions: Ok(Default::default()),
                    contacts_permissions: Ok(Default::default()),
                    escalation_policies_permissions: Ok(Default::default()),
                    groups_permissions: Ok(Default::default()),
                    heartbeats_permissions: Ok(Default::default()),
                    integrations_permissions: Ok(Default::default()),
                    invitations_permissions: Ok(Default::default()),
                    live_call_routing_permissions: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    on_call_readiness_report_permissions: Ok(Default::default()),
                    on_call_roles_permissions: Ok(Default::default()),
                    schedule_override_permissions: Ok(Default::default()),
                    schedules_permissions: Ok(Default::default()),
                    services_permissions: Ok(Default::default()),
                    system_role: Ok(
                        super::defaults::new_on_call_role_data_attributes_system_role(),
                    ),
                    webhooks_permissions: Ok(Default::default()),
                    workflows_permissions: Ok(Default::default()),
                }
            }
        }
        impl NewOnCallRoleDataAttributes {
            pub fn alert_fields_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAlertFieldsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_fields_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_fields_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAlertGroupsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_routing_rules_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_routing_rules_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_routing_rules_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_sources_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAlertSourcesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_sources_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_sources_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAlertUrgencyPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alerts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAlertsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn api_keys_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesApiKeysPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.api_keys_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for api_keys_permissions: {e}"
                        )
                    });
                self
            }
            pub fn audits_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesAuditsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.audits_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for audits_permissions: {e}"
                        )
                    });
                self
            }
            pub fn catalogs_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesCatalogsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalogs_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalogs_permissions: {e}"
                        )
                    });
                self
            }
            pub fn contacts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesContactsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.contacts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for contacts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policies_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesEscalationPoliciesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policies_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policies_permissions: {e}"
                        )
                    });
                self
            }
            pub fn groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesGroupsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn heartbeats_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesHeartbeatsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.heartbeats_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for heartbeats_permissions: {e}"
                        )
                    });
                self
            }
            pub fn integrations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesIntegrationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn invitations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesInvitationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.invitations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for invitations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn live_call_routing_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesLiveCallRoutingPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.live_call_routing_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for live_call_routing_permissions: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn on_call_readiness_report_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_readiness_report_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_readiness_report_permissions: {e}"
                        )
                    });
                self
            }
            pub fn on_call_roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesOnCallRolesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn schedule_override_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesScheduleOverridePermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_override_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_override_permissions: {e}"
                        )
                    });
                self
            }
            pub fn schedules_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesSchedulesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedules_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedules_permissions: {e}"
                        )
                    });
                self
            }
            pub fn services_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesServicesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_permissions: {e}"
                        )
                    });
                self
            }
            pub fn system_role<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.system_role = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_role: {e}")
                    });
                self
            }
            pub fn webhooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesWebhooksPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn workflows_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewOnCallRoleDataAttributesWorkflowsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.workflows_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflows_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallRoleDataAttributes>
        for super::NewOnCallRoleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallRoleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_fields_permissions: value.alert_fields_permissions?,
                    alert_groups_permissions: value.alert_groups_permissions?,
                    alert_routing_rules_permissions: value
                        .alert_routing_rules_permissions?,
                    alert_sources_permissions: value.alert_sources_permissions?,
                    alert_urgency_permissions: value.alert_urgency_permissions?,
                    alerts_permissions: value.alerts_permissions?,
                    api_keys_permissions: value.api_keys_permissions?,
                    audits_permissions: value.audits_permissions?,
                    catalogs_permissions: value.catalogs_permissions?,
                    contacts_permissions: value.contacts_permissions?,
                    escalation_policies_permissions: value
                        .escalation_policies_permissions?,
                    groups_permissions: value.groups_permissions?,
                    heartbeats_permissions: value.heartbeats_permissions?,
                    integrations_permissions: value.integrations_permissions?,
                    invitations_permissions: value.invitations_permissions?,
                    live_call_routing_permissions: value.live_call_routing_permissions?,
                    name: value.name?,
                    on_call_readiness_report_permissions: value
                        .on_call_readiness_report_permissions?,
                    on_call_roles_permissions: value.on_call_roles_permissions?,
                    schedule_override_permissions: value.schedule_override_permissions?,
                    schedules_permissions: value.schedules_permissions?,
                    services_permissions: value.services_permissions?,
                    system_role: value.system_role?,
                    webhooks_permissions: value.webhooks_permissions?,
                    workflows_permissions: value.workflows_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::NewOnCallRoleDataAttributes>
        for NewOnCallRoleDataAttributes {
            fn from(value: super::NewOnCallRoleDataAttributes) -> Self {
                Self {
                    alert_fields_permissions: Ok(value.alert_fields_permissions),
                    alert_groups_permissions: Ok(value.alert_groups_permissions),
                    alert_routing_rules_permissions: Ok(
                        value.alert_routing_rules_permissions,
                    ),
                    alert_sources_permissions: Ok(value.alert_sources_permissions),
                    alert_urgency_permissions: Ok(value.alert_urgency_permissions),
                    alerts_permissions: Ok(value.alerts_permissions),
                    api_keys_permissions: Ok(value.api_keys_permissions),
                    audits_permissions: Ok(value.audits_permissions),
                    catalogs_permissions: Ok(value.catalogs_permissions),
                    contacts_permissions: Ok(value.contacts_permissions),
                    escalation_policies_permissions: Ok(
                        value.escalation_policies_permissions,
                    ),
                    groups_permissions: Ok(value.groups_permissions),
                    heartbeats_permissions: Ok(value.heartbeats_permissions),
                    integrations_permissions: Ok(value.integrations_permissions),
                    invitations_permissions: Ok(value.invitations_permissions),
                    live_call_routing_permissions: Ok(
                        value.live_call_routing_permissions,
                    ),
                    name: Ok(value.name),
                    on_call_readiness_report_permissions: Ok(
                        value.on_call_readiness_report_permissions,
                    ),
                    on_call_roles_permissions: Ok(value.on_call_roles_permissions),
                    schedule_override_permissions: Ok(
                        value.schedule_override_permissions,
                    ),
                    schedules_permissions: Ok(value.schedules_permissions),
                    services_permissions: Ok(value.services_permissions),
                    system_role: Ok(value.system_role),
                    webhooks_permissions: Ok(value.webhooks_permissions),
                    workflows_permissions: Ok(value.workflows_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallShadow {
            data: ::std::result::Result<
                super::NewOnCallShadowData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallShadow {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewOnCallShadow {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallShadowData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallShadow> for super::NewOnCallShadow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallShadow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewOnCallShadow> for NewOnCallShadow {
            fn from(value: super::NewOnCallShadow) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallShadowData {
            attributes: ::std::result::Result<
                super::NewOnCallShadowDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewOnCallShadowDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallShadowData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewOnCallShadowData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallShadowDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOnCallShadowDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallShadowData>
        for super::NewOnCallShadowData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallShadowData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewOnCallShadowData> for NewOnCallShadowData {
            fn from(value: super::NewOnCallShadowData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOnCallShadowDataAttributes {
            ends_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            shadow_user_id: ::std::result::Result<i64, ::std::string::String>,
            shadowable_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            shadowable_type: ::std::result::Result<
                super::NewOnCallShadowDataAttributesShadowableType,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOnCallShadowDataAttributes {
            fn default() -> Self {
                Self {
                    ends_at: Err("no value supplied for ends_at".to_string()),
                    shadow_user_id: Err(
                        "no value supplied for shadow_user_id".to_string(),
                    ),
                    shadowable_id: Err(
                        "no value supplied for shadowable_id".to_string(),
                    ),
                    shadowable_type: Err(
                        "no value supplied for shadowable_type".to_string(),
                    ),
                    starts_at: Err("no value supplied for starts_at".to_string()),
                }
            }
        }
        impl NewOnCallShadowDataAttributes {
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn shadow_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.shadow_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shadow_user_id: {e}"
                        )
                    });
                self
            }
            pub fn shadowable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.shadowable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shadowable_id: {e}")
                    });
                self
            }
            pub fn shadowable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewOnCallShadowDataAttributesShadowableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shadowable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shadowable_type: {e}"
                        )
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOnCallShadowDataAttributes>
        for super::NewOnCallShadowDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOnCallShadowDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ends_at: value.ends_at?,
                    shadow_user_id: value.shadow_user_id?,
                    shadowable_id: value.shadowable_id?,
                    shadowable_type: value.shadowable_type?,
                    starts_at: value.starts_at?,
                })
            }
        }
        impl ::std::convert::From<super::NewOnCallShadowDataAttributes>
        for NewOnCallShadowDataAttributes {
            fn from(value: super::NewOnCallShadowDataAttributes) -> Self {
                Self {
                    ends_at: Ok(value.ends_at),
                    shadow_user_id: Ok(value.shadow_user_id),
                    shadowable_id: Ok(value.shadowable_id),
                    shadowable_type: Ok(value.shadowable_type),
                    starts_at: Ok(value.starts_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOverrideShift {
            data: ::std::result::Result<
                super::NewOverrideShiftData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOverrideShift {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewOverrideShift {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOverrideShiftData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOverrideShift> for super::NewOverrideShift {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOverrideShift,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewOverrideShift> for NewOverrideShift {
            fn from(value: super::NewOverrideShift) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOverrideShiftData {
            attributes: ::std::result::Result<
                super::NewOverrideShiftDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewOverrideShiftDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewOverrideShiftData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewOverrideShiftData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOverrideShiftDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewOverrideShiftDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOverrideShiftData>
        for super::NewOverrideShiftData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOverrideShiftData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewOverrideShiftData> for NewOverrideShiftData {
            fn from(value: super::NewOverrideShiftData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewOverrideShiftDataAttributes {
            ends_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for NewOverrideShiftDataAttributes {
            fn default() -> Self {
                Self {
                    ends_at: Err("no value supplied for ends_at".to_string()),
                    starts_at: Err("no value supplied for starts_at".to_string()),
                    user_id: Err("no value supplied for user_id".to_string()),
                }
            }
        }
        impl NewOverrideShiftDataAttributes {
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewOverrideShiftDataAttributes>
        for super::NewOverrideShiftDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewOverrideShiftDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ends_at: value.ends_at?,
                    starts_at: value.starts_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewOverrideShiftDataAttributes>
        for NewOverrideShiftDataAttributes {
            fn from(value: super::NewOverrideShiftDataAttributes) -> Self {
                Self {
                    ends_at: Ok(value.ends_at),
                    starts_at: Ok(value.starts_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPlaybook {
            data: ::std::result::Result<super::NewPlaybookData, ::std::string::String>,
        }
        impl ::std::default::Default for NewPlaybook {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewPlaybook {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPlaybookData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPlaybook> for super::NewPlaybook {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPlaybook,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewPlaybook> for NewPlaybook {
            fn from(value: super::NewPlaybook) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPlaybookData {
            attributes: ::std::result::Result<
                super::NewPlaybookDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewPlaybookDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewPlaybookData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewPlaybookData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPlaybookDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPlaybookDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPlaybookData> for super::NewPlaybookData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPlaybookData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewPlaybookData> for NewPlaybookData {
            fn from(value: super::NewPlaybookData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPlaybookDataAttributes {
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewPlaybookDataAttributes {
            fn default() -> Self {
                Self {
                    environment_ids: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl NewPlaybookDataAttributes {
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPlaybookDataAttributes>
        for super::NewPlaybookDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPlaybookDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    environment_ids: value.environment_ids?,
                    external_url: value.external_url?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                    summary: value.summary?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::NewPlaybookDataAttributes>
        for NewPlaybookDataAttributes {
            fn from(value: super::NewPlaybookDataAttributes) -> Self {
                Self {
                    environment_ids: Ok(value.environment_ids),
                    external_url: Ok(value.external_url),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                    summary: Ok(value.summary),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPlaybookTask {
            data: ::std::result::Result<
                super::NewPlaybookTaskData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewPlaybookTask {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewPlaybookTask {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPlaybookTaskData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPlaybookTask> for super::NewPlaybookTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPlaybookTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewPlaybookTask> for NewPlaybookTask {
            fn from(value: super::NewPlaybookTask) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPlaybookTaskData {
            attributes: ::std::result::Result<
                super::NewPlaybookTaskDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewPlaybookTaskDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewPlaybookTaskData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewPlaybookTaskData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPlaybookTaskDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPlaybookTaskDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPlaybookTaskData>
        for super::NewPlaybookTaskData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPlaybookTaskData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewPlaybookTaskData> for NewPlaybookTaskData {
            fn from(value: super::NewPlaybookTaskData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPlaybookTaskDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            task: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewPlaybookTaskDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    position: Ok(Default::default()),
                    task: Err("no value supplied for task".to_string()),
                }
            }
        }
        impl NewPlaybookTaskDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPlaybookTaskDataAttributes>
        for super::NewPlaybookTaskDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPlaybookTaskDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    position: value.position?,
                    task: value.task?,
                })
            }
        }
        impl ::std::convert::From<super::NewPlaybookTaskDataAttributes>
        for NewPlaybookTaskDataAttributes {
            fn from(value: super::NewPlaybookTaskDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    position: Ok(value.position),
                    task: Ok(value.task),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPostMortemTemplate {
            data: ::std::result::Result<
                super::NewPostMortemTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewPostMortemTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewPostMortemTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPostMortemTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPostMortemTemplate>
        for super::NewPostMortemTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPostMortemTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewPostMortemTemplate>
        for NewPostMortemTemplate {
            fn from(value: super::NewPostMortemTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPostMortemTemplateData {
            attributes: ::std::result::Result<
                super::NewPostMortemTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewPostMortemTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewPostMortemTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewPostMortemTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPostMortemTemplateDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPostMortemTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPostMortemTemplateData>
        for super::NewPostMortemTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPostMortemTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewPostMortemTemplateData>
        for NewPostMortemTemplateData {
            fn from(value: super::NewPostMortemTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPostMortemTemplateDataAttributes {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            format: ::std::result::Result<
                ::std::option::Option<super::NewPostMortemTemplateDataAttributesFormat>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewPostMortemTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    default: Ok(Default::default()),
                    format: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewPostMortemTemplateDataAttributes {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn format<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewPostMortemTemplateDataAttributesFormat,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.format = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for format: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPostMortemTemplateDataAttributes>
        for super::NewPostMortemTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPostMortemTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    default: value.default?,
                    format: value.format?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewPostMortemTemplateDataAttributes>
        for NewPostMortemTemplateDataAttributes {
            fn from(value: super::NewPostMortemTemplateDataAttributes) -> Self {
                Self {
                    content: Ok(value.content),
                    default: Ok(value.default),
                    format: Ok(value.format),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPulse {
            data: ::std::result::Result<super::NewPulseData, ::std::string::String>,
        }
        impl ::std::default::Default for NewPulse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewPulse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPulseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPulse> for super::NewPulse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPulse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewPulse> for NewPulse {
            fn from(value: super::NewPulse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPulseData {
            attributes: ::std::result::Result<
                super::NewPulseDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<super::NewPulseDataType, ::std::string::String>,
        }
        impl ::std::default::Default for NewPulseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewPulseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPulseDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewPulseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPulseData> for super::NewPulseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPulseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewPulseData> for NewPulseData {
            fn from(value: super::NewPulseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPulseDataAttributes {
            data: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::NewPulseDataAttributesLabelsItem>,
                >,
                ::std::string::String,
            >,
            refs: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::NewPulseDataAttributesRefsItem>,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewPulseDataAttributes {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                    ended_at: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    refs: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    source: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                }
            }
        }
        impl NewPulseDataAttributes {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::NewPulseDataAttributesLabelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn refs<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::NewPulseDataAttributesRefsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.refs = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for refs: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPulseDataAttributes>
        for super::NewPulseDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPulseDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    ended_at: value.ended_at?,
                    environment_ids: value.environment_ids?,
                    external_url: value.external_url?,
                    labels: value.labels?,
                    refs: value.refs?,
                    service_ids: value.service_ids?,
                    source: value.source?,
                    started_at: value.started_at?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::NewPulseDataAttributes>
        for NewPulseDataAttributes {
            fn from(value: super::NewPulseDataAttributes) -> Self {
                Self {
                    data: Ok(value.data),
                    ended_at: Ok(value.ended_at),
                    environment_ids: Ok(value.environment_ids),
                    external_url: Ok(value.external_url),
                    labels: Ok(value.labels),
                    refs: Ok(value.refs),
                    service_ids: Ok(value.service_ids),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPulseDataAttributesLabelsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewPulseDataAttributesLabelsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewPulseDataAttributesLabelsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPulseDataAttributesLabelsItem>
        for super::NewPulseDataAttributesLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPulseDataAttributesLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewPulseDataAttributesLabelsItem>
        for NewPulseDataAttributesLabelsItem {
            fn from(value: super::NewPulseDataAttributesLabelsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewPulseDataAttributesRefsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewPulseDataAttributesRefsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewPulseDataAttributesRefsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewPulseDataAttributesRefsItem>
        for super::NewPulseDataAttributesRefsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewPulseDataAttributesRefsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewPulseDataAttributesRefsItem>
        for NewPulseDataAttributesRefsItem {
            fn from(value: super::NewPulseDataAttributesRefsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcess {
            data: ::std::result::Result<
                super::NewRetrospectiveProcessData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcess {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcess {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveProcessData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcess>
        for super::NewRetrospectiveProcess {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcess,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcess>
        for NewRetrospectiveProcess {
            fn from(value: super::NewRetrospectiveProcess) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessData {
            attributes: ::std::result::Result<
                super::NewRetrospectiveProcessDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewRetrospectiveProcessDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcessData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveProcessDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveProcessDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessData>
        for super::NewRetrospectiveProcessData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessData>
        for NewRetrospectiveProcessData {
            fn from(value: super::NewRetrospectiveProcessData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessDataAttributes {
            copy_from: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            retrospective_process_matching_criteria: ::std::result::Result<
                ::std::option::Option<
                    super::NewRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessDataAttributes {
            fn default() -> Self {
                Self {
                    copy_from: Err("no value supplied for copy_from".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    retrospective_process_matching_criteria: Ok(Default::default()),
                }
            }
        }
        impl NewRetrospectiveProcessDataAttributes {
            pub fn copy_from<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.copy_from = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for copy_from: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn retrospective_process_matching_criteria<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_process_matching_criteria = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_process_matching_criteria: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessDataAttributes>
        for super::NewRetrospectiveProcessDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    copy_from: value.copy_from?,
                    description: value.description?,
                    name: value.name?,
                    retrospective_process_matching_criteria: value
                        .retrospective_process_matching_criteria?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessDataAttributes>
        for NewRetrospectiveProcessDataAttributes {
            fn from(value: super::NewRetrospectiveProcessDataAttributes) -> Self {
                Self {
                    copy_from: Ok(value.copy_from),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    retrospective_process_matching_criteria: Ok(
                        value.retrospective_process_matching_criteria,
                    ),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessGroup {
            data: ::std::result::Result<
                super::NewRetrospectiveProcessGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcessGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveProcessGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessGroup>
        for super::NewRetrospectiveProcessGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessGroup>
        for NewRetrospectiveProcessGroup {
            fn from(value: super::NewRetrospectiveProcessGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessGroupData {
            attributes: ::std::result::Result<
                super::NewRetrospectiveProcessGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewRetrospectiveProcessGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcessGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewRetrospectiveProcessGroupDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveProcessGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessGroupData>
        for super::NewRetrospectiveProcessGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessGroupData>
        for NewRetrospectiveProcessGroupData {
            fn from(value: super::NewRetrospectiveProcessGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessGroupDataAttributes {
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessGroupDataAttributes {
            fn default() -> Self {
                Self {
                    position: Ok(Default::default()),
                    sub_status_id: Err("no value supplied for sub_status_id".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcessGroupDataAttributes {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessGroupDataAttributes>
        for super::NewRetrospectiveProcessGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    sub_status_id: value.sub_status_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessGroupDataAttributes>
        for NewRetrospectiveProcessGroupDataAttributes {
            fn from(value: super::NewRetrospectiveProcessGroupDataAttributes) -> Self {
                Self {
                    position: Ok(value.position),
                    sub_status_id: Ok(value.sub_status_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessGroupStep {
            data: ::std::result::Result<
                super::NewRetrospectiveProcessGroupStepData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessGroupStep {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcessGroupStep {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveProcessGroupStepData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessGroupStep>
        for super::NewRetrospectiveProcessGroupStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessGroupStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessGroupStep>
        for NewRetrospectiveProcessGroupStep {
            fn from(value: super::NewRetrospectiveProcessGroupStep) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessGroupStepData {
            attributes: ::std::result::Result<
                super::NewRetrospectiveProcessGroupStepDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewRetrospectiveProcessGroupStepDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessGroupStepData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewRetrospectiveProcessGroupStepData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewRetrospectiveProcessGroupStepDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewRetrospectiveProcessGroupStepDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessGroupStepData>
        for super::NewRetrospectiveProcessGroupStepData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessGroupStepData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessGroupStepData>
        for NewRetrospectiveProcessGroupStepData {
            fn from(value: super::NewRetrospectiveProcessGroupStepData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveProcessGroupStepDataAttributes {
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            retrospective_step_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveProcessGroupStepDataAttributes {
            fn default() -> Self {
                Self {
                    position: Ok(Default::default()),
                    retrospective_step_id: Err(
                        "no value supplied for retrospective_step_id".to_string(),
                    ),
                }
            }
        }
        impl NewRetrospectiveProcessGroupStepDataAttributes {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn retrospective_step_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_step_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_step_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveProcessGroupStepDataAttributes>
        for super::NewRetrospectiveProcessGroupStepDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveProcessGroupStepDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    retrospective_step_id: value.retrospective_step_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveProcessGroupStepDataAttributes>
        for NewRetrospectiveProcessGroupStepDataAttributes {
            fn from(
                value: super::NewRetrospectiveProcessGroupStepDataAttributes,
            ) -> Self {
                Self {
                    position: Ok(value.position),
                    retrospective_step_id: Ok(value.retrospective_step_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveStep {
            data: ::std::result::Result<
                super::NewRetrospectiveStepData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveStep {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewRetrospectiveStep {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveStepData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveStep>
        for super::NewRetrospectiveStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveStep> for NewRetrospectiveStep {
            fn from(value: super::NewRetrospectiveStep) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveStepData {
            attributes: ::std::result::Result<
                super::NewRetrospectiveStepDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewRetrospectiveStepDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRetrospectiveStepData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewRetrospectiveStepData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveStepDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRetrospectiveStepDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveStepData>
        for super::NewRetrospectiveStepData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveStepData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveStepData>
        for NewRetrospectiveStepData {
            fn from(value: super::NewRetrospectiveStepData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRetrospectiveStepDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_after_days: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            skippable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewRetrospectiveStepDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    due_after_days: Ok(Default::default()),
                    incident_role_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    skippable: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl NewRetrospectiveStepDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_after_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_after_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for due_after_days: {e}"
                        )
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn skippable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skippable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for skippable: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRetrospectiveStepDataAttributes>
        for super::NewRetrospectiveStepDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRetrospectiveStepDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    due_after_days: value.due_after_days?,
                    incident_role_id: value.incident_role_id?,
                    position: value.position?,
                    skippable: value.skippable?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::NewRetrospectiveStepDataAttributes>
        for NewRetrospectiveStepDataAttributes {
            fn from(value: super::NewRetrospectiveStepDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    due_after_days: Ok(value.due_after_days),
                    incident_role_id: Ok(value.incident_role_id),
                    position: Ok(value.position),
                    skippable: Ok(value.skippable),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRole {
            data: ::std::result::Result<super::NewRoleData, ::std::string::String>,
        }
        impl ::std::default::Default for NewRole {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewRole {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRoleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRole> for super::NewRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewRole> for NewRole {
            fn from(value: super::NewRole) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRoleData {
            attributes: ::std::result::Result<
                super::NewRoleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<super::NewRoleDataType, ::std::string::String>,
        }
        impl ::std::default::Default for NewRoleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewRoleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRoleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewRoleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRoleData> for super::NewRoleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRoleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewRoleData> for NewRoleData {
            fn from(value: super::NewRoleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewRoleDataAttributes {
            alerts_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesAlertsPermissionsItem>,
                ::std::string::String,
            >,
            api_keys_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesApiKeysPermissionsItem>,
                ::std::string::String,
            >,
            audits_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesAuditsPermissionsItem>,
                ::std::string::String,
            >,
            billing_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesBillingPermissionsItem>,
                ::std::string::String,
            >,
            catalogs_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesCatalogsPermissionsItem>,
                ::std::string::String,
            >,
            communication_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesCommunicationPermissionsItem,
                >,
                ::std::string::String,
            >,
            edge_connector_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesEdgeConnectorPermissionsItem,
                >,
                ::std::string::String,
            >,
            environments_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesEnvironmentsPermissionsItem>,
                ::std::string::String,
            >,
            form_fields_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesFormFieldsPermissionsItem>,
                ::std::string::String,
            >,
            functionalities_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesFunctionalitiesPermissionsItem,
                >,
                ::std::string::String,
            >,
            groups_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesGroupsPermissionsItem>,
                ::std::string::String,
            >,
            incident_causes_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesIncidentCausesPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_communication_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesIncidentCommunicationPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_feedbacks_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesIncidentFeedbacksPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_permission_set_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_roles_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesIncidentRolesPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_types_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesIncidentTypesPermissionsItem,
                >,
                ::std::string::String,
            >,
            incidents_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesIncidentsPermissionsItem>,
                ::std::string::String,
            >,
            integrations_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesIntegrationsPermissionsItem>,
                ::std::string::String,
            >,
            invitations_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesInvitationsPermissionsItem>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            paging_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesPagingPermissionsItem>,
                ::std::string::String,
            >,
            playbooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesPlaybooksPermissionsItem>,
                ::std::string::String,
            >,
            private_incidents_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesPrivateIncidentsPermissionsItem,
                >,
                ::std::string::String,
            >,
            pulses_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesPulsesPermissionsItem>,
                ::std::string::String,
            >,
            retrospective_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewRoleDataAttributesRetrospectivePermissionsItem,
                >,
                ::std::string::String,
            >,
            roles_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesRolesPermissionsItem>,
                ::std::string::String,
            >,
            secrets_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesSecretsPermissionsItem>,
                ::std::string::String,
            >,
            services_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesServicesPermissionsItem>,
                ::std::string::String,
            >,
            severities_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesSeveritiesPermissionsItem>,
                ::std::string::String,
            >,
            slas_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesSlasPermissionsItem>,
                ::std::string::String,
            >,
            status_pages_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesStatusPagesPermissionsItem>,
                ::std::string::String,
            >,
            sub_statuses_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesSubStatusesPermissionsItem>,
                ::std::string::String,
            >,
            webhooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesWebhooksPermissionsItem>,
                ::std::string::String,
            >,
            workflows_permissions: ::std::result::Result<
                ::std::vec::Vec<super::NewRoleDataAttributesWorkflowsPermissionsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewRoleDataAttributes {
            fn default() -> Self {
                Self {
                    alerts_permissions: Ok(Default::default()),
                    api_keys_permissions: Ok(Default::default()),
                    audits_permissions: Ok(Default::default()),
                    billing_permissions: Ok(Default::default()),
                    catalogs_permissions: Ok(Default::default()),
                    communication_permissions: Ok(Default::default()),
                    edge_connector_permissions: Ok(Default::default()),
                    environments_permissions: Ok(Default::default()),
                    form_fields_permissions: Ok(Default::default()),
                    functionalities_permissions: Ok(Default::default()),
                    groups_permissions: Ok(Default::default()),
                    incident_causes_permissions: Ok(Default::default()),
                    incident_communication_permissions: Ok(Default::default()),
                    incident_feedbacks_permissions: Ok(Default::default()),
                    incident_permission_set_id: Ok(Default::default()),
                    incident_roles_permissions: Ok(Default::default()),
                    incident_types_permissions: Ok(Default::default()),
                    incidents_permissions: Ok(Default::default()),
                    integrations_permissions: Ok(Default::default()),
                    invitations_permissions: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    paging_permissions: Ok(Default::default()),
                    playbooks_permissions: Ok(Default::default()),
                    private_incidents_permissions: Ok(Default::default()),
                    pulses_permissions: Ok(Default::default()),
                    retrospective_permissions: Ok(Default::default()),
                    roles_permissions: Ok(Default::default()),
                    secrets_permissions: Ok(Default::default()),
                    services_permissions: Ok(Default::default()),
                    severities_permissions: Ok(Default::default()),
                    slas_permissions: Ok(Default::default()),
                    status_pages_permissions: Ok(Default::default()),
                    sub_statuses_permissions: Ok(Default::default()),
                    webhooks_permissions: Ok(Default::default()),
                    workflows_permissions: Ok(Default::default()),
                }
            }
        }
        impl NewRoleDataAttributes {
            pub fn alerts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesAlertsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn api_keys_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesApiKeysPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.api_keys_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for api_keys_permissions: {e}"
                        )
                    });
                self
            }
            pub fn audits_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesAuditsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.audits_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for audits_permissions: {e}"
                        )
                    });
                self
            }
            pub fn billing_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesBillingPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.billing_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for billing_permissions: {e}"
                        )
                    });
                self
            }
            pub fn catalogs_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesCatalogsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalogs_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalogs_permissions: {e}"
                        )
                    });
                self
            }
            pub fn communication_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesCommunicationPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_permissions: {e}"
                        )
                    });
                self
            }
            pub fn edge_connector_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesEdgeConnectorPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.edge_connector_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for edge_connector_permissions: {e}"
                        )
                    });
                self
            }
            pub fn environments_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesEnvironmentsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environments_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environments_permissions: {e}"
                        )
                    });
                self
            }
            pub fn form_fields_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesFormFieldsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form_fields_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for form_fields_permissions: {e}"
                        )
                    });
                self
            }
            pub fn functionalities_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesFunctionalitiesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionalities_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionalities_permissions: {e}"
                        )
                    });
                self
            }
            pub fn groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesGroupsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_causes_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesIncidentCausesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_causes_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_causes_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_communication_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesIncidentCommunicationPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_communication_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_communication_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_feedbacks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesIncidentFeedbacksPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_feedbacks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_feedbacks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesIncidentRolesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_types_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesIncidentTypesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_types_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_types_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incidents_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesIncidentsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incidents_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incidents_permissions: {e}"
                        )
                    });
                self
            }
            pub fn integrations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesIntegrationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn invitations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesInvitationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.invitations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for invitations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn paging_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesPagingPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_permissions: {e}"
                        )
                    });
                self
            }
            pub fn playbooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesPlaybooksPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.playbooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for playbooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn private_incidents_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesPrivateIncidentsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private_incidents_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for private_incidents_permissions: {e}"
                        )
                    });
                self
            }
            pub fn pulses_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesPulsesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.pulses_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulses_permissions: {e}"
                        )
                    });
                self
            }
            pub fn retrospective_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesRetrospectivePermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_permissions: {e}"
                        )
                    });
                self
            }
            pub fn roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesRolesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn secrets_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesSecretsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.secrets_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for secrets_permissions: {e}"
                        )
                    });
                self
            }
            pub fn services_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesServicesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_permissions: {e}"
                        )
                    });
                self
            }
            pub fn severities_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesSeveritiesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severities_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severities_permissions: {e}"
                        )
                    });
                self
            }
            pub fn slas_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesSlasPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slas_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slas_permissions: {e}"
                        )
                    });
                self
            }
            pub fn status_pages_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesStatusPagesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status_pages_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_pages_permissions: {e}"
                        )
                    });
                self
            }
            pub fn sub_statuses_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewRoleDataAttributesSubStatusesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.sub_statuses_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sub_statuses_permissions: {e}"
                        )
                    });
                self
            }
            pub fn webhooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesWebhooksPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn workflows_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewRoleDataAttributesWorkflowsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.workflows_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflows_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewRoleDataAttributes>
        for super::NewRoleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewRoleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_permissions: value.alerts_permissions?,
                    api_keys_permissions: value.api_keys_permissions?,
                    audits_permissions: value.audits_permissions?,
                    billing_permissions: value.billing_permissions?,
                    catalogs_permissions: value.catalogs_permissions?,
                    communication_permissions: value.communication_permissions?,
                    edge_connector_permissions: value.edge_connector_permissions?,
                    environments_permissions: value.environments_permissions?,
                    form_fields_permissions: value.form_fields_permissions?,
                    functionalities_permissions: value.functionalities_permissions?,
                    groups_permissions: value.groups_permissions?,
                    incident_causes_permissions: value.incident_causes_permissions?,
                    incident_communication_permissions: value
                        .incident_communication_permissions?,
                    incident_feedbacks_permissions: value
                        .incident_feedbacks_permissions?,
                    incident_permission_set_id: value.incident_permission_set_id?,
                    incident_roles_permissions: value.incident_roles_permissions?,
                    incident_types_permissions: value.incident_types_permissions?,
                    incidents_permissions: value.incidents_permissions?,
                    integrations_permissions: value.integrations_permissions?,
                    invitations_permissions: value.invitations_permissions?,
                    name: value.name?,
                    paging_permissions: value.paging_permissions?,
                    playbooks_permissions: value.playbooks_permissions?,
                    private_incidents_permissions: value.private_incidents_permissions?,
                    pulses_permissions: value.pulses_permissions?,
                    retrospective_permissions: value.retrospective_permissions?,
                    roles_permissions: value.roles_permissions?,
                    secrets_permissions: value.secrets_permissions?,
                    services_permissions: value.services_permissions?,
                    severities_permissions: value.severities_permissions?,
                    slas_permissions: value.slas_permissions?,
                    status_pages_permissions: value.status_pages_permissions?,
                    sub_statuses_permissions: value.sub_statuses_permissions?,
                    webhooks_permissions: value.webhooks_permissions?,
                    workflows_permissions: value.workflows_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::NewRoleDataAttributes>
        for NewRoleDataAttributes {
            fn from(value: super::NewRoleDataAttributes) -> Self {
                Self {
                    alerts_permissions: Ok(value.alerts_permissions),
                    api_keys_permissions: Ok(value.api_keys_permissions),
                    audits_permissions: Ok(value.audits_permissions),
                    billing_permissions: Ok(value.billing_permissions),
                    catalogs_permissions: Ok(value.catalogs_permissions),
                    communication_permissions: Ok(value.communication_permissions),
                    edge_connector_permissions: Ok(value.edge_connector_permissions),
                    environments_permissions: Ok(value.environments_permissions),
                    form_fields_permissions: Ok(value.form_fields_permissions),
                    functionalities_permissions: Ok(value.functionalities_permissions),
                    groups_permissions: Ok(value.groups_permissions),
                    incident_causes_permissions: Ok(value.incident_causes_permissions),
                    incident_communication_permissions: Ok(
                        value.incident_communication_permissions,
                    ),
                    incident_feedbacks_permissions: Ok(
                        value.incident_feedbacks_permissions,
                    ),
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    incident_roles_permissions: Ok(value.incident_roles_permissions),
                    incident_types_permissions: Ok(value.incident_types_permissions),
                    incidents_permissions: Ok(value.incidents_permissions),
                    integrations_permissions: Ok(value.integrations_permissions),
                    invitations_permissions: Ok(value.invitations_permissions),
                    name: Ok(value.name),
                    paging_permissions: Ok(value.paging_permissions),
                    playbooks_permissions: Ok(value.playbooks_permissions),
                    private_incidents_permissions: Ok(
                        value.private_incidents_permissions,
                    ),
                    pulses_permissions: Ok(value.pulses_permissions),
                    retrospective_permissions: Ok(value.retrospective_permissions),
                    roles_permissions: Ok(value.roles_permissions),
                    secrets_permissions: Ok(value.secrets_permissions),
                    services_permissions: Ok(value.services_permissions),
                    severities_permissions: Ok(value.severities_permissions),
                    slas_permissions: Ok(value.slas_permissions),
                    status_pages_permissions: Ok(value.status_pages_permissions),
                    sub_statuses_permissions: Ok(value.sub_statuses_permissions),
                    webhooks_permissions: Ok(value.webhooks_permissions),
                    workflows_permissions: Ok(value.workflows_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSchedule {
            data: ::std::result::Result<super::NewScheduleData, ::std::string::String>,
        }
        impl ::std::default::Default for NewSchedule {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewSchedule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSchedule> for super::NewSchedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSchedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewSchedule> for NewSchedule {
            fn from(value: super::NewSchedule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleData {
            attributes: ::std::result::Result<
                super::NewScheduleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewScheduleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewScheduleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleData> for super::NewScheduleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleData> for NewScheduleData {
            fn from(value: super::NewScheduleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleDataAttributes {
            all_time_coverage: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            include_shadows_in_slack_notifications: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owner_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            owner_user_id: ::std::result::Result<i64, ::std::string::String>,
            shift_report_day_of_week: ::std::result::Result<
                ::std::option::Option<
                    super::NewScheduleDataAttributesShiftReportDayOfWeek,
                >,
                ::std::string::String,
            >,
            shift_report_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shift_report_time_of_day: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shift_report_time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shift_start_notifications_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shift_update_notifications_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slack_channel: ::std::result::Result<
                ::std::option::Option<super::NewScheduleDataAttributesSlackChannel>,
                ::std::string::String,
            >,
            slack_user_group: ::std::result::Result<
                ::std::option::Option<super::NewScheduleDataAttributesSlackUserGroup>,
                ::std::string::String,
            >,
            sync_linear_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleDataAttributes {
            fn default() -> Self {
                Self {
                    all_time_coverage: Ok(Default::default()),
                    description: Ok(Default::default()),
                    include_shadows_in_slack_notifications: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_id: Err(
                        "no value supplied for owner_user_id".to_string(),
                    ),
                    shift_report_day_of_week: Ok(Default::default()),
                    shift_report_enabled: Ok(Default::default()),
                    shift_report_time_of_day: Ok(Default::default()),
                    shift_report_time_zone: Ok(Default::default()),
                    shift_start_notifications_enabled: Ok(Default::default()),
                    shift_update_notifications_enabled: Ok(Default::default()),
                    slack_channel: Ok(Default::default()),
                    slack_user_group: Ok(Default::default()),
                    sync_linear_enabled: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleDataAttributes {
            pub fn all_time_coverage<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.all_time_coverage = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for all_time_coverage: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn include_shadows_in_slack_notifications<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.include_shadows_in_slack_notifications = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for include_shadows_in_slack_notifications: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner_user_id: {e}")
                    });
                self
            }
            pub fn shift_report_day_of_week<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewScheduleDataAttributesShiftReportDayOfWeek,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_day_of_week = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_day_of_week: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_enabled: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_time_of_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_time_of_day = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_time_of_day: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn shift_start_notifications_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_start_notifications_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_start_notifications_enabled: {e}"
                        )
                    });
                self
            }
            pub fn shift_update_notifications_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_update_notifications_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_update_notifications_enabled: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewScheduleDataAttributesSlackChannel>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_channel: {e}")
                    });
                self
            }
            pub fn slack_user_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewScheduleDataAttributesSlackUserGroup>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_user_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_user_group: {e}"
                        )
                    });
                self
            }
            pub fn sync_linear_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.sync_linear_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sync_linear_enabled: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleDataAttributes>
        for super::NewScheduleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    all_time_coverage: value.all_time_coverage?,
                    description: value.description?,
                    include_shadows_in_slack_notifications: value
                        .include_shadows_in_slack_notifications?,
                    name: value.name?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_id: value.owner_user_id?,
                    shift_report_day_of_week: value.shift_report_day_of_week?,
                    shift_report_enabled: value.shift_report_enabled?,
                    shift_report_time_of_day: value.shift_report_time_of_day?,
                    shift_report_time_zone: value.shift_report_time_zone?,
                    shift_start_notifications_enabled: value
                        .shift_start_notifications_enabled?,
                    shift_update_notifications_enabled: value
                        .shift_update_notifications_enabled?,
                    slack_channel: value.slack_channel?,
                    slack_user_group: value.slack_user_group?,
                    sync_linear_enabled: value.sync_linear_enabled?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleDataAttributes>
        for NewScheduleDataAttributes {
            fn from(value: super::NewScheduleDataAttributes) -> Self {
                Self {
                    all_time_coverage: Ok(value.all_time_coverage),
                    description: Ok(value.description),
                    include_shadows_in_slack_notifications: Ok(
                        value.include_shadows_in_slack_notifications,
                    ),
                    name: Ok(value.name),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_id: Ok(value.owner_user_id),
                    shift_report_day_of_week: Ok(value.shift_report_day_of_week),
                    shift_report_enabled: Ok(value.shift_report_enabled),
                    shift_report_time_of_day: Ok(value.shift_report_time_of_day),
                    shift_report_time_zone: Ok(value.shift_report_time_zone),
                    shift_start_notifications_enabled: Ok(
                        value.shift_start_notifications_enabled,
                    ),
                    shift_update_notifications_enabled: Ok(
                        value.shift_update_notifications_enabled,
                    ),
                    slack_channel: Ok(value.slack_channel),
                    slack_user_group: Ok(value.slack_user_group),
                    sync_linear_enabled: Ok(value.sync_linear_enabled),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleDataAttributesSlackChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleDataAttributesSlackChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleDataAttributesSlackChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleDataAttributesSlackChannel>
        for super::NewScheduleDataAttributesSlackChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleDataAttributesSlackChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleDataAttributesSlackChannel>
        for NewScheduleDataAttributesSlackChannel {
            fn from(value: super::NewScheduleDataAttributesSlackChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleDataAttributesSlackUserGroup {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleDataAttributesSlackUserGroup {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleDataAttributesSlackUserGroup {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleDataAttributesSlackUserGroup>
        for super::NewScheduleDataAttributesSlackUserGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleDataAttributesSlackUserGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleDataAttributesSlackUserGroup>
        for NewScheduleDataAttributesSlackUserGroup {
            fn from(value: super::NewScheduleDataAttributesSlackUserGroup) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotation {
            data: ::std::result::Result<
                super::NewScheduleRotationData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotation {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewScheduleRotation {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleRotationData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotation>
        for super::NewScheduleRotation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotation> for NewScheduleRotation {
            fn from(value: super::NewScheduleRotation) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationActiveDay {
            data: ::std::result::Result<
                super::NewScheduleRotationActiveDayData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationActiveDay {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewScheduleRotationActiveDay {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleRotationActiveDayData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationActiveDay>
        for super::NewScheduleRotationActiveDay {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationActiveDay,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationActiveDay>
        for NewScheduleRotationActiveDay {
            fn from(value: super::NewScheduleRotationActiveDay) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationActiveDayData {
            attributes: ::std::result::Result<
                super::NewScheduleRotationActiveDayDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewScheduleRotationActiveDayDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationActiveDayData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewScheduleRotationActiveDayData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewScheduleRotationActiveDayDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleRotationActiveDayDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationActiveDayData>
        for super::NewScheduleRotationActiveDayData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationActiveDayData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationActiveDayData>
        for NewScheduleRotationActiveDayData {
            fn from(value: super::NewScheduleRotationActiveDayData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationActiveDayDataAttributes {
            active_time_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
                >,
                ::std::string::String,
            >,
            day_name: ::std::result::Result<
                super::NewScheduleRotationActiveDayDataAttributesDayName,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationActiveDayDataAttributes {
            fn default() -> Self {
                Self {
                    active_time_attributes: Err(
                        "no value supplied for active_time_attributes".to_string(),
                    ),
                    day_name: Err("no value supplied for day_name".to_string()),
                }
            }
        }
        impl NewScheduleRotationActiveDayDataAttributes {
            pub fn active_time_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_attributes: {e}"
                        )
                    });
                self
            }
            pub fn day_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewScheduleRotationActiveDayDataAttributesDayName,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.day_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for day_name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationActiveDayDataAttributes>
        for super::NewScheduleRotationActiveDayDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationActiveDayDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    active_time_attributes: value.active_time_attributes?,
                    day_name: value.day_name?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationActiveDayDataAttributes>
        for NewScheduleRotationActiveDayDataAttributes {
            fn from(value: super::NewScheduleRotationActiveDayDataAttributes) -> Self {
                Self {
                    active_time_attributes: Ok(value.active_time_attributes),
                    day_name: Ok(value.day_name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            fn default() -> Self {
                Self {
                    end_time: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
        > for super::NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
        > for NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            fn from(
                value: super::NewScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
            ) -> Self {
                Self {
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationData {
            attributes: ::std::result::Result<
                super::NewScheduleRotationDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewScheduleRotationDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewScheduleRotationData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleRotationDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewScheduleRotationDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationData>
        for super::NewScheduleRotationData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationData>
        for NewScheduleRotationData {
            fn from(value: super::NewScheduleRotationData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationDataAttributes {
            active_all_week: ::std::result::Result<bool, ::std::string::String>,
            active_days: ::std::result::Result<
                ::std::vec::Vec<super::NewScheduleRotationDataAttributesActiveDaysItem>,
                ::std::string::String,
            >,
            active_time_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewScheduleRotationDataAttributesActiveTimeAttributesItem,
                >,
                ::std::string::String,
            >,
            active_time_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            schedule_rotation_members: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::NewScheduleRotationDataAttributesScheduleRotationMembersItem,
                    >,
                >,
                ::std::string::String,
            >,
            schedule_rotationable_attributes: ::std::result::Result<
                super::NewScheduleRotationDataAttributesScheduleRotationableAttributes,
                ::std::string::String,
            >,
            schedule_rotationable_type: ::std::result::Result<
                super::NewScheduleRotationDataAttributesScheduleRotationableType,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationDataAttributes {
            fn default() -> Self {
                Self {
                    active_all_week: Ok(super::defaults::default_bool::<true>()),
                    active_days: Ok(Default::default()),
                    active_time_attributes: Ok(Default::default()),
                    active_time_type: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    schedule_rotation_members: Ok(Default::default()),
                    schedule_rotationable_attributes: Err(
                        "no value supplied for schedule_rotationable_attributes"
                            .to_string(),
                    ),
                    schedule_rotationable_type: Err(
                        "no value supplied for schedule_rotationable_type".to_string(),
                    ),
                    start_time: Ok(Default::default()),
                    time_zone: Ok(
                        super::defaults::new_schedule_rotation_data_attributes_time_zone(),
                    ),
                }
            }
        }
        impl NewScheduleRotationDataAttributes {
            pub fn active_all_week<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.active_all_week = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_all_week: {e}"
                        )
                    });
                self
            }
            pub fn active_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewScheduleRotationDataAttributesActiveDaysItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for active_days: {e}")
                    });
                self
            }
            pub fn active_time_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewScheduleRotationDataAttributesActiveTimeAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_attributes: {e}"
                        )
                    });
                self
            }
            pub fn active_time_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_type: {e}"
                        )
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn schedule_rotation_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewScheduleRotationDataAttributesScheduleRotationMembersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotation_members = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotation_members: {e}"
                        )
                    });
                self
            }
            pub fn schedule_rotationable_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewScheduleRotationDataAttributesScheduleRotationableAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotationable_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotationable_attributes: {e}"
                        )
                    });
                self
            }
            pub fn schedule_rotationable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewScheduleRotationDataAttributesScheduleRotationableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotationable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotationable_type: {e}"
                        )
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationDataAttributes>
        for super::NewScheduleRotationDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    active_all_week: value.active_all_week?,
                    active_days: value.active_days?,
                    active_time_attributes: value.active_time_attributes?,
                    active_time_type: value.active_time_type?,
                    end_time: value.end_time?,
                    name: value.name?,
                    position: value.position?,
                    schedule_rotation_members: value.schedule_rotation_members?,
                    schedule_rotationable_attributes: value
                        .schedule_rotationable_attributes?,
                    schedule_rotationable_type: value.schedule_rotationable_type?,
                    start_time: value.start_time?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationDataAttributes>
        for NewScheduleRotationDataAttributes {
            fn from(value: super::NewScheduleRotationDataAttributes) -> Self {
                Self {
                    active_all_week: Ok(value.active_all_week),
                    active_days: Ok(value.active_days),
                    active_time_attributes: Ok(value.active_time_attributes),
                    active_time_type: Ok(value.active_time_type),
                    end_time: Ok(value.end_time),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    schedule_rotation_members: Ok(value.schedule_rotation_members),
                    schedule_rotationable_attributes: Ok(
                        value.schedule_rotationable_attributes,
                    ),
                    schedule_rotationable_type: Ok(value.schedule_rotationable_type),
                    start_time: Ok(value.start_time),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationDataAttributesActiveTimeAttributesItem {
            end_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewScheduleRotationDataAttributesActiveTimeAttributesItem {
            fn default() -> Self {
                Self {
                    end_time: Err("no value supplied for end_time".to_string()),
                    start_time: Err("no value supplied for start_time".to_string()),
                }
            }
        }
        impl NewScheduleRotationDataAttributesActiveTimeAttributesItem {
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewScheduleRotationDataAttributesActiveTimeAttributesItem,
        > for super::NewScheduleRotationDataAttributesActiveTimeAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationDataAttributesActiveTimeAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewScheduleRotationDataAttributesActiveTimeAttributesItem,
        > for NewScheduleRotationDataAttributesActiveTimeAttributesItem {
            fn from(
                value: super::NewScheduleRotationDataAttributesActiveTimeAttributesItem,
            ) -> Self {
                Self {
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationDataAttributesScheduleRotationMembersItem {
            member_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            member_type: ::std::result::Result<
                super::NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewScheduleRotationDataAttributesScheduleRotationMembersItem {
            fn default() -> Self {
                Self {
                    member_id: Err("no value supplied for member_id".to_string()),
                    member_type: Err("no value supplied for member_type".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleRotationDataAttributesScheduleRotationMembersItem {
            pub fn member_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.member_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_id: {e}")
                    });
                self
            }
            pub fn member_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewScheduleRotationDataAttributesScheduleRotationMembersItemMemberType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.member_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_type: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            NewScheduleRotationDataAttributesScheduleRotationMembersItem,
        > for super::NewScheduleRotationDataAttributesScheduleRotationMembersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationDataAttributesScheduleRotationMembersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    member_id: value.member_id?,
                    member_type: value.member_type?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewScheduleRotationDataAttributesScheduleRotationMembersItem,
        > for NewScheduleRotationDataAttributesScheduleRotationMembersItem {
            fn from(
                value: super::NewScheduleRotationDataAttributesScheduleRotationMembersItem,
            ) -> Self {
                Self {
                    member_id: Ok(value.member_id),
                    member_type: Ok(value.member_type),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationUser {
            data: ::std::result::Result<
                ::std::option::Option<super::NewScheduleRotationUserData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationUser {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleRotationUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewScheduleRotationUserData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationUser>
        for super::NewScheduleRotationUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationUser>
        for NewScheduleRotationUser {
            fn from(value: super::NewScheduleRotationUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationUserData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::NewScheduleRotationUserDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::NewScheduleRotationUserDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewScheduleRotationUserData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl NewScheduleRotationUserData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewScheduleRotationUserDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewScheduleRotationUserDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationUserData>
        for super::NewScheduleRotationUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationUserData>
        for NewScheduleRotationUserData {
            fn from(value: super::NewScheduleRotationUserData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewScheduleRotationUserDataAttributes {
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for NewScheduleRotationUserDataAttributes {
            fn default() -> Self {
                Self {
                    position: Ok(Default::default()),
                    user_id: Err("no value supplied for user_id".to_string()),
                }
            }
        }
        impl NewScheduleRotationUserDataAttributes {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewScheduleRotationUserDataAttributes>
        for super::NewScheduleRotationUserDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewScheduleRotationUserDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewScheduleRotationUserDataAttributes>
        for NewScheduleRotationUserDataAttributes {
            fn from(value: super::NewScheduleRotationUserDataAttributes) -> Self {
                Self {
                    position: Ok(value.position),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSecret {
            data: ::std::result::Result<super::NewSecretData, ::std::string::String>,
        }
        impl ::std::default::Default for NewSecret {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewSecret {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSecretData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSecret> for super::NewSecret {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSecret,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewSecret> for NewSecret {
            fn from(value: super::NewSecret) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSecretData {
            attributes: ::std::result::Result<
                super::NewSecretDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewSecretDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSecretData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewSecretData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSecretDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSecretDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSecretData> for super::NewSecretData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSecretData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewSecretData> for NewSecretData {
            fn from(value: super::NewSecretData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSecretDataAttributes {
            hashicorp_vault_mount: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            hashicorp_vault_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            hashicorp_vault_version: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::NewSecretDataAttributesKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            secret: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewSecretDataAttributes {
            fn default() -> Self {
                Self {
                    hashicorp_vault_mount: Ok(Default::default()),
                    hashicorp_vault_path: Ok(Default::default()),
                    hashicorp_vault_version: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    secret: Err("no value supplied for secret".to_string()),
                }
            }
        }
        impl NewSecretDataAttributes {
            pub fn hashicorp_vault_mount<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_mount = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_mount: {e}"
                        )
                    });
                self
            }
            pub fn hashicorp_vault_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_path: {e}"
                        )
                    });
                self
            }
            pub fn hashicorp_vault_version<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_version = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_version: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewSecretDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSecretDataAttributes>
        for super::NewSecretDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSecretDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    hashicorp_vault_mount: value.hashicorp_vault_mount?,
                    hashicorp_vault_path: value.hashicorp_vault_path?,
                    hashicorp_vault_version: value.hashicorp_vault_version?,
                    kind: value.kind?,
                    name: value.name?,
                    secret: value.secret?,
                })
            }
        }
        impl ::std::convert::From<super::NewSecretDataAttributes>
        for NewSecretDataAttributes {
            fn from(value: super::NewSecretDataAttributes) -> Self {
                Self {
                    hashicorp_vault_mount: Ok(value.hashicorp_vault_mount),
                    hashicorp_vault_path: Ok(value.hashicorp_vault_path),
                    hashicorp_vault_version: Ok(value.hashicorp_vault_version),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    secret: Ok(value.secret),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewService {
            data: ::std::result::Result<super::NewServiceData, ::std::string::String>,
        }
        impl ::std::default::Default for NewService {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewService {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewServiceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewService> for super::NewService {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewService,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewService> for NewService {
            fn from(value: super::NewService) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceData {
            attributes: ::std::result::Result<
                super::NewServiceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewServiceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewServiceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewServiceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewServiceDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewServiceDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceData> for super::NewServiceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewServiceData> for NewServiceData {
            fn from(value: super::NewServiceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceDataAttributes {
            alert_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::NewServiceDataAttributesAlertBroadcastChannel,
                >,
                ::std::string::String,
            >,
            alert_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_repository_branch: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_repository_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_repository_branch: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_repository_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::NewServiceDataAttributesIncidentBroadcastChannel,
                >,
                ::std::string::String,
            >,
            incident_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kubernetes_deployment_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_team_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            owner_user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewServiceDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            show_uptime: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_uptime_last_days: ::std::result::Result<
                ::std::option::Option<super::NewServiceDataAttributesShowUptimeLastDays>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewServiceDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewServiceDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewServiceDataAttributes {
            fn default() -> Self {
                Self {
                    alert_broadcast_channel: Ok(Default::default()),
                    alert_broadcast_enabled: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    alerts_email_enabled: Ok(Default::default()),
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    escalation_policy_id: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    github_repository_branch: Ok(Default::default()),
                    github_repository_name: Ok(Default::default()),
                    gitlab_repository_branch: Ok(Default::default()),
                    gitlab_repository_name: Ok(Default::default()),
                    incident_broadcast_channel: Ok(Default::default()),
                    incident_broadcast_enabled: Ok(Default::default()),
                    kubernetes_deployment_name: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    opsgenie_team_id: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_ids: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    show_uptime: Ok(Default::default()),
                    show_uptime_last_days: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl NewServiceDataAttributes {
            pub fn alert_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewServiceDataAttributesAlertBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn alert_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_enabled: {e}"
                        )
                    });
                self
            }
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn github_repository_branch<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_repository_branch = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_repository_branch: {e}"
                        )
                    });
                self
            }
            pub fn github_repository_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_repository_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_repository_name: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_repository_branch<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_repository_branch = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_repository_branch: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_repository_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_repository_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_repository_name: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewServiceDataAttributesIncidentBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn kubernetes_deployment_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kubernetes_deployment_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kubernetes_deployment_name: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn opsgenie_team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_team_id: {e}"
                        )
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewServiceDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn show_uptime<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_uptime: {e}")
                    });
                self
            }
            pub fn show_uptime_last_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewServiceDataAttributesShowUptimeLastDays,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime_last_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_uptime_last_days: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::NewServiceDataAttributesSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::NewServiceDataAttributesSlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceDataAttributes>
        for super::NewServiceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_broadcast_channel: value.alert_broadcast_channel?,
                    alert_broadcast_enabled: value.alert_broadcast_enabled?,
                    alert_urgency_id: value.alert_urgency_id?,
                    alerts_email_enabled: value.alerts_email_enabled?,
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    description: value.description?,
                    environment_ids: value.environment_ids?,
                    escalation_policy_id: value.escalation_policy_id?,
                    external_id: value.external_id?,
                    github_repository_branch: value.github_repository_branch?,
                    github_repository_name: value.github_repository_name?,
                    gitlab_repository_branch: value.gitlab_repository_branch?,
                    gitlab_repository_name: value.gitlab_repository_name?,
                    incident_broadcast_channel: value.incident_broadcast_channel?,
                    incident_broadcast_enabled: value.incident_broadcast_enabled?,
                    kubernetes_deployment_name: value.kubernetes_deployment_name?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    opsgenie_team_id: value.opsgenie_team_id?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_ids: value.owner_user_ids?,
                    pagerduty_id: value.pagerduty_id?,
                    position: value.position?,
                    properties: value.properties?,
                    public_description: value.public_description?,
                    service_ids: value.service_ids?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    show_uptime: value.show_uptime?,
                    show_uptime_last_days: value.show_uptime_last_days?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::NewServiceDataAttributes>
        for NewServiceDataAttributes {
            fn from(value: super::NewServiceDataAttributes) -> Self {
                Self {
                    alert_broadcast_channel: Ok(value.alert_broadcast_channel),
                    alert_broadcast_enabled: Ok(value.alert_broadcast_enabled),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    alerts_email_enabled: Ok(value.alerts_email_enabled),
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    description: Ok(value.description),
                    environment_ids: Ok(value.environment_ids),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    external_id: Ok(value.external_id),
                    github_repository_branch: Ok(value.github_repository_branch),
                    github_repository_name: Ok(value.github_repository_name),
                    gitlab_repository_branch: Ok(value.gitlab_repository_branch),
                    gitlab_repository_name: Ok(value.gitlab_repository_name),
                    incident_broadcast_channel: Ok(value.incident_broadcast_channel),
                    incident_broadcast_enabled: Ok(value.incident_broadcast_enabled),
                    kubernetes_deployment_name: Ok(value.kubernetes_deployment_name),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    opsgenie_team_id: Ok(value.opsgenie_team_id),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_ids: Ok(value.owner_user_ids),
                    pagerduty_id: Ok(value.pagerduty_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    public_description: Ok(value.public_description),
                    service_ids: Ok(value.service_ids),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    show_uptime: Ok(value.show_uptime),
                    show_uptime_last_days: Ok(value.show_uptime_last_days),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceDataAttributesAlertBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewServiceDataAttributesAlertBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewServiceDataAttributesAlertBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceDataAttributesAlertBroadcastChannel>
        for super::NewServiceDataAttributesAlertBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceDataAttributesAlertBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewServiceDataAttributesAlertBroadcastChannel>
        for NewServiceDataAttributesAlertBroadcastChannel {
            fn from(
                value: super::NewServiceDataAttributesAlertBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceDataAttributesIncidentBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewServiceDataAttributesIncidentBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewServiceDataAttributesIncidentBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceDataAttributesIncidentBroadcastChannel>
        for super::NewServiceDataAttributesIncidentBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceDataAttributesIncidentBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewServiceDataAttributesIncidentBroadcastChannel,
        > for NewServiceDataAttributesIncidentBroadcastChannel {
            fn from(
                value: super::NewServiceDataAttributesIncidentBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewServiceDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewServiceDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceDataAttributesPropertiesItem>
        for super::NewServiceDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewServiceDataAttributesPropertiesItem>
        for NewServiceDataAttributesPropertiesItem {
            fn from(value: super::NewServiceDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewServiceDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewServiceDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceDataAttributesSlackAliasesItem>
        for super::NewServiceDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewServiceDataAttributesSlackAliasesItem>
        for NewServiceDataAttributesSlackAliasesItem {
            fn from(value: super::NewServiceDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewServiceDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewServiceDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewServiceDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewServiceDataAttributesSlackChannelsItem>
        for super::NewServiceDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewServiceDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewServiceDataAttributesSlackChannelsItem>
        for NewServiceDataAttributesSlackChannelsItem {
            fn from(value: super::NewServiceDataAttributesSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSeverity {
            data: ::std::result::Result<super::NewSeverityData, ::std::string::String>,
        }
        impl ::std::default::Default for NewSeverity {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewSeverity {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSeverityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSeverity> for super::NewSeverity {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSeverity,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewSeverity> for NewSeverity {
            fn from(value: super::NewSeverity) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSeverityData {
            attributes: ::std::result::Result<
                super::NewSeverityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewSeverityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSeverityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewSeverityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSeverityDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSeverityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSeverityData> for super::NewSeverityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSeverityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewSeverityData> for NewSeverityData {
            fn from(value: super::NewSeverityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSeverityDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            severity: ::std::result::Result<
                ::std::option::Option<super::NewSeverityDataAttributesSeverity>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewSeverityDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewSeverityDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSeverityDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    severity: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl NewSeverityDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewSeverityDataAttributesSeverity>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::NewSeverityDataAttributesSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewSeverityDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSeverityDataAttributes>
        for super::NewSeverityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSeverityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    severity: value.severity?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::NewSeverityDataAttributes>
        for NewSeverityDataAttributes {
            fn from(value: super::NewSeverityDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    severity: Ok(value.severity),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSeverityDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewSeverityDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewSeverityDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSeverityDataAttributesSlackAliasesItem>
        for super::NewSeverityDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSeverityDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewSeverityDataAttributesSlackAliasesItem>
        for NewSeverityDataAttributesSlackAliasesItem {
            fn from(value: super::NewSeverityDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSeverityDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewSeverityDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewSeverityDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSeverityDataAttributesSlackChannelsItem>
        for super::NewSeverityDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSeverityDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewSeverityDataAttributesSlackChannelsItem>
        for NewSeverityDataAttributesSlackChannelsItem {
            fn from(value: super::NewSeverityDataAttributesSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSla {
            data: ::std::result::Result<super::NewSlaData, ::std::string::String>,
        }
        impl ::std::default::Default for NewSla {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewSla {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSlaData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSla> for super::NewSla {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSla,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewSla> for NewSla {
            fn from(value: super::NewSla) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSlaData {
            attributes: ::std::result::Result<
                super::NewSlaDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<super::NewSlaDataType, ::std::string::String>,
        }
        impl ::std::default::Default for NewSlaData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewSlaData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSlaDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSlaDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSlaData> for super::NewSlaData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSlaData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewSlaData> for NewSlaData {
            fn from(value: super::NewSlaData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSlaDataAttributes {
            assignment_deadline_days: ::std::result::Result<
                super::NewSlaDataAttributesAssignmentDeadlineDays,
                ::std::string::String,
            >,
            assignment_deadline_parent_status: ::std::result::Result<
                super::NewSlaDataAttributesAssignmentDeadlineParentStatus,
                ::std::string::String,
            >,
            assignment_deadline_sub_status_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            assignment_skip_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            completion_deadline_days: ::std::result::Result<
                super::NewSlaDataAttributesCompletionDeadlineDays,
                ::std::string::String,
            >,
            completion_deadline_parent_status: ::std::result::Result<
                super::NewSlaDataAttributesCompletionDeadlineParentStatus,
                ::std::string::String,
            >,
            completion_deadline_sub_status_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            completion_skip_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            condition_match_type: ::std::result::Result<
                ::std::option::Option<super::NewSlaDataAttributesConditionMatchType>,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::NewSlaDataAttributesConditionsItem>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            manager_role_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            manager_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notification_configurations: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewSlaDataAttributesNotificationConfigurationsItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSlaDataAttributes {
            fn default() -> Self {
                Self {
                    assignment_deadline_days: Err(
                        "no value supplied for assignment_deadline_days".to_string(),
                    ),
                    assignment_deadline_parent_status: Err(
                        "no value supplied for assignment_deadline_parent_status"
                            .to_string(),
                    ),
                    assignment_deadline_sub_status_id: Ok(Default::default()),
                    assignment_skip_weekends: Ok(Default::default()),
                    completion_deadline_days: Err(
                        "no value supplied for completion_deadline_days".to_string(),
                    ),
                    completion_deadline_parent_status: Err(
                        "no value supplied for completion_deadline_parent_status"
                            .to_string(),
                    ),
                    completion_deadline_sub_status_id: Ok(Default::default()),
                    completion_skip_weekends: Ok(Default::default()),
                    condition_match_type: Ok(Default::default()),
                    conditions: Ok(Default::default()),
                    description: Ok(Default::default()),
                    manager_role_id: Ok(Default::default()),
                    manager_user_id: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notification_configurations: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewSlaDataAttributes {
            pub fn assignment_deadline_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSlaDataAttributesAssignmentDeadlineDays,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_days: {e}"
                        )
                    });
                self
            }
            pub fn assignment_deadline_parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSlaDataAttributesAssignmentDeadlineParentStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_parent_status: {e}"
                        )
                    });
                self
            }
            pub fn assignment_deadline_sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_sub_status_id: {e}"
                        )
                    });
                self
            }
            pub fn assignment_skip_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_skip_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_skip_weekends: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSlaDataAttributesCompletionDeadlineDays,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_days: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSlaDataAttributesCompletionDeadlineParentStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_parent_status: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_sub_status_id: {e}"
                        )
                    });
                self
            }
            pub fn completion_skip_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_skip_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_skip_weekends: {e}"
                        )
                    });
                self
            }
            pub fn condition_match_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewSlaDataAttributesConditionMatchType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_match_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_match_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewSlaDataAttributesConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn manager_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.manager_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for manager_role_id: {e}"
                        )
                    });
                self
            }
            pub fn manager_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.manager_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for manager_user_id: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_configurations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewSlaDataAttributesNotificationConfigurationsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_configurations = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_configurations: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSlaDataAttributes>
        for super::NewSlaDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSlaDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assignment_deadline_days: value.assignment_deadline_days?,
                    assignment_deadline_parent_status: value
                        .assignment_deadline_parent_status?,
                    assignment_deadline_sub_status_id: value
                        .assignment_deadline_sub_status_id?,
                    assignment_skip_weekends: value.assignment_skip_weekends?,
                    completion_deadline_days: value.completion_deadline_days?,
                    completion_deadline_parent_status: value
                        .completion_deadline_parent_status?,
                    completion_deadline_sub_status_id: value
                        .completion_deadline_sub_status_id?,
                    completion_skip_weekends: value.completion_skip_weekends?,
                    condition_match_type: value.condition_match_type?,
                    conditions: value.conditions?,
                    description: value.description?,
                    manager_role_id: value.manager_role_id?,
                    manager_user_id: value.manager_user_id?,
                    name: value.name?,
                    notification_configurations: value.notification_configurations?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewSlaDataAttributes> for NewSlaDataAttributes {
            fn from(value: super::NewSlaDataAttributes) -> Self {
                Self {
                    assignment_deadline_days: Ok(value.assignment_deadline_days),
                    assignment_deadline_parent_status: Ok(
                        value.assignment_deadline_parent_status,
                    ),
                    assignment_deadline_sub_status_id: Ok(
                        value.assignment_deadline_sub_status_id,
                    ),
                    assignment_skip_weekends: Ok(value.assignment_skip_weekends),
                    completion_deadline_days: Ok(value.completion_deadline_days),
                    completion_deadline_parent_status: Ok(
                        value.completion_deadline_parent_status,
                    ),
                    completion_deadline_sub_status_id: Ok(
                        value.completion_deadline_sub_status_id,
                    ),
                    completion_skip_weekends: Ok(value.completion_skip_weekends),
                    condition_match_type: Ok(value.condition_match_type),
                    conditions: Ok(value.conditions),
                    description: Ok(value.description),
                    manager_role_id: Ok(value.manager_role_id),
                    manager_user_id: Ok(value.manager_user_id),
                    name: Ok(value.name),
                    notification_configurations: Ok(value.notification_configurations),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSlaDataAttributesConditionsItem {
            conditionable_type: ::std::result::Result<
                super::NewSlaDataAttributesConditionsItemConditionableType,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            property: ::std::result::Result<
                ::std::option::Option<super::NewSlaDataAttributesConditionsItemProperty>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSlaDataAttributesConditionsItem {
            fn default() -> Self {
                Self {
                    conditionable_type: Err(
                        "no value supplied for conditionable_type".to_string(),
                    ),
                    form_field_id: Ok(Default::default()),
                    operator: Err("no value supplied for operator".to_string()),
                    position: Ok(Default::default()),
                    property: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl NewSlaDataAttributesConditionsItem {
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSlaDataAttributesConditionsItemConditionableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn property<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewSlaDataAttributesConditionsItemProperty,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for property: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSlaDataAttributesConditionsItem>
        for super::NewSlaDataAttributesConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSlaDataAttributesConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_type: value.conditionable_type?,
                    form_field_id: value.form_field_id?,
                    operator: value.operator?,
                    position: value.position?,
                    property: value.property?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::NewSlaDataAttributesConditionsItem>
        for NewSlaDataAttributesConditionsItem {
            fn from(value: super::NewSlaDataAttributesConditionsItem) -> Self {
                Self {
                    conditionable_type: Ok(value.conditionable_type),
                    form_field_id: Ok(value.form_field_id),
                    operator: Ok(value.operator),
                    position: Ok(value.position),
                    property: Ok(value.property),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSlaDataAttributesNotificationConfigurationsItem {
            offset_days: ::std::result::Result<i64, ::std::string::String>,
            offset_type: ::std::result::Result<
                super::NewSlaDataAttributesNotificationConfigurationsItemOffsetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for NewSlaDataAttributesNotificationConfigurationsItem {
            fn default() -> Self {
                Self {
                    offset_days: Err("no value supplied for offset_days".to_string()),
                    offset_type: Err("no value supplied for offset_type".to_string()),
                }
            }
        }
        impl NewSlaDataAttributesNotificationConfigurationsItem {
            pub fn offset_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.offset_days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for offset_days: {e}")
                    });
                self
            }
            pub fn offset_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSlaDataAttributesNotificationConfigurationsItemOffsetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.offset_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for offset_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSlaDataAttributesNotificationConfigurationsItem>
        for super::NewSlaDataAttributesNotificationConfigurationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSlaDataAttributesNotificationConfigurationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    offset_days: value.offset_days?,
                    offset_type: value.offset_type?,
                })
            }
        }
        impl ::std::convert::From<
            super::NewSlaDataAttributesNotificationConfigurationsItem,
        > for NewSlaDataAttributesNotificationConfigurationsItem {
            fn from(
                value: super::NewSlaDataAttributesNotificationConfigurationsItem,
            ) -> Self {
                Self {
                    offset_days: Ok(value.offset_days),
                    offset_type: Ok(value.offset_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewStatusPage {
            data: ::std::result::Result<super::NewStatusPageData, ::std::string::String>,
        }
        impl ::std::default::Default for NewStatusPage {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewStatusPage {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewStatusPageData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewStatusPage> for super::NewStatusPage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewStatusPage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewStatusPage> for NewStatusPage {
            fn from(value: super::NewStatusPage) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewStatusPageData {
            attributes: ::std::result::Result<
                super::NewStatusPageDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewStatusPageDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewStatusPageData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewStatusPageData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewStatusPageDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewStatusPageDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewStatusPageData> for super::NewStatusPageData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewStatusPageData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewStatusPageData> for NewStatusPageData {
            fn from(value: super::NewStatusPageData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewStatusPageDataAttributes {
            allow_search_engine_index: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            authentication_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            authentication_method: ::std::result::Result<
                ::std::option::Option<
                    super::NewStatusPageDataAttributesAuthenticationMethod,
                >,
                ::std::string::String,
            >,
            authentication_password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            external_domain_names: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            failure_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            footer_color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            ga_tracking_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            header_color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_cert: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_slo_service_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_sso_service_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_name_identifier_format: ::std::result::Result<
                ::std::option::Option<
                    super::NewStatusPageDataAttributesSamlNameIdentifierFormat,
                >,
                ::std::string::String,
            >,
            section_order: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewStatusPageDataAttributesSectionOrderItem>,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            show_uptime: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_uptime_last_days: ::std::result::Result<
                ::std::option::Option<
                    super::NewStatusPageDataAttributesShowUptimeLastDays,
                >,
                ::std::string::String,
            >,
            success_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            website_privacy_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_support_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewStatusPageDataAttributes {
            fn default() -> Self {
                Self {
                    allow_search_engine_index: Ok(Default::default()),
                    authentication_enabled: Ok(Default::default()),
                    authentication_method: Ok(Default::default()),
                    authentication_password: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    external_domain_names: Ok(Default::default()),
                    failure_message: Ok(Default::default()),
                    footer_color: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    ga_tracking_id: Ok(Default::default()),
                    header_color: Ok(Default::default()),
                    public: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    public_title: Ok(Default::default()),
                    saml_idp_cert: Ok(Default::default()),
                    saml_idp_slo_service_url: Ok(Default::default()),
                    saml_idp_sso_service_url: Ok(Default::default()),
                    saml_name_identifier_format: Ok(Default::default()),
                    section_order: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    show_uptime: Ok(Default::default()),
                    show_uptime_last_days: Ok(Default::default()),
                    success_message: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    website_privacy_url: Ok(Default::default()),
                    website_support_url: Ok(Default::default()),
                    website_url: Ok(Default::default()),
                }
            }
        }
        impl NewStatusPageDataAttributes {
            pub fn allow_search_engine_index<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.allow_search_engine_index = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for allow_search_engine_index: {e}"
                        )
                    });
                self
            }
            pub fn authentication_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_enabled: {e}"
                        )
                    });
                self
            }
            pub fn authentication_method<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewStatusPageDataAttributesAuthenticationMethod,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_method = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_method: {e}"
                        )
                    });
                self
            }
            pub fn authentication_password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_password = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_password: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn external_domain_names<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.external_domain_names = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for external_domain_names: {e}"
                        )
                    });
                self
            }
            pub fn failure_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.failure_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for failure_message: {e}"
                        )
                    });
                self
            }
            pub fn footer_color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.footer_color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for footer_color: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn ga_tracking_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ga_tracking_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for ga_tracking_id: {e}"
                        )
                    });
                self
            }
            pub fn header_color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.header_color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for header_color: {e}")
                    });
                self
            }
            pub fn public<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.public = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn saml_idp_cert<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_cert = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for saml_idp_cert: {e}")
                    });
                self
            }
            pub fn saml_idp_slo_service_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_slo_service_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_slo_service_url: {e}"
                        )
                    });
                self
            }
            pub fn saml_idp_sso_service_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_sso_service_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_sso_service_url: {e}"
                        )
                    });
                self
            }
            pub fn saml_name_identifier_format<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewStatusPageDataAttributesSamlNameIdentifierFormat,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.saml_name_identifier_format = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_name_identifier_format: {e}"
                        )
                    });
                self
            }
            pub fn section_order<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::NewStatusPageDataAttributesSectionOrderItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.section_order = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for section_order: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn show_uptime<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_uptime: {e}")
                    });
                self
            }
            pub fn show_uptime_last_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewStatusPageDataAttributesShowUptimeLastDays,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime_last_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_uptime_last_days: {e}"
                        )
                    });
                self
            }
            pub fn success_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.success_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for success_message: {e}"
                        )
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn website_privacy_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_privacy_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for website_privacy_url: {e}"
                        )
                    });
                self
            }
            pub fn website_support_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_support_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for website_support_url: {e}"
                        )
                    });
                self
            }
            pub fn website_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for website_url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewStatusPageDataAttributes>
        for super::NewStatusPageDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewStatusPageDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    allow_search_engine_index: value.allow_search_engine_index?,
                    authentication_enabled: value.authentication_enabled?,
                    authentication_method: value.authentication_method?,
                    authentication_password: value.authentication_password?,
                    description: value.description?,
                    enabled: value.enabled?,
                    external_domain_names: value.external_domain_names?,
                    failure_message: value.failure_message?,
                    footer_color: value.footer_color?,
                    functionality_ids: value.functionality_ids?,
                    ga_tracking_id: value.ga_tracking_id?,
                    header_color: value.header_color?,
                    public: value.public?,
                    public_description: value.public_description?,
                    public_title: value.public_title?,
                    saml_idp_cert: value.saml_idp_cert?,
                    saml_idp_slo_service_url: value.saml_idp_slo_service_url?,
                    saml_idp_sso_service_url: value.saml_idp_sso_service_url?,
                    saml_name_identifier_format: value.saml_name_identifier_format?,
                    section_order: value.section_order?,
                    service_ids: value.service_ids?,
                    show_uptime: value.show_uptime?,
                    show_uptime_last_days: value.show_uptime_last_days?,
                    success_message: value.success_message?,
                    time_zone: value.time_zone?,
                    title: value.title?,
                    website_privacy_url: value.website_privacy_url?,
                    website_support_url: value.website_support_url?,
                    website_url: value.website_url?,
                })
            }
        }
        impl ::std::convert::From<super::NewStatusPageDataAttributes>
        for NewStatusPageDataAttributes {
            fn from(value: super::NewStatusPageDataAttributes) -> Self {
                Self {
                    allow_search_engine_index: Ok(value.allow_search_engine_index),
                    authentication_enabled: Ok(value.authentication_enabled),
                    authentication_method: Ok(value.authentication_method),
                    authentication_password: Ok(value.authentication_password),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    external_domain_names: Ok(value.external_domain_names),
                    failure_message: Ok(value.failure_message),
                    footer_color: Ok(value.footer_color),
                    functionality_ids: Ok(value.functionality_ids),
                    ga_tracking_id: Ok(value.ga_tracking_id),
                    header_color: Ok(value.header_color),
                    public: Ok(value.public),
                    public_description: Ok(value.public_description),
                    public_title: Ok(value.public_title),
                    saml_idp_cert: Ok(value.saml_idp_cert),
                    saml_idp_slo_service_url: Ok(value.saml_idp_slo_service_url),
                    saml_idp_sso_service_url: Ok(value.saml_idp_sso_service_url),
                    saml_name_identifier_format: Ok(value.saml_name_identifier_format),
                    section_order: Ok(value.section_order),
                    service_ids: Ok(value.service_ids),
                    show_uptime: Ok(value.show_uptime),
                    show_uptime_last_days: Ok(value.show_uptime_last_days),
                    success_message: Ok(value.success_message),
                    time_zone: Ok(value.time_zone),
                    title: Ok(value.title),
                    website_privacy_url: Ok(value.website_privacy_url),
                    website_support_url: Ok(value.website_support_url),
                    website_url: Ok(value.website_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewStatusPageTemplate {
            data: ::std::result::Result<
                super::NewStatusPageTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewStatusPageTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewStatusPageTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewStatusPageTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewStatusPageTemplate>
        for super::NewStatusPageTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewStatusPageTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewStatusPageTemplate>
        for NewStatusPageTemplate {
            fn from(value: super::NewStatusPageTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewStatusPageTemplateData {
            attributes: ::std::result::Result<
                super::NewStatusPageTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewStatusPageTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewStatusPageTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewStatusPageTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewStatusPageTemplateDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewStatusPageTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewStatusPageTemplateData>
        for super::NewStatusPageTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewStatusPageTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewStatusPageTemplateData>
        for NewStatusPageTemplateData {
            fn from(value: super::NewStatusPageTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewStatusPageTemplateDataAttributes {
            body: ::std::result::Result<::std::string::String, ::std::string::String>,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::NewStatusPageTemplateDataAttributesKind>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            should_notify_subscribers: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            status_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            update_status: ::std::result::Result<
                ::std::option::Option<
                    super::NewStatusPageTemplateDataAttributesUpdateStatus,
                >,
                ::std::string::String,
            >,
            update_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewStatusPageTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    body: Err("no value supplied for body".to_string()),
                    enabled: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    position: Ok(Default::default()),
                    should_notify_subscribers: Ok(Default::default()),
                    status_page_id: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    update_status: Ok(Default::default()),
                    update_title: Ok(Default::default()),
                }
            }
        }
        impl NewStatusPageTemplateDataAttributes {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewStatusPageTemplateDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn should_notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn status_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_id: {e}"
                        )
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn update_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewStatusPageTemplateDataAttributesUpdateStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.update_status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for update_status: {e}")
                    });
                self
            }
            pub fn update_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for update_title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewStatusPageTemplateDataAttributes>
        for super::NewStatusPageTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewStatusPageTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    enabled: value.enabled?,
                    kind: value.kind?,
                    position: value.position?,
                    should_notify_subscribers: value.should_notify_subscribers?,
                    status_page_id: value.status_page_id?,
                    title: value.title?,
                    update_status: value.update_status?,
                    update_title: value.update_title?,
                })
            }
        }
        impl ::std::convert::From<super::NewStatusPageTemplateDataAttributes>
        for NewStatusPageTemplateDataAttributes {
            fn from(value: super::NewStatusPageTemplateDataAttributes) -> Self {
                Self {
                    body: Ok(value.body),
                    enabled: Ok(value.enabled),
                    kind: Ok(value.kind),
                    position: Ok(value.position),
                    should_notify_subscribers: Ok(value.should_notify_subscribers),
                    status_page_id: Ok(value.status_page_id),
                    title: Ok(value.title),
                    update_status: Ok(value.update_status),
                    update_title: Ok(value.update_title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSubStatus {
            data: ::std::result::Result<super::NewSubStatusData, ::std::string::String>,
        }
        impl ::std::default::Default for NewSubStatus {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewSubStatus {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSubStatusData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSubStatus> for super::NewSubStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSubStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewSubStatus> for NewSubStatus {
            fn from(value: super::NewSubStatus) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSubStatusData {
            attributes: ::std::result::Result<
                super::NewSubStatusDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewSubStatusDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSubStatusData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewSubStatusData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSubStatusDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewSubStatusDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSubStatusData> for super::NewSubStatusData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSubStatusData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewSubStatusData> for NewSubStatusData {
            fn from(value: super::NewSubStatusData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewSubStatusDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            parent_status: ::std::result::Result<
                super::NewSubStatusDataAttributesParentStatus,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewSubStatusDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    parent_status: Err(
                        "no value supplied for parent_status".to_string(),
                    ),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewSubStatusDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewSubStatusDataAttributesParentStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parent_status: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewSubStatusDataAttributes>
        for super::NewSubStatusDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewSubStatusDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    parent_status: value.parent_status?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewSubStatusDataAttributes>
        for NewSubStatusDataAttributes {
            fn from(value: super::NewSubStatusDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    parent_status: Ok(value.parent_status),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeam {
            data: ::std::result::Result<super::NewTeamData, ::std::string::String>,
        }
        impl ::std::default::Default for NewTeam {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewTeam {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewTeamData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeam> for super::NewTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewTeam> for NewTeam {
            fn from(value: super::NewTeam) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamData {
            attributes: ::std::result::Result<
                super::NewTeamDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<super::NewTeamDataType, ::std::string::String>,
        }
        impl ::std::default::Default for NewTeamData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewTeamData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewTeamDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewTeamDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamData> for super::NewTeamData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamData> for NewTeamData {
            fn from(value: super::NewTeamData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamDataAttributes {
            admin_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            alert_broadcast_channel: ::std::result::Result<
                ::std::option::Option<super::NewTeamDataAttributesAlertBroadcastChannel>,
                ::std::string::String,
            >,
            alert_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            auto_add_members_scope: ::std::result::Result<
                ::std::option::Option<super::NewTeamDataAttributesAutoAddMembersScope>,
                ::std::string::String,
            >,
            auto_add_members_when_attached: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::NewTeamDataAttributesIncidentBroadcastChannel,
                >,
                ::std::string::String,
            >,
            incident_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_team_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_service_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagertree_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::NewTeamDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewTeamDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::NewTeamDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
            user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            victor_ops_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewTeamDataAttributes {
            fn default() -> Self {
                Self {
                    admin_ids: Ok(Default::default()),
                    alert_broadcast_channel: Ok(Default::default()),
                    alert_broadcast_enabled: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    alerts_email_enabled: Ok(Default::default()),
                    auto_add_members_scope: Ok(Default::default()),
                    auto_add_members_when_attached: Ok(Default::default()),
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    incident_broadcast_channel: Ok(Default::default()),
                    incident_broadcast_enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    opsgenie_team_id: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    pagerduty_service_id: Ok(Default::default()),
                    pagertree_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    user_ids: Ok(Default::default()),
                    victor_ops_id: Ok(Default::default()),
                }
            }
        }
        impl NewTeamDataAttributes {
            pub fn admin_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.admin_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for admin_ids: {e}")
                    });
                self
            }
            pub fn alert_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewTeamDataAttributesAlertBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn alert_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_enabled: {e}"
                        )
                    });
                self
            }
            pub fn auto_add_members_scope<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewTeamDataAttributesAutoAddMembersScope,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.auto_add_members_scope = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_add_members_scope: {e}"
                        )
                    });
                self
            }
            pub fn auto_add_members_when_attached<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_add_members_when_attached = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_add_members_when_attached: {e}"
                        )
                    });
                self
            }
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn incident_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::NewTeamDataAttributesIncidentBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn opsgenie_team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_team_id: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn pagerduty_service_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_service_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_service_id: {e}"
                        )
                    });
                self
            }
            pub fn pagertree_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagertree_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagertree_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewTeamDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::NewTeamDataAttributesSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::NewTeamDataAttributesSlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_ids: {e}")
                    });
                self
            }
            pub fn victor_ops_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.victor_ops_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for victor_ops_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamDataAttributes>
        for super::NewTeamDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    admin_ids: value.admin_ids?,
                    alert_broadcast_channel: value.alert_broadcast_channel?,
                    alert_broadcast_enabled: value.alert_broadcast_enabled?,
                    alert_urgency_id: value.alert_urgency_id?,
                    alerts_email_enabled: value.alerts_email_enabled?,
                    auto_add_members_scope: value.auto_add_members_scope?,
                    auto_add_members_when_attached: value
                        .auto_add_members_when_attached?,
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    description: value.description?,
                    external_id: value.external_id?,
                    incident_broadcast_channel: value.incident_broadcast_channel?,
                    incident_broadcast_enabled: value.incident_broadcast_enabled?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    opsgenie_team_id: value.opsgenie_team_id?,
                    pagerduty_id: value.pagerduty_id?,
                    pagerduty_service_id: value.pagerduty_service_id?,
                    pagertree_id: value.pagertree_id?,
                    position: value.position?,
                    properties: value.properties?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    user_ids: value.user_ids?,
                    victor_ops_id: value.victor_ops_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamDataAttributes>
        for NewTeamDataAttributes {
            fn from(value: super::NewTeamDataAttributes) -> Self {
                Self {
                    admin_ids: Ok(value.admin_ids),
                    alert_broadcast_channel: Ok(value.alert_broadcast_channel),
                    alert_broadcast_enabled: Ok(value.alert_broadcast_enabled),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    alerts_email_enabled: Ok(value.alerts_email_enabled),
                    auto_add_members_scope: Ok(value.auto_add_members_scope),
                    auto_add_members_when_attached: Ok(
                        value.auto_add_members_when_attached,
                    ),
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    description: Ok(value.description),
                    external_id: Ok(value.external_id),
                    incident_broadcast_channel: Ok(value.incident_broadcast_channel),
                    incident_broadcast_enabled: Ok(value.incident_broadcast_enabled),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    opsgenie_team_id: Ok(value.opsgenie_team_id),
                    pagerduty_id: Ok(value.pagerduty_id),
                    pagerduty_service_id: Ok(value.pagerduty_service_id),
                    pagertree_id: Ok(value.pagertree_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    user_ids: Ok(value.user_ids),
                    victor_ops_id: Ok(value.victor_ops_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamDataAttributesAlertBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewTeamDataAttributesAlertBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewTeamDataAttributesAlertBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamDataAttributesAlertBroadcastChannel>
        for super::NewTeamDataAttributesAlertBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamDataAttributesAlertBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamDataAttributesAlertBroadcastChannel>
        for NewTeamDataAttributesAlertBroadcastChannel {
            fn from(value: super::NewTeamDataAttributesAlertBroadcastChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamDataAttributesIncidentBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewTeamDataAttributesIncidentBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl NewTeamDataAttributesIncidentBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamDataAttributesIncidentBroadcastChannel>
        for super::NewTeamDataAttributesIncidentBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamDataAttributesIncidentBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamDataAttributesIncidentBroadcastChannel>
        for NewTeamDataAttributesIncidentBroadcastChannel {
            fn from(
                value: super::NewTeamDataAttributesIncidentBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewTeamDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl NewTeamDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamDataAttributesPropertiesItem>
        for super::NewTeamDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamDataAttributesPropertiesItem>
        for NewTeamDataAttributesPropertiesItem {
            fn from(value: super::NewTeamDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewTeamDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewTeamDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamDataAttributesSlackAliasesItem>
        for super::NewTeamDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamDataAttributesSlackAliasesItem>
        for NewTeamDataAttributesSlackAliasesItem {
            fn from(value: super::NewTeamDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewTeamDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewTeamDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl NewTeamDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewTeamDataAttributesSlackChannelsItem>
        for super::NewTeamDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewTeamDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::NewTeamDataAttributesSlackChannelsItem>
        for NewTeamDataAttributesSlackChannelsItem {
            fn from(value: super::NewTeamDataAttributesSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserEmailAddress {
            data: ::std::result::Result<
                super::NewUserEmailAddressData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserEmailAddress {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewUserEmailAddress {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserEmailAddressData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserEmailAddress>
        for super::NewUserEmailAddress {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserEmailAddress,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewUserEmailAddress> for NewUserEmailAddress {
            fn from(value: super::NewUserEmailAddress) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserEmailAddressData {
            attributes: ::std::result::Result<
                super::NewUserEmailAddressDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewUserEmailAddressDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserEmailAddressData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewUserEmailAddressData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserEmailAddressDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserEmailAddressDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserEmailAddressData>
        for super::NewUserEmailAddressData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserEmailAddressData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewUserEmailAddressData>
        for NewUserEmailAddressData {
            fn from(value: super::NewUserEmailAddressData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserEmailAddressDataAttributes {
            email: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewUserEmailAddressDataAttributes {
            fn default() -> Self {
                Self {
                    email: Err("no value supplied for email".to_string()),
                }
            }
        }
        impl NewUserEmailAddressDataAttributes {
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserEmailAddressDataAttributes>
        for super::NewUserEmailAddressDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserEmailAddressDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { email: value.email? })
            }
        }
        impl ::std::convert::From<super::NewUserEmailAddressDataAttributes>
        for NewUserEmailAddressDataAttributes {
            fn from(value: super::NewUserEmailAddressDataAttributes) -> Self {
                Self { email: Ok(value.email) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserNotificationRule {
            data: ::std::result::Result<
                super::NewUserNotificationRuleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserNotificationRule {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewUserNotificationRule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserNotificationRuleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserNotificationRule>
        for super::NewUserNotificationRule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserNotificationRule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewUserNotificationRule>
        for NewUserNotificationRule {
            fn from(value: super::NewUserNotificationRule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserNotificationRuleData {
            attributes: ::std::result::Result<
                super::NewUserNotificationRuleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewUserNotificationRuleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserNotificationRuleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewUserNotificationRuleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserNotificationRuleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserNotificationRuleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserNotificationRuleData>
        for super::NewUserNotificationRuleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserNotificationRuleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewUserNotificationRuleData>
        for NewUserNotificationRuleData {
            fn from(value: super::NewUserNotificationRuleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserNotificationRuleDataAttributes {
            delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            enabled_contact_types: ::std::result::Result<
                ::std::vec::Vec<
                    super::NewUserNotificationRuleDataAttributesEnabledContactTypesItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            user_call_number_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_device_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_email_address_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_sms_number_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserNotificationRuleDataAttributes {
            fn default() -> Self {
                Self {
                    delay: Ok(Default::default()),
                    enabled_contact_types: Err(
                        "no value supplied for enabled_contact_types".to_string(),
                    ),
                    position: Ok(Default::default()),
                    user_call_number_id: Ok(Default::default()),
                    user_device_id: Ok(Default::default()),
                    user_email_address_id: Ok(Default::default()),
                    user_sms_number_id: Ok(Default::default()),
                }
            }
        }
        impl NewUserNotificationRuleDataAttributes {
            pub fn delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay: {e}")
                    });
                self
            }
            pub fn enabled_contact_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewUserNotificationRuleDataAttributesEnabledContactTypesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.enabled_contact_types = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for enabled_contact_types: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn user_call_number_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_call_number_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_call_number_id: {e}"
                        )
                    });
                self
            }
            pub fn user_device_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_device_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_device_id: {e}"
                        )
                    });
                self
            }
            pub fn user_email_address_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_email_address_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_email_address_id: {e}"
                        )
                    });
                self
            }
            pub fn user_sms_number_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_sms_number_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_sms_number_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserNotificationRuleDataAttributes>
        for super::NewUserNotificationRuleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserNotificationRuleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    delay: value.delay?,
                    enabled_contact_types: value.enabled_contact_types?,
                    position: value.position?,
                    user_call_number_id: value.user_call_number_id?,
                    user_device_id: value.user_device_id?,
                    user_email_address_id: value.user_email_address_id?,
                    user_sms_number_id: value.user_sms_number_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewUserNotificationRuleDataAttributes>
        for NewUserNotificationRuleDataAttributes {
            fn from(value: super::NewUserNotificationRuleDataAttributes) -> Self {
                Self {
                    delay: Ok(value.delay),
                    enabled_contact_types: Ok(value.enabled_contact_types),
                    position: Ok(value.position),
                    user_call_number_id: Ok(value.user_call_number_id),
                    user_device_id: Ok(value.user_device_id),
                    user_email_address_id: Ok(value.user_email_address_id),
                    user_sms_number_id: Ok(value.user_sms_number_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserPhoneNumber {
            data: ::std::result::Result<
                super::NewUserPhoneNumberData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserPhoneNumber {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewUserPhoneNumber {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserPhoneNumberData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserPhoneNumber> for super::NewUserPhoneNumber {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserPhoneNumber,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewUserPhoneNumber> for NewUserPhoneNumber {
            fn from(value: super::NewUserPhoneNumber) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserPhoneNumberData {
            attributes: ::std::result::Result<
                super::NewUserPhoneNumberDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewUserPhoneNumberDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewUserPhoneNumberData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewUserPhoneNumberData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserPhoneNumberDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewUserPhoneNumberDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserPhoneNumberData>
        for super::NewUserPhoneNumberData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserPhoneNumberData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewUserPhoneNumberData>
        for NewUserPhoneNumberData {
            fn from(value: super::NewUserPhoneNumberData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewUserPhoneNumberDataAttributes {
            phone: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewUserPhoneNumberDataAttributes {
            fn default() -> Self {
                Self {
                    phone: Err("no value supplied for phone".to_string()),
                }
            }
        }
        impl NewUserPhoneNumberDataAttributes {
            pub fn phone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.phone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewUserPhoneNumberDataAttributes>
        for super::NewUserPhoneNumberDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewUserPhoneNumberDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { phone: value.phone? })
            }
        }
        impl ::std::convert::From<super::NewUserPhoneNumberDataAttributes>
        for NewUserPhoneNumberDataAttributes {
            fn from(value: super::NewUserPhoneNumberDataAttributes) -> Self {
                Self { phone: Ok(value.phone) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWebhooksEndpoint {
            data: ::std::result::Result<
                super::NewWebhooksEndpointData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWebhooksEndpoint {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWebhooksEndpoint {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWebhooksEndpointData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWebhooksEndpoint>
        for super::NewWebhooksEndpoint {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWebhooksEndpoint,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWebhooksEndpoint> for NewWebhooksEndpoint {
            fn from(value: super::NewWebhooksEndpoint) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWebhooksEndpointData {
            attributes: ::std::result::Result<
                super::NewWebhooksEndpointDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWebhooksEndpointDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWebhooksEndpointData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWebhooksEndpointData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWebhooksEndpointDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWebhooksEndpointDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWebhooksEndpointData>
        for super::NewWebhooksEndpointData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWebhooksEndpointData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWebhooksEndpointData>
        for NewWebhooksEndpointData {
            fn from(value: super::NewWebhooksEndpointData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWebhooksEndpointDataAttributes {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            event_types: ::std::result::Result<
                ::std::vec::Vec<super::NewWebhooksEndpointDataAttributesEventTypesItem>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            secret: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            url: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for NewWebhooksEndpointDataAttributes {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                    event_types: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    secret: Ok(Default::default()),
                    url: Err("no value supplied for url".to_string()),
                }
            }
        }
        impl NewWebhooksEndpointDataAttributes {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn event_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::NewWebhooksEndpointDataAttributesEventTypesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.event_types = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_types: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWebhooksEndpointDataAttributes>
        for super::NewWebhooksEndpointDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWebhooksEndpointDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    enabled: value.enabled?,
                    event_types: value.event_types?,
                    name: value.name?,
                    secret: value.secret?,
                    url: value.url?,
                })
            }
        }
        impl ::std::convert::From<super::NewWebhooksEndpointDataAttributes>
        for NewWebhooksEndpointDataAttributes {
            fn from(value: super::NewWebhooksEndpointDataAttributes) -> Self {
                Self {
                    enabled: Ok(value.enabled),
                    event_types: Ok(value.event_types),
                    name: Ok(value.name),
                    secret: Ok(value.secret),
                    url: Ok(value.url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflow {
            data: ::std::result::Result<super::NewWorkflowData, ::std::string::String>,
        }
        impl ::std::default::Default for NewWorkflow {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWorkflow {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflow> for super::NewWorkflow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWorkflow> for NewWorkflow {
            fn from(value: super::NewWorkflow) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowCustomFieldSelection {
            data: ::std::result::Result<
                super::NewWorkflowCustomFieldSelectionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowCustomFieldSelection {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWorkflowCustomFieldSelection {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowCustomFieldSelectionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowCustomFieldSelection>
        for super::NewWorkflowCustomFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowCustomFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWorkflowCustomFieldSelection>
        for NewWorkflowCustomFieldSelection {
            fn from(value: super::NewWorkflowCustomFieldSelection) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowCustomFieldSelectionData {
            attributes: ::std::result::Result<
                super::NewWorkflowCustomFieldSelectionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWorkflowCustomFieldSelectionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowCustomFieldSelectionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWorkflowCustomFieldSelectionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewWorkflowCustomFieldSelectionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewWorkflowCustomFieldSelectionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowCustomFieldSelectionData>
        for super::NewWorkflowCustomFieldSelectionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowCustomFieldSelectionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowCustomFieldSelectionData>
        for NewWorkflowCustomFieldSelectionData {
            fn from(value: super::NewWorkflowCustomFieldSelectionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowCustomFieldSelectionDataAttributes {
            custom_field_id: ::std::result::Result<i64, ::std::string::String>,
            incident_condition: ::std::result::Result<
                super::NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            workflow_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowCustomFieldSelectionDataAttributes {
            fn default() -> Self {
                Self {
                    custom_field_id: Err(
                        "no value supplied for custom_field_id".to_string(),
                    ),
                    incident_condition: Err(
                        "no value supplied for incident_condition".to_string(),
                    ),
                    selected_option_ids: Ok(Default::default()),
                    values: Ok(Default::default()),
                    workflow_id: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowCustomFieldSelectionDataAttributes {
            pub fn custom_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_field_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewWorkflowCustomFieldSelectionDataAttributesIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
            pub fn workflow_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowCustomFieldSelectionDataAttributes>
        for super::NewWorkflowCustomFieldSelectionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowCustomFieldSelectionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_field_id: value.custom_field_id?,
                    incident_condition: value.incident_condition?,
                    selected_option_ids: value.selected_option_ids?,
                    values: value.values?,
                    workflow_id: value.workflow_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowCustomFieldSelectionDataAttributes>
        for NewWorkflowCustomFieldSelectionDataAttributes {
            fn from(
                value: super::NewWorkflowCustomFieldSelectionDataAttributes,
            ) -> Self {
                Self {
                    custom_field_id: Ok(value.custom_field_id),
                    incident_condition: Ok(value.incident_condition),
                    selected_option_ids: Ok(value.selected_option_ids),
                    values: Ok(value.values),
                    workflow_id: Ok(value.workflow_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowData {
            attributes: ::std::result::Result<
                super::NewWorkflowDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWorkflowDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWorkflowData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowData> for super::NewWorkflowData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowData> for NewWorkflowData {
            fn from(value: super::NewWorkflowData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowDataAttributes {
            cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            command: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            command_feedback_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            continuously_repeat: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            locked: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowDataAttributesPriority>,
                ::std::string::String,
            >,
            repeat_condition_duration_since_first_run: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repeat_condition_number_of_repeats: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat_every_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repeat_on: ::std::result::Result<
                ::std::vec::Vec<super::NewWorkflowDataAttributesRepeatOnItem>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            sub_status_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            trigger_params: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowDataAttributesTriggerParams>,
                ::std::string::String,
            >,
            wait: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            workflow_group_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowDataAttributes {
            fn default() -> Self {
                Self {
                    cause_ids: Ok(Default::default()),
                    command: Ok(Default::default()),
                    command_feedback_enabled: Ok(Default::default()),
                    continuously_repeat: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_role_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    locked: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    repeat_condition_duration_since_first_run: Ok(Default::default()),
                    repeat_condition_number_of_repeats: Ok(Default::default()),
                    repeat_every_duration: Ok(Default::default()),
                    repeat_on: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    sub_status_ids: Ok(Default::default()),
                    trigger_params: Ok(Default::default()),
                    wait: Ok(Default::default()),
                    workflow_group_id: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowDataAttributes {
            pub fn cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cause_ids: {e}")
                    });
                self
            }
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn command_feedback_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.command_feedback_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for command_feedback_enabled: {e}"
                        )
                    });
                self
            }
            pub fn continuously_repeat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.continuously_repeat = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for continuously_repeat: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_role_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_ids: {e}"
                        )
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn locked<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.locked = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for locked: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowDataAttributesPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn repeat_condition_duration_since_first_run<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_condition_duration_since_first_run = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_condition_duration_since_first_run: {e}"
                        )
                    });
                self
            }
            pub fn repeat_condition_number_of_repeats<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_condition_number_of_repeats = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_condition_number_of_repeats: {e}"
                        )
                    });
                self
            }
            pub fn repeat_every_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_every_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_every_duration: {e}"
                        )
                    });
                self
            }
            pub fn repeat_on<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::NewWorkflowDataAttributesRepeatOnItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_on = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_on: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn sub_status_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sub_status_ids: {e}"
                        )
                    });
                self
            }
            pub fn trigger_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowDataAttributesTriggerParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for trigger_params: {e}"
                        )
                    });
                self
            }
            pub fn wait<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.wait = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for wait: {e}")
                    });
                self
            }
            pub fn workflow_group_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_group_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflow_group_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowDataAttributes>
        for super::NewWorkflowDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cause_ids: value.cause_ids?,
                    command: value.command?,
                    command_feedback_enabled: value.command_feedback_enabled?,
                    continuously_repeat: value.continuously_repeat?,
                    description: value.description?,
                    enabled: value.enabled?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_role_ids: value.incident_role_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    locked: value.locked?,
                    name: value.name?,
                    position: value.position?,
                    priority: value.priority?,
                    repeat_condition_duration_since_first_run: value
                        .repeat_condition_duration_since_first_run?,
                    repeat_condition_number_of_repeats: value
                        .repeat_condition_number_of_repeats?,
                    repeat_every_duration: value.repeat_every_duration?,
                    repeat_on: value.repeat_on?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                    sub_status_ids: value.sub_status_ids?,
                    trigger_params: value.trigger_params?,
                    wait: value.wait?,
                    workflow_group_id: value.workflow_group_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowDataAttributes>
        for NewWorkflowDataAttributes {
            fn from(value: super::NewWorkflowDataAttributes) -> Self {
                Self {
                    cause_ids: Ok(value.cause_ids),
                    command: Ok(value.command),
                    command_feedback_enabled: Ok(value.command_feedback_enabled),
                    continuously_repeat: Ok(value.continuously_repeat),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_role_ids: Ok(value.incident_role_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    locked: Ok(value.locked),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    priority: Ok(value.priority),
                    repeat_condition_duration_since_first_run: Ok(
                        value.repeat_condition_duration_since_first_run,
                    ),
                    repeat_condition_number_of_repeats: Ok(
                        value.repeat_condition_number_of_repeats,
                    ),
                    repeat_every_duration: Ok(value.repeat_every_duration),
                    repeat_on: Ok(value.repeat_on),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                    sub_status_ids: Ok(value.sub_status_ids),
                    trigger_params: Ok(value.trigger_params),
                    wait: Ok(value.wait),
                    workflow_group_id: Ok(value.workflow_group_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowFormFieldCondition {
            data: ::std::result::Result<
                super::NewWorkflowFormFieldConditionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowFormFieldCondition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWorkflowFormFieldCondition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowFormFieldConditionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowFormFieldCondition>
        for super::NewWorkflowFormFieldCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowFormFieldCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWorkflowFormFieldCondition>
        for NewWorkflowFormFieldCondition {
            fn from(value: super::NewWorkflowFormFieldCondition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowFormFieldConditionData {
            attributes: ::std::result::Result<
                super::NewWorkflowFormFieldConditionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWorkflowFormFieldConditionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowFormFieldConditionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWorkflowFormFieldConditionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewWorkflowFormFieldConditionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowFormFieldConditionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowFormFieldConditionData>
        for super::NewWorkflowFormFieldConditionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowFormFieldConditionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowFormFieldConditionData>
        for NewWorkflowFormFieldConditionData {
            fn from(value: super::NewWorkflowFormFieldConditionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowFormFieldConditionDataAttributes {
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_condition: ::std::result::Result<
                super::NewWorkflowFormFieldConditionDataAttributesIncidentCondition,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            workflow_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowFormFieldConditionDataAttributes {
            fn default() -> Self {
                Self {
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    incident_condition: Err(
                        "no value supplied for incident_condition".to_string(),
                    ),
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    values: Ok(Default::default()),
                    workflow_id: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowFormFieldConditionDataAttributes {
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewWorkflowFormFieldConditionDataAttributesIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
            pub fn workflow_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowFormFieldConditionDataAttributes>
        for super::NewWorkflowFormFieldConditionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowFormFieldConditionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form_field_id: value.form_field_id?,
                    incident_condition: value.incident_condition?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    values: value.values?,
                    workflow_id: value.workflow_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowFormFieldConditionDataAttributes>
        for NewWorkflowFormFieldConditionDataAttributes {
            fn from(value: super::NewWorkflowFormFieldConditionDataAttributes) -> Self {
                Self {
                    form_field_id: Ok(value.form_field_id),
                    incident_condition: Ok(value.incident_condition),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    values: Ok(value.values),
                    workflow_id: Ok(value.workflow_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowGroup {
            data: ::std::result::Result<
                super::NewWorkflowGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWorkflowGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowGroup> for super::NewWorkflowGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWorkflowGroup> for NewWorkflowGroup {
            fn from(value: super::NewWorkflowGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowGroupData {
            attributes: ::std::result::Result<
                super::NewWorkflowGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWorkflowGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWorkflowGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowGroupDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowGroupData>
        for super::NewWorkflowGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowGroupData> for NewWorkflowGroupData {
            fn from(value: super::NewWorkflowGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowGroupDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expanded: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowGroupDataAttributesKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowGroupDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    expanded: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowGroupDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expanded<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.expanded = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expanded: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowGroupDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowGroupDataAttributes>
        for super::NewWorkflowGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    expanded: value.expanded?,
                    icon: value.icon?,
                    kind: value.kind?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowGroupDataAttributes>
        for NewWorkflowGroupDataAttributes {
            fn from(value: super::NewWorkflowGroupDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    expanded: Ok(value.expanded),
                    icon: Ok(value.icon),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRun {
            data: ::std::result::Result<
                super::NewWorkflowRunData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRun {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWorkflowRun {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowRunData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRun> for super::NewWorkflowRun {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRun,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRun> for NewWorkflowRun {
            fn from(value: super::NewWorkflowRun) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunData {
            attributes: ::std::result::Result<
                super::NewWorkflowRunDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWorkflowRunDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWorkflowRunData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowRunDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowRunDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunData> for super::NewWorkflowRunData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunData> for NewWorkflowRunData {
            fn from(value: super::NewWorkflowRunData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributes {
            subtype_0: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype0>,
                ::std::string::String,
            >,
            subtype_1: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype1>,
                ::std::string::String,
            >,
            subtype_2: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype2>,
                ::std::string::String,
            >,
            subtype_3: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype3>,
                ::std::string::String,
            >,
            subtype_4: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype4>,
                ::std::string::String,
            >,
            subtype_5: ::std::result::Result<
                ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype5>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributes {
            fn default() -> Self {
                Self {
                    subtype_0: Ok(Default::default()),
                    subtype_1: Ok(Default::default()),
                    subtype_2: Ok(Default::default()),
                    subtype_3: Ok(Default::default()),
                    subtype_4: Ok(Default::default()),
                    subtype_5: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowRunDataAttributes {
            pub fn subtype_0<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype0>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_0 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_0: {e}")
                    });
                self
            }
            pub fn subtype_1<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype1>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_1 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_1: {e}")
                    });
                self
            }
            pub fn subtype_2<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype2>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_2 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_2: {e}")
                    });
                self
            }
            pub fn subtype_3<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype3>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_3 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_3: {e}")
                    });
                self
            }
            pub fn subtype_4<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype4>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_4 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_4: {e}")
                    });
                self
            }
            pub fn subtype_5<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::NewWorkflowRunDataAttributesSubtype5>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_5 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_5: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributes>
        for super::NewWorkflowRunDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    subtype_0: value.subtype_0?,
                    subtype_1: value.subtype_1?,
                    subtype_2: value.subtype_2?,
                    subtype_3: value.subtype_3?,
                    subtype_4: value.subtype_4?,
                    subtype_5: value.subtype_5?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributes>
        for NewWorkflowRunDataAttributes {
            fn from(value: super::NewWorkflowRunDataAttributes) -> Self {
                Self {
                    subtype_0: Ok(value.subtype_0),
                    subtype_1: Ok(value.subtype_1),
                    subtype_2: Ok(value.subtype_2),
                    subtype_3: Ok(value.subtype_3),
                    subtype_4: Ok(value.subtype_4),
                    subtype_5: Ok(value.subtype_5),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributesSubtype0 {
            check_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            immediate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype0 {
            fn default() -> Self {
                Self {
                    check_conditions: Ok(Default::default()),
                    context: Ok(Default::default()),
                    immediate: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowRunDataAttributesSubtype0 {
            pub fn check_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_conditions: {e}"
                        )
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn immediate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.immediate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for immediate: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributesSubtype0>
        for super::NewWorkflowRunDataAttributesSubtype0 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributesSubtype0,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    check_conditions: value.check_conditions?,
                    context: value.context?,
                    immediate: value.immediate?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributesSubtype0>
        for NewWorkflowRunDataAttributesSubtype0 {
            fn from(value: super::NewWorkflowRunDataAttributesSubtype0) -> Self {
                Self {
                    check_conditions: Ok(value.check_conditions),
                    context: Ok(value.context),
                    immediate: Ok(value.immediate),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributesSubtype1 {
            check_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            immediate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype1 {
            fn default() -> Self {
                Self {
                    check_conditions: Ok(Default::default()),
                    context: Ok(Default::default()),
                    immediate: Ok(Default::default()),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                }
            }
        }
        impl NewWorkflowRunDataAttributesSubtype1 {
            pub fn check_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_conditions: {e}"
                        )
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn immediate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.immediate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for immediate: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributesSubtype1>
        for super::NewWorkflowRunDataAttributesSubtype1 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributesSubtype1,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    check_conditions: value.check_conditions?,
                    context: value.context?,
                    immediate: value.immediate?,
                    incident_id: value.incident_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributesSubtype1>
        for NewWorkflowRunDataAttributesSubtype1 {
            fn from(value: super::NewWorkflowRunDataAttributesSubtype1) -> Self {
                Self {
                    check_conditions: Ok(value.check_conditions),
                    context: Ok(value.context),
                    immediate: Ok(value.immediate),
                    incident_id: Ok(value.incident_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributesSubtype2 {
            check_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            immediate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_mortem_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype2 {
            fn default() -> Self {
                Self {
                    check_conditions: Ok(Default::default()),
                    context: Ok(Default::default()),
                    immediate: Ok(Default::default()),
                    post_mortem_id: Err(
                        "no value supplied for post_mortem_id".to_string(),
                    ),
                }
            }
        }
        impl NewWorkflowRunDataAttributesSubtype2 {
            pub fn check_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_conditions: {e}"
                        )
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn immediate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.immediate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for immediate: {e}")
                    });
                self
            }
            pub fn post_mortem_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributesSubtype2>
        for super::NewWorkflowRunDataAttributesSubtype2 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributesSubtype2,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    check_conditions: value.check_conditions?,
                    context: value.context?,
                    immediate: value.immediate?,
                    post_mortem_id: value.post_mortem_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributesSubtype2>
        for NewWorkflowRunDataAttributesSubtype2 {
            fn from(value: super::NewWorkflowRunDataAttributesSubtype2) -> Self {
                Self {
                    check_conditions: Ok(value.check_conditions),
                    context: Ok(value.context),
                    immediate: Ok(value.immediate),
                    post_mortem_id: Ok(value.post_mortem_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributesSubtype3 {
            action_item_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            check_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            immediate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype3 {
            fn default() -> Self {
                Self {
                    action_item_id: Err(
                        "no value supplied for action_item_id".to_string(),
                    ),
                    check_conditions: Ok(Default::default()),
                    context: Ok(Default::default()),
                    immediate: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowRunDataAttributesSubtype3 {
            pub fn action_item_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.action_item_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for action_item_id: {e}"
                        )
                    });
                self
            }
            pub fn check_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_conditions: {e}"
                        )
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn immediate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.immediate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for immediate: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributesSubtype3>
        for super::NewWorkflowRunDataAttributesSubtype3 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributesSubtype3,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_item_id: value.action_item_id?,
                    check_conditions: value.check_conditions?,
                    context: value.context?,
                    immediate: value.immediate?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributesSubtype3>
        for NewWorkflowRunDataAttributesSubtype3 {
            fn from(value: super::NewWorkflowRunDataAttributesSubtype3) -> Self {
                Self {
                    action_item_id: Ok(value.action_item_id),
                    check_conditions: Ok(value.check_conditions),
                    context: Ok(value.context),
                    immediate: Ok(value.immediate),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributesSubtype4 {
            alert_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            check_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            immediate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype4 {
            fn default() -> Self {
                Self {
                    alert_id: Err("no value supplied for alert_id".to_string()),
                    check_conditions: Ok(Default::default()),
                    context: Ok(Default::default()),
                    immediate: Ok(Default::default()),
                }
            }
        }
        impl NewWorkflowRunDataAttributesSubtype4 {
            pub fn alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_id: {e}")
                    });
                self
            }
            pub fn check_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_conditions: {e}"
                        )
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn immediate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.immediate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for immediate: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributesSubtype4>
        for super::NewWorkflowRunDataAttributesSubtype4 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributesSubtype4,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_id: value.alert_id?,
                    check_conditions: value.check_conditions?,
                    context: value.context?,
                    immediate: value.immediate?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributesSubtype4>
        for NewWorkflowRunDataAttributesSubtype4 {
            fn from(value: super::NewWorkflowRunDataAttributesSubtype4) -> Self {
                Self {
                    alert_id: Ok(value.alert_id),
                    check_conditions: Ok(value.check_conditions),
                    context: Ok(value.context),
                    immediate: Ok(value.immediate),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowRunDataAttributesSubtype5 {
            check_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            immediate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            pulse_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowRunDataAttributesSubtype5 {
            fn default() -> Self {
                Self {
                    check_conditions: Ok(Default::default()),
                    context: Ok(Default::default()),
                    immediate: Ok(Default::default()),
                    pulse_id: Err("no value supplied for pulse_id".to_string()),
                }
            }
        }
        impl NewWorkflowRunDataAttributesSubtype5 {
            pub fn check_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_conditions: {e}"
                        )
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn immediate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.immediate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for immediate: {e}")
                    });
                self
            }
            pub fn pulse_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pulse_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowRunDataAttributesSubtype5>
        for super::NewWorkflowRunDataAttributesSubtype5 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowRunDataAttributesSubtype5,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    check_conditions: value.check_conditions?,
                    context: value.context?,
                    immediate: value.immediate?,
                    pulse_id: value.pulse_id?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowRunDataAttributesSubtype5>
        for NewWorkflowRunDataAttributesSubtype5 {
            fn from(value: super::NewWorkflowRunDataAttributesSubtype5) -> Self {
                Self {
                    check_conditions: Ok(value.check_conditions),
                    context: Ok(value.context),
                    immediate: Ok(value.immediate),
                    pulse_id: Ok(value.pulse_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowTask {
            data: ::std::result::Result<
                super::NewWorkflowTaskData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowTask {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl NewWorkflowTask {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowTaskData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowTask> for super::NewWorkflowTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::NewWorkflowTask> for NewWorkflowTask {
            fn from(value: super::NewWorkflowTask) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowTaskData {
            attributes: ::std::result::Result<
                super::NewWorkflowTaskDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::NewWorkflowTaskDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowTaskData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl NewWorkflowTaskData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowTaskDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::NewWorkflowTaskDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowTaskData>
        for super::NewWorkflowTaskData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowTaskData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowTaskData> for NewWorkflowTaskData {
            fn from(value: super::NewWorkflowTaskData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct NewWorkflowTaskDataAttributes {
            enabled: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            skip_on_failure: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            task_params: ::std::result::Result<
                super::NewWorkflowTaskDataAttributesTaskParams,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for NewWorkflowTaskDataAttributes {
            fn default() -> Self {
                Self {
                    enabled: Ok(super::defaults::default_bool::<true>()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    skip_on_failure: Ok(Default::default()),
                    task_params: Err("no value supplied for task_params".to_string()),
                }
            }
        }
        impl NewWorkflowTaskDataAttributes {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn skip_on_failure<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skip_on_failure = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for skip_on_failure: {e}"
                        )
                    });
                self
            }
            pub fn task_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::NewWorkflowTaskDataAttributesTaskParams,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_params: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<NewWorkflowTaskDataAttributes>
        for super::NewWorkflowTaskDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: NewWorkflowTaskDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    enabled: value.enabled?,
                    name: value.name?,
                    position: value.position?,
                    skip_on_failure: value.skip_on_failure?,
                    task_params: value.task_params?,
                })
            }
        }
        impl ::std::convert::From<super::NewWorkflowTaskDataAttributes>
        for NewWorkflowTaskDataAttributes {
            fn from(value: super::NewWorkflowTaskDataAttributes) -> Self {
                Self {
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    skip_on_failure: Ok(value.skip_on_failure),
                    task_params: Ok(value.task_params),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallPayReport {
            created_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            csv_file_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            currency: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            daily_rate_cents: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            enabled_granular_time_breakdown: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            end_date: ::std::result::Result<
                ::chrono::naive::NaiveDate,
                ::std::string::String,
            >,
            has_single_rate: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            hourly_rate_cents: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            include_shadow: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            last_generated_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            pay_type: ::std::result::Result<
                ::std::option::Option<super::OnCallPayReportPayType>,
                ::std::string::String,
            >,
            show_individual_shift_data: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            start_date: ::std::result::Result<
                ::chrono::naive::NaiveDate,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::OnCallPayReportStatus,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            total_duration: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            total_pay_cents: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            use_responders_time_zone: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            users_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            xlsx_file_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallPayReport {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    csv_file_url: Ok(Default::default()),
                    currency: Ok(Default::default()),
                    daily_rate_cents: Ok(Default::default()),
                    enabled_granular_time_breakdown: Ok(Default::default()),
                    end_date: Err("no value supplied for end_date".to_string()),
                    has_single_rate: Ok(Default::default()),
                    hourly_rate_cents: Ok(Default::default()),
                    include_shadow: Ok(Default::default()),
                    last_generated_at: Ok(Default::default()),
                    pay_type: Ok(Default::default()),
                    show_individual_shift_data: Ok(Default::default()),
                    start_date: Err("no value supplied for start_date".to_string()),
                    status: Err("no value supplied for status".to_string()),
                    time_zone: Ok(Default::default()),
                    total_duration: Ok(Default::default()),
                    total_pay_cents: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    use_responders_time_zone: Ok(Default::default()),
                    users_count: Ok(Default::default()),
                    xlsx_file_url: Ok(Default::default()),
                }
            }
        }
        impl OnCallPayReport {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn csv_file_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.csv_file_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for csv_file_url: {e}")
                    });
                self
            }
            pub fn currency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.currency = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for currency: {e}")
                    });
                self
            }
            pub fn daily_rate_cents<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.daily_rate_cents = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for daily_rate_cents: {e}"
                        )
                    });
                self
            }
            pub fn enabled_granular_time_breakdown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled_granular_time_breakdown = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for enabled_granular_time_breakdown: {e}"
                        )
                    });
                self
            }
            pub fn end_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::naive::NaiveDate>,
                T::Error: ::std::fmt::Display,
            {
                self.end_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_date: {e}")
                    });
                self
            }
            pub fn has_single_rate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.has_single_rate = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for has_single_rate: {e}"
                        )
                    });
                self
            }
            pub fn hourly_rate_cents<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.hourly_rate_cents = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hourly_rate_cents: {e}"
                        )
                    });
                self
            }
            pub fn include_shadow<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.include_shadow = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for include_shadow: {e}"
                        )
                    });
                self
            }
            pub fn last_generated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.last_generated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for last_generated_at: {e}"
                        )
                    });
                self
            }
            pub fn pay_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OnCallPayReportPayType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.pay_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pay_type: {e}")
                    });
                self
            }
            pub fn show_individual_shift_data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_individual_shift_data = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_individual_shift_data: {e}"
                        )
                    });
                self
            }
            pub fn start_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::naive::NaiveDate>,
                T::Error: ::std::fmt::Display,
            {
                self.start_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_date: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallPayReportStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn total_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.total_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for total_duration: {e}"
                        )
                    });
                self
            }
            pub fn total_pay_cents<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.total_pay_cents = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for total_pay_cents: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn use_responders_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.use_responders_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for use_responders_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn users_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.users_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users_count: {e}")
                    });
                self
            }
            pub fn xlsx_file_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.xlsx_file_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for xlsx_file_url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallPayReport> for super::OnCallPayReport {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallPayReport,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    csv_file_url: value.csv_file_url?,
                    currency: value.currency?,
                    daily_rate_cents: value.daily_rate_cents?,
                    enabled_granular_time_breakdown: value
                        .enabled_granular_time_breakdown?,
                    end_date: value.end_date?,
                    has_single_rate: value.has_single_rate?,
                    hourly_rate_cents: value.hourly_rate_cents?,
                    include_shadow: value.include_shadow?,
                    last_generated_at: value.last_generated_at?,
                    pay_type: value.pay_type?,
                    show_individual_shift_data: value.show_individual_shift_data?,
                    start_date: value.start_date?,
                    status: value.status?,
                    time_zone: value.time_zone?,
                    total_duration: value.total_duration?,
                    total_pay_cents: value.total_pay_cents?,
                    updated_at: value.updated_at?,
                    use_responders_time_zone: value.use_responders_time_zone?,
                    users_count: value.users_count?,
                    xlsx_file_url: value.xlsx_file_url?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallPayReport> for OnCallPayReport {
            fn from(value: super::OnCallPayReport) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    csv_file_url: Ok(value.csv_file_url),
                    currency: Ok(value.currency),
                    daily_rate_cents: Ok(value.daily_rate_cents),
                    enabled_granular_time_breakdown: Ok(
                        value.enabled_granular_time_breakdown,
                    ),
                    end_date: Ok(value.end_date),
                    has_single_rate: Ok(value.has_single_rate),
                    hourly_rate_cents: Ok(value.hourly_rate_cents),
                    include_shadow: Ok(value.include_shadow),
                    last_generated_at: Ok(value.last_generated_at),
                    pay_type: Ok(value.pay_type),
                    show_individual_shift_data: Ok(value.show_individual_shift_data),
                    start_date: Ok(value.start_date),
                    status: Ok(value.status),
                    time_zone: Ok(value.time_zone),
                    total_duration: Ok(value.total_duration),
                    total_pay_cents: Ok(value.total_pay_cents),
                    updated_at: Ok(value.updated_at),
                    use_responders_time_zone: Ok(value.use_responders_time_zone),
                    users_count: Ok(value.users_count),
                    xlsx_file_url: Ok(value.xlsx_file_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallPayReportList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::OnCallPayReportListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for OnCallPayReportList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl OnCallPayReportList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallPayReportListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallPayReportList>
        for super::OnCallPayReportList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallPayReportList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallPayReportList> for OnCallPayReportList {
            fn from(value: super::OnCallPayReportList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallPayReportListDataItem {
            attributes: ::std::result::Result<
                super::OnCallPayReport,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OnCallPayReportListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallPayReportListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OnCallPayReportListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallPayReport>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallPayReportListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallPayReportListDataItem>
        for super::OnCallPayReportListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallPayReportListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallPayReportListDataItem>
        for OnCallPayReportListDataItem {
            fn from(value: super::OnCallPayReportListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallPayReportResponse {
            data: ::std::result::Result<
                super::OnCallPayReportResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallPayReportResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl OnCallPayReportResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallPayReportResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallPayReportResponse>
        for super::OnCallPayReportResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallPayReportResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallPayReportResponse>
        for OnCallPayReportResponse {
            fn from(value: super::OnCallPayReportResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallPayReportResponseData {
            attributes: ::std::result::Result<
                super::OnCallPayReport,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OnCallPayReportResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallPayReportResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OnCallPayReportResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallPayReport>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallPayReportResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallPayReportResponseData>
        for super::OnCallPayReportResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallPayReportResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallPayReportResponseData>
        for OnCallPayReportResponseData {
            fn from(value: super::OnCallPayReportResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRole {
            alert_fields_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAlertFieldsPermissionsItem>,
                ::std::string::String,
            >,
            alert_groups_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAlertGroupsPermissionsItem>,
                ::std::string::String,
            >,
            alert_routing_rules_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAlertRoutingRulesPermissionsItem>,
                ::std::string::String,
            >,
            alert_sources_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAlertSourcesPermissionsItem>,
                ::std::string::String,
            >,
            alert_urgency_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAlertUrgencyPermissionsItem>,
                ::std::string::String,
            >,
            alerts_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAlertsPermissionsItem>,
                ::std::string::String,
            >,
            api_keys_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleApiKeysPermissionsItem>,
                ::std::string::String,
            >,
            audits_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleAuditsPermissionsItem>,
                ::std::string::String,
            >,
            catalogs_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleCatalogsPermissionsItem>,
                ::std::string::String,
            >,
            contacts_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleContactsPermissionsItem>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            escalation_policies_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleEscalationPoliciesPermissionsItem>,
                ::std::string::String,
            >,
            groups_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleGroupsPermissionsItem>,
                ::std::string::String,
            >,
            heartbeats_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleHeartbeatsPermissionsItem>,
                ::std::string::String,
            >,
            integrations_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleIntegrationsPermissionsItem>,
                ::std::string::String,
            >,
            invitations_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleInvitationsPermissionsItem>,
                ::std::string::String,
            >,
            live_call_routing_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleLiveCallRoutingPermissionsItem>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            on_call_readiness_report_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleOnCallReadinessReportPermissionsItem>,
                ::std::string::String,
            >,
            on_call_roles_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleOnCallRolesPermissionsItem>,
                ::std::string::String,
            >,
            schedule_override_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleScheduleOverridePermissionsItem>,
                ::std::string::String,
            >,
            schedules_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleSchedulesPermissionsItem>,
                ::std::string::String,
            >,
            services_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleServicesPermissionsItem>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            system_role: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            webhooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleWebhooksPermissionsItem>,
                ::std::string::String,
            >,
            workflows_permissions: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleWorkflowsPermissionsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallRole {
            fn default() -> Self {
                Self {
                    alert_fields_permissions: Ok(Default::default()),
                    alert_groups_permissions: Ok(Default::default()),
                    alert_routing_rules_permissions: Ok(Default::default()),
                    alert_sources_permissions: Ok(Default::default()),
                    alert_urgency_permissions: Ok(Default::default()),
                    alerts_permissions: Ok(Default::default()),
                    api_keys_permissions: Ok(Default::default()),
                    audits_permissions: Ok(Default::default()),
                    catalogs_permissions: Ok(Default::default()),
                    contacts_permissions: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    escalation_policies_permissions: Ok(Default::default()),
                    groups_permissions: Ok(Default::default()),
                    heartbeats_permissions: Ok(Default::default()),
                    integrations_permissions: Ok(Default::default()),
                    invitations_permissions: Ok(Default::default()),
                    live_call_routing_permissions: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    on_call_readiness_report_permissions: Ok(Default::default()),
                    on_call_roles_permissions: Ok(Default::default()),
                    schedule_override_permissions: Ok(Default::default()),
                    schedules_permissions: Ok(Default::default()),
                    services_permissions: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    system_role: Ok(super::defaults::on_call_role_system_role()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    webhooks_permissions: Ok(Default::default()),
                    workflows_permissions: Ok(Default::default()),
                }
            }
        }
        impl OnCallRole {
            pub fn alert_fields_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAlertFieldsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_fields_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_fields_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAlertGroupsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_routing_rules_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAlertRoutingRulesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_routing_rules_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_routing_rules_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_sources_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAlertSourcesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_sources_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_sources_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAlertUrgencyPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alerts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAlertsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn api_keys_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleApiKeysPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.api_keys_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for api_keys_permissions: {e}"
                        )
                    });
                self
            }
            pub fn audits_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleAuditsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.audits_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for audits_permissions: {e}"
                        )
                    });
                self
            }
            pub fn catalogs_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleCatalogsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalogs_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalogs_permissions: {e}"
                        )
                    });
                self
            }
            pub fn contacts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleContactsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.contacts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for contacts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn escalation_policies_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleEscalationPoliciesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policies_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policies_permissions: {e}"
                        )
                    });
                self
            }
            pub fn groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleGroupsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn heartbeats_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleHeartbeatsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.heartbeats_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for heartbeats_permissions: {e}"
                        )
                    });
                self
            }
            pub fn integrations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleIntegrationsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn invitations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleInvitationsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.invitations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for invitations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn live_call_routing_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleLiveCallRoutingPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.live_call_routing_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for live_call_routing_permissions: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn on_call_readiness_report_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::OnCallRoleOnCallReadinessReportPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_readiness_report_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_readiness_report_permissions: {e}"
                        )
                    });
                self
            }
            pub fn on_call_roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleOnCallRolesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn schedule_override_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleScheduleOverridePermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_override_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_override_permissions: {e}"
                        )
                    });
                self
            }
            pub fn schedules_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleSchedulesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedules_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedules_permissions: {e}"
                        )
                    });
                self
            }
            pub fn services_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleServicesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_permissions: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn system_role<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.system_role = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_role: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn webhooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleWebhooksPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn workflows_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleWorkflowsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.workflows_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflows_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRole> for super::OnCallRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_fields_permissions: value.alert_fields_permissions?,
                    alert_groups_permissions: value.alert_groups_permissions?,
                    alert_routing_rules_permissions: value
                        .alert_routing_rules_permissions?,
                    alert_sources_permissions: value.alert_sources_permissions?,
                    alert_urgency_permissions: value.alert_urgency_permissions?,
                    alerts_permissions: value.alerts_permissions?,
                    api_keys_permissions: value.api_keys_permissions?,
                    audits_permissions: value.audits_permissions?,
                    catalogs_permissions: value.catalogs_permissions?,
                    contacts_permissions: value.contacts_permissions?,
                    created_at: value.created_at?,
                    escalation_policies_permissions: value
                        .escalation_policies_permissions?,
                    groups_permissions: value.groups_permissions?,
                    heartbeats_permissions: value.heartbeats_permissions?,
                    integrations_permissions: value.integrations_permissions?,
                    invitations_permissions: value.invitations_permissions?,
                    live_call_routing_permissions: value.live_call_routing_permissions?,
                    name: value.name?,
                    on_call_readiness_report_permissions: value
                        .on_call_readiness_report_permissions?,
                    on_call_roles_permissions: value.on_call_roles_permissions?,
                    schedule_override_permissions: value.schedule_override_permissions?,
                    schedules_permissions: value.schedules_permissions?,
                    services_permissions: value.services_permissions?,
                    slug: value.slug?,
                    system_role: value.system_role?,
                    updated_at: value.updated_at?,
                    webhooks_permissions: value.webhooks_permissions?,
                    workflows_permissions: value.workflows_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallRole> for OnCallRole {
            fn from(value: super::OnCallRole) -> Self {
                Self {
                    alert_fields_permissions: Ok(value.alert_fields_permissions),
                    alert_groups_permissions: Ok(value.alert_groups_permissions),
                    alert_routing_rules_permissions: Ok(
                        value.alert_routing_rules_permissions,
                    ),
                    alert_sources_permissions: Ok(value.alert_sources_permissions),
                    alert_urgency_permissions: Ok(value.alert_urgency_permissions),
                    alerts_permissions: Ok(value.alerts_permissions),
                    api_keys_permissions: Ok(value.api_keys_permissions),
                    audits_permissions: Ok(value.audits_permissions),
                    catalogs_permissions: Ok(value.catalogs_permissions),
                    contacts_permissions: Ok(value.contacts_permissions),
                    created_at: Ok(value.created_at),
                    escalation_policies_permissions: Ok(
                        value.escalation_policies_permissions,
                    ),
                    groups_permissions: Ok(value.groups_permissions),
                    heartbeats_permissions: Ok(value.heartbeats_permissions),
                    integrations_permissions: Ok(value.integrations_permissions),
                    invitations_permissions: Ok(value.invitations_permissions),
                    live_call_routing_permissions: Ok(
                        value.live_call_routing_permissions,
                    ),
                    name: Ok(value.name),
                    on_call_readiness_report_permissions: Ok(
                        value.on_call_readiness_report_permissions,
                    ),
                    on_call_roles_permissions: Ok(value.on_call_roles_permissions),
                    schedule_override_permissions: Ok(
                        value.schedule_override_permissions,
                    ),
                    schedules_permissions: Ok(value.schedules_permissions),
                    services_permissions: Ok(value.services_permissions),
                    slug: Ok(value.slug),
                    system_role: Ok(value.system_role),
                    updated_at: Ok(value.updated_at),
                    webhooks_permissions: Ok(value.webhooks_permissions),
                    workflows_permissions: Ok(value.workflows_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRoleList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::OnCallRoleListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for OnCallRoleList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl OnCallRoleList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallRoleListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRoleList> for super::OnCallRoleList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRoleList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallRoleList> for OnCallRoleList {
            fn from(value: super::OnCallRoleList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRoleListDataItem {
            attributes: ::std::result::Result<super::OnCallRole, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OnCallRoleListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallRoleListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OnCallRoleListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallRole>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallRoleListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRoleListDataItem>
        for super::OnCallRoleListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRoleListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallRoleListDataItem>
        for OnCallRoleListDataItem {
            fn from(value: super::OnCallRoleListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRoleRelationship {
            data: ::std::result::Result<
                ::std::option::Option<super::OnCallRoleRelationshipData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallRoleRelationship {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl OnCallRoleRelationship {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OnCallRoleRelationshipData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRoleRelationship>
        for super::OnCallRoleRelationship {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRoleRelationship,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::OnCallRoleRelationship>
        for OnCallRoleRelationship {
            fn from(value: super::OnCallRoleRelationship) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRoleRelationshipData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::OnCallRoleRelationshipDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallRoleRelationshipData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl OnCallRoleRelationshipData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OnCallRoleRelationshipDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRoleRelationshipData>
        for super::OnCallRoleRelationshipData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRoleRelationshipData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallRoleRelationshipData>
        for OnCallRoleRelationshipData {
            fn from(value: super::OnCallRoleRelationshipData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRoleResponse {
            data: ::std::result::Result<
                super::OnCallRoleResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallRoleResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl OnCallRoleResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallRoleResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRoleResponse> for super::OnCallRoleResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRoleResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallRoleResponse> for OnCallRoleResponse {
            fn from(value: super::OnCallRoleResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallRoleResponseData {
            attributes: ::std::result::Result<super::OnCallRole, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OnCallRoleResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallRoleResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OnCallRoleResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallRole>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallRoleResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallRoleResponseData>
        for super::OnCallRoleResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallRoleResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallRoleResponseData>
        for OnCallRoleResponseData {
            fn from(value: super::OnCallRoleResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallShadow {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            ends_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            schedule_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            shadow_user_id: ::std::result::Result<i64, ::std::string::String>,
            shadowable_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            shadowable_type: ::std::result::Result<
                super::OnCallShadowShadowableType,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallShadow {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    ends_at: Err("no value supplied for ends_at".to_string()),
                    schedule_id: Err("no value supplied for schedule_id".to_string()),
                    shadow_user_id: Err(
                        "no value supplied for shadow_user_id".to_string(),
                    ),
                    shadowable_id: Err(
                        "no value supplied for shadowable_id".to_string(),
                    ),
                    shadowable_type: Err(
                        "no value supplied for shadowable_type".to_string(),
                    ),
                    starts_at: Err("no value supplied for starts_at".to_string()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl OnCallShadow {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn schedule_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_id: {e}")
                    });
                self
            }
            pub fn shadow_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.shadow_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shadow_user_id: {e}"
                        )
                    });
                self
            }
            pub fn shadowable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.shadowable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shadowable_id: {e}")
                    });
                self
            }
            pub fn shadowable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallShadowShadowableType>,
                T::Error: ::std::fmt::Display,
            {
                self.shadowable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shadowable_type: {e}"
                        )
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallShadow> for super::OnCallShadow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallShadow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    ends_at: value.ends_at?,
                    schedule_id: value.schedule_id?,
                    shadow_user_id: value.shadow_user_id?,
                    shadowable_id: value.shadowable_id?,
                    shadowable_type: value.shadowable_type?,
                    starts_at: value.starts_at?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallShadow> for OnCallShadow {
            fn from(value: super::OnCallShadow) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    ends_at: Ok(value.ends_at),
                    schedule_id: Ok(value.schedule_id),
                    shadow_user_id: Ok(value.shadow_user_id),
                    shadowable_id: Ok(value.shadowable_id),
                    shadowable_type: Ok(value.shadowable_type),
                    starts_at: Ok(value.starts_at),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallShadowResponse {
            data: ::std::result::Result<
                super::OnCallShadowResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallShadowResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl OnCallShadowResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallShadowResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallShadowResponse>
        for super::OnCallShadowResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallShadowResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallShadowResponse> for OnCallShadowResponse {
            fn from(value: super::OnCallShadowResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallShadowResponseData {
            attributes: ::std::result::Result<
                super::OnCallShadow,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OnCallShadowResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallShadowResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OnCallShadowResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallShadow>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallShadowResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallShadowResponseData>
        for super::OnCallShadowResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallShadowResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallShadowResponseData>
        for OnCallShadowResponseData {
            fn from(value: super::OnCallShadowResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallShadowsList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::OnCallShadowsListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for OnCallShadowsList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl OnCallShadowsList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OnCallShadowsListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallShadowsList> for super::OnCallShadowsList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallShadowsList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallShadowsList> for OnCallShadowsList {
            fn from(value: super::OnCallShadowsList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OnCallShadowsListDataItem {
            attributes: ::std::result::Result<
                super::OnCallShadow,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OnCallShadowsListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OnCallShadowsListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OnCallShadowsListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallShadow>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OnCallShadowsListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OnCallShadowsListDataItem>
        for super::OnCallShadowsListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OnCallShadowsListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OnCallShadowsListDataItem>
        for OnCallShadowsListDataItem {
            fn from(value: super::OnCallShadowsListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Oncall {
            ends_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            escalation_level: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            escalation_policy_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            escalation_policy_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            escalation_policy_path_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            is_default_path: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            notification_type: ::std::result::Result<
                ::std::option::Option<super::OncallNotificationType>,
                ::std::string::String,
            >,
            schedule_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            schedule_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::chrono::DateTime<::chrono::offset::Utc>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for Oncall {
            fn default() -> Self {
                Self {
                    ends_at: Err("no value supplied for ends_at".to_string()),
                    escalation_level: Ok(Default::default()),
                    escalation_policy_id: Err(
                        "no value supplied for escalation_policy_id".to_string(),
                    ),
                    escalation_policy_name: Err(
                        "no value supplied for escalation_policy_name".to_string(),
                    ),
                    escalation_policy_path_id: Ok(Default::default()),
                    escalation_policy_path_name: Ok(Default::default()),
                    is_default_path: Ok(Default::default()),
                    notification_type: Ok(Default::default()),
                    schedule_id: Ok(Default::default()),
                    schedule_name: Ok(Default::default()),
                    starts_at: Err("no value supplied for starts_at".to_string()),
                    user_id: Err("no value supplied for user_id".to_string()),
                }
            }
        }
        impl Oncall {
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn escalation_level<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_level = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_level: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_name: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_path_id: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_path_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_path_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_path_name: {e}"
                        )
                    });
                self
            }
            pub fn is_default_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_default_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for is_default_path: {e}"
                        )
                    });
                self
            }
            pub fn notification_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallNotificationType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_type: {e}"
                        )
                    });
                self
            }
            pub fn schedule_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_id: {e}")
                    });
                self
            }
            pub fn schedule_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_name: {e}")
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::chrono::DateTime<::chrono::offset::Utc>>,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Oncall> for super::Oncall {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Oncall,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ends_at: value.ends_at?,
                    escalation_level: value.escalation_level?,
                    escalation_policy_id: value.escalation_policy_id?,
                    escalation_policy_name: value.escalation_policy_name?,
                    escalation_policy_path_id: value.escalation_policy_path_id?,
                    escalation_policy_path_name: value.escalation_policy_path_name?,
                    is_default_path: value.is_default_path?,
                    notification_type: value.notification_type?,
                    schedule_id: value.schedule_id?,
                    schedule_name: value.schedule_name?,
                    starts_at: value.starts_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::Oncall> for Oncall {
            fn from(value: super::Oncall) -> Self {
                Self {
                    ends_at: Ok(value.ends_at),
                    escalation_level: Ok(value.escalation_level),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    escalation_policy_name: Ok(value.escalation_policy_name),
                    escalation_policy_path_id: Ok(value.escalation_policy_path_id),
                    escalation_policy_path_name: Ok(value.escalation_policy_path_name),
                    is_default_path: Ok(value.is_default_path),
                    notification_type: Ok(value.notification_type),
                    schedule_id: Ok(value.schedule_id),
                    schedule_name: Ok(value.schedule_name),
                    starts_at: Ok(value.starts_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::OncallListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl OncallList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::OncallListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallList> for super::OncallList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::OncallList> for OncallList {
            fn from(value: super::OncallList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallListDataItem {
            attributes: ::std::result::Result<super::Oncall, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            relationships: ::std::result::Result<
                ::std::option::Option<super::OncallRelationships>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::OncallListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    relationships: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OncallListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Oncall>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn relationships<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationships>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.relationships = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for relationships: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OncallListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallListDataItem> for super::OncallListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    relationships: value.relationships?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OncallListDataItem> for OncallListDataItem {
            fn from(value: super::OncallListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    relationships: Ok(value.relationships),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationships {
            escalation_policy: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsEscalationPolicy>,
                ::std::string::String,
            >,
            schedule: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsSchedule>,
                ::std::string::String,
            >,
            user: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsUser>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationships {
            fn default() -> Self {
                Self {
                    escalation_policy: Ok(Default::default()),
                    schedule: Ok(Default::default()),
                    user: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationships {
            pub fn escalation_policy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsEscalationPolicy>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy: {e}"
                        )
                    });
                self
            }
            pub fn schedule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsSchedule>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule: {e}")
                    });
                self
            }
            pub fn user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsUser>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationships>
        for super::OncallRelationships {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationships,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    escalation_policy: value.escalation_policy?,
                    schedule: value.schedule?,
                    user: value.user?,
                })
            }
        }
        impl ::std::convert::From<super::OncallRelationships> for OncallRelationships {
            fn from(value: super::OncallRelationships) -> Self {
                Self {
                    escalation_policy: Ok(value.escalation_policy),
                    schedule: Ok(value.schedule),
                    user: Ok(value.user),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationshipsEscalationPolicy {
            data: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsEscalationPolicyData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationshipsEscalationPolicy {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationshipsEscalationPolicy {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsEscalationPolicyData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationshipsEscalationPolicy>
        for super::OncallRelationshipsEscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationshipsEscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::OncallRelationshipsEscalationPolicy>
        for OncallRelationshipsEscalationPolicy {
            fn from(value: super::OncallRelationshipsEscalationPolicy) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationshipsEscalationPolicyData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<
                    super::OncallRelationshipsEscalationPolicyDataType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationshipsEscalationPolicyData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationshipsEscalationPolicyData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::OncallRelationshipsEscalationPolicyDataType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationshipsEscalationPolicyData>
        for super::OncallRelationshipsEscalationPolicyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationshipsEscalationPolicyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OncallRelationshipsEscalationPolicyData>
        for OncallRelationshipsEscalationPolicyData {
            fn from(value: super::OncallRelationshipsEscalationPolicyData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationshipsSchedule {
            data: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsScheduleData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationshipsSchedule {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationshipsSchedule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsScheduleData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationshipsSchedule>
        for super::OncallRelationshipsSchedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationshipsSchedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::OncallRelationshipsSchedule>
        for OncallRelationshipsSchedule {
            fn from(value: super::OncallRelationshipsSchedule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationshipsScheduleData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsScheduleDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationshipsScheduleData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationshipsScheduleData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsScheduleDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationshipsScheduleData>
        for super::OncallRelationshipsScheduleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationshipsScheduleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OncallRelationshipsScheduleData>
        for OncallRelationshipsScheduleData {
            fn from(value: super::OncallRelationshipsScheduleData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationshipsUser {
            data: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsUserData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationshipsUser {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationshipsUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsUserData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationshipsUser>
        for super::OncallRelationshipsUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationshipsUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::OncallRelationshipsUser>
        for OncallRelationshipsUser {
            fn from(value: super::OncallRelationshipsUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OncallRelationshipsUserData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::OncallRelationshipsUserDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OncallRelationshipsUserData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl OncallRelationshipsUserData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OncallRelationshipsUserDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OncallRelationshipsUserData>
        for super::OncallRelationshipsUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OncallRelationshipsUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OncallRelationshipsUserData>
        for OncallRelationshipsUserData {
            fn from(value: super::OncallRelationshipsUserData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OverrideShift {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            ends_at: ::std::result::Result<::std::string::String, ::std::string::String>,
            is_override: ::std::result::Result<bool, ::std::string::String>,
            rotation_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            schedule_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            shift_override: ::std::result::Result<
                ::std::option::Option<super::ShiftOverrideResponse>,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user: ::std::result::Result<
                ::std::option::Option<super::UserResponse>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OverrideShift {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    ends_at: Err("no value supplied for ends_at".to_string()),
                    is_override: Err("no value supplied for is_override".to_string()),
                    rotation_id: Err("no value supplied for rotation_id".to_string()),
                    schedule_id: Err("no value supplied for schedule_id".to_string()),
                    shift_override: Ok(Default::default()),
                    starts_at: Err("no value supplied for starts_at".to_string()),
                    updated_at: Ok(Default::default()),
                    user: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl OverrideShift {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn is_override<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.is_override = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_override: {e}")
                    });
                self
            }
            pub fn rotation_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.rotation_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rotation_id: {e}")
                    });
                self
            }
            pub fn schedule_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_id: {e}")
                    });
                self
            }
            pub fn shift_override<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftOverrideResponse>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shift_override = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_override: {e}"
                        )
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::UserResponse>>,
                T::Error: ::std::fmt::Display,
            {
                self.user = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OverrideShift> for super::OverrideShift {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OverrideShift,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    ends_at: value.ends_at?,
                    is_override: value.is_override?,
                    rotation_id: value.rotation_id?,
                    schedule_id: value.schedule_id?,
                    shift_override: value.shift_override?,
                    starts_at: value.starts_at?,
                    updated_at: value.updated_at?,
                    user: value.user?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::OverrideShift> for OverrideShift {
            fn from(value: super::OverrideShift) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    ends_at: Ok(value.ends_at),
                    is_override: Ok(value.is_override),
                    rotation_id: Ok(value.rotation_id),
                    schedule_id: Ok(value.schedule_id),
                    shift_override: Ok(value.shift_override),
                    starts_at: Ok(value.starts_at),
                    updated_at: Ok(value.updated_at),
                    user: Ok(value.user),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OverrideShiftList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::OverrideShiftListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for OverrideShiftList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl OverrideShiftList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::OverrideShiftListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OverrideShiftList> for super::OverrideShiftList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OverrideShiftList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::OverrideShiftList> for OverrideShiftList {
            fn from(value: super::OverrideShiftList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OverrideShiftListDataItem {
            attributes: ::std::result::Result<
                super::OverrideShift,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OverrideShiftListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OverrideShiftListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OverrideShiftListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OverrideShift>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OverrideShiftListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OverrideShiftListDataItem>
        for super::OverrideShiftListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OverrideShiftListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OverrideShiftListDataItem>
        for OverrideShiftListDataItem {
            fn from(value: super::OverrideShiftListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OverrideShiftResponse {
            data: ::std::result::Result<
                super::OverrideShiftResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OverrideShiftResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl OverrideShiftResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OverrideShiftResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OverrideShiftResponse>
        for super::OverrideShiftResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OverrideShiftResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::OverrideShiftResponse>
        for OverrideShiftResponse {
            fn from(value: super::OverrideShiftResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct OverrideShiftResponseData {
            attributes: ::std::result::Result<
                super::OverrideShift,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::OverrideShiftResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for OverrideShiftResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl OverrideShiftResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OverrideShift>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::OverrideShiftResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<OverrideShiftResponseData>
        for super::OverrideShiftResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: OverrideShiftResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::OverrideShiftResponseData>
        for OverrideShiftResponseData {
            fn from(value: super::OverrideShiftResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageJsmopsOnCallRespondersTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                super::PageJsmopsOnCallRespondersTaskParamsPriority,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::PageJsmopsOnCallRespondersTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            teams: ::std::result::Result<
                ::std::vec::Vec<super::PageJsmopsOnCallRespondersTaskParamsTeamsItem>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::PageJsmopsOnCallRespondersTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    message: Ok(Default::default()),
                    priority: Ok(
                        super::defaults::page_jsmops_on_call_responders_task_params_priority(),
                    ),
                    task_type: Ok(Default::default()),
                    teams: Ok(Default::default()),
                    title: Ok(Default::default()),
                    users: Ok(Default::default()),
                }
            }
        }
        impl PageJsmopsOnCallRespondersTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PageJsmopsOnCallRespondersTaskParamsPriority,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageJsmopsOnCallRespondersTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn teams<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PageJsmopsOnCallRespondersTaskParamsTeamsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.teams = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for teams: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PageJsmopsOnCallRespondersTaskParamsUsersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageJsmopsOnCallRespondersTaskParams>
        for super::PageJsmopsOnCallRespondersTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageJsmopsOnCallRespondersTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    message: value.message?,
                    priority: value.priority?,
                    task_type: value.task_type?,
                    teams: value.teams?,
                    title: value.title?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::PageJsmopsOnCallRespondersTaskParams>
        for PageJsmopsOnCallRespondersTaskParams {
            fn from(value: super::PageJsmopsOnCallRespondersTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    message: Ok(value.message),
                    priority: Ok(value.priority),
                    task_type: Ok(value.task_type),
                    teams: Ok(value.teams),
                    title: Ok(value.title),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageJsmopsOnCallRespondersTaskParamsTeamsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParamsTeamsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageJsmopsOnCallRespondersTaskParamsTeamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageJsmopsOnCallRespondersTaskParamsTeamsItem>
        for super::PageJsmopsOnCallRespondersTaskParamsTeamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageJsmopsOnCallRespondersTaskParamsTeamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PageJsmopsOnCallRespondersTaskParamsTeamsItem>
        for PageJsmopsOnCallRespondersTaskParamsTeamsItem {
            fn from(
                value: super::PageJsmopsOnCallRespondersTaskParamsTeamsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageJsmopsOnCallRespondersTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PageJsmopsOnCallRespondersTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageJsmopsOnCallRespondersTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageJsmopsOnCallRespondersTaskParamsUsersItem>
        for super::PageJsmopsOnCallRespondersTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageJsmopsOnCallRespondersTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PageJsmopsOnCallRespondersTaskParamsUsersItem>
        for PageJsmopsOnCallRespondersTaskParamsUsersItem {
            fn from(
                value: super::PageJsmopsOnCallRespondersTaskParamsUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageOpsgenieOnCallRespondersTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                super::PageOpsgenieOnCallRespondersTaskParamsPriority,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::PageOpsgenieOnCallRespondersTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            teams: ::std::result::Result<
                ::std::vec::Vec<super::PageOpsgenieOnCallRespondersTaskParamsTeamsItem>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::PageOpsgenieOnCallRespondersTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PageOpsgenieOnCallRespondersTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    message: Ok(Default::default()),
                    priority: Ok(
                        super::defaults::page_opsgenie_on_call_responders_task_params_priority(),
                    ),
                    task_type: Ok(Default::default()),
                    teams: Ok(Default::default()),
                    title: Ok(Default::default()),
                    users: Ok(Default::default()),
                }
            }
        }
        impl PageOpsgenieOnCallRespondersTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PageOpsgenieOnCallRespondersTaskParamsPriority,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageOpsgenieOnCallRespondersTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn teams<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PageOpsgenieOnCallRespondersTaskParamsTeamsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.teams = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for teams: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PageOpsgenieOnCallRespondersTaskParamsUsersItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageOpsgenieOnCallRespondersTaskParams>
        for super::PageOpsgenieOnCallRespondersTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageOpsgenieOnCallRespondersTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    message: value.message?,
                    priority: value.priority?,
                    task_type: value.task_type?,
                    teams: value.teams?,
                    title: value.title?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::PageOpsgenieOnCallRespondersTaskParams>
        for PageOpsgenieOnCallRespondersTaskParams {
            fn from(value: super::PageOpsgenieOnCallRespondersTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    message: Ok(value.message),
                    priority: Ok(value.priority),
                    task_type: Ok(value.task_type),
                    teams: Ok(value.teams),
                    title: Ok(value.title),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageOpsgenieOnCallRespondersTaskParamsTeamsItem>
        for super::PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageOpsgenieOnCallRespondersTaskParamsTeamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PageOpsgenieOnCallRespondersTaskParamsTeamsItem>
        for PageOpsgenieOnCallRespondersTaskParamsTeamsItem {
            fn from(
                value: super::PageOpsgenieOnCallRespondersTaskParamsTeamsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageOpsgenieOnCallRespondersTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageOpsgenieOnCallRespondersTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageOpsgenieOnCallRespondersTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageOpsgenieOnCallRespondersTaskParamsUsersItem>
        for super::PageOpsgenieOnCallRespondersTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageOpsgenieOnCallRespondersTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PageOpsgenieOnCallRespondersTaskParamsUsersItem>
        for PageOpsgenieOnCallRespondersTaskParamsUsersItem {
            fn from(
                value: super::PageOpsgenieOnCallRespondersTaskParamsUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PagePagerdutyOnCallRespondersTaskParams {
            create_new_incident_on_conflict: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            escalation_policies: ::std::result::Result<
                ::std::vec::Vec<
                    super::PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
                >,
                ::std::string::String,
            >,
            message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service: ::std::result::Result<
                super::PagePagerdutyOnCallRespondersTaskParamsService,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::PagePagerdutyOnCallRespondersTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            urgency: ::std::result::Result<
                super::PagePagerdutyOnCallRespondersTaskParamsUrgency,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::PagePagerdutyOnCallRespondersTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PagePagerdutyOnCallRespondersTaskParams {
            fn default() -> Self {
                Self {
                    create_new_incident_on_conflict: Ok(Default::default()),
                    escalation_policies: Ok(Default::default()),
                    message: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    service: Err("no value supplied for service".to_string()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                    urgency: Ok(
                        super::defaults::page_pagerduty_on_call_responders_task_params_urgency(),
                    ),
                    users: Ok(Default::default()),
                }
            }
        }
        impl PagePagerdutyOnCallRespondersTaskParams {
            pub fn create_new_incident_on_conflict<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.create_new_incident_on_conflict = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for create_new_incident_on_conflict: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policies<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policies = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policies: {e}"
                        )
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn service<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PagePagerdutyOnCallRespondersTaskParamsService,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PagePagerdutyOnCallRespondersTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PagePagerdutyOnCallRespondersTaskParamsUrgency,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for urgency: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PagePagerdutyOnCallRespondersTaskParamsUsersItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PagePagerdutyOnCallRespondersTaskParams>
        for super::PagePagerdutyOnCallRespondersTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PagePagerdutyOnCallRespondersTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    create_new_incident_on_conflict: value
                        .create_new_incident_on_conflict?,
                    escalation_policies: value.escalation_policies?,
                    message: value.message?,
                    priority: value.priority?,
                    service: value.service?,
                    task_type: value.task_type?,
                    title: value.title?,
                    urgency: value.urgency?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::PagePagerdutyOnCallRespondersTaskParams>
        for PagePagerdutyOnCallRespondersTaskParams {
            fn from(value: super::PagePagerdutyOnCallRespondersTaskParams) -> Self {
                Self {
                    create_new_incident_on_conflict: Ok(
                        value.create_new_incident_on_conflict,
                    ),
                    escalation_policies: Ok(value.escalation_policies),
                    message: Ok(value.message),
                    priority: Ok(value.priority),
                    service: Ok(value.service),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    urgency: Ok(value.urgency),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
        > for super::PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
        > for PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem {
            fn from(
                value: super::PagePagerdutyOnCallRespondersTaskParamsEscalationPoliciesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PagePagerdutyOnCallRespondersTaskParamsService {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PagePagerdutyOnCallRespondersTaskParamsService {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PagePagerdutyOnCallRespondersTaskParamsService {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PagePagerdutyOnCallRespondersTaskParamsService>
        for super::PagePagerdutyOnCallRespondersTaskParamsService {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PagePagerdutyOnCallRespondersTaskParamsService,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PagePagerdutyOnCallRespondersTaskParamsService>
        for PagePagerdutyOnCallRespondersTaskParamsService {
            fn from(
                value: super::PagePagerdutyOnCallRespondersTaskParamsService,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PagePagerdutyOnCallRespondersTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PagePagerdutyOnCallRespondersTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PagePagerdutyOnCallRespondersTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PagePagerdutyOnCallRespondersTaskParamsUsersItem>
        for super::PagePagerdutyOnCallRespondersTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PagePagerdutyOnCallRespondersTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PagePagerdutyOnCallRespondersTaskParamsUsersItem,
        > for PagePagerdutyOnCallRespondersTaskParamsUsersItem {
            fn from(
                value: super::PagePagerdutyOnCallRespondersTaskParamsUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageRootlyOnCallRespondersTaskParams {
            alert_urgency_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            escalation_note: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            escalation_policy_target: ::std::result::Result<
                ::std::option::Option<
                    super::PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
                >,
                ::std::string::String,
            >,
            functionality_target: ::std::result::Result<
                ::std::option::Option<
                    super::PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
                >,
                ::std::string::String,
            >,
            group_target: ::std::result::Result<
                ::std::option::Option<
                    super::PageRootlyOnCallRespondersTaskParamsGroupTarget,
                >,
                ::std::string::String,
            >,
            service_target: ::std::result::Result<
                ::std::option::Option<
                    super::PageRootlyOnCallRespondersTaskParamsServiceTarget,
                >,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::PageRootlyOnCallRespondersTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            user_target: ::std::result::Result<
                ::std::option::Option<
                    super::PageRootlyOnCallRespondersTaskParamsUserTarget,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PageRootlyOnCallRespondersTaskParams {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Err(
                        "no value supplied for alert_urgency_id".to_string(),
                    ),
                    description: Ok(Default::default()),
                    escalation_note: Ok(Default::default()),
                    escalation_policy_target: Ok(Default::default()),
                    functionality_target: Ok(Default::default()),
                    group_target: Ok(Default::default()),
                    service_target: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    task_type: Ok(Default::default()),
                    user_target: Ok(Default::default()),
                }
            }
        }
        impl PageRootlyOnCallRespondersTaskParams {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn escalation_note<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_note = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_note: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_target: {e}"
                        )
                    });
                self
            }
            pub fn functionality_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_target: {e}"
                        )
                    });
                self
            }
            pub fn group_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageRootlyOnCallRespondersTaskParamsGroupTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_target = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_target: {e}")
                    });
                self
            }
            pub fn service_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageRootlyOnCallRespondersTaskParamsServiceTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_target = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_target: {e}"
                        )
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageRootlyOnCallRespondersTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn user_target<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PageRootlyOnCallRespondersTaskParamsUserTarget,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user_target = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_target: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageRootlyOnCallRespondersTaskParams>
        for super::PageRootlyOnCallRespondersTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageRootlyOnCallRespondersTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    description: value.description?,
                    escalation_note: value.escalation_note?,
                    escalation_policy_target: value.escalation_policy_target?,
                    functionality_target: value.functionality_target?,
                    group_target: value.group_target?,
                    service_target: value.service_target?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                    user_target: value.user_target?,
                })
            }
        }
        impl ::std::convert::From<super::PageRootlyOnCallRespondersTaskParams>
        for PageRootlyOnCallRespondersTaskParams {
            fn from(value: super::PageRootlyOnCallRespondersTaskParams) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    description: Ok(value.description),
                    escalation_note: Ok(value.escalation_note),
                    escalation_policy_target: Ok(value.escalation_policy_target),
                    functionality_target: Ok(value.functionality_target),
                    group_target: Ok(value.group_target),
                    service_target: Ok(value.service_target),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    user_target: Ok(value.user_target),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
        > for super::PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
        > for PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget {
            fn from(
                value: super::PageRootlyOnCallRespondersTaskParamsEscalationPolicyTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
        > for super::PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
        > for PageRootlyOnCallRespondersTaskParamsFunctionalityTarget {
            fn from(
                value: super::PageRootlyOnCallRespondersTaskParamsFunctionalityTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageRootlyOnCallRespondersTaskParamsGroupTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageRootlyOnCallRespondersTaskParamsGroupTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageRootlyOnCallRespondersTaskParamsGroupTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageRootlyOnCallRespondersTaskParamsGroupTarget>
        for super::PageRootlyOnCallRespondersTaskParamsGroupTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageRootlyOnCallRespondersTaskParamsGroupTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PageRootlyOnCallRespondersTaskParamsGroupTarget>
        for PageRootlyOnCallRespondersTaskParamsGroupTarget {
            fn from(
                value: super::PageRootlyOnCallRespondersTaskParamsGroupTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageRootlyOnCallRespondersTaskParamsServiceTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageRootlyOnCallRespondersTaskParamsServiceTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageRootlyOnCallRespondersTaskParamsServiceTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageRootlyOnCallRespondersTaskParamsServiceTarget>
        for super::PageRootlyOnCallRespondersTaskParamsServiceTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageRootlyOnCallRespondersTaskParamsServiceTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageRootlyOnCallRespondersTaskParamsServiceTarget,
        > for PageRootlyOnCallRespondersTaskParamsServiceTarget {
            fn from(
                value: super::PageRootlyOnCallRespondersTaskParamsServiceTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageRootlyOnCallRespondersTaskParamsUserTarget {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PageRootlyOnCallRespondersTaskParamsUserTarget {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageRootlyOnCallRespondersTaskParamsUserTarget {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PageRootlyOnCallRespondersTaskParamsUserTarget>
        for super::PageRootlyOnCallRespondersTaskParamsUserTarget {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageRootlyOnCallRespondersTaskParamsUserTarget,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PageRootlyOnCallRespondersTaskParamsUserTarget>
        for PageRootlyOnCallRespondersTaskParamsUserTarget {
            fn from(
                value: super::PageRootlyOnCallRespondersTaskParamsUserTarget,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem,
        >
        for super::PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem,
        > for PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem {
            fn from(
                value: super::PageVictorOpsOnCallRespondersTaskParamsVariant0EscalationPoliciesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem,
        > for super::PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem,
        > for PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem {
            fn from(
                value: super::PageVictorOpsOnCallRespondersTaskParamsVariant0UsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem,
        >
        for super::PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem,
        > for PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem {
            fn from(
                value: super::PageVictorOpsOnCallRespondersTaskParamsVariant1EscalationPoliciesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem,
        > for super::PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem,
        > for PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem {
            fn from(
                value: super::PageVictorOpsOnCallRespondersTaskParamsVariant1UsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRoute {
            data: ::std::result::Result<
                super::PatchAlertRouteData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PatchAlertRoute {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl PatchAlertRoute {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PatchAlertRouteData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PatchAlertRoute> for super::PatchAlertRoute {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRoute,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::PatchAlertRoute> for PatchAlertRoute {
            fn from(value: super::PatchAlertRoute) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRouteData {
            attributes: ::std::result::Result<
                super::PatchAlertRouteDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::PatchAlertRouteDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PatchAlertRouteData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PatchAlertRouteData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PatchAlertRouteDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PatchAlertRouteDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PatchAlertRouteData>
        for super::PatchAlertRouteData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRouteData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PatchAlertRouteData> for PatchAlertRouteData {
            fn from(value: super::PatchAlertRouteData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRouteDataAttributes {
            alerts_source_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owning_team_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<super::PatchAlertRouteDataAttributesRulesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PatchAlertRouteDataAttributes {
            fn default() -> Self {
                Self {
                    alerts_source_ids: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owning_team_ids: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl PatchAlertRouteDataAttributes {
            pub fn alerts_source_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_ids: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owning_team_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.owning_team_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owning_team_ids: {e}"
                        )
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PatchAlertRouteDataAttributesRulesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PatchAlertRouteDataAttributes>
        for super::PatchAlertRouteDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRouteDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_ids: value.alerts_source_ids?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owning_team_ids: value.owning_team_ids?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<super::PatchAlertRouteDataAttributes>
        for PatchAlertRouteDataAttributes {
            fn from(value: super::PatchAlertRouteDataAttributes) -> Self {
                Self {
                    alerts_source_ids: Ok(value.alerts_source_ids),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owning_team_ids: Ok(value.owning_team_ids),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRouteDataAttributesRulesItem {
            condition_groups: ::std::result::Result<
                ::std::vec::Vec<
                    super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
                >,
                ::std::string::String,
            >,
            destinations: ::std::result::Result<
                ::std::vec::Vec<
                    super::PatchAlertRouteDataAttributesRulesItemDestinationsItem,
                >,
                ::std::string::String,
            >,
            destroy: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            fallback_rule: ::std::result::Result<bool, ::std::string::String>,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PatchAlertRouteDataAttributesRulesItem {
            fn default() -> Self {
                Self {
                    condition_groups: Ok(Default::default()),
                    destinations: Ok(Default::default()),
                    destroy: Ok(Default::default()),
                    fallback_rule: Ok(Default::default()),
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl PatchAlertRouteDataAttributesRulesItem {
            pub fn condition_groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_groups = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_groups: {e}"
                        )
                    });
                self
            }
            pub fn destinations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PatchAlertRouteDataAttributesRulesItemDestinationsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destinations = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destinations: {e}")
                    });
                self
            }
            pub fn destroy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.destroy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destroy: {e}")
                    });
                self
            }
            pub fn fallback_rule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fallback_rule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fallback_rule: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PatchAlertRouteDataAttributesRulesItem>
        for super::PatchAlertRouteDataAttributesRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRouteDataAttributesRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_groups: value.condition_groups?,
                    destinations: value.destinations?,
                    destroy: value.destroy?,
                    fallback_rule: value.fallback_rule?,
                    id: value.id?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::PatchAlertRouteDataAttributesRulesItem>
        for PatchAlertRouteDataAttributesRulesItem {
            fn from(value: super::PatchAlertRouteDataAttributesRulesItem) -> Self {
                Self {
                    condition_groups: Ok(value.condition_groups),
                    destinations: Ok(value.destinations),
                    destroy: Ok(value.destroy),
                    fallback_rule: Ok(value.fallback_rule),
                    id: Ok(value.id),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
                >,
                ::std::string::String,
            >,
            destroy: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
            fn default() -> Self {
                Self {
                    conditions: Ok(Default::default()),
                    destroy: Ok(Default::default()),
                    id: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn destroy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.destroy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destroy: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
        > for super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    destroy: value.destroy?,
                    id: value.id?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<
            super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
        > for PatchAlertRouteDataAttributesRulesItemConditionGroupsItem {
            fn from(
                value: super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItem,
            ) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    destroy: Ok(value.destroy),
                    id: Ok(value.id),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
                >,
                ::std::string::String,
            >,
            destroy: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                >,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                ::std::option::Option<
                    super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                >,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    destroy: Ok(Default::default()),
                    id: Ok(Default::default()),
                    property_field_condition_type: Ok(Default::default()),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Ok(Default::default()),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn destroy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.destroy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destroy: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        >
        for super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    destroy: value.destroy?,
                    id: value.id?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<
            super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        > for PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            fn from(
                value: super::PatchAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
            ) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    destroy: Ok(value.destroy),
                    id: Ok(value.id),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PatchAlertRouteDataAttributesRulesItemDestinationsItem {
            destroy: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            target_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            target_type: ::std::result::Result<
                ::std::option::Option<
                    super::PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for PatchAlertRouteDataAttributesRulesItemDestinationsItem {
            fn default() -> Self {
                Self {
                    destroy: Ok(Default::default()),
                    id: Ok(Default::default()),
                    target_id: Ok(Default::default()),
                    target_type: Ok(Default::default()),
                }
            }
        }
        impl PatchAlertRouteDataAttributesRulesItemDestinationsItem {
            pub fn destroy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.destroy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destroy: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PatchAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            PatchAlertRouteDataAttributesRulesItemDestinationsItem,
        > for super::PatchAlertRouteDataAttributesRulesItemDestinationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PatchAlertRouteDataAttributesRulesItemDestinationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    destroy: value.destroy?,
                    id: value.id?,
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<
            super::PatchAlertRouteDataAttributesRulesItemDestinationsItem,
        > for PatchAlertRouteDataAttributesRulesItemDestinationsItem {
            fn from(
                value: super::PatchAlertRouteDataAttributesRulesItemDestinationsItem,
            ) -> Self {
                Self {
                    destroy: Ok(value.destroy),
                    id: Ok(value.id),
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PhoneVerificationResponse {
            error: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PhoneVerificationResponse {
            fn default() -> Self {
                Self {
                    error: Ok(Default::default()),
                    message: Ok(Default::default()),
                }
            }
        }
        impl PhoneVerificationResponse {
            pub fn error<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.error = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for error: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PhoneVerificationResponse>
        for super::PhoneVerificationResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PhoneVerificationResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    error: value.error?,
                    message: value.message?,
                })
            }
        }
        impl ::std::convert::From<super::PhoneVerificationResponse>
        for PhoneVerificationResponse {
            fn from(value: super::PhoneVerificationResponse) -> Self {
                Self {
                    error: Ok(value.error),
                    message: Ok(value.message),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Playbook {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Playbook {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    environment_ids: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Playbook {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Playbook> for super::Playbook {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Playbook,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    environment_ids: value.environment_ids?,
                    external_url: value.external_url?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                    summary: value.summary?,
                    title: value.title?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Playbook> for Playbook {
            fn from(value: super::Playbook) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    environment_ids: Ok(value.environment_ids),
                    external_url: Ok(value.external_url),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                    summary: Ok(value.summary),
                    title: Ok(value.title),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::PlaybookListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for PlaybookList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl PlaybookList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::PlaybookListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookList> for super::PlaybookList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookList> for PlaybookList {
            fn from(value: super::PlaybookList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookListDataItem {
            attributes: ::std::result::Result<super::Playbook, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PlaybookListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PlaybookListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Playbook>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookListDataItem>
        for super::PlaybookListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookListDataItem> for PlaybookListDataItem {
            fn from(value: super::PlaybookListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookResponse {
            data: ::std::result::Result<
                super::PlaybookResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl PlaybookResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookResponse> for super::PlaybookResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookResponse> for PlaybookResponse {
            fn from(value: super::PlaybookResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookResponseData {
            attributes: ::std::result::Result<super::Playbook, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PlaybookResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PlaybookResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Playbook>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookResponseData>
        for super::PlaybookResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookResponseData> for PlaybookResponseData {
            fn from(value: super::PlaybookResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookTask {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            playbook_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            task: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookTask {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    playbook_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    task: Err("no value supplied for task".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl PlaybookTask {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn playbook_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.playbook_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for playbook_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookTask> for super::PlaybookTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    playbook_id: value.playbook_id?,
                    position: value.position?,
                    task: value.task?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookTask> for PlaybookTask {
            fn from(value: super::PlaybookTask) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    playbook_id: Ok(value.playbook_id),
                    position: Ok(value.position),
                    task: Ok(value.task),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookTaskList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::PlaybookTaskListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for PlaybookTaskList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl PlaybookTaskList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PlaybookTaskListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookTaskList> for super::PlaybookTaskList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookTaskList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookTaskList> for PlaybookTaskList {
            fn from(value: super::PlaybookTaskList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookTaskListDataItem {
            attributes: ::std::result::Result<
                super::PlaybookTask,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PlaybookTaskListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookTaskListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PlaybookTaskListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookTask>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookTaskListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookTaskListDataItem>
        for super::PlaybookTaskListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookTaskListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookTaskListDataItem>
        for PlaybookTaskListDataItem {
            fn from(value: super::PlaybookTaskListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookTaskResponse {
            data: ::std::result::Result<
                super::PlaybookTaskResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookTaskResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl PlaybookTaskResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookTaskResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookTaskResponse>
        for super::PlaybookTaskResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookTaskResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookTaskResponse> for PlaybookTaskResponse {
            fn from(value: super::PlaybookTaskResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PlaybookTaskResponseData {
            attributes: ::std::result::Result<
                super::PlaybookTask,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PlaybookTaskResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PlaybookTaskResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PlaybookTaskResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookTask>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PlaybookTaskResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PlaybookTaskResponseData>
        for super::PlaybookTaskResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PlaybookTaskResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PlaybookTaskResponseData>
        for PlaybookTaskResponseData {
            fn from(value: super::PlaybookTaskResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PostMortemTemplate {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            content_html: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            content_json: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            format: ::std::result::Result<
                ::std::option::Option<super::PostMortemTemplateFormat>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PostMortemTemplate {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    content_html: Ok(Default::default()),
                    content_json: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    default: Ok(Default::default()),
                    format: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl PostMortemTemplate {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn content_html<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content_html = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content_html: {e}")
                    });
                self
            }
            pub fn content_json<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.content_json = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content_json: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn format<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PostMortemTemplateFormat>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.format = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for format: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PostMortemTemplate> for super::PostMortemTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PostMortemTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    content_html: value.content_html?,
                    content_json: value.content_json?,
                    created_at: value.created_at?,
                    default: value.default?,
                    format: value.format?,
                    name: value.name?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::PostMortemTemplate> for PostMortemTemplate {
            fn from(value: super::PostMortemTemplate) -> Self {
                Self {
                    content: Ok(value.content),
                    content_html: Ok(value.content_html),
                    content_json: Ok(value.content_json),
                    created_at: Ok(value.created_at),
                    default: Ok(value.default),
                    format: Ok(value.format),
                    name: Ok(value.name),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PostMortemTemplateList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::PostMortemTemplateListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for PostMortemTemplateList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl PostMortemTemplateList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PostMortemTemplateListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PostMortemTemplateList>
        for super::PostMortemTemplateList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PostMortemTemplateList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::PostMortemTemplateList>
        for PostMortemTemplateList {
            fn from(value: super::PostMortemTemplateList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PostMortemTemplateListDataItem {
            attributes: ::std::result::Result<
                super::PostMortemTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PostMortemTemplateListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PostMortemTemplateListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PostMortemTemplateListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PostMortemTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PostMortemTemplateListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PostMortemTemplateListDataItem>
        for super::PostMortemTemplateListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PostMortemTemplateListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PostMortemTemplateListDataItem>
        for PostMortemTemplateListDataItem {
            fn from(value: super::PostMortemTemplateListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PostMortemTemplateResponse {
            data: ::std::result::Result<
                super::PostMortemTemplateResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PostMortemTemplateResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl PostMortemTemplateResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PostMortemTemplateResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PostMortemTemplateResponse>
        for super::PostMortemTemplateResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PostMortemTemplateResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::PostMortemTemplateResponse>
        for PostMortemTemplateResponse {
            fn from(value: super::PostMortemTemplateResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PostMortemTemplateResponseData {
            attributes: ::std::result::Result<
                super::PostMortemTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PostMortemTemplateResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PostMortemTemplateResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PostMortemTemplateResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PostMortemTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PostMortemTemplateResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PostMortemTemplateResponseData>
        for super::PostMortemTemplateResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PostMortemTemplateResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PostMortemTemplateResponseData>
        for PostMortemTemplateResponseData {
            fn from(value: super::PostMortemTemplateResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PostMortemTriggerParams {
            incident_condition: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentCondition,
                ::std::string::String,
            >,
            incident_condition_acknowledged_at: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionAcknowledgedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_cause: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionCause,
                ::std::string::String,
            >,
            incident_condition_detected_at: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionDetectedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_environment: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionEnvironment,
                ::std::string::String,
            >,
            incident_condition_functionality: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionFunctionality,
                ::std::string::String,
            >,
            incident_condition_group: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionGroup,
                ::std::string::String,
            >,
            incident_condition_incident_roles: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionIncidentRoles,
                ::std::string::String,
            >,
            incident_condition_incident_type: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionIncidentType,
                ::std::string::String,
            >,
            incident_condition_kind: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionKind,
                ::std::string::String,
            >,
            incident_condition_mitigated_at: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionMitigatedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_resolved_at: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionResolvedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_service: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionService,
                ::std::string::String,
            >,
            incident_condition_severity: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionSeverity,
                ::std::string::String,
            >,
            incident_condition_started_at: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionStartedAt,
                >,
                ::std::string::String,
            >,
            incident_condition_status: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionStatus,
                ::std::string::String,
            >,
            incident_condition_sub_status: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionSubStatus,
                ::std::string::String,
            >,
            incident_condition_summary: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionSummary,
                >,
                ::std::string::String,
            >,
            incident_condition_visibility: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentConditionVisibility,
                ::std::string::String,
            >,
            incident_conditional_inactivity: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentConditionalInactivity,
                >,
                ::std::string::String,
            >,
            incident_inactivity_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_kinds: ::std::result::Result<
                ::std::vec::Vec<super::PostMortemTriggerParamsIncidentKindsItem>,
                ::std::string::String,
            >,
            incident_post_mortem_condition: ::std::result::Result<
                ::std::option::Option<
                    super::PostMortemTriggerParamsIncidentPostMortemCondition,
                >,
                ::std::string::String,
            >,
            incident_post_mortem_condition_cause: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentPostMortemConditionCause,
                ::std::string::String,
            >,
            incident_post_mortem_condition_status: ::std::result::Result<
                super::PostMortemTriggerParamsIncidentPostMortemConditionStatus,
                ::std::string::String,
            >,
            incident_post_mortem_statuses: ::std::result::Result<
                ::std::vec::Vec<
                    super::PostMortemTriggerParamsIncidentPostMortemStatusesItem,
                >,
                ::std::string::String,
            >,
            incident_statuses: ::std::result::Result<
                ::std::vec::Vec<super::PostMortemTriggerParamsIncidentStatusesItem>,
                ::std::string::String,
            >,
            incident_visibilities: ::std::result::Result<
                ::std::vec::Vec<bool>,
                ::std::string::String,
            >,
            trigger_type: ::std::result::Result<
                super::PostMortemTriggerParamsTriggerType,
                ::std::string::String,
            >,
            triggers: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PostMortemTriggerParams {
            fn default() -> Self {
                Self {
                    incident_condition: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition(),
                    ),
                    incident_condition_acknowledged_at: Ok(Default::default()),
                    incident_condition_cause: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_cause(),
                    ),
                    incident_condition_detected_at: Ok(Default::default()),
                    incident_condition_environment: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_environment(),
                    ),
                    incident_condition_functionality: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_functionality(),
                    ),
                    incident_condition_group: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_group(),
                    ),
                    incident_condition_incident_roles: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_incident_roles(),
                    ),
                    incident_condition_incident_type: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_incident_type(),
                    ),
                    incident_condition_kind: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_kind(),
                    ),
                    incident_condition_mitigated_at: Ok(Default::default()),
                    incident_condition_resolved_at: Ok(Default::default()),
                    incident_condition_service: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_service(),
                    ),
                    incident_condition_severity: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_severity(),
                    ),
                    incident_condition_started_at: Ok(Default::default()),
                    incident_condition_status: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_status(),
                    ),
                    incident_condition_sub_status: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_sub_status(),
                    ),
                    incident_condition_summary: Ok(Default::default()),
                    incident_condition_visibility: Ok(
                        super::defaults::post_mortem_trigger_params_incident_condition_visibility(),
                    ),
                    incident_conditional_inactivity: Ok(Default::default()),
                    incident_inactivity_duration: Ok(Default::default()),
                    incident_kinds: Ok(Default::default()),
                    incident_post_mortem_condition: Ok(Default::default()),
                    incident_post_mortem_condition_cause: Ok(
                        super::defaults::post_mortem_trigger_params_incident_post_mortem_condition_cause(),
                    ),
                    incident_post_mortem_condition_status: Ok(
                        super::defaults::post_mortem_trigger_params_incident_post_mortem_condition_status(),
                    ),
                    incident_post_mortem_statuses: Ok(Default::default()),
                    incident_statuses: Ok(Default::default()),
                    incident_visibilities: Ok(Default::default()),
                    trigger_type: Err("no value supplied for trigger_type".to_string()),
                    triggers: Ok(Default::default()),
                }
            }
        }
        impl PostMortemTriggerParams {
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionAcknowledgedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_cause<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionCause,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_cause = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_cause: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionDetectedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_detected_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_environment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionEnvironment,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_environment = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_environment: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_functionality<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionFunctionality,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_functionality = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_functionality: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionGroup,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_group: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_incident_roles<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionIncidentRoles,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_incident_roles = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_incident_roles: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_incident_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionIncidentType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_incident_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_incident_type: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionKind,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_kind: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionMitigatedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_mitigated_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionResolvedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_resolved_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_service<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionService,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_service = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_service: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionSeverity,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_severity = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_severity: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionStartedAt,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_started_at: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_sub_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionSubStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_sub_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_sub_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionSummary,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_summary: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition_visibility<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentConditionVisibility,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition_visibility = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition_visibility: {e}"
                        )
                    });
                self
            }
            pub fn incident_conditional_inactivity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentConditionalInactivity,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_conditional_inactivity = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_conditional_inactivity: {e}"
                        )
                    });
                self
            }
            pub fn incident_inactivity_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_inactivity_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_inactivity_duration: {e}"
                        )
                    });
                self
            }
            pub fn incident_kinds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PostMortemTriggerParamsIncidentKindsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_kinds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_kinds: {e}"
                        )
                    });
                self
            }
            pub fn incident_post_mortem_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PostMortemTriggerParamsIncidentPostMortemCondition,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_post_mortem_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_post_mortem_condition: {e}"
                        )
                    });
                self
            }
            pub fn incident_post_mortem_condition_cause<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentPostMortemConditionCause,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_post_mortem_condition_cause = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_post_mortem_condition_cause: {e}"
                        )
                    });
                self
            }
            pub fn incident_post_mortem_condition_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PostMortemTriggerParamsIncidentPostMortemConditionStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_post_mortem_condition_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_post_mortem_condition_status: {e}"
                        )
                    });
                self
            }
            pub fn incident_post_mortem_statuses<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::PostMortemTriggerParamsIncidentPostMortemStatusesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_post_mortem_statuses = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_post_mortem_statuses: {e}"
                        )
                    });
                self
            }
            pub fn incident_statuses<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PostMortemTriggerParamsIncidentStatusesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_statuses = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_statuses: {e}"
                        )
                    });
                self
            }
            pub fn incident_visibilities<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_visibilities = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_visibilities: {e}"
                        )
                    });
                self
            }
            pub fn trigger_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PostMortemTriggerParamsTriggerType>,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for trigger_type: {e}")
                    });
                self
            }
            pub fn triggers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.triggers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggers: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PostMortemTriggerParams>
        for super::PostMortemTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PostMortemTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_condition: value.incident_condition?,
                    incident_condition_acknowledged_at: value
                        .incident_condition_acknowledged_at?,
                    incident_condition_cause: value.incident_condition_cause?,
                    incident_condition_detected_at: value
                        .incident_condition_detected_at?,
                    incident_condition_environment: value
                        .incident_condition_environment?,
                    incident_condition_functionality: value
                        .incident_condition_functionality?,
                    incident_condition_group: value.incident_condition_group?,
                    incident_condition_incident_roles: value
                        .incident_condition_incident_roles?,
                    incident_condition_incident_type: value
                        .incident_condition_incident_type?,
                    incident_condition_kind: value.incident_condition_kind?,
                    incident_condition_mitigated_at: value
                        .incident_condition_mitigated_at?,
                    incident_condition_resolved_at: value
                        .incident_condition_resolved_at?,
                    incident_condition_service: value.incident_condition_service?,
                    incident_condition_severity: value.incident_condition_severity?,
                    incident_condition_started_at: value.incident_condition_started_at?,
                    incident_condition_status: value.incident_condition_status?,
                    incident_condition_sub_status: value.incident_condition_sub_status?,
                    incident_condition_summary: value.incident_condition_summary?,
                    incident_condition_visibility: value.incident_condition_visibility?,
                    incident_conditional_inactivity: value
                        .incident_conditional_inactivity?,
                    incident_inactivity_duration: value.incident_inactivity_duration?,
                    incident_kinds: value.incident_kinds?,
                    incident_post_mortem_condition: value
                        .incident_post_mortem_condition?,
                    incident_post_mortem_condition_cause: value
                        .incident_post_mortem_condition_cause?,
                    incident_post_mortem_condition_status: value
                        .incident_post_mortem_condition_status?,
                    incident_post_mortem_statuses: value.incident_post_mortem_statuses?,
                    incident_statuses: value.incident_statuses?,
                    incident_visibilities: value.incident_visibilities?,
                    trigger_type: value.trigger_type?,
                    triggers: value.triggers?,
                })
            }
        }
        impl ::std::convert::From<super::PostMortemTriggerParams>
        for PostMortemTriggerParams {
            fn from(value: super::PostMortemTriggerParams) -> Self {
                Self {
                    incident_condition: Ok(value.incident_condition),
                    incident_condition_acknowledged_at: Ok(
                        value.incident_condition_acknowledged_at,
                    ),
                    incident_condition_cause: Ok(value.incident_condition_cause),
                    incident_condition_detected_at: Ok(
                        value.incident_condition_detected_at,
                    ),
                    incident_condition_environment: Ok(
                        value.incident_condition_environment,
                    ),
                    incident_condition_functionality: Ok(
                        value.incident_condition_functionality,
                    ),
                    incident_condition_group: Ok(value.incident_condition_group),
                    incident_condition_incident_roles: Ok(
                        value.incident_condition_incident_roles,
                    ),
                    incident_condition_incident_type: Ok(
                        value.incident_condition_incident_type,
                    ),
                    incident_condition_kind: Ok(value.incident_condition_kind),
                    incident_condition_mitigated_at: Ok(
                        value.incident_condition_mitigated_at,
                    ),
                    incident_condition_resolved_at: Ok(
                        value.incident_condition_resolved_at,
                    ),
                    incident_condition_service: Ok(value.incident_condition_service),
                    incident_condition_severity: Ok(value.incident_condition_severity),
                    incident_condition_started_at: Ok(
                        value.incident_condition_started_at,
                    ),
                    incident_condition_status: Ok(value.incident_condition_status),
                    incident_condition_sub_status: Ok(
                        value.incident_condition_sub_status,
                    ),
                    incident_condition_summary: Ok(value.incident_condition_summary),
                    incident_condition_visibility: Ok(
                        value.incident_condition_visibility,
                    ),
                    incident_conditional_inactivity: Ok(
                        value.incident_conditional_inactivity,
                    ),
                    incident_inactivity_duration: Ok(value.incident_inactivity_duration),
                    incident_kinds: Ok(value.incident_kinds),
                    incident_post_mortem_condition: Ok(
                        value.incident_post_mortem_condition,
                    ),
                    incident_post_mortem_condition_cause: Ok(
                        value.incident_post_mortem_condition_cause,
                    ),
                    incident_post_mortem_condition_status: Ok(
                        value.incident_post_mortem_condition_status,
                    ),
                    incident_post_mortem_statuses: Ok(
                        value.incident_post_mortem_statuses,
                    ),
                    incident_statuses: Ok(value.incident_statuses),
                    incident_visibilities: Ok(value.incident_visibilities),
                    trigger_type: Ok(value.trigger_type),
                    triggers: Ok(value.triggers),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PrintTaskParams {
            message: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::PrintTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PrintTaskParams {
            fn default() -> Self {
                Self {
                    message: Err("no value supplied for message".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl PrintTaskParams {
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PrintTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PrintTaskParams> for super::PrintTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PrintTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    message: value.message?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::PrintTaskParams> for PrintTaskParams {
            fn from(value: super::PrintTaskParams) -> Self {
                Self {
                    message: Ok(value.message),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PublishIncidentTaskParams {
            event: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident: ::std::result::Result<
                super::PublishIncidentTaskParamsIncident,
                ::std::string::String,
            >,
            integration_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_subscribers: ::std::result::Result<bool, ::std::string::String>,
            public_title: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            should_tweet: ::std::result::Result<bool, ::std::string::String>,
            status: ::std::result::Result<
                super::PublishIncidentTaskParamsStatus,
                ::std::string::String,
            >,
            status_page_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status_page_template: ::std::result::Result<
                ::std::option::Option<
                    super::PublishIncidentTaskParamsStatusPageTemplate,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::PublishIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PublishIncidentTaskParams {
            fn default() -> Self {
                Self {
                    event: Ok(Default::default()),
                    incident: Err("no value supplied for incident".to_string()),
                    integration_payload: Ok(Default::default()),
                    notify_subscribers: Ok(Default::default()),
                    public_title: Err("no value supplied for public_title".to_string()),
                    should_tweet: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    status_page_id: Err(
                        "no value supplied for status_page_id".to_string(),
                    ),
                    status_page_template: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl PublishIncidentTaskParams {
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PublishIncidentTaskParamsIncident>,
                T::Error: ::std::fmt::Display,
            {
                self.incident = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident: {e}")
                    });
                self
            }
            pub fn integration_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.integration_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integration_payload: {e}"
                        )
                    });
                self
            }
            pub fn notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn should_tweet<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.should_tweet = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for should_tweet: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PublishIncidentTaskParamsStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn status_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_id: {e}"
                        )
                    });
                self
            }
            pub fn status_page_template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::PublishIncidentTaskParamsStatusPageTemplate,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_template = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_template: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PublishIncidentTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PublishIncidentTaskParams>
        for super::PublishIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PublishIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    event: value.event?,
                    incident: value.incident?,
                    integration_payload: value.integration_payload?,
                    notify_subscribers: value.notify_subscribers?,
                    public_title: value.public_title?,
                    should_tweet: value.should_tweet?,
                    status: value.status?,
                    status_page_id: value.status_page_id?,
                    status_page_template: value.status_page_template?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::PublishIncidentTaskParams>
        for PublishIncidentTaskParams {
            fn from(value: super::PublishIncidentTaskParams) -> Self {
                Self {
                    event: Ok(value.event),
                    incident: Ok(value.incident),
                    integration_payload: Ok(value.integration_payload),
                    notify_subscribers: Ok(value.notify_subscribers),
                    public_title: Ok(value.public_title),
                    should_tweet: Ok(value.should_tweet),
                    status: Ok(value.status),
                    status_page_id: Ok(value.status_page_id),
                    status_page_template: Ok(value.status_page_template),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PublishIncidentTaskParamsIncident {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PublishIncidentTaskParamsIncident {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PublishIncidentTaskParamsIncident {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PublishIncidentTaskParamsIncident>
        for super::PublishIncidentTaskParamsIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PublishIncidentTaskParamsIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PublishIncidentTaskParamsIncident>
        for PublishIncidentTaskParamsIncident {
            fn from(value: super::PublishIncidentTaskParamsIncident) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PublishIncidentTaskParamsStatusPageTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PublishIncidentTaskParamsStatusPageTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl PublishIncidentTaskParamsStatusPageTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PublishIncidentTaskParamsStatusPageTemplate>
        for super::PublishIncidentTaskParamsStatusPageTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PublishIncidentTaskParamsStatusPageTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::PublishIncidentTaskParamsStatusPageTemplate>
        for PublishIncidentTaskParamsStatusPageTemplate {
            fn from(value: super::PublishIncidentTaskParamsStatusPageTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Pulse {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            data: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            environments: ::std::result::Result<
                ::std::vec::Vec<super::Environment>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<::std::option::Option<super::PulseLabelsItem>>,
                ::std::string::String,
            >,
            refs: ::std::result::Result<
                ::std::vec::Vec<::std::option::Option<super::PulseRefsItem>>,
                ::std::string::String,
            >,
            services: ::std::result::Result<
                ::std::vec::Vec<super::Service>,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Pulse {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    data: Ok(Default::default()),
                    environments: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    refs: Ok(Default::default()),
                    services: Ok(Default::default()),
                    source: Ok(Default::default()),
                    summary: Err("no value supplied for summary".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Pulse {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn environments<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::Environment>>,
                T::Error: ::std::fmt::Display,
            {
                self.environments = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for environments: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<::std::option::Option<super::PulseLabelsItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn refs<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<::std::option::Option<super::PulseRefsItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.refs = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for refs: {e}")
                    });
                self
            }
            pub fn services<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::Service>>,
                T::Error: ::std::fmt::Display,
            {
                self.services = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for services: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Pulse> for super::Pulse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Pulse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    data: value.data?,
                    environments: value.environments?,
                    external_url: value.external_url?,
                    labels: value.labels?,
                    refs: value.refs?,
                    services: value.services?,
                    source: value.source?,
                    summary: value.summary?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Pulse> for Pulse {
            fn from(value: super::Pulse) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    data: Ok(value.data),
                    environments: Ok(value.environments),
                    external_url: Ok(value.external_url),
                    labels: Ok(value.labels),
                    refs: Ok(value.refs),
                    services: Ok(value.services),
                    source: Ok(value.source),
                    summary: Ok(value.summary),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseLabelsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for PulseLabelsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl PulseLabelsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseLabelsItem> for super::PulseLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::PulseLabelsItem> for PulseLabelsItem {
            fn from(value: super::PulseLabelsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::PulseListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for PulseList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl PulseList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::PulseListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseList> for super::PulseList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::PulseList> for PulseList {
            fn from(value: super::PulseList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseListDataItem {
            attributes: ::std::result::Result<super::Pulse, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PulseListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PulseListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PulseListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Pulse>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PulseListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseListDataItem> for super::PulseListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PulseListDataItem> for PulseListDataItem {
            fn from(value: super::PulseListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseRefsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for PulseRefsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl PulseRefsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseRefsItem> for super::PulseRefsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseRefsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::PulseRefsItem> for PulseRefsItem {
            fn from(value: super::PulseRefsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseResponse {
            data: ::std::result::Result<super::PulseResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PulseResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl PulseResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PulseResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseResponse> for super::PulseResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::PulseResponse> for PulseResponse {
            fn from(value: super::PulseResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseResponseData {
            attributes: ::std::result::Result<super::Pulse, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::PulseResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PulseResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl PulseResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Pulse>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PulseResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseResponseData> for super::PulseResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::PulseResponseData> for PulseResponseData {
            fn from(value: super::PulseResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct PulseTriggerParams {
            pulse_condition: ::std::result::Result<
                ::std::option::Option<super::PulseTriggerParamsPulseCondition>,
                ::std::string::String,
            >,
            pulse_condition_label: ::std::result::Result<
                super::PulseTriggerParamsPulseConditionLabel,
                ::std::string::String,
            >,
            pulse_condition_label_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            pulse_condition_payload: ::std::result::Result<
                super::PulseTriggerParamsPulseConditionPayload,
                ::std::string::String,
            >,
            pulse_condition_payload_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            pulse_condition_source: ::std::result::Result<
                super::PulseTriggerParamsPulseConditionSource,
                ::std::string::String,
            >,
            pulse_condition_source_use_regexp: ::std::result::Result<
                bool,
                ::std::string::String,
            >,
            pulse_labels: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            pulse_payload: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            pulse_query_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pulse_sources: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            trigger_type: ::std::result::Result<
                super::PulseTriggerParamsTriggerType,
                ::std::string::String,
            >,
            triggers: ::std::result::Result<
                ::std::vec::Vec<super::PulseTriggerParamsTriggersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for PulseTriggerParams {
            fn default() -> Self {
                Self {
                    pulse_condition: Ok(Default::default()),
                    pulse_condition_label: Ok(
                        super::defaults::pulse_trigger_params_pulse_condition_label(),
                    ),
                    pulse_condition_label_use_regexp: Ok(Default::default()),
                    pulse_condition_payload: Ok(
                        super::defaults::pulse_trigger_params_pulse_condition_payload(),
                    ),
                    pulse_condition_payload_use_regexp: Ok(Default::default()),
                    pulse_condition_source: Ok(
                        super::defaults::pulse_trigger_params_pulse_condition_source(),
                    ),
                    pulse_condition_source_use_regexp: Ok(Default::default()),
                    pulse_labels: Ok(Default::default()),
                    pulse_payload: Ok(Default::default()),
                    pulse_query_payload: Ok(Default::default()),
                    pulse_sources: Ok(Default::default()),
                    trigger_type: Err("no value supplied for trigger_type".to_string()),
                    triggers: Ok(Default::default()),
                }
            }
        }
        impl PulseTriggerParams {
            pub fn pulse_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PulseTriggerParamsPulseCondition>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition: {e}"
                        )
                    });
                self
            }
            pub fn pulse_condition_label<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PulseTriggerParamsPulseConditionLabel>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition_label = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition_label: {e}"
                        )
                    });
                self
            }
            pub fn pulse_condition_label_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition_label_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition_label_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn pulse_condition_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PulseTriggerParamsPulseConditionPayload,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition_payload: {e}"
                        )
                    });
                self
            }
            pub fn pulse_condition_payload_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition_payload_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition_payload_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn pulse_condition_source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::PulseTriggerParamsPulseConditionSource,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition_source = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition_source: {e}"
                        )
                    });
                self
            }
            pub fn pulse_condition_source_use_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_condition_source_use_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_condition_source_use_regexp: {e}"
                        )
                    });
                self
            }
            pub fn pulse_labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pulse_labels: {e}")
                    });
                self
            }
            pub fn pulse_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pulse_payload: {e}")
                    });
                self
            }
            pub fn pulse_query_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_query_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulse_query_payload: {e}"
                        )
                    });
                self
            }
            pub fn pulse_sources<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_sources = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pulse_sources: {e}")
                    });
                self
            }
            pub fn trigger_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::PulseTriggerParamsTriggerType>,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for trigger_type: {e}")
                    });
                self
            }
            pub fn triggers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::PulseTriggerParamsTriggersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.triggers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggers: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<PulseTriggerParams> for super::PulseTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: PulseTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    pulse_condition: value.pulse_condition?,
                    pulse_condition_label: value.pulse_condition_label?,
                    pulse_condition_label_use_regexp: value
                        .pulse_condition_label_use_regexp?,
                    pulse_condition_payload: value.pulse_condition_payload?,
                    pulse_condition_payload_use_regexp: value
                        .pulse_condition_payload_use_regexp?,
                    pulse_condition_source: value.pulse_condition_source?,
                    pulse_condition_source_use_regexp: value
                        .pulse_condition_source_use_regexp?,
                    pulse_labels: value.pulse_labels?,
                    pulse_payload: value.pulse_payload?,
                    pulse_query_payload: value.pulse_query_payload?,
                    pulse_sources: value.pulse_sources?,
                    trigger_type: value.trigger_type?,
                    triggers: value.triggers?,
                })
            }
        }
        impl ::std::convert::From<super::PulseTriggerParams> for PulseTriggerParams {
            fn from(value: super::PulseTriggerParams) -> Self {
                Self {
                    pulse_condition: Ok(value.pulse_condition),
                    pulse_condition_label: Ok(value.pulse_condition_label),
                    pulse_condition_label_use_regexp: Ok(
                        value.pulse_condition_label_use_regexp,
                    ),
                    pulse_condition_payload: Ok(value.pulse_condition_payload),
                    pulse_condition_payload_use_regexp: Ok(
                        value.pulse_condition_payload_use_regexp,
                    ),
                    pulse_condition_source: Ok(value.pulse_condition_source),
                    pulse_condition_source_use_regexp: Ok(
                        value.pulse_condition_source_use_regexp,
                    ),
                    pulse_labels: Ok(value.pulse_labels),
                    pulse_payload: Ok(value.pulse_payload),
                    pulse_query_payload: Ok(value.pulse_query_payload),
                    pulse_sources: Ok(value.pulse_sources),
                    trigger_type: Ok(value.trigger_type),
                    triggers: Ok(value.triggers),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RedisClientTaskParams {
            commands: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            event_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            event_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<super::RedisClientTaskParamsPostToSlackChannelsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::RedisClientTaskParamsTaskType>,
                ::std::string::String,
            >,
            url: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for RedisClientTaskParams {
            fn default() -> Self {
                Self {
                    commands: Err("no value supplied for commands".to_string()),
                    event_message: Ok(Default::default()),
                    event_url: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    url: Err("no value supplied for url".to_string()),
                }
            }
        }
        impl RedisClientTaskParams {
            pub fn commands<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.commands = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for commands: {e}")
                    });
                self
            }
            pub fn event_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event_message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_message: {e}")
                    });
                self
            }
            pub fn event_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_url: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RedisClientTaskParamsPostToSlackChannelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RedisClientTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RedisClientTaskParams>
        for super::RedisClientTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RedisClientTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    commands: value.commands?,
                    event_message: value.event_message?,
                    event_url: value.event_url?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                    url: value.url?,
                })
            }
        }
        impl ::std::convert::From<super::RedisClientTaskParams>
        for RedisClientTaskParams {
            fn from(value: super::RedisClientTaskParams) -> Self {
                Self {
                    commands: Ok(value.commands),
                    event_message: Ok(value.event_message),
                    event_url: Ok(value.event_url),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                    url: Ok(value.url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RedisClientTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RedisClientTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl RedisClientTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RedisClientTaskParamsPostToSlackChannelsItem>
        for super::RedisClientTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RedisClientTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::RedisClientTaskParamsPostToSlackChannelsItem>
        for RedisClientTaskParamsPostToSlackChannelsItem {
            fn from(value: super::RedisClientTaskParamsPostToSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RemoveGoogleDocsPermissionsTaskParams {
            attribute_to_query_by: ::std::result::Result<
                super::RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::RemoveGoogleDocsPermissionsTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for RemoveGoogleDocsPermissionsTaskParams {
            fn default() -> Self {
                Self {
                    attribute_to_query_by: Err(
                        "no value supplied for attribute_to_query_by".to_string(),
                    ),
                    file_id: Err("no value supplied for file_id".to_string()),
                    task_type: Ok(Default::default()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl RemoveGoogleDocsPermissionsTaskParams {
            pub fn attribute_to_query_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RemoveGoogleDocsPermissionsTaskParamsAttributeToQueryBy,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attribute_to_query_by = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for attribute_to_query_by: {e}"
                        )
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::RemoveGoogleDocsPermissionsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RemoveGoogleDocsPermissionsTaskParams>
        for super::RemoveGoogleDocsPermissionsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RemoveGoogleDocsPermissionsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attribute_to_query_by: value.attribute_to_query_by?,
                    file_id: value.file_id?,
                    task_type: value.task_type?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::RemoveGoogleDocsPermissionsTaskParams>
        for RemoveGoogleDocsPermissionsTaskParams {
            fn from(value: super::RemoveGoogleDocsPermissionsTaskParams) -> Self {
                Self {
                    attribute_to_query_by: Ok(value.attribute_to_query_by),
                    file_id: Ok(value.file_id),
                    task_type: Ok(value.task_type),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RemoveSubscribers {
            data: ::std::result::Result<
                super::RemoveSubscribersData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RemoveSubscribers {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl RemoveSubscribers {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RemoveSubscribersData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RemoveSubscribers> for super::RemoveSubscribers {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RemoveSubscribers,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::RemoveSubscribers> for RemoveSubscribers {
            fn from(value: super::RemoveSubscribers) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RemoveSubscribersData {
            attributes: ::std::result::Result<
                super::RemoveSubscribersDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::RemoveSubscribersDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RemoveSubscribersData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RemoveSubscribersData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RemoveSubscribersDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RemoveSubscribersDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RemoveSubscribersData>
        for super::RemoveSubscribersData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RemoveSubscribersData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RemoveSubscribersData>
        for RemoveSubscribersData {
            fn from(value: super::RemoveSubscribersData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RemoveSubscribersDataAttributes {
            remove_users_with_no_private_incident_access: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RemoveSubscribersDataAttributes {
            fn default() -> Self {
                Self {
                    remove_users_with_no_private_incident_access: Ok(Default::default()),
                    user_ids: Ok(Default::default()),
                }
            }
        }
        impl RemoveSubscribersDataAttributes {
            pub fn remove_users_with_no_private_incident_access<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.remove_users_with_no_private_incident_access = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for remove_users_with_no_private_incident_access: {e}"
                        )
                    });
                self
            }
            pub fn user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RemoveSubscribersDataAttributes>
        for super::RemoveSubscribersDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RemoveSubscribersDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    remove_users_with_no_private_incident_access: value
                        .remove_users_with_no_private_incident_access?,
                    user_ids: value.user_ids?,
                })
            }
        }
        impl ::std::convert::From<super::RemoveSubscribersDataAttributes>
        for RemoveSubscribersDataAttributes {
            fn from(value: super::RemoveSubscribersDataAttributes) -> Self {
                Self {
                    remove_users_with_no_private_incident_access: Ok(
                        value.remove_users_with_no_private_incident_access,
                    ),
                    user_ids: Ok(value.user_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameGoogleChatSpaceTaskParams {
            space: ::std::result::Result<
                super::RenameGoogleChatSpaceTaskParamsSpace,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::RenameGoogleChatSpaceTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for RenameGoogleChatSpaceTaskParams {
            fn default() -> Self {
                Self {
                    space: Err("no value supplied for space".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl RenameGoogleChatSpaceTaskParams {
            pub fn space<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RenameGoogleChatSpaceTaskParamsSpace>,
                T::Error: ::std::fmt::Display,
            {
                self.space = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for space: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RenameGoogleChatSpaceTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameGoogleChatSpaceTaskParams>
        for super::RenameGoogleChatSpaceTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameGoogleChatSpaceTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    space: value.space?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::RenameGoogleChatSpaceTaskParams>
        for RenameGoogleChatSpaceTaskParams {
            fn from(value: super::RenameGoogleChatSpaceTaskParams) -> Self {
                Self {
                    space: Ok(value.space),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameGoogleChatSpaceTaskParamsSpace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RenameGoogleChatSpaceTaskParamsSpace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl RenameGoogleChatSpaceTaskParamsSpace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameGoogleChatSpaceTaskParamsSpace>
        for super::RenameGoogleChatSpaceTaskParamsSpace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameGoogleChatSpaceTaskParamsSpace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::RenameGoogleChatSpaceTaskParamsSpace>
        for RenameGoogleChatSpaceTaskParamsSpace {
            fn from(value: super::RenameGoogleChatSpaceTaskParamsSpace) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameMicrosoftTeamsChannelTaskParams {
            channel: ::std::result::Result<
                super::RenameMicrosoftTeamsChannelTaskParamsChannel,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::RenameMicrosoftTeamsChannelTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            team: ::std::result::Result<
                super::RenameMicrosoftTeamsChannelTaskParamsTeam,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for RenameMicrosoftTeamsChannelTaskParams {
            fn default() -> Self {
                Self {
                    channel: Err("no value supplied for channel".to_string()),
                    task_type: Ok(Default::default()),
                    team: Err("no value supplied for team".to_string()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl RenameMicrosoftTeamsChannelTaskParams {
            pub fn channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RenameMicrosoftTeamsChannelTaskParamsChannel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channel: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::RenameMicrosoftTeamsChannelTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RenameMicrosoftTeamsChannelTaskParamsTeam,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameMicrosoftTeamsChannelTaskParams>
        for super::RenameMicrosoftTeamsChannelTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameMicrosoftTeamsChannelTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channel: value.channel?,
                    task_type: value.task_type?,
                    team: value.team?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::RenameMicrosoftTeamsChannelTaskParams>
        for RenameMicrosoftTeamsChannelTaskParams {
            fn from(value: super::RenameMicrosoftTeamsChannelTaskParams) -> Self {
                Self {
                    channel: Ok(value.channel),
                    task_type: Ok(value.task_type),
                    team: Ok(value.team),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameMicrosoftTeamsChannelTaskParamsChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RenameMicrosoftTeamsChannelTaskParamsChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl RenameMicrosoftTeamsChannelTaskParamsChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameMicrosoftTeamsChannelTaskParamsChannel>
        for super::RenameMicrosoftTeamsChannelTaskParamsChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameMicrosoftTeamsChannelTaskParamsChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::RenameMicrosoftTeamsChannelTaskParamsChannel>
        for RenameMicrosoftTeamsChannelTaskParamsChannel {
            fn from(value: super::RenameMicrosoftTeamsChannelTaskParamsChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameMicrosoftTeamsChannelTaskParamsTeam {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RenameMicrosoftTeamsChannelTaskParamsTeam {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl RenameMicrosoftTeamsChannelTaskParamsTeam {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameMicrosoftTeamsChannelTaskParamsTeam>
        for super::RenameMicrosoftTeamsChannelTaskParamsTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameMicrosoftTeamsChannelTaskParamsTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::RenameMicrosoftTeamsChannelTaskParamsTeam>
        for RenameMicrosoftTeamsChannelTaskParamsTeam {
            fn from(value: super::RenameMicrosoftTeamsChannelTaskParamsTeam) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameSlackChannelTaskParams {
            channel: ::std::result::Result<
                super::RenameSlackChannelTaskParamsChannel,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::RenameSlackChannelTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for RenameSlackChannelTaskParams {
            fn default() -> Self {
                Self {
                    channel: Err("no value supplied for channel".to_string()),
                    task_type: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                }
            }
        }
        impl RenameSlackChannelTaskParams {
            pub fn channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RenameSlackChannelTaskParamsChannel>,
                T::Error: ::std::fmt::Display,
            {
                self.channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channel: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RenameSlackChannelTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameSlackChannelTaskParams>
        for super::RenameSlackChannelTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameSlackChannelTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channel: value.channel?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::RenameSlackChannelTaskParams>
        for RenameSlackChannelTaskParams {
            fn from(value: super::RenameSlackChannelTaskParams) -> Self {
                Self {
                    channel: Ok(value.channel),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RenameSlackChannelTaskParamsChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RenameSlackChannelTaskParamsChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl RenameSlackChannelTaskParamsChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RenameSlackChannelTaskParamsChannel>
        for super::RenameSlackChannelTaskParamsChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RenameSlackChannelTaskParamsChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::RenameSlackChannelTaskParamsChannel>
        for RenameSlackChannelTaskParamsChannel {
            fn from(value: super::RenameSlackChannelTaskParamsChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ResolveAlert {
            data: ::std::result::Result<
                ::std::option::Option<super::ResolveAlertData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ResolveAlert {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl ResolveAlert {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ResolveAlertData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ResolveAlert> for super::ResolveAlert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ResolveAlert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::ResolveAlert> for ResolveAlert {
            fn from(value: super::ResolveAlert) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ResolveAlertData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::ResolveAlertDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::ResolveAlertDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ResolveAlertData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl ResolveAlertData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ResolveAlertDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ResolveAlertDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ResolveAlertData> for super::ResolveAlertData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ResolveAlertData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ResolveAlertData> for ResolveAlertData {
            fn from(value: super::ResolveAlertData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ResolveAlertDataAttributes {
            resolution_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolve_related_incidents: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ResolveAlertDataAttributes {
            fn default() -> Self {
                Self {
                    resolution_message: Ok(Default::default()),
                    resolve_related_incidents: Ok(Default::default()),
                }
            }
        }
        impl ResolveAlertDataAttributes {
            pub fn resolution_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_message: {e}"
                        )
                    });
                self
            }
            pub fn resolve_related_incidents<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolve_related_incidents = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolve_related_incidents: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ResolveAlertDataAttributes>
        for super::ResolveAlertDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ResolveAlertDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    resolution_message: value.resolution_message?,
                    resolve_related_incidents: value.resolve_related_incidents?,
                })
            }
        }
        impl ::std::convert::From<super::ResolveAlertDataAttributes>
        for ResolveAlertDataAttributes {
            fn from(value: super::ResolveAlertDataAttributes) -> Self {
                Self {
                    resolution_message: Ok(value.resolution_message),
                    resolve_related_incidents: Ok(value.resolve_related_incidents),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ResolveIncident {
            data: ::std::result::Result<
                super::ResolveIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ResolveIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl ResolveIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ResolveIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ResolveIncident> for super::ResolveIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ResolveIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::ResolveIncident> for ResolveIncident {
            fn from(value: super::ResolveIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ResolveIncidentData {
            attributes: ::std::result::Result<
                super::ResolveIncidentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::ResolveIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ResolveIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ResolveIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ResolveIncidentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ResolveIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ResolveIncidentData>
        for super::ResolveIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ResolveIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ResolveIncidentData> for ResolveIncidentData {
            fn from(value: super::ResolveIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ResolveIncidentDataAttributes {
            resolution_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ResolveIncidentDataAttributes {
            fn default() -> Self {
                Self {
                    resolution_message: Ok(Default::default()),
                }
            }
        }
        impl ResolveIncidentDataAttributes {
            pub fn resolution_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_message: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ResolveIncidentDataAttributes>
        for super::ResolveIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ResolveIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    resolution_message: value.resolution_message?,
                })
            }
        }
        impl ::std::convert::From<super::ResolveIncidentDataAttributes>
        for ResolveIncidentDataAttributes {
            fn from(value: super::ResolveIncidentDataAttributes) -> Self {
                Self {
                    resolution_message: Ok(value.resolution_message),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RestartIncident {
            data: ::std::result::Result<
                super::RestartIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RestartIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl RestartIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RestartIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RestartIncident> for super::RestartIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RestartIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::RestartIncident> for RestartIncident {
            fn from(value: super::RestartIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RestartIncidentData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::RestartIncidentDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::RestartIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RestartIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RestartIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RestartIncidentDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RestartIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RestartIncidentData>
        for super::RestartIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RestartIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RestartIncidentData> for RestartIncidentData {
            fn from(value: super::RestartIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RestartIncidentDataAttributes {}
        impl ::std::default::Default for RestartIncidentDataAttributes {
            fn default() -> Self {
                Self {}
            }
        }
        impl RestartIncidentDataAttributes {}
        impl ::std::convert::TryFrom<RestartIncidentDataAttributes>
        for super::RestartIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                _value: RestartIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {})
            }
        }
        impl ::std::convert::From<super::RestartIncidentDataAttributes>
        for RestartIncidentDataAttributes {
            fn from(_value: super::RestartIncidentDataAttributes) -> Self {
                Self {}
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveConfiguration {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::RetrospectiveConfigurationKind>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveConfiguration {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveConfiguration {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RetrospectiveConfigurationKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveConfiguration>
        for super::RetrospectiveConfiguration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveConfiguration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    kind: value.kind?,
                    severity_ids: value.severity_ids?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveConfiguration>
        for RetrospectiveConfiguration {
            fn from(value: super::RetrospectiveConfiguration) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    kind: Ok(value.kind),
                    severity_ids: Ok(value.severity_ids),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveConfigurationList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::RetrospectiveConfigurationListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveConfigurationList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveConfigurationList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RetrospectiveConfigurationListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveConfigurationList>
        for super::RetrospectiveConfigurationList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveConfigurationList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveConfigurationList>
        for RetrospectiveConfigurationList {
            fn from(value: super::RetrospectiveConfigurationList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveConfigurationListDataItem {
            attributes: ::std::result::Result<
                super::RetrospectiveConfiguration,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveConfigurationListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveConfigurationListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveConfigurationListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveConfiguration>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveConfigurationListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveConfigurationListDataItem>
        for super::RetrospectiveConfigurationListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveConfigurationListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveConfigurationListDataItem>
        for RetrospectiveConfigurationListDataItem {
            fn from(value: super::RetrospectiveConfigurationListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveConfigurationResponse {
            data: ::std::result::Result<
                super::RetrospectiveConfigurationResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveConfigurationResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveConfigurationResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveConfigurationResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveConfigurationResponse>
        for super::RetrospectiveConfigurationResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveConfigurationResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveConfigurationResponse>
        for RetrospectiveConfigurationResponse {
            fn from(value: super::RetrospectiveConfigurationResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveConfigurationResponseData {
            attributes: ::std::result::Result<
                super::RetrospectiveConfiguration,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveConfigurationResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveConfigurationResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveConfigurationResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveConfiguration>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveConfigurationResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveConfigurationResponseData>
        for super::RetrospectiveConfigurationResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveConfigurationResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveConfigurationResponseData>
        for RetrospectiveConfigurationResponseData {
            fn from(value: super::RetrospectiveConfigurationResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcess {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            is_default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            retrospective_process_matching_criteria: ::std::result::Result<
                ::std::option::Option<
                    super::RetrospectiveProcessRetrospectiveProcessMatchingCriteria,
                >,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcess {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    description: Ok(Default::default()),
                    is_default: Ok(Default::default()),
                    name: Ok(Default::default()),
                    retrospective_process_matching_criteria: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveProcess {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn is_default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_default: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn retrospective_process_matching_criteria<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::RetrospectiveProcessRetrospectiveProcessMatchingCriteria,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_process_matching_criteria = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_process_matching_criteria: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcess>
        for super::RetrospectiveProcess {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcess,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    is_default: value.is_default?,
                    name: value.name?,
                    retrospective_process_matching_criteria: value
                        .retrospective_process_matching_criteria?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcess> for RetrospectiveProcess {
            fn from(value: super::RetrospectiveProcess) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    is_default: Ok(value.is_default),
                    name: Ok(value.name),
                    retrospective_process_matching_criteria: Ok(
                        value.retrospective_process_matching_criteria,
                    ),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroup {
            position: ::std::result::Result<i64, ::std::string::String>,
            retrospective_process_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroup {
            fn default() -> Self {
                Self {
                    position: Err("no value supplied for position".to_string()),
                    retrospective_process_id: Err(
                        "no value supplied for retrospective_process_id".to_string(),
                    ),
                    sub_status_id: Err("no value supplied for sub_status_id".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroup {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn retrospective_process_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_process_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_process_id: {e}"
                        )
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroup>
        for super::RetrospectiveProcessGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    retrospective_process_id: value.retrospective_process_id?,
                    sub_status_id: value.sub_status_id?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroup>
        for RetrospectiveProcessGroup {
            fn from(value: super::RetrospectiveProcessGroup) -> Self {
                Self {
                    position: Ok(value.position),
                    retrospective_process_id: Ok(value.retrospective_process_id),
                    sub_status_id: Ok(value.sub_status_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::RetrospectiveProcessGroupListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroupList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RetrospectiveProcessGroupListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupList>
        for super::RetrospectiveProcessGroupList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupList>
        for RetrospectiveProcessGroupList {
            fn from(value: super::RetrospectiveProcessGroupList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupListDataItem {
            attributes: ::std::result::Result<
                super::RetrospectiveProcessGroup,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveProcessGroupListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroupListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveProcessGroupListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupListDataItem>
        for super::RetrospectiveProcessGroupListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupListDataItem>
        for RetrospectiveProcessGroupListDataItem {
            fn from(value: super::RetrospectiveProcessGroupListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupResponse {
            data: ::std::result::Result<
                super::RetrospectiveProcessGroupResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveProcessGroupResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessGroupResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupResponse>
        for super::RetrospectiveProcessGroupResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupResponse>
        for RetrospectiveProcessGroupResponse {
            fn from(value: super::RetrospectiveProcessGroupResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupResponseData {
            attributes: ::std::result::Result<
                super::RetrospectiveProcessGroup,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveProcessGroupResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroupResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveProcessGroupResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupResponseData>
        for super::RetrospectiveProcessGroupResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupResponseData>
        for RetrospectiveProcessGroupResponseData {
            fn from(value: super::RetrospectiveProcessGroupResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupStep {
            position: ::std::result::Result<i64, ::std::string::String>,
            retrospective_process_group_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            retrospective_step_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupStep {
            fn default() -> Self {
                Self {
                    position: Err("no value supplied for position".to_string()),
                    retrospective_process_group_id: Err(
                        "no value supplied for retrospective_process_group_id"
                            .to_string(),
                    ),
                    retrospective_step_id: Err(
                        "no value supplied for retrospective_step_id".to_string(),
                    ),
                }
            }
        }
        impl RetrospectiveProcessGroupStep {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn retrospective_process_group_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_process_group_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_process_group_id: {e}"
                        )
                    });
                self
            }
            pub fn retrospective_step_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_step_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_step_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupStep>
        for super::RetrospectiveProcessGroupStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    retrospective_process_group_id: value
                        .retrospective_process_group_id?,
                    retrospective_step_id: value.retrospective_step_id?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupStep>
        for RetrospectiveProcessGroupStep {
            fn from(value: super::RetrospectiveProcessGroupStep) -> Self {
                Self {
                    position: Ok(value.position),
                    retrospective_process_group_id: Ok(
                        value.retrospective_process_group_id,
                    ),
                    retrospective_step_id: Ok(value.retrospective_step_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupStepList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::RetrospectiveProcessGroupStepListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupStepList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroupStepList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RetrospectiveProcessGroupStepListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupStepList>
        for super::RetrospectiveProcessGroupStepList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupStepList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupStepList>
        for RetrospectiveProcessGroupStepList {
            fn from(value: super::RetrospectiveProcessGroupStepList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupStepListDataItem {
            attributes: ::std::result::Result<
                super::RetrospectiveProcessGroupStep,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveProcessGroupStepListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupStepListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroupStepListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessGroupStep>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveProcessGroupStepListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupStepListDataItem>
        for super::RetrospectiveProcessGroupStepListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupStepListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupStepListDataItem>
        for RetrospectiveProcessGroupStepListDataItem {
            fn from(value: super::RetrospectiveProcessGroupStepListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupStepResponse {
            data: ::std::result::Result<
                super::RetrospectiveProcessGroupStepResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupStepResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveProcessGroupStepResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveProcessGroupStepResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupStepResponse>
        for super::RetrospectiveProcessGroupStepResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupStepResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupStepResponse>
        for RetrospectiveProcessGroupStepResponse {
            fn from(value: super::RetrospectiveProcessGroupStepResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessGroupStepResponseData {
            attributes: ::std::result::Result<
                super::RetrospectiveProcessGroupStep,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveProcessGroupStepResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessGroupStepResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveProcessGroupStepResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessGroupStep>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::RetrospectiveProcessGroupStepResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessGroupStepResponseData>
        for super::RetrospectiveProcessGroupStepResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessGroupStepResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessGroupStepResponseData>
        for RetrospectiveProcessGroupStepResponseData {
            fn from(value: super::RetrospectiveProcessGroupStepResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::RetrospectiveProcessListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for RetrospectiveProcessList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl RetrospectiveProcessList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RetrospectiveProcessListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessList>
        for super::RetrospectiveProcessList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessList>
        for RetrospectiveProcessList {
            fn from(value: super::RetrospectiveProcessList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessListDataItem {
            attributes: ::std::result::Result<
                super::RetrospectiveProcess,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveProcessListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveProcessListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcess>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessListDataItem>
        for super::RetrospectiveProcessListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessListDataItem>
        for RetrospectiveProcessListDataItem {
            fn from(value: super::RetrospectiveProcessListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessResponse {
            data: ::std::result::Result<
                super::RetrospectiveProcessResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveProcessResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessResponse>
        for super::RetrospectiveProcessResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessResponse>
        for RetrospectiveProcessResponse {
            fn from(value: super::RetrospectiveProcessResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveProcessResponseData {
            attributes: ::std::result::Result<
                super::RetrospectiveProcess,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveProcessResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveProcessResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveProcessResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcess>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveProcessResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveProcessResponseData>
        for super::RetrospectiveProcessResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveProcessResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveProcessResponseData>
        for RetrospectiveProcessResponseData {
            fn from(value: super::RetrospectiveProcessResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveStep {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_after_days: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            retrospective_process_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            skippable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveStep {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    due_after_days: Ok(Default::default()),
                    incident_role_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    retrospective_process_id: Err(
                        "no value supplied for retrospective_process_id".to_string(),
                    ),
                    skippable: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl RetrospectiveStep {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_after_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_after_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for due_after_days: {e}"
                        )
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn retrospective_process_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_process_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_process_id: {e}"
                        )
                    });
                self
            }
            pub fn skippable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skippable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for skippable: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveStep> for super::RetrospectiveStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    due_after_days: value.due_after_days?,
                    incident_role_id: value.incident_role_id?,
                    position: value.position?,
                    retrospective_process_id: value.retrospective_process_id?,
                    skippable: value.skippable?,
                    slug: value.slug?,
                    title: value.title?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveStep> for RetrospectiveStep {
            fn from(value: super::RetrospectiveStep) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    due_after_days: Ok(value.due_after_days),
                    incident_role_id: Ok(value.incident_role_id),
                    position: Ok(value.position),
                    retrospective_process_id: Ok(value.retrospective_process_id),
                    skippable: Ok(value.skippable),
                    slug: Ok(value.slug),
                    title: Ok(value.title),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveStepList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::RetrospectiveStepListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for RetrospectiveStepList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl RetrospectiveStepList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RetrospectiveStepListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveStepList>
        for super::RetrospectiveStepList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveStepList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveStepList>
        for RetrospectiveStepList {
            fn from(value: super::RetrospectiveStepList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveStepListDataItem {
            attributes: ::std::result::Result<
                super::RetrospectiveStep,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveStepListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveStepListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveStepListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveStep>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveStepListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveStepListDataItem>
        for super::RetrospectiveStepListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveStepListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveStepListDataItem>
        for RetrospectiveStepListDataItem {
            fn from(value: super::RetrospectiveStepListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveStepResponse {
            data: ::std::result::Result<
                super::RetrospectiveStepResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveStepResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RetrospectiveStepResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveStepResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveStepResponse>
        for super::RetrospectiveStepResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveStepResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveStepResponse>
        for RetrospectiveStepResponse {
            fn from(value: super::RetrospectiveStepResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RetrospectiveStepResponseData {
            attributes: ::std::result::Result<
                super::RetrospectiveStep,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RetrospectiveStepResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RetrospectiveStepResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RetrospectiveStepResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveStep>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RetrospectiveStepResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RetrospectiveStepResponseData>
        for super::RetrospectiveStepResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RetrospectiveStepResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RetrospectiveStepResponseData>
        for RetrospectiveStepResponseData {
            fn from(value: super::RetrospectiveStepResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Role {
            alerts_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleAlertsPermissionsItem>,
                ::std::string::String,
            >,
            api_keys_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleApiKeysPermissionsItem>,
                ::std::string::String,
            >,
            audits_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleAuditsPermissionsItem>,
                ::std::string::String,
            >,
            billing_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleBillingPermissionsItem>,
                ::std::string::String,
            >,
            catalogs_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleCatalogsPermissionsItem>,
                ::std::string::String,
            >,
            communication_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleCommunicationPermissionsItem>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            edge_connector_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleEdgeConnectorPermissionsItem>,
                ::std::string::String,
            >,
            environments_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleEnvironmentsPermissionsItem>,
                ::std::string::String,
            >,
            form_fields_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleFormFieldsPermissionsItem>,
                ::std::string::String,
            >,
            functionalities_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleFunctionalitiesPermissionsItem>,
                ::std::string::String,
            >,
            groups_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleGroupsPermissionsItem>,
                ::std::string::String,
            >,
            incident_causes_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIncidentCausesPermissionsItem>,
                ::std::string::String,
            >,
            incident_communication_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIncidentCommunicationPermissionsItem>,
                ::std::string::String,
            >,
            incident_feedbacks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIncidentFeedbacksPermissionsItem>,
                ::std::string::String,
            >,
            incident_permission_set_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_roles_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIncidentRolesPermissionsItem>,
                ::std::string::String,
            >,
            incident_types_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIncidentTypesPermissionsItem>,
                ::std::string::String,
            >,
            incidents_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIncidentsPermissionsItem>,
                ::std::string::String,
            >,
            integrations_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleIntegrationsPermissionsItem>,
                ::std::string::String,
            >,
            invitations_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleInvitationsPermissionsItem>,
                ::std::string::String,
            >,
            is_deletable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            is_editable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            paging_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RolePagingPermissionsItem>,
                ::std::string::String,
            >,
            playbooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RolePlaybooksPermissionsItem>,
                ::std::string::String,
            >,
            private_incidents_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RolePrivateIncidentsPermissionsItem>,
                ::std::string::String,
            >,
            pulses_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RolePulsesPermissionsItem>,
                ::std::string::String,
            >,
            retrospective_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleRetrospectivePermissionsItem>,
                ::std::string::String,
            >,
            roles_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleRolesPermissionsItem>,
                ::std::string::String,
            >,
            secrets_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleSecretsPermissionsItem>,
                ::std::string::String,
            >,
            services_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleServicesPermissionsItem>,
                ::std::string::String,
            >,
            severities_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleSeveritiesPermissionsItem>,
                ::std::string::String,
            >,
            slas_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleSlasPermissionsItem>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status_pages_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleStatusPagesPermissionsItem>,
                ::std::string::String,
            >,
            sub_statuses_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleSubStatusesPermissionsItem>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            webhooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleWebhooksPermissionsItem>,
                ::std::string::String,
            >,
            workflows_permissions: ::std::result::Result<
                ::std::vec::Vec<super::RoleWorkflowsPermissionsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Role {
            fn default() -> Self {
                Self {
                    alerts_permissions: Ok(Default::default()),
                    api_keys_permissions: Ok(Default::default()),
                    audits_permissions: Ok(Default::default()),
                    billing_permissions: Ok(Default::default()),
                    catalogs_permissions: Ok(Default::default()),
                    communication_permissions: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    edge_connector_permissions: Ok(Default::default()),
                    environments_permissions: Ok(Default::default()),
                    form_fields_permissions: Ok(Default::default()),
                    functionalities_permissions: Ok(Default::default()),
                    groups_permissions: Ok(Default::default()),
                    incident_causes_permissions: Ok(Default::default()),
                    incident_communication_permissions: Ok(Default::default()),
                    incident_feedbacks_permissions: Ok(Default::default()),
                    incident_permission_set_id: Ok(Default::default()),
                    incident_roles_permissions: Ok(Default::default()),
                    incident_types_permissions: Ok(Default::default()),
                    incidents_permissions: Ok(Default::default()),
                    integrations_permissions: Ok(Default::default()),
                    invitations_permissions: Ok(Default::default()),
                    is_deletable: Ok(Default::default()),
                    is_editable: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    paging_permissions: Ok(Default::default()),
                    playbooks_permissions: Ok(Default::default()),
                    private_incidents_permissions: Ok(Default::default()),
                    pulses_permissions: Ok(Default::default()),
                    retrospective_permissions: Ok(Default::default()),
                    roles_permissions: Ok(Default::default()),
                    secrets_permissions: Ok(Default::default()),
                    services_permissions: Ok(Default::default()),
                    severities_permissions: Ok(Default::default()),
                    slas_permissions: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    status_pages_permissions: Ok(Default::default()),
                    sub_statuses_permissions: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    webhooks_permissions: Ok(Default::default()),
                    workflows_permissions: Ok(Default::default()),
                }
            }
        }
        impl Role {
            pub fn alerts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleAlertsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn api_keys_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleApiKeysPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.api_keys_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for api_keys_permissions: {e}"
                        )
                    });
                self
            }
            pub fn audits_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleAuditsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.audits_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for audits_permissions: {e}"
                        )
                    });
                self
            }
            pub fn billing_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleBillingPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.billing_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for billing_permissions: {e}"
                        )
                    });
                self
            }
            pub fn catalogs_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleCatalogsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalogs_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalogs_permissions: {e}"
                        )
                    });
                self
            }
            pub fn communication_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleCommunicationPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_permissions: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn edge_connector_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleEdgeConnectorPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.edge_connector_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for edge_connector_permissions: {e}"
                        )
                    });
                self
            }
            pub fn environments_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleEnvironmentsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environments_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environments_permissions: {e}"
                        )
                    });
                self
            }
            pub fn form_fields_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleFormFieldsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form_fields_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for form_fields_permissions: {e}"
                        )
                    });
                self
            }
            pub fn functionalities_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleFunctionalitiesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionalities_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionalities_permissions: {e}"
                        )
                    });
                self
            }
            pub fn groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleGroupsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_causes_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIncidentCausesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_causes_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_causes_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_communication_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIncidentCommunicationPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_communication_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_communication_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_feedbacks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIncidentFeedbacksPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_feedbacks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_feedbacks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIncidentRolesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_types_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIncidentTypesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_types_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_types_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incidents_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIncidentsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incidents_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incidents_permissions: {e}"
                        )
                    });
                self
            }
            pub fn integrations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleIntegrationsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn invitations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleInvitationsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.invitations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for invitations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn is_deletable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_deletable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_deletable: {e}")
                    });
                self
            }
            pub fn is_editable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_editable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_editable: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn paging_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RolePagingPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_permissions: {e}"
                        )
                    });
                self
            }
            pub fn playbooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RolePlaybooksPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.playbooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for playbooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn private_incidents_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RolePrivateIncidentsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private_incidents_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for private_incidents_permissions: {e}"
                        )
                    });
                self
            }
            pub fn pulses_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RolePulsesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.pulses_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pulses_permissions: {e}"
                        )
                    });
                self
            }
            pub fn retrospective_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleRetrospectivePermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_permissions: {e}"
                        )
                    });
                self
            }
            pub fn roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleRolesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn secrets_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleSecretsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.secrets_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for secrets_permissions: {e}"
                        )
                    });
                self
            }
            pub fn services_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleServicesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_permissions: {e}"
                        )
                    });
                self
            }
            pub fn severities_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleSeveritiesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severities_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severities_permissions: {e}"
                        )
                    });
                self
            }
            pub fn slas_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleSlasPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slas_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slas_permissions: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn status_pages_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleStatusPagesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status_pages_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_pages_permissions: {e}"
                        )
                    });
                self
            }
            pub fn sub_statuses_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleSubStatusesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.sub_statuses_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sub_statuses_permissions: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn webhooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleWebhooksPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn workflows_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::RoleWorkflowsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.workflows_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflows_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Role> for super::Role {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Role,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_permissions: value.alerts_permissions?,
                    api_keys_permissions: value.api_keys_permissions?,
                    audits_permissions: value.audits_permissions?,
                    billing_permissions: value.billing_permissions?,
                    catalogs_permissions: value.catalogs_permissions?,
                    communication_permissions: value.communication_permissions?,
                    created_at: value.created_at?,
                    edge_connector_permissions: value.edge_connector_permissions?,
                    environments_permissions: value.environments_permissions?,
                    form_fields_permissions: value.form_fields_permissions?,
                    functionalities_permissions: value.functionalities_permissions?,
                    groups_permissions: value.groups_permissions?,
                    incident_causes_permissions: value.incident_causes_permissions?,
                    incident_communication_permissions: value
                        .incident_communication_permissions?,
                    incident_feedbacks_permissions: value
                        .incident_feedbacks_permissions?,
                    incident_permission_set_id: value.incident_permission_set_id?,
                    incident_roles_permissions: value.incident_roles_permissions?,
                    incident_types_permissions: value.incident_types_permissions?,
                    incidents_permissions: value.incidents_permissions?,
                    integrations_permissions: value.integrations_permissions?,
                    invitations_permissions: value.invitations_permissions?,
                    is_deletable: value.is_deletable?,
                    is_editable: value.is_editable?,
                    name: value.name?,
                    paging_permissions: value.paging_permissions?,
                    playbooks_permissions: value.playbooks_permissions?,
                    private_incidents_permissions: value.private_incidents_permissions?,
                    pulses_permissions: value.pulses_permissions?,
                    retrospective_permissions: value.retrospective_permissions?,
                    roles_permissions: value.roles_permissions?,
                    secrets_permissions: value.secrets_permissions?,
                    services_permissions: value.services_permissions?,
                    severities_permissions: value.severities_permissions?,
                    slas_permissions: value.slas_permissions?,
                    slug: value.slug?,
                    status_pages_permissions: value.status_pages_permissions?,
                    sub_statuses_permissions: value.sub_statuses_permissions?,
                    updated_at: value.updated_at?,
                    webhooks_permissions: value.webhooks_permissions?,
                    workflows_permissions: value.workflows_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::Role> for Role {
            fn from(value: super::Role) -> Self {
                Self {
                    alerts_permissions: Ok(value.alerts_permissions),
                    api_keys_permissions: Ok(value.api_keys_permissions),
                    audits_permissions: Ok(value.audits_permissions),
                    billing_permissions: Ok(value.billing_permissions),
                    catalogs_permissions: Ok(value.catalogs_permissions),
                    communication_permissions: Ok(value.communication_permissions),
                    created_at: Ok(value.created_at),
                    edge_connector_permissions: Ok(value.edge_connector_permissions),
                    environments_permissions: Ok(value.environments_permissions),
                    form_fields_permissions: Ok(value.form_fields_permissions),
                    functionalities_permissions: Ok(value.functionalities_permissions),
                    groups_permissions: Ok(value.groups_permissions),
                    incident_causes_permissions: Ok(value.incident_causes_permissions),
                    incident_communication_permissions: Ok(
                        value.incident_communication_permissions,
                    ),
                    incident_feedbacks_permissions: Ok(
                        value.incident_feedbacks_permissions,
                    ),
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    incident_roles_permissions: Ok(value.incident_roles_permissions),
                    incident_types_permissions: Ok(value.incident_types_permissions),
                    incidents_permissions: Ok(value.incidents_permissions),
                    integrations_permissions: Ok(value.integrations_permissions),
                    invitations_permissions: Ok(value.invitations_permissions),
                    is_deletable: Ok(value.is_deletable),
                    is_editable: Ok(value.is_editable),
                    name: Ok(value.name),
                    paging_permissions: Ok(value.paging_permissions),
                    playbooks_permissions: Ok(value.playbooks_permissions),
                    private_incidents_permissions: Ok(
                        value.private_incidents_permissions,
                    ),
                    pulses_permissions: Ok(value.pulses_permissions),
                    retrospective_permissions: Ok(value.retrospective_permissions),
                    roles_permissions: Ok(value.roles_permissions),
                    secrets_permissions: Ok(value.secrets_permissions),
                    services_permissions: Ok(value.services_permissions),
                    severities_permissions: Ok(value.severities_permissions),
                    slas_permissions: Ok(value.slas_permissions),
                    slug: Ok(value.slug),
                    status_pages_permissions: Ok(value.status_pages_permissions),
                    sub_statuses_permissions: Ok(value.sub_statuses_permissions),
                    updated_at: Ok(value.updated_at),
                    webhooks_permissions: Ok(value.webhooks_permissions),
                    workflows_permissions: Ok(value.workflows_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RoleList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::RoleListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for RoleList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl RoleList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::RoleListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RoleList> for super::RoleList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RoleList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::RoleList> for RoleList {
            fn from(value: super::RoleList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RoleListDataItem {
            attributes: ::std::result::Result<super::Role, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RoleListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RoleListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RoleListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Role>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RoleListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RoleListDataItem> for super::RoleListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RoleListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RoleListDataItem> for RoleListDataItem {
            fn from(value: super::RoleListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RoleRelationship {
            data: ::std::result::Result<
                ::std::option::Option<super::RoleRelationshipData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RoleRelationship {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl RoleRelationship {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RoleRelationshipData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RoleRelationship> for super::RoleRelationship {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RoleRelationship,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::RoleRelationship> for RoleRelationship {
            fn from(value: super::RoleRelationship) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RoleRelationshipData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::RoleRelationshipDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RoleRelationshipData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl RoleRelationshipData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RoleRelationshipDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RoleRelationshipData>
        for super::RoleRelationshipData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RoleRelationshipData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RoleRelationshipData> for RoleRelationshipData {
            fn from(value: super::RoleRelationshipData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RoleResponse {
            data: ::std::result::Result<super::RoleResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RoleResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl RoleResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RoleResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RoleResponse> for super::RoleResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RoleResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::RoleResponse> for RoleResponse {
            fn from(value: super::RoleResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RoleResponseData {
            attributes: ::std::result::Result<super::Role, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::RoleResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RoleResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RoleResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Role>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RoleResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RoleResponseData> for super::RoleResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RoleResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RoleResponseData> for RoleResponseData {
            fn from(value: super::RoleResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RotateApiKey {
            data: ::std::result::Result<super::RotateApiKeyData, ::std::string::String>,
        }
        impl ::std::default::Default for RotateApiKey {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl RotateApiKey {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RotateApiKeyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RotateApiKey> for super::RotateApiKey {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RotateApiKey,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::RotateApiKey> for RotateApiKey {
            fn from(value: super::RotateApiKey) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RotateApiKeyData {
            attributes: ::std::result::Result<
                super::RotateApiKeyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::RotateApiKeyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RotateApiKeyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl RotateApiKeyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RotateApiKeyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RotateApiKeyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RotateApiKeyData> for super::RotateApiKeyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RotateApiKeyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::RotateApiKeyData> for RotateApiKeyData {
            fn from(value: super::RotateApiKeyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RotateApiKeyDataAttributes {
            expires_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            grace_period_minutes: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for RotateApiKeyDataAttributes {
            fn default() -> Self {
                Self {
                    expires_at: Ok(Default::default()),
                    grace_period_minutes: Ok(super::defaults::default_u64::<i64, 30>()),
                }
            }
        }
        impl RotateApiKeyDataAttributes {
            pub fn expires_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.expires_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expires_at: {e}")
                    });
                self
            }
            pub fn grace_period_minutes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.grace_period_minutes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for grace_period_minutes: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RotateApiKeyDataAttributes>
        for super::RotateApiKeyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RotateApiKeyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    expires_at: value.expires_at?,
                    grace_period_minutes: value.grace_period_minutes?,
                })
            }
        }
        impl ::std::convert::From<super::RotateApiKeyDataAttributes>
        for RotateApiKeyDataAttributes {
            fn from(value: super::RotateApiKeyDataAttributes) -> Self {
                Self {
                    expires_at: Ok(value.expires_at),
                    grace_period_minutes: Ok(value.grace_period_minutes),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RunCommandHerokuTaskParams {
            app_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            command: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::RunCommandHerokuTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            size: ::std::result::Result<
                super::RunCommandHerokuTaskParamsSize,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::RunCommandHerokuTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for RunCommandHerokuTaskParams {
            fn default() -> Self {
                Self {
                    app_name: Err("no value supplied for app_name".to_string()),
                    command: Err("no value supplied for command".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    size: Err("no value supplied for size".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl RunCommandHerokuTaskParams {
            pub fn app_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.app_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for app_name: {e}")
                    });
                self
            }
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::RunCommandHerokuTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn size<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::RunCommandHerokuTaskParamsSize>,
                T::Error: ::std::fmt::Display,
            {
                self.size = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for size: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RunCommandHerokuTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RunCommandHerokuTaskParams>
        for super::RunCommandHerokuTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RunCommandHerokuTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    app_name: value.app_name?,
                    command: value.command?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    size: value.size?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::RunCommandHerokuTaskParams>
        for RunCommandHerokuTaskParams {
            fn from(value: super::RunCommandHerokuTaskParams) -> Self {
                Self {
                    app_name: Ok(value.app_name),
                    command: Ok(value.command),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    size: Ok(value.size),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct RunCommandHerokuTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for RunCommandHerokuTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl RunCommandHerokuTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<RunCommandHerokuTaskParamsPostToSlackChannelsItem>
        for super::RunCommandHerokuTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: RunCommandHerokuTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::RunCommandHerokuTaskParamsPostToSlackChannelsItem,
        > for RunCommandHerokuTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::RunCommandHerokuTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Schedule {
            all_time_coverage: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            include_shadows_in_slack_notifications: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            owner_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            owner_user_id: ::std::result::Result<i64, ::std::string::String>,
            shift_report_day_of_week: ::std::result::Result<
                ::std::option::Option<super::ScheduleShiftReportDayOfWeek>,
                ::std::string::String,
            >,
            shift_report_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shift_report_time_of_day: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shift_report_time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shift_start_notifications_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shift_update_notifications_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slack_channel: ::std::result::Result<
                ::std::option::Option<super::ScheduleSlackChannel>,
                ::std::string::String,
            >,
            slack_user_group: ::std::result::Result<
                ::std::option::Option<super::ScheduleSlackUserGroup>,
                ::std::string::String,
            >,
            sync_linear_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Schedule {
            fn default() -> Self {
                Self {
                    all_time_coverage: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    include_shadows_in_slack_notifications: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_id: Err(
                        "no value supplied for owner_user_id".to_string(),
                    ),
                    shift_report_day_of_week: Ok(Default::default()),
                    shift_report_enabled: Ok(Default::default()),
                    shift_report_time_of_day: Ok(Default::default()),
                    shift_report_time_zone: Ok(Default::default()),
                    shift_start_notifications_enabled: Ok(Default::default()),
                    shift_update_notifications_enabled: Ok(Default::default()),
                    slack_channel: Ok(Default::default()),
                    slack_user_group: Ok(Default::default()),
                    sync_linear_enabled: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Schedule {
            pub fn all_time_coverage<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.all_time_coverage = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for all_time_coverage: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn include_shadows_in_slack_notifications<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.include_shadows_in_slack_notifications = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for include_shadows_in_slack_notifications: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner_user_id: {e}")
                    });
                self
            }
            pub fn shift_report_day_of_week<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ScheduleShiftReportDayOfWeek>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_day_of_week = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_day_of_week: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_enabled: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_time_of_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_time_of_day = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_time_of_day: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn shift_start_notifications_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_start_notifications_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_start_notifications_enabled: {e}"
                        )
                    });
                self
            }
            pub fn shift_update_notifications_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_update_notifications_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_update_notifications_enabled: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ScheduleSlackChannel>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_channel: {e}")
                    });
                self
            }
            pub fn slack_user_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ScheduleSlackUserGroup>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_user_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_user_group: {e}"
                        )
                    });
                self
            }
            pub fn sync_linear_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.sync_linear_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sync_linear_enabled: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Schedule> for super::Schedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Schedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    all_time_coverage: value.all_time_coverage?,
                    created_at: value.created_at?,
                    description: value.description?,
                    include_shadows_in_slack_notifications: value
                        .include_shadows_in_slack_notifications?,
                    name: value.name?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_id: value.owner_user_id?,
                    shift_report_day_of_week: value.shift_report_day_of_week?,
                    shift_report_enabled: value.shift_report_enabled?,
                    shift_report_time_of_day: value.shift_report_time_of_day?,
                    shift_report_time_zone: value.shift_report_time_zone?,
                    shift_start_notifications_enabled: value
                        .shift_start_notifications_enabled?,
                    shift_update_notifications_enabled: value
                        .shift_update_notifications_enabled?,
                    slack_channel: value.slack_channel?,
                    slack_user_group: value.slack_user_group?,
                    sync_linear_enabled: value.sync_linear_enabled?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Schedule> for Schedule {
            fn from(value: super::Schedule) -> Self {
                Self {
                    all_time_coverage: Ok(value.all_time_coverage),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    include_shadows_in_slack_notifications: Ok(
                        value.include_shadows_in_slack_notifications,
                    ),
                    name: Ok(value.name),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_id: Ok(value.owner_user_id),
                    shift_report_day_of_week: Ok(value.shift_report_day_of_week),
                    shift_report_enabled: Ok(value.shift_report_enabled),
                    shift_report_time_of_day: Ok(value.shift_report_time_of_day),
                    shift_report_time_zone: Ok(value.shift_report_time_zone),
                    shift_start_notifications_enabled: Ok(
                        value.shift_start_notifications_enabled,
                    ),
                    shift_update_notifications_enabled: Ok(
                        value.shift_update_notifications_enabled,
                    ),
                    slack_channel: Ok(value.slack_channel),
                    slack_user_group: Ok(value.slack_user_group),
                    sync_linear_enabled: Ok(value.sync_linear_enabled),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ScheduleListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for ScheduleList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl ScheduleList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::ScheduleListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleList> for super::ScheduleList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleList> for ScheduleList {
            fn from(value: super::ScheduleList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleListDataItem {
            attributes: ::std::result::Result<super::Schedule, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Schedule>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleListDataItem>
        for super::ScheduleListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleListDataItem> for ScheduleListDataItem {
            fn from(value: super::ScheduleListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleResponse {
            data: ::std::result::Result<
                super::ScheduleResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ScheduleResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleResponse> for super::ScheduleResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleResponse> for ScheduleResponse {
            fn from(value: super::ScheduleResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleResponseData {
            attributes: ::std::result::Result<super::Schedule, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Schedule>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleResponseData>
        for super::ScheduleResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleResponseData> for ScheduleResponseData {
            fn from(value: super::ScheduleResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotation {
            active_all_week: ::std::result::Result<bool, ::std::string::String>,
            active_days: ::std::result::Result<
                ::std::vec::Vec<super::ScheduleRotationActiveDaysItem>,
                ::std::string::String,
            >,
            active_time_attributes: ::std::result::Result<
                ::std::vec::Vec<super::ScheduleRotationActiveTimeAttributesItem>,
                ::std::string::String,
            >,
            active_time_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            schedule_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            schedule_rotationable_attributes: ::std::result::Result<
                super::ScheduleRotationScheduleRotationableAttributes,
                ::std::string::String,
            >,
            schedule_rotationable_type: ::std::result::Result<
                super::ScheduleRotationScheduleRotationableType,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotation {
            fn default() -> Self {
                Self {
                    active_all_week: Ok(super::defaults::default_bool::<true>()),
                    active_days: Ok(Default::default()),
                    active_time_attributes: Ok(Default::default()),
                    active_time_type: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    schedule_id: Err("no value supplied for schedule_id".to_string()),
                    schedule_rotationable_attributes: Err(
                        "no value supplied for schedule_rotationable_attributes"
                            .to_string(),
                    ),
                    schedule_rotationable_type: Err(
                        "no value supplied for schedule_rotationable_type".to_string(),
                    ),
                    start_time: Ok(Default::default()),
                    time_zone: Ok(super::defaults::schedule_rotation_time_zone()),
                }
            }
        }
        impl ScheduleRotation {
            pub fn active_all_week<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.active_all_week = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_all_week: {e}"
                        )
                    });
                self
            }
            pub fn active_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ScheduleRotationActiveDaysItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for active_days: {e}")
                    });
                self
            }
            pub fn active_time_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ScheduleRotationActiveTimeAttributesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_attributes: {e}"
                        )
                    });
                self
            }
            pub fn active_time_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_type: {e}"
                        )
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn schedule_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_id: {e}")
                    });
                self
            }
            pub fn schedule_rotationable_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ScheduleRotationScheduleRotationableAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotationable_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotationable_attributes: {e}"
                        )
                    });
                self
            }
            pub fn schedule_rotationable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ScheduleRotationScheduleRotationableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotationable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotationable_type: {e}"
                        )
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotation> for super::ScheduleRotation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    active_all_week: value.active_all_week?,
                    active_days: value.active_days?,
                    active_time_attributes: value.active_time_attributes?,
                    active_time_type: value.active_time_type?,
                    end_time: value.end_time?,
                    name: value.name?,
                    position: value.position?,
                    schedule_id: value.schedule_id?,
                    schedule_rotationable_attributes: value
                        .schedule_rotationable_attributes?,
                    schedule_rotationable_type: value.schedule_rotationable_type?,
                    start_time: value.start_time?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotation> for ScheduleRotation {
            fn from(value: super::ScheduleRotation) -> Self {
                Self {
                    active_all_week: Ok(value.active_all_week),
                    active_days: Ok(value.active_days),
                    active_time_attributes: Ok(value.active_time_attributes),
                    active_time_type: Ok(value.active_time_type),
                    end_time: Ok(value.end_time),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    schedule_id: Ok(value.schedule_id),
                    schedule_rotationable_attributes: Ok(
                        value.schedule_rotationable_attributes,
                    ),
                    schedule_rotationable_type: Ok(value.schedule_rotationable_type),
                    start_time: Ok(value.start_time),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveDay {
            active_time_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::ScheduleRotationActiveDayActiveTimeAttributesItem,
                >,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            day_name: ::std::result::Result<
                super::ScheduleRotationActiveDayDayName,
                ::std::string::String,
            >,
            schedule_rotation_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationActiveDay {
            fn default() -> Self {
                Self {
                    active_time_attributes: Err(
                        "no value supplied for active_time_attributes".to_string(),
                    ),
                    created_at: Err("no value supplied for created_at".to_string()),
                    day_name: Err("no value supplied for day_name".to_string()),
                    schedule_rotation_id: Err(
                        "no value supplied for schedule_rotation_id".to_string(),
                    ),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl ScheduleRotationActiveDay {
            pub fn active_time_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::ScheduleRotationActiveDayActiveTimeAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_attributes: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn day_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationActiveDayDayName>,
                T::Error: ::std::fmt::Display,
            {
                self.day_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for day_name: {e}")
                    });
                self
            }
            pub fn schedule_rotation_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotation_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotation_id: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveDay>
        for super::ScheduleRotationActiveDay {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveDay,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    active_time_attributes: value.active_time_attributes?,
                    created_at: value.created_at?,
                    day_name: value.day_name?,
                    schedule_rotation_id: value.schedule_rotation_id?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationActiveDay>
        for ScheduleRotationActiveDay {
            fn from(value: super::ScheduleRotationActiveDay) -> Self {
                Self {
                    active_time_attributes: Ok(value.active_time_attributes),
                    created_at: Ok(value.created_at),
                    day_name: Ok(value.day_name),
                    schedule_rotation_id: Ok(value.schedule_rotation_id),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveDayActiveTimeAttributesItem {
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for ScheduleRotationActiveDayActiveTimeAttributesItem {
            fn default() -> Self {
                Self {
                    end_time: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                }
            }
        }
        impl ScheduleRotationActiveDayActiveTimeAttributesItem {
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveDayActiveTimeAttributesItem>
        for super::ScheduleRotationActiveDayActiveTimeAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveDayActiveTimeAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::ScheduleRotationActiveDayActiveTimeAttributesItem,
        > for ScheduleRotationActiveDayActiveTimeAttributesItem {
            fn from(
                value: super::ScheduleRotationActiveDayActiveTimeAttributesItem,
            ) -> Self {
                Self {
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveDayList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ScheduleRotationActiveDayListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for ScheduleRotationActiveDayList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl ScheduleRotationActiveDayList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ScheduleRotationActiveDayListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveDayList>
        for super::ScheduleRotationActiveDayList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveDayList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationActiveDayList>
        for ScheduleRotationActiveDayList {
            fn from(value: super::ScheduleRotationActiveDayList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveDayListDataItem {
            attributes: ::std::result::Result<
                super::ScheduleRotationActiveDay,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleRotationActiveDayListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationActiveDayListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleRotationActiveDayListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationActiveDay>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::ScheduleRotationActiveDayListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveDayListDataItem>
        for super::ScheduleRotationActiveDayListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveDayListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationActiveDayListDataItem>
        for ScheduleRotationActiveDayListDataItem {
            fn from(value: super::ScheduleRotationActiveDayListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveDayResponse {
            data: ::std::result::Result<
                ::std::option::Option<super::ScheduleRotationActiveDayResponseData>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationActiveDayResponse {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ScheduleRotationActiveDayResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ScheduleRotationActiveDayResponseData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveDayResponse>
        for super::ScheduleRotationActiveDayResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveDayResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationActiveDayResponse>
        for ScheduleRotationActiveDayResponse {
            fn from(value: super::ScheduleRotationActiveDayResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveDayResponseData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::ScheduleRotationActiveDay>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::ScheduleRotationActiveDayResponseDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationActiveDayResponseData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl ScheduleRotationActiveDayResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ScheduleRotationActiveDay>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::ScheduleRotationActiveDayResponseDataType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveDayResponseData>
        for super::ScheduleRotationActiveDayResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveDayResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationActiveDayResponseData>
        for ScheduleRotationActiveDayResponseData {
            fn from(value: super::ScheduleRotationActiveDayResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationActiveTimeAttributesItem {
            end_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationActiveTimeAttributesItem {
            fn default() -> Self {
                Self {
                    end_time: Err("no value supplied for end_time".to_string()),
                    start_time: Err("no value supplied for start_time".to_string()),
                }
            }
        }
        impl ScheduleRotationActiveTimeAttributesItem {
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationActiveTimeAttributesItem>
        for super::ScheduleRotationActiveTimeAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationActiveTimeAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationActiveTimeAttributesItem>
        for ScheduleRotationActiveTimeAttributesItem {
            fn from(value: super::ScheduleRotationActiveTimeAttributesItem) -> Self {
                Self {
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ScheduleRotationListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for ScheduleRotationList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl ScheduleRotationList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ScheduleRotationListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationList>
        for super::ScheduleRotationList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationList> for ScheduleRotationList {
            fn from(value: super::ScheduleRotationList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationListDataItem {
            attributes: ::std::result::Result<
                super::ScheduleRotation,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleRotationListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleRotationListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotation>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationListDataItem>
        for super::ScheduleRotationListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationListDataItem>
        for ScheduleRotationListDataItem {
            fn from(value: super::ScheduleRotationListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationResponse {
            data: ::std::result::Result<
                super::ScheduleRotationResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ScheduleRotationResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationResponse>
        for super::ScheduleRotationResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationResponse>
        for ScheduleRotationResponse {
            fn from(value: super::ScheduleRotationResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationResponseData {
            attributes: ::std::result::Result<
                super::ScheduleRotation,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleRotationResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleRotationResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotation>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationResponseData>
        for super::ScheduleRotationResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationResponseData>
        for ScheduleRotationResponseData {
            fn from(value: super::ScheduleRotationResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationUser {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            schedule_rotation_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for ScheduleRotationUser {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    schedule_rotation_id: Err(
                        "no value supplied for schedule_rotation_id".to_string(),
                    ),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    user_id: Err("no value supplied for user_id".to_string()),
                }
            }
        }
        impl ScheduleRotationUser {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn schedule_rotation_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotation_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotation_id: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationUser>
        for super::ScheduleRotationUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    position: value.position?,
                    schedule_rotation_id: value.schedule_rotation_id?,
                    updated_at: value.updated_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationUser> for ScheduleRotationUser {
            fn from(value: super::ScheduleRotationUser) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    position: Ok(value.position),
                    schedule_rotation_id: Ok(value.schedule_rotation_id),
                    updated_at: Ok(value.updated_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationUserList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ScheduleRotationUserListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for ScheduleRotationUserList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl ScheduleRotationUserList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::ScheduleRotationUserListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationUserList>
        for super::ScheduleRotationUserList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationUserList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationUserList>
        for ScheduleRotationUserList {
            fn from(value: super::ScheduleRotationUserList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationUserListDataItem {
            attributes: ::std::result::Result<
                super::ScheduleRotationUser,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleRotationUserListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationUserListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleRotationUserListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationUser>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationUserListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationUserListDataItem>
        for super::ScheduleRotationUserListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationUserListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationUserListDataItem>
        for ScheduleRotationUserListDataItem {
            fn from(value: super::ScheduleRotationUserListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationUserResponse {
            data: ::std::result::Result<
                super::ScheduleRotationUserResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationUserResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ScheduleRotationUserResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationUserResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationUserResponse>
        for super::ScheduleRotationUserResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationUserResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationUserResponse>
        for ScheduleRotationUserResponse {
            fn from(value: super::ScheduleRotationUserResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleRotationUserResponseData {
            attributes: ::std::result::Result<
                super::ScheduleRotationUser,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ScheduleRotationUserResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleRotationUserResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ScheduleRotationUserResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationUser>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ScheduleRotationUserResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleRotationUserResponseData>
        for super::ScheduleRotationUserResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleRotationUserResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleRotationUserResponseData>
        for ScheduleRotationUserResponseData {
            fn from(value: super::ScheduleRotationUserResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleSlackChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleSlackChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ScheduleSlackChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleSlackChannel>
        for super::ScheduleSlackChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleSlackChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleSlackChannel> for ScheduleSlackChannel {
            fn from(value: super::ScheduleSlackChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ScheduleSlackUserGroup {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ScheduleSlackUserGroup {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ScheduleSlackUserGroup {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ScheduleSlackUserGroup>
        for super::ScheduleSlackUserGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ScheduleSlackUserGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ScheduleSlackUserGroup>
        for ScheduleSlackUserGroup {
            fn from(value: super::ScheduleSlackUserGroup) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Secret {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            hashicorp_vault_mount: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            hashicorp_vault_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            hashicorp_vault_version: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            secret: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Secret {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    hashicorp_vault_mount: Ok(Default::default()),
                    hashicorp_vault_path: Ok(Default::default()),
                    hashicorp_vault_version: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    secret: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Secret {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn hashicorp_vault_mount<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_mount = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_mount: {e}"
                        )
                    });
                self
            }
            pub fn hashicorp_vault_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_path: {e}"
                        )
                    });
                self
            }
            pub fn hashicorp_vault_version<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_version = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_version: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Secret> for super::Secret {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Secret,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    hashicorp_vault_mount: value.hashicorp_vault_mount?,
                    hashicorp_vault_path: value.hashicorp_vault_path?,
                    hashicorp_vault_version: value.hashicorp_vault_version?,
                    name: value.name?,
                    secret: value.secret?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Secret> for Secret {
            fn from(value: super::Secret) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    hashicorp_vault_mount: Ok(value.hashicorp_vault_mount),
                    hashicorp_vault_path: Ok(value.hashicorp_vault_path),
                    hashicorp_vault_version: Ok(value.hashicorp_vault_version),
                    name: Ok(value.name),
                    secret: Ok(value.secret),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SecretList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::SecretListDataItem>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SecretList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl SecretList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::SecretListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SecretList> for super::SecretList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SecretList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::SecretList> for SecretList {
            fn from(value: super::SecretList) -> Self {
                Self {
                    data: Ok(value.data),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SecretListDataItem {
            attributes: ::std::result::Result<super::Secret, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SecretListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SecretListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SecretListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Secret>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SecretListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SecretListDataItem> for super::SecretListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SecretListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SecretListDataItem> for SecretListDataItem {
            fn from(value: super::SecretListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SecretResponse {
            data: ::std::result::Result<
                super::SecretResponseData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SecretResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl SecretResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SecretResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SecretResponse> for super::SecretResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SecretResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::SecretResponse> for SecretResponse {
            fn from(value: super::SecretResponse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SecretResponseData {
            attributes: ::std::result::Result<super::Secret, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SecretResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SecretResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SecretResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Secret>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SecretResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SecretResponseData> for super::SecretResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SecretResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SecretResponseData> for SecretResponseData {
            fn from(value: super::SecretResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendDashboardReportTaskParams {
            body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            dashboard_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            from: ::std::result::Result<::std::string::String, ::std::string::String>,
            preheader: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            subject: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SendDashboardReportTaskParamsTaskType>,
                ::std::string::String,
            >,
            to: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendDashboardReportTaskParams {
            fn default() -> Self {
                Self {
                    body: Err("no value supplied for body".to_string()),
                    dashboard_ids: Err(
                        "no value supplied for dashboard_ids".to_string(),
                    ),
                    from: Ok(super::defaults::send_dashboard_report_task_params_from()),
                    preheader: Ok(Default::default()),
                    subject: Err("no value supplied for subject".to_string()),
                    task_type: Ok(Default::default()),
                    to: Err("no value supplied for to".to_string()),
                }
            }
        }
        impl SendDashboardReportTaskParams {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn dashboard_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.dashboard_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for dashboard_ids: {e}")
                    });
                self
            }
            pub fn from<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.from = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for from: {e}")
                    });
                self
            }
            pub fn preheader<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.preheader = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for preheader: {e}")
                    });
                self
            }
            pub fn subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subject: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendDashboardReportTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn to<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.to = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for to: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<SendDashboardReportTaskParams>
        for super::SendDashboardReportTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendDashboardReportTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    dashboard_ids: value.dashboard_ids?,
                    from: value.from?,
                    preheader: value.preheader?,
                    subject: value.subject?,
                    task_type: value.task_type?,
                    to: value.to?,
                })
            }
        }
        impl ::std::convert::From<super::SendDashboardReportTaskParams>
        for SendDashboardReportTaskParams {
            fn from(value: super::SendDashboardReportTaskParams) -> Self {
                Self {
                    body: Ok(value.body),
                    dashboard_ids: Ok(value.dashboard_ids),
                    from: Ok(value.from),
                    preheader: Ok(value.preheader),
                    subject: Ok(value.subject),
                    task_type: Ok(value.task_type),
                    to: Ok(value.to),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendEmailTaskParams {
            bcc: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cc: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            custom_logo_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            from: ::std::result::Result<::std::string::String, ::std::string::String>,
            include_footer: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            include_header: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            preheader: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            subject: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SendEmailTaskParamsTaskType>,
                ::std::string::String,
            >,
            to: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendEmailTaskParams {
            fn default() -> Self {
                Self {
                    bcc: Ok(Default::default()),
                    body: Err("no value supplied for body".to_string()),
                    cc: Ok(Default::default()),
                    custom_logo_url: Ok(Default::default()),
                    from: Ok(super::defaults::send_email_task_params_from()),
                    include_footer: Ok(Default::default()),
                    include_header: Ok(Default::default()),
                    preheader: Ok(Default::default()),
                    subject: Err("no value supplied for subject".to_string()),
                    task_type: Ok(Default::default()),
                    to: Err("no value supplied for to".to_string()),
                }
            }
        }
        impl SendEmailTaskParams {
            pub fn bcc<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.bcc = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for bcc: {e}")
                    });
                self
            }
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn cc<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cc = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for cc: {e}"));
                self
            }
            pub fn custom_logo_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_logo_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_logo_url: {e}"
                        )
                    });
                self
            }
            pub fn from<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.from = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for from: {e}")
                    });
                self
            }
            pub fn include_footer<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.include_footer = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for include_footer: {e}"
                        )
                    });
                self
            }
            pub fn include_header<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.include_header = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for include_header: {e}"
                        )
                    });
                self
            }
            pub fn preheader<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.preheader = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for preheader: {e}")
                    });
                self
            }
            pub fn subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subject: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendEmailTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn to<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.to = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for to: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<SendEmailTaskParams>
        for super::SendEmailTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendEmailTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    bcc: value.bcc?,
                    body: value.body?,
                    cc: value.cc?,
                    custom_logo_url: value.custom_logo_url?,
                    from: value.from?,
                    include_footer: value.include_footer?,
                    include_header: value.include_header?,
                    preheader: value.preheader?,
                    subject: value.subject?,
                    task_type: value.task_type?,
                    to: value.to?,
                })
            }
        }
        impl ::std::convert::From<super::SendEmailTaskParams> for SendEmailTaskParams {
            fn from(value: super::SendEmailTaskParams) -> Self {
                Self {
                    bcc: Ok(value.bcc),
                    body: Ok(value.body),
                    cc: Ok(value.cc),
                    custom_logo_url: Ok(value.custom_logo_url),
                    from: Ok(value.from),
                    include_footer: Ok(value.include_footer),
                    include_header: Ok(value.include_header),
                    preheader: Ok(value.preheader),
                    subject: Ok(value.subject),
                    task_type: Ok(value.task_type),
                    to: Ok(value.to),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendGoogleChatAttachmentsTaskParams {
            attachments: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            spaces: ::std::result::Result<
                ::std::vec::Vec<super::SendGoogleChatAttachmentsTaskParamsSpacesItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::SendGoogleChatAttachmentsTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendGoogleChatAttachmentsTaskParams {
            fn default() -> Self {
                Self {
                    attachments: Err("no value supplied for attachments".to_string()),
                    spaces: Err("no value supplied for spaces".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SendGoogleChatAttachmentsTaskParams {
            pub fn attachments<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.attachments = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attachments: {e}")
                    });
                self
            }
            pub fn spaces<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SendGoogleChatAttachmentsTaskParamsSpacesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.spaces = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for spaces: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::SendGoogleChatAttachmentsTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendGoogleChatAttachmentsTaskParams>
        for super::SendGoogleChatAttachmentsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendGoogleChatAttachmentsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attachments: value.attachments?,
                    spaces: value.spaces?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SendGoogleChatAttachmentsTaskParams>
        for SendGoogleChatAttachmentsTaskParams {
            fn from(value: super::SendGoogleChatAttachmentsTaskParams) -> Self {
                Self {
                    attachments: Ok(value.attachments),
                    spaces: Ok(value.spaces),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendGoogleChatAttachmentsTaskParamsSpacesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendGoogleChatAttachmentsTaskParamsSpacesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendGoogleChatAttachmentsTaskParamsSpacesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendGoogleChatAttachmentsTaskParamsSpacesItem>
        for super::SendGoogleChatAttachmentsTaskParamsSpacesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendGoogleChatAttachmentsTaskParamsSpacesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendGoogleChatAttachmentsTaskParamsSpacesItem>
        for SendGoogleChatAttachmentsTaskParamsSpacesItem {
            fn from(
                value: super::SendGoogleChatAttachmentsTaskParamsSpacesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendGoogleChatMessageTaskParams {
            spaces: ::std::result::Result<
                ::std::vec::Vec<super::SendGoogleChatMessageTaskParamsSpacesItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SendGoogleChatMessageTaskParamsTaskType>,
                ::std::string::String,
            >,
            text: ::std::result::Result<::std::string::String, ::std::string::String>,
            thread_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendGoogleChatMessageTaskParams {
            fn default() -> Self {
                Self {
                    spaces: Err("no value supplied for spaces".to_string()),
                    task_type: Ok(Default::default()),
                    text: Err("no value supplied for text".to_string()),
                    thread_key: Ok(Default::default()),
                }
            }
        }
        impl SendGoogleChatMessageTaskParams {
            pub fn spaces<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SendGoogleChatMessageTaskParamsSpacesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.spaces = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for spaces: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendGoogleChatMessageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn text<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.text = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for text: {e}")
                    });
                self
            }
            pub fn thread_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.thread_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for thread_key: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendGoogleChatMessageTaskParams>
        for super::SendGoogleChatMessageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendGoogleChatMessageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    spaces: value.spaces?,
                    task_type: value.task_type?,
                    text: value.text?,
                    thread_key: value.thread_key?,
                })
            }
        }
        impl ::std::convert::From<super::SendGoogleChatMessageTaskParams>
        for SendGoogleChatMessageTaskParams {
            fn from(value: super::SendGoogleChatMessageTaskParams) -> Self {
                Self {
                    spaces: Ok(value.spaces),
                    task_type: Ok(value.task_type),
                    text: Ok(value.text),
                    thread_key: Ok(value.thread_key),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendGoogleChatMessageTaskParamsSpacesItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendGoogleChatMessageTaskParamsSpacesItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendGoogleChatMessageTaskParamsSpacesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendGoogleChatMessageTaskParamsSpacesItem>
        for super::SendGoogleChatMessageTaskParamsSpacesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendGoogleChatMessageTaskParamsSpacesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendGoogleChatMessageTaskParamsSpacesItem>
        for SendGoogleChatMessageTaskParamsSpacesItem {
            fn from(value: super::SendGoogleChatMessageTaskParamsSpacesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendMicrosoftTeamsBlocksTaskParams {
            attachments: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            channels: ::std::result::Result<
                ::std::vec::Vec<super::SendMicrosoftTeamsBlocksTaskParamsChannelsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SendMicrosoftTeamsBlocksTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendMicrosoftTeamsBlocksTaskParams {
            fn default() -> Self {
                Self {
                    attachments: Err("no value supplied for attachments".to_string()),
                    channels: Err("no value supplied for channels".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SendMicrosoftTeamsBlocksTaskParams {
            pub fn attachments<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.attachments = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attachments: {e}")
                    });
                self
            }
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SendMicrosoftTeamsBlocksTaskParamsChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::SendMicrosoftTeamsBlocksTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendMicrosoftTeamsBlocksTaskParams>
        for super::SendMicrosoftTeamsBlocksTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendMicrosoftTeamsBlocksTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attachments: value.attachments?,
                    channels: value.channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SendMicrosoftTeamsBlocksTaskParams>
        for SendMicrosoftTeamsBlocksTaskParams {
            fn from(value: super::SendMicrosoftTeamsBlocksTaskParams) -> Self {
                Self {
                    attachments: Ok(value.attachments),
                    channels: Ok(value.channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendMicrosoftTeamsBlocksTaskParamsChannelsItem>
        for super::SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendMicrosoftTeamsBlocksTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendMicrosoftTeamsBlocksTaskParamsChannelsItem>
        for SendMicrosoftTeamsBlocksTaskParamsChannelsItem {
            fn from(
                value: super::SendMicrosoftTeamsBlocksTaskParamsChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendMicrosoftTeamsChatMessageTaskParams {
            chats: ::std::result::Result<
                ::std::vec::Vec<super::SendMicrosoftTeamsChatMessageTaskParamsChatsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::SendMicrosoftTeamsChatMessageTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            text: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for SendMicrosoftTeamsChatMessageTaskParams {
            fn default() -> Self {
                Self {
                    chats: Err("no value supplied for chats".to_string()),
                    task_type: Ok(Default::default()),
                    text: Err("no value supplied for text".to_string()),
                }
            }
        }
        impl SendMicrosoftTeamsChatMessageTaskParams {
            pub fn chats<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SendMicrosoftTeamsChatMessageTaskParamsChatsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.chats = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for chats: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::SendMicrosoftTeamsChatMessageTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn text<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.text = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for text: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendMicrosoftTeamsChatMessageTaskParams>
        for super::SendMicrosoftTeamsChatMessageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendMicrosoftTeamsChatMessageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    chats: value.chats?,
                    task_type: value.task_type?,
                    text: value.text?,
                })
            }
        }
        impl ::std::convert::From<super::SendMicrosoftTeamsChatMessageTaskParams>
        for SendMicrosoftTeamsChatMessageTaskParams {
            fn from(value: super::SendMicrosoftTeamsChatMessageTaskParams) -> Self {
                Self {
                    chats: Ok(value.chats),
                    task_type: Ok(value.task_type),
                    text: Ok(value.text),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendMicrosoftTeamsChatMessageTaskParamsChatsItem>
        for super::SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendMicrosoftTeamsChatMessageTaskParamsChatsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendMicrosoftTeamsChatMessageTaskParamsChatsItem,
        > for SendMicrosoftTeamsChatMessageTaskParamsChatsItem {
            fn from(
                value: super::SendMicrosoftTeamsChatMessageTaskParamsChatsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendMicrosoftTeamsMessageTaskParams {
            channels: ::std::result::Result<
                ::std::vec::Vec<super::SendMicrosoftTeamsMessageTaskParamsChannelsItem>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::SendMicrosoftTeamsMessageTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            text: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for SendMicrosoftTeamsMessageTaskParams {
            fn default() -> Self {
                Self {
                    channels: Err("no value supplied for channels".to_string()),
                    task_type: Ok(Default::default()),
                    text: Err("no value supplied for text".to_string()),
                }
            }
        }
        impl SendMicrosoftTeamsMessageTaskParams {
            pub fn channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SendMicrosoftTeamsMessageTaskParamsChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channels: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::SendMicrosoftTeamsMessageTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn text<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.text = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for text: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendMicrosoftTeamsMessageTaskParams>
        for super::SendMicrosoftTeamsMessageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendMicrosoftTeamsMessageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channels: value.channels?,
                    task_type: value.task_type?,
                    text: value.text?,
                })
            }
        }
        impl ::std::convert::From<super::SendMicrosoftTeamsMessageTaskParams>
        for SendMicrosoftTeamsMessageTaskParams {
            fn from(value: super::SendMicrosoftTeamsMessageTaskParams) -> Self {
                Self {
                    channels: Ok(value.channels),
                    task_type: Ok(value.task_type),
                    text: Ok(value.text),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendMicrosoftTeamsMessageTaskParamsChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendMicrosoftTeamsMessageTaskParamsChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendMicrosoftTeamsMessageTaskParamsChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendMicrosoftTeamsMessageTaskParamsChannelsItem>
        for super::SendMicrosoftTeamsMessageTaskParamsChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendMicrosoftTeamsMessageTaskParamsChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendMicrosoftTeamsMessageTaskParamsChannelsItem>
        for SendMicrosoftTeamsMessageTaskParamsChannelsItem {
            fn from(
                value: super::SendMicrosoftTeamsMessageTaskParamsChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant0ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSlackBlocksTaskParamsVariant0ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant0ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackBlocksTaskParamsVariant0ChannelsItem>
        for super::SendSlackBlocksTaskParamsVariant0ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant0ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackBlocksTaskParamsVariant0ChannelsItem>
        for SendSlackBlocksTaskParamsVariant0ChannelsItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant0ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask,
        > for super::SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask,
        > for SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant0ParentMessageThreadTask,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem,
        > for super::SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem,
        > for SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant0SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant0SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant0SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant0SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackBlocksTaskParamsVariant0SlackUsersItem>
        for super::SendSlackBlocksTaskParamsVariant0SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant0SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackBlocksTaskParamsVariant0SlackUsersItem>
        for SendSlackBlocksTaskParamsVariant0SlackUsersItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant0SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant1ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSlackBlocksTaskParamsVariant1ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant1ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackBlocksTaskParamsVariant1ChannelsItem>
        for super::SendSlackBlocksTaskParamsVariant1ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant1ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackBlocksTaskParamsVariant1ChannelsItem>
        for SendSlackBlocksTaskParamsVariant1ChannelsItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant1ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask,
        > for super::SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask,
        > for SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant1ParentMessageThreadTask,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem,
        > for super::SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem,
        > for SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant1SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant1SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant1SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant1SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackBlocksTaskParamsVariant1SlackUsersItem>
        for super::SendSlackBlocksTaskParamsVariant1SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant1SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackBlocksTaskParamsVariant1SlackUsersItem>
        for SendSlackBlocksTaskParamsVariant1SlackUsersItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant1SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant2ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSlackBlocksTaskParamsVariant2ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant2ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackBlocksTaskParamsVariant2ChannelsItem>
        for super::SendSlackBlocksTaskParamsVariant2ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant2ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackBlocksTaskParamsVariant2ChannelsItem>
        for SendSlackBlocksTaskParamsVariant2ChannelsItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant2ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask,
        > for super::SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask,
        > for SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant2ParentMessageThreadTask,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem,
        > for super::SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem,
        > for SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant2SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackBlocksTaskParamsVariant2SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackBlocksTaskParamsVariant2SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackBlocksTaskParamsVariant2SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackBlocksTaskParamsVariant2SlackUsersItem>
        for super::SendSlackBlocksTaskParamsVariant2SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackBlocksTaskParamsVariant2SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackBlocksTaskParamsVariant2SlackUsersItem>
        for SendSlackBlocksTaskParamsVariant2SlackUsersItem {
            fn from(
                value: super::SendSlackBlocksTaskParamsVariant2SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant0ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSlackMessageTaskParamsVariant0ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant0ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackMessageTaskParamsVariant0ChannelsItem>
        for super::SendSlackMessageTaskParamsVariant0ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant0ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackMessageTaskParamsVariant0ChannelsItem>
        for SendSlackMessageTaskParamsVariant0ChannelsItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant0ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackMessageTaskParamsVariant0ParentMessageThreadTask,
        > for super::SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant0ParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant0ParentMessageThreadTask,
        > for SendSlackMessageTaskParamsVariant0ParentMessageThreadTask {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant0ParentMessageThreadTask,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackMessageTaskParamsVariant0SlackUserGroupsItem,
        > for super::SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant0SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant0SlackUserGroupsItem,
        > for SendSlackMessageTaskParamsVariant0SlackUserGroupsItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant0SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant0SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant0SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant0SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackMessageTaskParamsVariant0SlackUsersItem>
        for super::SendSlackMessageTaskParamsVariant0SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant0SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant0SlackUsersItem,
        > for SendSlackMessageTaskParamsVariant0SlackUsersItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant0SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant1ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSlackMessageTaskParamsVariant1ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant1ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackMessageTaskParamsVariant1ChannelsItem>
        for super::SendSlackMessageTaskParamsVariant1ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant1ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackMessageTaskParamsVariant1ChannelsItem>
        for SendSlackMessageTaskParamsVariant1ChannelsItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant1ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackMessageTaskParamsVariant1ParentMessageThreadTask,
        > for super::SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant1ParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant1ParentMessageThreadTask,
        > for SendSlackMessageTaskParamsVariant1ParentMessageThreadTask {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant1ParentMessageThreadTask,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackMessageTaskParamsVariant1SlackUserGroupsItem,
        > for super::SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant1SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant1SlackUserGroupsItem,
        > for SendSlackMessageTaskParamsVariant1SlackUserGroupsItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant1SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant1SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant1SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant1SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackMessageTaskParamsVariant1SlackUsersItem>
        for super::SendSlackMessageTaskParamsVariant1SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant1SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant1SlackUsersItem,
        > for SendSlackMessageTaskParamsVariant1SlackUsersItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant1SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant2ChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSlackMessageTaskParamsVariant2ChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant2ChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackMessageTaskParamsVariant2ChannelsItem>
        for super::SendSlackMessageTaskParamsVariant2ChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant2ChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SendSlackMessageTaskParamsVariant2ChannelsItem>
        for SendSlackMessageTaskParamsVariant2ChannelsItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant2ChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackMessageTaskParamsVariant2ParentMessageThreadTask,
        > for super::SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant2ParentMessageThreadTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant2ParentMessageThreadTask,
        > for SendSlackMessageTaskParamsVariant2ParentMessageThreadTask {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant2ParentMessageThreadTask,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SendSlackMessageTaskParamsVariant2SlackUserGroupsItem,
        > for super::SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant2SlackUserGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant2SlackUserGroupsItem,
        > for SendSlackMessageTaskParamsVariant2SlackUserGroupsItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant2SlackUserGroupsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSlackMessageTaskParamsVariant2SlackUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SendSlackMessageTaskParamsVariant2SlackUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SendSlackMessageTaskParamsVariant2SlackUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSlackMessageTaskParamsVariant2SlackUsersItem>
        for super::SendSlackMessageTaskParamsVariant2SlackUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSlackMessageTaskParamsVariant2SlackUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SendSlackMessageTaskParamsVariant2SlackUsersItem,
        > for SendSlackMessageTaskParamsVariant2SlackUsersItem {
            fn from(
                value: super::SendSlackMessageTaskParamsVariant2SlackUsersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendSmsTaskParams {
            content: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            phone_numbers: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SendSmsTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendSmsTaskParams {
            fn default() -> Self {
                Self {
                    content: Err("no value supplied for content".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    phone_numbers: Err(
                        "no value supplied for phone_numbers".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SendSmsTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn phone_numbers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_numbers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_numbers: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendSmsTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendSmsTaskParams> for super::SendSmsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendSmsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    name: value.name?,
                    phone_numbers: value.phone_numbers?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SendSmsTaskParams> for SendSmsTaskParams {
            fn from(value: super::SendSmsTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    name: Ok(value.name),
                    phone_numbers: Ok(value.phone_numbers),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SendWhatsappMessageTaskParams {
            content: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            phone_numbers: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SendWhatsappMessageTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SendWhatsappMessageTaskParams {
            fn default() -> Self {
                Self {
                    content: Err("no value supplied for content".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    phone_numbers: Err(
                        "no value supplied for phone_numbers".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SendWhatsappMessageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn phone_numbers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_numbers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_numbers: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendWhatsappMessageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SendWhatsappMessageTaskParams>
        for super::SendWhatsappMessageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SendWhatsappMessageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    name: value.name?,
                    phone_numbers: value.phone_numbers?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SendWhatsappMessageTaskParams>
        for SendWhatsappMessageTaskParams {
            fn from(value: super::SendWhatsappMessageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    name: Ok(value.name),
                    phone_numbers: Ok(value.phone_numbers),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Service {
            alert_broadcast_channel: ::std::result::Result<
                ::std::option::Option<super::ServiceAlertBroadcastChannel>,
                ::std::string::String,
            >,
            alert_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_address: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_repository_branch: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_repository_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_repository_branch: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_repository_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_broadcast_channel: ::std::result::Result<
                ::std::option::Option<super::ServiceIncidentBroadcastChannel>,
                ::std::string::String,
            >,
            incident_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kubernetes_deployment_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            owner_user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::ServicePropertiesItem>>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::ServiceSlackAliasesItem>>,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::ServiceSlackChannelsItem>>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Service {
            fn default() -> Self {
                Self {
                    alert_broadcast_channel: Ok(Default::default()),
                    alert_broadcast_enabled: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    alerts_email_address: Ok(Default::default()),
                    alerts_email_enabled: Ok(Default::default()),
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    escalation_policy_id: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    github_repository_branch: Ok(Default::default()),
                    github_repository_name: Ok(Default::default()),
                    gitlab_repository_branch: Ok(Default::default()),
                    gitlab_repository_name: Ok(Default::default()),
                    incident_broadcast_channel: Ok(Default::default()),
                    incident_broadcast_enabled: Ok(Default::default()),
                    kubernetes_deployment_name: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_ids: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Service {
            pub fn alert_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ServiceAlertBroadcastChannel>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn alert_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_address<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_address = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_address: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_enabled: {e}"
                        )
                    });
                self
            }
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn github_repository_branch<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_repository_branch = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_repository_branch: {e}"
                        )
                    });
                self
            }
            pub fn github_repository_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_repository_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_repository_name: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_repository_branch<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_repository_branch = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_repository_branch: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_repository_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_repository_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_repository_name: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ServiceIncidentBroadcastChannel>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn kubernetes_deployment_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kubernetes_deployment_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kubernetes_deployment_name: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::ServicePropertiesItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::ServiceSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::ServiceSlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Service> for super::Service {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Service,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_broadcast_channel: value.alert_broadcast_channel?,
                    alert_broadcast_enabled: value.alert_broadcast_enabled?,
                    alert_urgency_id: value.alert_urgency_id?,
                    alerts_email_address: value.alerts_email_address?,
                    alerts_email_enabled: value.alerts_email_enabled?,
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    created_at: value.created_at?,
                    description: value.description?,
                    environment_ids: value.environment_ids?,
                    escalation_policy_id: value.escalation_policy_id?,
                    external_id: value.external_id?,
                    github_repository_branch: value.github_repository_branch?,
                    github_repository_name: value.github_repository_name?,
                    gitlab_repository_branch: value.gitlab_repository_branch?,
                    gitlab_repository_name: value.gitlab_repository_name?,
                    incident_broadcast_channel: value.incident_broadcast_channel?,
                    incident_broadcast_enabled: value.incident_broadcast_enabled?,
                    kubernetes_deployment_name: value.kubernetes_deployment_name?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_ids: value.owner_user_ids?,
                    pagerduty_id: value.pagerduty_id?,
                    position: value.position?,
                    properties: value.properties?,
                    public_description: value.public_description?,
                    service_ids: value.service_ids?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Service> for Service {
            fn from(value: super::Service) -> Self {
                Self {
                    alert_broadcast_channel: Ok(value.alert_broadcast_channel),
                    alert_broadcast_enabled: Ok(value.alert_broadcast_enabled),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    alerts_email_address: Ok(value.alerts_email_address),
                    alerts_email_enabled: Ok(value.alerts_email_enabled),
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    environment_ids: Ok(value.environment_ids),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    external_id: Ok(value.external_id),
                    github_repository_branch: Ok(value.github_repository_branch),
                    github_repository_name: Ok(value.github_repository_name),
                    gitlab_repository_branch: Ok(value.gitlab_repository_branch),
                    gitlab_repository_name: Ok(value.gitlab_repository_name),
                    incident_broadcast_channel: Ok(value.incident_broadcast_channel),
                    incident_broadcast_enabled: Ok(value.incident_broadcast_enabled),
                    kubernetes_deployment_name: Ok(value.kubernetes_deployment_name),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_ids: Ok(value.owner_user_ids),
                    pagerduty_id: Ok(value.pagerduty_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    public_description: Ok(value.public_description),
                    service_ids: Ok(value.service_ids),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceAlertBroadcastChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ServiceAlertBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ServiceAlertBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceAlertBroadcastChannel>
        for super::ServiceAlertBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceAlertBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceAlertBroadcastChannel>
        for ServiceAlertBroadcastChannel {
            fn from(value: super::ServiceAlertBroadcastChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceIncidentBroadcastChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ServiceIncidentBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl ServiceIncidentBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceIncidentBroadcastChannel>
        for super::ServiceIncidentBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceIncidentBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceIncidentBroadcastChannel>
        for ServiceIncidentBroadcastChannel {
            fn from(value: super::ServiceIncidentBroadcastChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ServiceListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for ServiceList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl ServiceList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::ServiceListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceList> for super::ServiceList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceList> for ServiceList {
            fn from(value: super::ServiceList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceListDataItem {
            attributes: ::std::result::Result<super::Service, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ServiceListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ServiceListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ServiceListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Service>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ServiceListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceListDataItem>
        for super::ServiceListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceListDataItem> for ServiceListDataItem {
            fn from(value: super::ServiceListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServicePropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for ServicePropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl ServicePropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServicePropertiesItem>
        for super::ServicePropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServicePropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::ServicePropertiesItem>
        for ServicePropertiesItem {
            fn from(value: super::ServicePropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceResponse {
            data: ::std::result::Result<
                super::ServiceResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ServiceResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ServiceResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ServiceResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceResponse> for super::ServiceResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceResponse> for ServiceResponse {
            fn from(value: super::ServiceResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceResponseData {
            attributes: ::std::result::Result<super::Service, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ServiceResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ServiceResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ServiceResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Service>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ServiceResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceResponseData>
        for super::ServiceResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceResponseData> for ServiceResponseData {
            fn from(value: super::ServiceResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for ServiceSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl ServiceSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceSlackAliasesItem>
        for super::ServiceSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceSlackAliasesItem>
        for ServiceSlackAliasesItem {
            fn from(value: super::ServiceSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ServiceSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for ServiceSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl ServiceSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ServiceSlackChannelsItem>
        for super::ServiceSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ServiceSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::ServiceSlackChannelsItem>
        for ServiceSlackChannelsItem {
            fn from(value: super::ServiceSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Severity {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            severity: ::std::result::Result<
                ::std::option::Option<super::SeveritySeverity>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::SeveritySlackAliasesItem>>,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::SeveritySlackChannelsItem>>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Severity {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    severity: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Severity {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SeveritySeverity>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::SeveritySlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::SeveritySlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Severity> for super::Severity {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Severity,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    severity: value.severity?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Severity> for Severity {
            fn from(value: super::Severity) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    severity: Ok(value.severity),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SeverityList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::SeverityListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for SeverityList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl SeverityList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::SeverityListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SeverityList> for super::SeverityList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SeverityList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::SeverityList> for SeverityList {
            fn from(value: super::SeverityList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SeverityListDataItem {
            attributes: ::std::result::Result<super::Severity, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SeverityListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SeverityListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SeverityListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Severity>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SeverityListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SeverityListDataItem>
        for super::SeverityListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SeverityListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SeverityListDataItem> for SeverityListDataItem {
            fn from(value: super::SeverityListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SeverityResponse {
            data: ::std::result::Result<
                super::SeverityResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SeverityResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl SeverityResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SeverityResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SeverityResponse> for super::SeverityResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SeverityResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::SeverityResponse> for SeverityResponse {
            fn from(value: super::SeverityResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SeverityResponseData {
            attributes: ::std::result::Result<super::Severity, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SeverityResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SeverityResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SeverityResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Severity>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SeverityResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SeverityResponseData>
        for super::SeverityResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SeverityResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SeverityResponseData> for SeverityResponseData {
            fn from(value: super::SeverityResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SeveritySlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for SeveritySlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl SeveritySlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SeveritySlackAliasesItem>
        for super::SeveritySlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SeveritySlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SeveritySlackAliasesItem>
        for SeveritySlackAliasesItem {
            fn from(value: super::SeveritySlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SeveritySlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for SeveritySlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl SeveritySlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SeveritySlackChannelsItem>
        for super::SeveritySlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SeveritySlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SeveritySlackChannelsItem>
        for SeveritySlackChannelsItem {
            fn from(value: super::SeveritySlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Shift {
            ends_at: ::std::result::Result<::std::string::String, ::std::string::String>,
            is_override: ::std::result::Result<bool, ::std::string::String>,
            is_shadow: ::std::result::Result<bool, ::std::string::String>,
            rotation_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            schedule_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Shift {
            fn default() -> Self {
                Self {
                    ends_at: Err("no value supplied for ends_at".to_string()),
                    is_override: Err("no value supplied for is_override".to_string()),
                    is_shadow: Err("no value supplied for is_shadow".to_string()),
                    rotation_id: Err("no value supplied for rotation_id".to_string()),
                    schedule_id: Err("no value supplied for schedule_id".to_string()),
                    starts_at: Err("no value supplied for starts_at".to_string()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl Shift {
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn is_override<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.is_override = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_override: {e}")
                    });
                self
            }
            pub fn is_shadow<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.is_shadow = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_shadow: {e}")
                    });
                self
            }
            pub fn rotation_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.rotation_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rotation_id: {e}")
                    });
                self
            }
            pub fn schedule_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_id: {e}")
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Shift> for super::Shift {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Shift,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ends_at: value.ends_at?,
                    is_override: value.is_override?,
                    is_shadow: value.is_shadow?,
                    rotation_id: value.rotation_id?,
                    schedule_id: value.schedule_id?,
                    starts_at: value.starts_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::Shift> for Shift {
            fn from(value: super::Shift) -> Self {
                Self {
                    ends_at: Ok(value.ends_at),
                    is_override: Ok(value.is_override),
                    is_shadow: Ok(value.is_shadow),
                    rotation_id: Ok(value.rotation_id),
                    schedule_id: Ok(value.schedule_id),
                    starts_at: Ok(value.starts_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::ShiftListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl ShiftList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::ShiftListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftList> for super::ShiftList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftList> for ShiftList {
            fn from(value: super::ShiftList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftListDataItem {
            attributes: ::std::result::Result<super::Shift, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            relationships: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationships>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::ShiftListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    relationships: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ShiftListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Shift>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn relationships<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationships>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.relationships = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for relationships: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ShiftListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftListDataItem> for super::ShiftListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    relationships: value.relationships?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftListDataItem> for ShiftListDataItem {
            fn from(value: super::ShiftListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    relationships: Ok(value.relationships),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftOverride {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_by_user_id: ::std::result::Result<i64, ::std::string::String>,
            shift_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftOverride {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    created_by_user_id: Err(
                        "no value supplied for created_by_user_id".to_string(),
                    ),
                    shift_id: Err("no value supplied for shift_id".to_string()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl ShiftOverride {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn created_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.created_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for created_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn shift_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shift_id: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftOverride> for super::ShiftOverride {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftOverride,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    created_by_user_id: value.created_by_user_id?,
                    shift_id: value.shift_id?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftOverride> for ShiftOverride {
            fn from(value: super::ShiftOverride) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    created_by_user_id: Ok(value.created_by_user_id),
                    shift_id: Ok(value.shift_id),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftOverrideResponse {
            data: ::std::result::Result<
                super::ShiftOverrideResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftOverrideResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl ShiftOverrideResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ShiftOverrideResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftOverrideResponse>
        for super::ShiftOverrideResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftOverrideResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftOverrideResponse>
        for ShiftOverrideResponse {
            fn from(value: super::ShiftOverrideResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftOverrideResponseData {
            attributes: ::std::result::Result<
                super::ShiftOverride,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::ShiftOverrideResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftOverrideResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl ShiftOverrideResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ShiftOverride>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::ShiftOverrideResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftOverrideResponseData>
        for super::ShiftOverrideResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftOverrideResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftOverrideResponseData>
        for ShiftOverrideResponseData {
            fn from(value: super::ShiftOverrideResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationships {
            assignee: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsAssignee>,
                ::std::string::String,
            >,
            shift_override: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsShiftOverride>,
                ::std::string::String,
            >,
            user: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsUser>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationships {
            fn default() -> Self {
                Self {
                    assignee: Ok(Default::default()),
                    shift_override: Ok(Default::default()),
                    user: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationships {
            pub fn assignee<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsAssignee>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assignee = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for assignee: {e}")
                    });
                self
            }
            pub fn shift_override<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsShiftOverride>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shift_override = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_override: {e}"
                        )
                    });
                self
            }
            pub fn user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsUser>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.user = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationships> for super::ShiftRelationships {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationships,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assignee: value.assignee?,
                    shift_override: value.shift_override?,
                    user: value.user?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftRelationships> for ShiftRelationships {
            fn from(value: super::ShiftRelationships) -> Self {
                Self {
                    assignee: Ok(value.assignee),
                    shift_override: Ok(value.shift_override),
                    user: Ok(value.user),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationshipsAssignee {
            data: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsAssigneeData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationshipsAssignee {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationshipsAssignee {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsAssigneeData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationshipsAssignee>
        for super::ShiftRelationshipsAssignee {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationshipsAssignee,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::ShiftRelationshipsAssignee>
        for ShiftRelationshipsAssignee {
            fn from(value: super::ShiftRelationshipsAssignee) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationshipsAssigneeData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationshipsAssigneeData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationshipsAssigneeData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationshipsAssigneeData>
        for super::ShiftRelationshipsAssigneeData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationshipsAssigneeData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftRelationshipsAssigneeData>
        for ShiftRelationshipsAssigneeData {
            fn from(value: super::ShiftRelationshipsAssigneeData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationshipsShiftOverride {
            data: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsShiftOverrideData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationshipsShiftOverride {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationshipsShiftOverride {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsShiftOverrideData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationshipsShiftOverride>
        for super::ShiftRelationshipsShiftOverride {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationshipsShiftOverride,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::ShiftRelationshipsShiftOverride>
        for ShiftRelationshipsShiftOverride {
            fn from(value: super::ShiftRelationshipsShiftOverride) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationshipsShiftOverrideData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsShiftOverrideDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationshipsShiftOverrideData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationshipsShiftOverrideData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsShiftOverrideDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationshipsShiftOverrideData>
        for super::ShiftRelationshipsShiftOverrideData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationshipsShiftOverrideData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftRelationshipsShiftOverrideData>
        for ShiftRelationshipsShiftOverrideData {
            fn from(value: super::ShiftRelationshipsShiftOverrideData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationshipsUser {
            data: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsUserData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationshipsUser {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationshipsUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsUserData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationshipsUser>
        for super::ShiftRelationshipsUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationshipsUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::ShiftRelationshipsUser>
        for ShiftRelationshipsUser {
            fn from(value: super::ShiftRelationshipsUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct ShiftRelationshipsUserData {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::ShiftRelationshipsUserDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for ShiftRelationshipsUserData {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl ShiftRelationshipsUserData {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ShiftRelationshipsUserDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<ShiftRelationshipsUserData>
        for super::ShiftRelationshipsUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: ShiftRelationshipsUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::ShiftRelationshipsUserData>
        for ShiftRelationshipsUserData {
            fn from(value: super::ShiftRelationshipsUserData) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SimpleTriggerParams {
            trigger_type: ::std::result::Result<
                super::SimpleTriggerParamsTriggerType,
                ::std::string::String,
            >,
            triggers: ::std::result::Result<
                ::std::vec::Vec<super::SimpleTriggerParamsTriggersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SimpleTriggerParams {
            fn default() -> Self {
                Self {
                    trigger_type: Err("no value supplied for trigger_type".to_string()),
                    triggers: Ok(Default::default()),
                }
            }
        }
        impl SimpleTriggerParams {
            pub fn trigger_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SimpleTriggerParamsTriggerType>,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for trigger_type: {e}")
                    });
                self
            }
            pub fn triggers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SimpleTriggerParamsTriggersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.triggers = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggers: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SimpleTriggerParams>
        for super::SimpleTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SimpleTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    trigger_type: value.trigger_type?,
                    triggers: value.triggers?,
                })
            }
        }
        impl ::std::convert::From<super::SimpleTriggerParams> for SimpleTriggerParams {
            fn from(value: super::SimpleTriggerParams) -> Self {
                Self {
                    trigger_type: Ok(value.trigger_type),
                    triggers: Ok(value.triggers),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Sla {
            assignment_deadline_days: ::std::result::Result<i64, ::std::string::String>,
            assignment_deadline_parent_status: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            assignment_deadline_sub_status_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            assignment_skip_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            completion_deadline_days: ::std::result::Result<i64, ::std::string::String>,
            completion_deadline_parent_status: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            completion_deadline_sub_status_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            completion_skip_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            condition_match_type: ::std::result::Result<
                super::SlaConditionMatchType,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::SlaConditionsItem>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            entity_type: ::std::result::Result<
                ::std::option::Option<super::SlaEntityType>,
                ::std::string::String,
            >,
            manager_role_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            manager_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notification_configurations: ::std::result::Result<
                ::std::vec::Vec<super::SlaNotificationConfigurationsItem>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Sla {
            fn default() -> Self {
                Self {
                    assignment_deadline_days: Err(
                        "no value supplied for assignment_deadline_days".to_string(),
                    ),
                    assignment_deadline_parent_status: Err(
                        "no value supplied for assignment_deadline_parent_status"
                            .to_string(),
                    ),
                    assignment_deadline_sub_status_id: Ok(Default::default()),
                    assignment_skip_weekends: Ok(Default::default()),
                    completion_deadline_days: Err(
                        "no value supplied for completion_deadline_days".to_string(),
                    ),
                    completion_deadline_parent_status: Err(
                        "no value supplied for completion_deadline_parent_status"
                            .to_string(),
                    ),
                    completion_deadline_sub_status_id: Ok(Default::default()),
                    completion_skip_weekends: Ok(Default::default()),
                    condition_match_type: Err(
                        "no value supplied for condition_match_type".to_string(),
                    ),
                    conditions: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    entity_type: Ok(Default::default()),
                    manager_role_id: Ok(Default::default()),
                    manager_user_id: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notification_configurations: Ok(Default::default()),
                    position: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Sla {
            pub fn assignment_deadline_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_days: {e}"
                        )
                    });
                self
            }
            pub fn assignment_deadline_parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_parent_status: {e}"
                        )
                    });
                self
            }
            pub fn assignment_deadline_sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_sub_status_id: {e}"
                        )
                    });
                self
            }
            pub fn assignment_skip_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_skip_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_skip_weekends: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_days: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_parent_status: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_sub_status_id: {e}"
                        )
                    });
                self
            }
            pub fn completion_skip_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_skip_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_skip_weekends: {e}"
                        )
                    });
                self
            }
            pub fn condition_match_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SlaConditionMatchType>,
                T::Error: ::std::fmt::Display,
            {
                self.condition_match_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_match_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::SlaConditionsItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn entity_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::SlaEntityType>>,
                T::Error: ::std::fmt::Display,
            {
                self.entity_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for entity_type: {e}")
                    });
                self
            }
            pub fn manager_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.manager_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for manager_role_id: {e}"
                        )
                    });
                self
            }
            pub fn manager_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.manager_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for manager_user_id: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_configurations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SlaNotificationConfigurationsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_configurations = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_configurations: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Sla> for super::Sla {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Sla,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assignment_deadline_days: value.assignment_deadline_days?,
                    assignment_deadline_parent_status: value
                        .assignment_deadline_parent_status?,
                    assignment_deadline_sub_status_id: value
                        .assignment_deadline_sub_status_id?,
                    assignment_skip_weekends: value.assignment_skip_weekends?,
                    completion_deadline_days: value.completion_deadline_days?,
                    completion_deadline_parent_status: value
                        .completion_deadline_parent_status?,
                    completion_deadline_sub_status_id: value
                        .completion_deadline_sub_status_id?,
                    completion_skip_weekends: value.completion_skip_weekends?,
                    condition_match_type: value.condition_match_type?,
                    conditions: value.conditions?,
                    created_at: value.created_at?,
                    description: value.description?,
                    entity_type: value.entity_type?,
                    manager_role_id: value.manager_role_id?,
                    manager_user_id: value.manager_user_id?,
                    name: value.name?,
                    notification_configurations: value.notification_configurations?,
                    position: value.position?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Sla> for Sla {
            fn from(value: super::Sla) -> Self {
                Self {
                    assignment_deadline_days: Ok(value.assignment_deadline_days),
                    assignment_deadline_parent_status: Ok(
                        value.assignment_deadline_parent_status,
                    ),
                    assignment_deadline_sub_status_id: Ok(
                        value.assignment_deadline_sub_status_id,
                    ),
                    assignment_skip_weekends: Ok(value.assignment_skip_weekends),
                    completion_deadline_days: Ok(value.completion_deadline_days),
                    completion_deadline_parent_status: Ok(
                        value.completion_deadline_parent_status,
                    ),
                    completion_deadline_sub_status_id: Ok(
                        value.completion_deadline_sub_status_id,
                    ),
                    completion_skip_weekends: Ok(value.completion_skip_weekends),
                    condition_match_type: Ok(value.condition_match_type),
                    conditions: Ok(value.conditions),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    entity_type: Ok(value.entity_type),
                    manager_role_id: Ok(value.manager_role_id),
                    manager_user_id: Ok(value.manager_user_id),
                    name: Ok(value.name),
                    notification_configurations: Ok(value.notification_configurations),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SlaConditionsItem {
            conditionable_type: ::std::result::Result<
                ::std::option::Option<super::SlaConditionsItemConditionableType>,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            property: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SlaConditionsItem {
            fn default() -> Self {
                Self {
                    conditionable_type: Ok(Default::default()),
                    form_field_id: Ok(Default::default()),
                    id: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    position: Ok(Default::default()),
                    property: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl SlaConditionsItem {
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SlaConditionsItemConditionableType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn property<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for property: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SlaConditionsItem> for super::SlaConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SlaConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_type: value.conditionable_type?,
                    form_field_id: value.form_field_id?,
                    id: value.id?,
                    operator: value.operator?,
                    position: value.position?,
                    property: value.property?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::SlaConditionsItem> for SlaConditionsItem {
            fn from(value: super::SlaConditionsItem) -> Self {
                Self {
                    conditionable_type: Ok(value.conditionable_type),
                    form_field_id: Ok(value.form_field_id),
                    id: Ok(value.id),
                    operator: Ok(value.operator),
                    position: Ok(value.position),
                    property: Ok(value.property),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SlaList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::SlaListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for SlaList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl SlaList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::SlaListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SlaList> for super::SlaList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SlaList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::SlaList> for SlaList {
            fn from(value: super::SlaList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SlaListDataItem {
            attributes: ::std::result::Result<super::Sla, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SlaListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SlaListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SlaListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Sla>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SlaListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SlaListDataItem> for super::SlaListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SlaListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SlaListDataItem> for SlaListDataItem {
            fn from(value: super::SlaListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SlaNotificationConfigurationsItem {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            offset_days: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            offset_type: ::std::result::Result<
                ::std::option::Option<
                    super::SlaNotificationConfigurationsItemOffsetType,
                >,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SlaNotificationConfigurationsItem {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    id: Ok(Default::default()),
                    offset_days: Ok(Default::default()),
                    offset_type: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                }
            }
        }
        impl SlaNotificationConfigurationsItem {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn offset_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.offset_days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for offset_days: {e}")
                    });
                self
            }
            pub fn offset_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::SlaNotificationConfigurationsItemOffsetType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.offset_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for offset_type: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SlaNotificationConfigurationsItem>
        for super::SlaNotificationConfigurationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SlaNotificationConfigurationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    id: value.id?,
                    offset_days: value.offset_days?,
                    offset_type: value.offset_type?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::SlaNotificationConfigurationsItem>
        for SlaNotificationConfigurationsItem {
            fn from(value: super::SlaNotificationConfigurationsItem) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    id: Ok(value.id),
                    offset_days: Ok(value.offset_days),
                    offset_type: Ok(value.offset_type),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SlaResponse {
            data: ::std::result::Result<super::SlaResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SlaResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl SlaResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SlaResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SlaResponse> for super::SlaResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SlaResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::SlaResponse> for SlaResponse {
            fn from(value: super::SlaResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SlaResponseData {
            attributes: ::std::result::Result<super::Sla, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SlaResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SlaResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SlaResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Sla>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SlaResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SlaResponseData> for super::SlaResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SlaResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SlaResponseData> for SlaResponseData {
            fn from(value: super::SlaResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotDatadogGraphTaskParams {
            dashboards: ::std::result::Result<
                ::std::vec::Vec<super::SnapshotDatadogGraphTaskParamsDashboardsItem>,
                ::std::string::String,
            >,
            metric_queries: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            past_duration: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SnapshotDatadogGraphTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnapshotDatadogGraphTaskParams {
            fn default() -> Self {
                Self {
                    dashboards: Ok(Default::default()),
                    metric_queries: Ok(Default::default()),
                    past_duration: Err(
                        "no value supplied for past_duration".to_string(),
                    ),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SnapshotDatadogGraphTaskParams {
            pub fn dashboards<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SnapshotDatadogGraphTaskParamsDashboardsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dashboards = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for dashboards: {e}")
                    });
                self
            }
            pub fn metric_queries<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.metric_queries = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for metric_queries: {e}"
                        )
                    });
                self
            }
            pub fn past_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.past_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for past_duration: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotDatadogGraphTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotDatadogGraphTaskParams>
        for super::SnapshotDatadogGraphTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotDatadogGraphTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    dashboards: value.dashboards?,
                    metric_queries: value.metric_queries?,
                    past_duration: value.past_duration?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SnapshotDatadogGraphTaskParams>
        for SnapshotDatadogGraphTaskParams {
            fn from(value: super::SnapshotDatadogGraphTaskParams) -> Self {
                Self {
                    dashboards: Ok(value.dashboards),
                    metric_queries: Ok(value.metric_queries),
                    past_duration: Ok(value.past_duration),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotDatadogGraphTaskParamsDashboardsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnapshotDatadogGraphTaskParamsDashboardsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotDatadogGraphTaskParamsDashboardsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotDatadogGraphTaskParamsDashboardsItem>
        for super::SnapshotDatadogGraphTaskParamsDashboardsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotDatadogGraphTaskParamsDashboardsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SnapshotDatadogGraphTaskParamsDashboardsItem>
        for SnapshotDatadogGraphTaskParamsDashboardsItem {
            fn from(value: super::SnapshotDatadogGraphTaskParamsDashboardsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
        > for super::SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
        > for SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::SnapshotDatadogGraphTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotGrafanaDashboardTaskParams {
            dashboards: ::std::result::Result<
                ::std::vec::Vec<super::SnapshotGrafanaDashboardTaskParamsDashboardsItem>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SnapshotGrafanaDashboardTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnapshotGrafanaDashboardTaskParams {
            fn default() -> Self {
                Self {
                    dashboards: Err("no value supplied for dashboards".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SnapshotGrafanaDashboardTaskParams {
            pub fn dashboards<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SnapshotGrafanaDashboardTaskParamsDashboardsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dashboards = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for dashboards: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::SnapshotGrafanaDashboardTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotGrafanaDashboardTaskParams>
        for super::SnapshotGrafanaDashboardTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotGrafanaDashboardTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    dashboards: value.dashboards?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SnapshotGrafanaDashboardTaskParams>
        for SnapshotGrafanaDashboardTaskParams {
            fn from(value: super::SnapshotGrafanaDashboardTaskParams) -> Self {
                Self {
                    dashboards: Ok(value.dashboards),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotGrafanaDashboardTaskParamsDashboardsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SnapshotGrafanaDashboardTaskParamsDashboardsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotGrafanaDashboardTaskParamsDashboardsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotGrafanaDashboardTaskParamsDashboardsItem>
        for super::SnapshotGrafanaDashboardTaskParamsDashboardsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotGrafanaDashboardTaskParamsDashboardsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SnapshotGrafanaDashboardTaskParamsDashboardsItem,
        > for SnapshotGrafanaDashboardTaskParamsDashboardsItem {
            fn from(
                value: super::SnapshotGrafanaDashboardTaskParamsDashboardsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
        > for super::SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
        > for SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::SnapshotGrafanaDashboardTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotLookerLookTaskParams {
            dashboards: ::std::result::Result<
                ::std::vec::Vec<super::SnapshotLookerLookTaskParamsDashboardsItem>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::SnapshotLookerLookTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SnapshotLookerLookTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnapshotLookerLookTaskParams {
            fn default() -> Self {
                Self {
                    dashboards: Err("no value supplied for dashboards".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SnapshotLookerLookTaskParams {
            pub fn dashboards<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SnapshotLookerLookTaskParamsDashboardsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dashboards = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for dashboards: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SnapshotLookerLookTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotLookerLookTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotLookerLookTaskParams>
        for super::SnapshotLookerLookTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotLookerLookTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    dashboards: value.dashboards?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SnapshotLookerLookTaskParams>
        for SnapshotLookerLookTaskParams {
            fn from(value: super::SnapshotLookerLookTaskParams) -> Self {
                Self {
                    dashboards: Ok(value.dashboards),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotLookerLookTaskParamsDashboardsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnapshotLookerLookTaskParamsDashboardsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotLookerLookTaskParamsDashboardsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotLookerLookTaskParamsDashboardsItem>
        for super::SnapshotLookerLookTaskParamsDashboardsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotLookerLookTaskParamsDashboardsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::SnapshotLookerLookTaskParamsDashboardsItem>
        for SnapshotLookerLookTaskParamsDashboardsItem {
            fn from(value: super::SnapshotLookerLookTaskParamsDashboardsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotLookerLookTaskParamsPostToSlackChannelsItem>
        for super::SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotLookerLookTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SnapshotLookerLookTaskParamsPostToSlackChannelsItem,
        > for SnapshotLookerLookTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::SnapshotLookerLookTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotNewRelicGraphTaskParams {
            metric_query: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            metric_type: ::std::result::Result<
                super::SnapshotNewRelicGraphTaskParamsMetricType,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::SnapshotNewRelicGraphTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnapshotNewRelicGraphTaskParams {
            fn default() -> Self {
                Self {
                    metric_query: Err("no value supplied for metric_query".to_string()),
                    metric_type: Err("no value supplied for metric_type".to_string()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl SnapshotNewRelicGraphTaskParams {
            pub fn metric_query<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.metric_query = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for metric_query: {e}")
                    });
                self
            }
            pub fn metric_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::SnapshotNewRelicGraphTaskParamsMetricType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.metric_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for metric_type: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotNewRelicGraphTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnapshotNewRelicGraphTaskParams>
        for super::SnapshotNewRelicGraphTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotNewRelicGraphTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    metric_query: value.metric_query?,
                    metric_type: value.metric_type?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::SnapshotNewRelicGraphTaskParams>
        for SnapshotNewRelicGraphTaskParams {
            fn from(value: super::SnapshotNewRelicGraphTaskParams) -> Self {
                Self {
                    metric_query: Ok(value.metric_query),
                    metric_type: Ok(value.metric_type),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
        > for super::SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
        > for SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::SnapshotNewRelicGraphTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnoozeAlert {
            data: ::std::result::Result<super::SnoozeAlertData, ::std::string::String>,
        }
        impl ::std::default::Default for SnoozeAlert {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl SnoozeAlert {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SnoozeAlertData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnoozeAlert> for super::SnoozeAlert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnoozeAlert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::SnoozeAlert> for SnoozeAlert {
            fn from(value: super::SnoozeAlert) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnoozeAlertData {
            attributes: ::std::result::Result<
                super::SnoozeAlertDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::SnoozeAlertDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnoozeAlertData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SnoozeAlertData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SnoozeAlertDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SnoozeAlertDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnoozeAlertData> for super::SnoozeAlertData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnoozeAlertData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SnoozeAlertData> for SnoozeAlertData {
            fn from(value: super::SnoozeAlertData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SnoozeAlertDataAttributes {
            delay_minutes: ::std::result::Result<
                ::std::num::NonZeroU64,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SnoozeAlertDataAttributes {
            fn default() -> Self {
                Self {
                    delay_minutes: Err("no value supplied for delay_minutes".to_string()),
                }
            }
        }
        impl SnoozeAlertDataAttributes {
            pub fn delay_minutes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::num::NonZeroU64>,
                T::Error: ::std::fmt::Display,
            {
                self.delay_minutes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay_minutes: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SnoozeAlertDataAttributes>
        for super::SnoozeAlertDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SnoozeAlertDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    delay_minutes: value.delay_minutes?,
                })
            }
        }
        impl ::std::convert::From<super::SnoozeAlertDataAttributes>
        for SnoozeAlertDataAttributes {
            fn from(value: super::SnoozeAlertDataAttributes) -> Self {
                Self {
                    delay_minutes: Ok(value.delay_minutes),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Status {
            color: ::std::result::Result<::std::string::String, ::std::string::String>,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Status {
            fn default() -> Self {
                Self {
                    color: Err("no value supplied for color".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    enabled: Err("no value supplied for enabled".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl Status {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Status> for super::Status {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Status,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    created_at: value.created_at?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::Status> for Status {
            fn from(value: super::Status) -> Self {
                Self {
                    color: Ok(value.color),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::StatusListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for StatusList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl StatusList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::StatusListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusList> for super::StatusList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::StatusList> for StatusList {
            fn from(value: super::StatusList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusListDataItem {
            attributes: ::std::result::Result<super::Status, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::StatusListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl StatusListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Status>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusListDataItem> for super::StatusListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::StatusListDataItem> for StatusListDataItem {
            fn from(value: super::StatusListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPage {
            allow_search_engine_index: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            authentication_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            authentication_method: ::std::result::Result<
                ::std::option::Option<super::StatusPageAuthenticationMethod>,
                ::std::string::String,
            >,
            authentication_password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cname_records: ::std::result::Result<
                ::std::option::Option<
                    ::std::collections::HashMap<
                        ::std::string::String,
                        ::std::string::String,
                    >,
                >,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            external_domain_names: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            failure_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            footer_color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            ga_tracking_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            header_color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_cert: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_cert_fingerprint: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_slo_service_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_sso_service_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_name_identifier_format: ::std::result::Result<
                ::std::option::Option<super::StatusPageSamlNameIdentifierFormat>,
                ::std::string::String,
            >,
            section_order: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::StatusPageSectionOrderItem>,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            show_uptime: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_uptime_last_days: ::std::result::Result<
                ::std::option::Option<super::StatusPageShowUptimeLastDays>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            success_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            website_privacy_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_support_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPage {
            fn default() -> Self {
                Self {
                    allow_search_engine_index: Ok(Default::default()),
                    authentication_enabled: Ok(Default::default()),
                    authentication_method: Ok(Default::default()),
                    authentication_password: Ok(Default::default()),
                    cname_records: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    external_domain_names: Ok(Default::default()),
                    failure_message: Ok(Default::default()),
                    footer_color: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    ga_tracking_id: Ok(Default::default()),
                    header_color: Ok(Default::default()),
                    public: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    public_title: Ok(Default::default()),
                    saml_idp_cert: Ok(Default::default()),
                    saml_idp_cert_fingerprint: Ok(Default::default()),
                    saml_idp_slo_service_url: Ok(Default::default()),
                    saml_idp_sso_service_url: Ok(Default::default()),
                    saml_name_identifier_format: Ok(Default::default()),
                    section_order: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    show_uptime: Ok(Default::default()),
                    show_uptime_last_days: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    success_message: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    website_privacy_url: Ok(Default::default()),
                    website_support_url: Ok(Default::default()),
                    website_url: Ok(Default::default()),
                }
            }
        }
        impl StatusPage {
            pub fn allow_search_engine_index<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.allow_search_engine_index = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for allow_search_engine_index: {e}"
                        )
                    });
                self
            }
            pub fn authentication_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_enabled: {e}"
                        )
                    });
                self
            }
            pub fn authentication_method<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::StatusPageAuthenticationMethod>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_method = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_method: {e}"
                        )
                    });
                self
            }
            pub fn authentication_password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_password = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_password: {e}"
                        )
                    });
                self
            }
            pub fn cname_records<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::collections::HashMap<
                            ::std::string::String,
                            ::std::string::String,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.cname_records = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cname_records: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn external_domain_names<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_domain_names = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for external_domain_names: {e}"
                        )
                    });
                self
            }
            pub fn failure_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.failure_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for failure_message: {e}"
                        )
                    });
                self
            }
            pub fn footer_color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.footer_color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for footer_color: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn ga_tracking_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ga_tracking_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for ga_tracking_id: {e}"
                        )
                    });
                self
            }
            pub fn header_color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.header_color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for header_color: {e}")
                    });
                self
            }
            pub fn public<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.public = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn saml_idp_cert<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_cert = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for saml_idp_cert: {e}")
                    });
                self
            }
            pub fn saml_idp_cert_fingerprint<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_cert_fingerprint = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_cert_fingerprint: {e}"
                        )
                    });
                self
            }
            pub fn saml_idp_slo_service_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_slo_service_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_slo_service_url: {e}"
                        )
                    });
                self
            }
            pub fn saml_idp_sso_service_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_sso_service_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_sso_service_url: {e}"
                        )
                    });
                self
            }
            pub fn saml_name_identifier_format<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::StatusPageSamlNameIdentifierFormat>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.saml_name_identifier_format = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_name_identifier_format: {e}"
                        )
                    });
                self
            }
            pub fn section_order<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::StatusPageSectionOrderItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.section_order = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for section_order: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn show_uptime<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_uptime: {e}")
                    });
                self
            }
            pub fn show_uptime_last_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::StatusPageShowUptimeLastDays>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime_last_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_uptime_last_days: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn success_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.success_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for success_message: {e}"
                        )
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn website_privacy_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_privacy_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for website_privacy_url: {e}"
                        )
                    });
                self
            }
            pub fn website_support_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_support_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for website_support_url: {e}"
                        )
                    });
                self
            }
            pub fn website_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for website_url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPage> for super::StatusPage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    allow_search_engine_index: value.allow_search_engine_index?,
                    authentication_enabled: value.authentication_enabled?,
                    authentication_method: value.authentication_method?,
                    authentication_password: value.authentication_password?,
                    cname_records: value.cname_records?,
                    created_at: value.created_at?,
                    description: value.description?,
                    enabled: value.enabled?,
                    external_domain_names: value.external_domain_names?,
                    failure_message: value.failure_message?,
                    footer_color: value.footer_color?,
                    functionality_ids: value.functionality_ids?,
                    ga_tracking_id: value.ga_tracking_id?,
                    header_color: value.header_color?,
                    public: value.public?,
                    public_description: value.public_description?,
                    public_title: value.public_title?,
                    saml_idp_cert: value.saml_idp_cert?,
                    saml_idp_cert_fingerprint: value.saml_idp_cert_fingerprint?,
                    saml_idp_slo_service_url: value.saml_idp_slo_service_url?,
                    saml_idp_sso_service_url: value.saml_idp_sso_service_url?,
                    saml_name_identifier_format: value.saml_name_identifier_format?,
                    section_order: value.section_order?,
                    service_ids: value.service_ids?,
                    show_uptime: value.show_uptime?,
                    show_uptime_last_days: value.show_uptime_last_days?,
                    slug: value.slug?,
                    success_message: value.success_message?,
                    time_zone: value.time_zone?,
                    title: value.title?,
                    updated_at: value.updated_at?,
                    website_privacy_url: value.website_privacy_url?,
                    website_support_url: value.website_support_url?,
                    website_url: value.website_url?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPage> for StatusPage {
            fn from(value: super::StatusPage) -> Self {
                Self {
                    allow_search_engine_index: Ok(value.allow_search_engine_index),
                    authentication_enabled: Ok(value.authentication_enabled),
                    authentication_method: Ok(value.authentication_method),
                    authentication_password: Ok(value.authentication_password),
                    cname_records: Ok(value.cname_records),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    external_domain_names: Ok(value.external_domain_names),
                    failure_message: Ok(value.failure_message),
                    footer_color: Ok(value.footer_color),
                    functionality_ids: Ok(value.functionality_ids),
                    ga_tracking_id: Ok(value.ga_tracking_id),
                    header_color: Ok(value.header_color),
                    public: Ok(value.public),
                    public_description: Ok(value.public_description),
                    public_title: Ok(value.public_title),
                    saml_idp_cert: Ok(value.saml_idp_cert),
                    saml_idp_cert_fingerprint: Ok(value.saml_idp_cert_fingerprint),
                    saml_idp_slo_service_url: Ok(value.saml_idp_slo_service_url),
                    saml_idp_sso_service_url: Ok(value.saml_idp_sso_service_url),
                    saml_name_identifier_format: Ok(value.saml_name_identifier_format),
                    section_order: Ok(value.section_order),
                    service_ids: Ok(value.service_ids),
                    show_uptime: Ok(value.show_uptime),
                    show_uptime_last_days: Ok(value.show_uptime_last_days),
                    slug: Ok(value.slug),
                    success_message: Ok(value.success_message),
                    time_zone: Ok(value.time_zone),
                    title: Ok(value.title),
                    updated_at: Ok(value.updated_at),
                    website_privacy_url: Ok(value.website_privacy_url),
                    website_support_url: Ok(value.website_support_url),
                    website_url: Ok(value.website_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::StatusPageListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for StatusPageList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl StatusPageList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::StatusPageListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageList> for super::StatusPageList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageList> for StatusPageList {
            fn from(value: super::StatusPageList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageListDataItem {
            attributes: ::std::result::Result<super::StatusPage, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::StatusPageListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl StatusPageListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPage>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageListDataItem>
        for super::StatusPageListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageListDataItem>
        for StatusPageListDataItem {
            fn from(value: super::StatusPageListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageResponse {
            data: ::std::result::Result<
                super::StatusPageResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl StatusPageResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageResponse> for super::StatusPageResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageResponse> for StatusPageResponse {
            fn from(value: super::StatusPageResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageResponseData {
            attributes: ::std::result::Result<super::StatusPage, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::StatusPageResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl StatusPageResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPage>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageResponseData>
        for super::StatusPageResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageResponseData>
        for StatusPageResponseData {
            fn from(value: super::StatusPageResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageTemplate {
            body: ::std::result::Result<::std::string::String, ::std::string::String>,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::StatusPageTemplateKind>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            should_notify_subscribers: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            status_page_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            update_status: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            update_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageTemplate {
            fn default() -> Self {
                Self {
                    body: Err("no value supplied for body".to_string()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    enabled: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    position: Ok(Default::default()),
                    should_notify_subscribers: Ok(Default::default()),
                    status_page_id: Err(
                        "no value supplied for status_page_id".to_string(),
                    ),
                    title: Err("no value supplied for title".to_string()),
                    update_status: Ok(Default::default()),
                    update_title: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl StatusPageTemplate {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::StatusPageTemplateKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn should_notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn status_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_id: {e}"
                        )
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn update_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for update_status: {e}")
                    });
                self
            }
            pub fn update_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for update_title: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageTemplate> for super::StatusPageTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    created_at: value.created_at?,
                    enabled: value.enabled?,
                    kind: value.kind?,
                    position: value.position?,
                    should_notify_subscribers: value.should_notify_subscribers?,
                    status_page_id: value.status_page_id?,
                    title: value.title?,
                    update_status: value.update_status?,
                    update_title: value.update_title?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageTemplate> for StatusPageTemplate {
            fn from(value: super::StatusPageTemplate) -> Self {
                Self {
                    body: Ok(value.body),
                    created_at: Ok(value.created_at),
                    enabled: Ok(value.enabled),
                    kind: Ok(value.kind),
                    position: Ok(value.position),
                    should_notify_subscribers: Ok(value.should_notify_subscribers),
                    status_page_id: Ok(value.status_page_id),
                    title: Ok(value.title),
                    update_status: Ok(value.update_status),
                    update_title: Ok(value.update_title),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageTemplateList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::StatusPageTemplateListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for StatusPageTemplateList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl StatusPageTemplateList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::StatusPageTemplateListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageTemplateList>
        for super::StatusPageTemplateList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageTemplateList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageTemplateList>
        for StatusPageTemplateList {
            fn from(value: super::StatusPageTemplateList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageTemplateListDataItem {
            attributes: ::std::result::Result<
                super::StatusPageTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::StatusPageTemplateListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageTemplateListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl StatusPageTemplateListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageTemplateListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageTemplateListDataItem>
        for super::StatusPageTemplateListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageTemplateListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageTemplateListDataItem>
        for StatusPageTemplateListDataItem {
            fn from(value: super::StatusPageTemplateListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageTemplateResponse {
            data: ::std::result::Result<
                super::StatusPageTemplateResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageTemplateResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl StatusPageTemplateResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageTemplateResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageTemplateResponse>
        for super::StatusPageTemplateResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageTemplateResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageTemplateResponse>
        for StatusPageTemplateResponse {
            fn from(value: super::StatusPageTemplateResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusPageTemplateResponseData {
            attributes: ::std::result::Result<
                super::StatusPageTemplate,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::StatusPageTemplateResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusPageTemplateResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl StatusPageTemplateResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageTemplate>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusPageTemplateResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusPageTemplateResponseData>
        for super::StatusPageTemplateResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusPageTemplateResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::StatusPageTemplateResponseData>
        for StatusPageTemplateResponseData {
            fn from(value: super::StatusPageTemplateResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusResponse {
            data: ::std::result::Result<
                super::StatusResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl StatusResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusResponse> for super::StatusResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::StatusResponse> for StatusResponse {
            fn from(value: super::StatusResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct StatusResponseData {
            attributes: ::std::result::Result<super::Status, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::StatusResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for StatusResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl StatusResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Status>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::StatusResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<StatusResponseData> for super::StatusResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: StatusResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::StatusResponseData> for StatusResponseData {
            fn from(value: super::StatusResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SubStatus {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            parent_status: ::std::result::Result<
                super::SubStatusParentStatus,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SubStatus {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    parent_status: Err(
                        "no value supplied for parent_status".to_string(),
                    ),
                    position: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl SubStatus {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SubStatusParentStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for parent_status: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SubStatus> for super::SubStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SubStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    description: value.description?,
                    name: value.name?,
                    parent_status: value.parent_status?,
                    position: value.position?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::SubStatus> for SubStatus {
            fn from(value: super::SubStatus) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    parent_status: Ok(value.parent_status),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SubStatusList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::SubStatusListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for SubStatusList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl SubStatusList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::SubStatusListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SubStatusList> for super::SubStatusList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SubStatusList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::SubStatusList> for SubStatusList {
            fn from(value: super::SubStatusList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SubStatusListDataItem {
            attributes: ::std::result::Result<super::SubStatus, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SubStatusListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SubStatusListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SubStatusListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SubStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SubStatusListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SubStatusListDataItem>
        for super::SubStatusListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SubStatusListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SubStatusListDataItem>
        for SubStatusListDataItem {
            fn from(value: super::SubStatusListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SubStatusResponse {
            data: ::std::result::Result<
                super::SubStatusResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SubStatusResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl SubStatusResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SubStatusResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SubStatusResponse> for super::SubStatusResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SubStatusResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::SubStatusResponse> for SubStatusResponse {
            fn from(value: super::SubStatusResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct SubStatusResponseData {
            attributes: ::std::result::Result<super::SubStatus, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::SubStatusResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for SubStatusResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl SubStatusResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SubStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::SubStatusResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<SubStatusResponseData>
        for super::SubStatusResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: SubStatusResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::SubStatusResponseData>
        for SubStatusResponseData {
            fn from(value: super::SubStatusResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Team {
            admin_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            alert_broadcast_channel: ::std::result::Result<
                ::std::option::Option<super::TeamAlertBroadcastChannel>,
                ::std::string::String,
            >,
            alert_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_address: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            auto_add_members_scope: ::std::result::Result<
                ::std::option::Option<super::TeamAutoAddMembersScope>,
                ::std::string::String,
            >,
            auto_add_members_when_attached: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_broadcast_channel: ::std::result::Result<
                ::std::option::Option<super::TeamIncidentBroadcastChannel>,
                ::std::string::String,
            >,
            incident_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_service_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagertree_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::TeamPropertiesItem>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::TeamSlackAliasesItem>>,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::TeamSlackChannelsItem>>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            victor_ops_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Team {
            fn default() -> Self {
                Self {
                    admin_ids: Ok(Default::default()),
                    alert_broadcast_channel: Ok(Default::default()),
                    alert_broadcast_enabled: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    alerts_email_address: Ok(Default::default()),
                    alerts_email_enabled: Ok(Default::default()),
                    auto_add_members_scope: Ok(Default::default()),
                    auto_add_members_when_attached: Ok(Default::default()),
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    incident_broadcast_channel: Ok(Default::default()),
                    incident_broadcast_enabled: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    pagerduty_service_id: Ok(Default::default()),
                    pagertree_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    user_ids: Ok(Default::default()),
                    victor_ops_id: Ok(Default::default()),
                }
            }
        }
        impl Team {
            pub fn admin_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.admin_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for admin_ids: {e}")
                    });
                self
            }
            pub fn alert_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TeamAlertBroadcastChannel>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn alert_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_address<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_address = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_address: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_enabled: {e}"
                        )
                    });
                self
            }
            pub fn auto_add_members_scope<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TeamAutoAddMembersScope>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.auto_add_members_scope = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_add_members_scope: {e}"
                        )
                    });
                self
            }
            pub fn auto_add_members_when_attached<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_add_members_when_attached = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_add_members_when_attached: {e}"
                        )
                    });
                self
            }
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn incident_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TeamIncidentBroadcastChannel>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn pagerduty_service_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_service_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_service_id: {e}"
                        )
                    });
                self
            }
            pub fn pagertree_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagertree_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagertree_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::TeamPropertiesItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::TeamSlackAliasesItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::TeamSlackChannelsItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_ids: {e}")
                    });
                self
            }
            pub fn victor_ops_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.victor_ops_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for victor_ops_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Team> for super::Team {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Team,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    admin_ids: value.admin_ids?,
                    alert_broadcast_channel: value.alert_broadcast_channel?,
                    alert_broadcast_enabled: value.alert_broadcast_enabled?,
                    alert_urgency_id: value.alert_urgency_id?,
                    alerts_email_address: value.alerts_email_address?,
                    alerts_email_enabled: value.alerts_email_enabled?,
                    auto_add_members_scope: value.auto_add_members_scope?,
                    auto_add_members_when_attached: value
                        .auto_add_members_when_attached?,
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    created_at: value.created_at?,
                    description: value.description?,
                    external_id: value.external_id?,
                    incident_broadcast_channel: value.incident_broadcast_channel?,
                    incident_broadcast_enabled: value.incident_broadcast_enabled?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    pagerduty_id: value.pagerduty_id?,
                    pagerduty_service_id: value.pagerduty_service_id?,
                    pagertree_id: value.pagertree_id?,
                    position: value.position?,
                    properties: value.properties?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                    user_ids: value.user_ids?,
                    victor_ops_id: value.victor_ops_id?,
                })
            }
        }
        impl ::std::convert::From<super::Team> for Team {
            fn from(value: super::Team) -> Self {
                Self {
                    admin_ids: Ok(value.admin_ids),
                    alert_broadcast_channel: Ok(value.alert_broadcast_channel),
                    alert_broadcast_enabled: Ok(value.alert_broadcast_enabled),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    alerts_email_address: Ok(value.alerts_email_address),
                    alerts_email_enabled: Ok(value.alerts_email_enabled),
                    auto_add_members_scope: Ok(value.auto_add_members_scope),
                    auto_add_members_when_attached: Ok(
                        value.auto_add_members_when_attached,
                    ),
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    external_id: Ok(value.external_id),
                    incident_broadcast_channel: Ok(value.incident_broadcast_channel),
                    incident_broadcast_enabled: Ok(value.incident_broadcast_enabled),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    pagerduty_id: Ok(value.pagerduty_id),
                    pagerduty_service_id: Ok(value.pagerduty_service_id),
                    pagertree_id: Ok(value.pagertree_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                    user_ids: Ok(value.user_ids),
                    victor_ops_id: Ok(value.victor_ops_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamAlertBroadcastChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TeamAlertBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl TeamAlertBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamAlertBroadcastChannel>
        for super::TeamAlertBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamAlertBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::TeamAlertBroadcastChannel>
        for TeamAlertBroadcastChannel {
            fn from(value: super::TeamAlertBroadcastChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamIncidentBroadcastChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TeamIncidentBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl TeamIncidentBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamIncidentBroadcastChannel>
        for super::TeamIncidentBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamIncidentBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::TeamIncidentBroadcastChannel>
        for TeamIncidentBroadcastChannel {
            fn from(value: super::TeamIncidentBroadcastChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::TeamListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for TeamList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl TeamList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::TeamListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamList> for super::TeamList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::TeamList> for TeamList {
            fn from(value: super::TeamList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamListDataItem {
            attributes: ::std::result::Result<super::Team, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::TeamListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TeamListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl TeamListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Team>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::TeamListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamListDataItem> for super::TeamListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::TeamListDataItem> for TeamListDataItem {
            fn from(value: super::TeamListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for TeamPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl TeamPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamPropertiesItem> for super::TeamPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::TeamPropertiesItem> for TeamPropertiesItem {
            fn from(value: super::TeamPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamResponse {
            data: ::std::result::Result<super::TeamResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TeamResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl TeamResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::TeamResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamResponse> for super::TeamResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::TeamResponse> for TeamResponse {
            fn from(value: super::TeamResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamResponseData {
            attributes: ::std::result::Result<super::Team, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::TeamResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TeamResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl TeamResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Team>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::TeamResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamResponseData> for super::TeamResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::TeamResponseData> for TeamResponseData {
            fn from(value: super::TeamResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for TeamSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl TeamSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamSlackAliasesItem>
        for super::TeamSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::TeamSlackAliasesItem> for TeamSlackAliasesItem {
            fn from(value: super::TeamSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TeamSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for TeamSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl TeamSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TeamSlackChannelsItem>
        for super::TeamSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TeamSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::TeamSlackChannelsItem>
        for TeamSlackChannelsItem {
            fn from(value: super::TeamSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TiptapBlockSchema {
            followup_component: ::std::result::Result<
                ::std::option::Option<super::TiptapBlockSchemaFollowupComponent>,
                ::std::string::String,
            >,
            timeline_component: ::std::result::Result<
                ::std::option::Option<super::TiptapBlockSchemaTimelineComponent>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TiptapBlockSchema {
            fn default() -> Self {
                Self {
                    followup_component: Ok(Default::default()),
                    timeline_component: Ok(Default::default()),
                }
            }
        }
        impl TiptapBlockSchema {
            pub fn followup_component<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TiptapBlockSchemaFollowupComponent>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.followup_component = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for followup_component: {e}"
                        )
                    });
                self
            }
            pub fn timeline_component<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TiptapBlockSchemaTimelineComponent>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.timeline_component = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for timeline_component: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TiptapBlockSchema> for super::TiptapBlockSchema {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TiptapBlockSchema,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    followup_component: value.followup_component?,
                    timeline_component: value.timeline_component?,
                })
            }
        }
        impl ::std::convert::From<super::TiptapBlockSchema> for TiptapBlockSchema {
            fn from(value: super::TiptapBlockSchema) -> Self {
                Self {
                    followup_component: Ok(value.followup_component),
                    timeline_component: Ok(value.timeline_component),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TiptapBlockSchemaFollowupComponent {
            data_sort: ::std::result::Result<
                super::TiptapBlockSchemaFollowupComponentDataSort,
                ::std::string::String,
            >,
            html: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for TiptapBlockSchemaFollowupComponent {
            fn default() -> Self {
                Self {
                    data_sort: Ok(
                        super::defaults::tiptap_block_schema_followup_component_data_sort(),
                    ),
                    html: Err("no value supplied for html".to_string()),
                }
            }
        }
        impl TiptapBlockSchemaFollowupComponent {
            pub fn data_sort<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::TiptapBlockSchemaFollowupComponentDataSort,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data_sort = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data_sort: {e}")
                    });
                self
            }
            pub fn html<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.html = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for html: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TiptapBlockSchemaFollowupComponent>
        for super::TiptapBlockSchemaFollowupComponent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TiptapBlockSchemaFollowupComponent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data_sort: value.data_sort?,
                    html: value.html?,
                })
            }
        }
        impl ::std::convert::From<super::TiptapBlockSchemaFollowupComponent>
        for TiptapBlockSchemaFollowupComponent {
            fn from(value: super::TiptapBlockSchemaFollowupComponent) -> Self {
                Self {
                    data_sort: Ok(value.data_sort),
                    html: Ok(value.html),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TiptapBlockSchemaTimelineComponent {
            html: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for TiptapBlockSchemaTimelineComponent {
            fn default() -> Self {
                Self {
                    html: Err("no value supplied for html".to_string()),
                }
            }
        }
        impl TiptapBlockSchemaTimelineComponent {
            pub fn html<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.html = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for html: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TiptapBlockSchemaTimelineComponent>
        for super::TiptapBlockSchemaTimelineComponent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TiptapBlockSchemaTimelineComponent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { html: value.html? })
            }
        }
        impl ::std::convert::From<super::TiptapBlockSchemaTimelineComponent>
        for TiptapBlockSchemaTimelineComponent {
            fn from(value: super::TiptapBlockSchemaTimelineComponent) -> Self {
                Self { html: Ok(value.html) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TriggerWorkflowTaskParams {
            attribute_to_query_by: ::std::result::Result<
                super::TriggerWorkflowTaskParamsAttributeToQueryBy,
                ::std::string::String,
            >,
            check_workflow_conditions: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                super::TriggerWorkflowTaskParamsKind,
                ::std::string::String,
            >,
            resource: ::std::result::Result<
                super::TriggerWorkflowTaskParamsResource,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::TriggerWorkflowTaskParamsTaskType>,
                ::std::string::String,
            >,
            workflow: ::std::result::Result<
                super::TriggerWorkflowTaskParamsWorkflow,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TriggerWorkflowTaskParams {
            fn default() -> Self {
                Self {
                    attribute_to_query_by: Err(
                        "no value supplied for attribute_to_query_by".to_string(),
                    ),
                    check_workflow_conditions: Ok(Default::default()),
                    kind: Err("no value supplied for kind".to_string()),
                    resource: Err("no value supplied for resource".to_string()),
                    task_type: Ok(Default::default()),
                    workflow: Err("no value supplied for workflow".to_string()),
                }
            }
        }
        impl TriggerWorkflowTaskParams {
            pub fn attribute_to_query_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::TriggerWorkflowTaskParamsAttributeToQueryBy,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attribute_to_query_by = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for attribute_to_query_by: {e}"
                        )
                    });
                self
            }
            pub fn check_workflow_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.check_workflow_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for check_workflow_conditions: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::TriggerWorkflowTaskParamsKind>,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn resource<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::TriggerWorkflowTaskParamsResource>,
                T::Error: ::std::fmt::Display,
            {
                self.resource = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TriggerWorkflowTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn workflow<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::TriggerWorkflowTaskParamsWorkflow>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TriggerWorkflowTaskParams>
        for super::TriggerWorkflowTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TriggerWorkflowTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attribute_to_query_by: value.attribute_to_query_by?,
                    check_workflow_conditions: value.check_workflow_conditions?,
                    kind: value.kind?,
                    resource: value.resource?,
                    task_type: value.task_type?,
                    workflow: value.workflow?,
                })
            }
        }
        impl ::std::convert::From<super::TriggerWorkflowTaskParams>
        for TriggerWorkflowTaskParams {
            fn from(value: super::TriggerWorkflowTaskParams) -> Self {
                Self {
                    attribute_to_query_by: Ok(value.attribute_to_query_by),
                    check_workflow_conditions: Ok(value.check_workflow_conditions),
                    kind: Ok(value.kind),
                    resource: Ok(value.resource),
                    task_type: Ok(value.task_type),
                    workflow: Ok(value.workflow),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TriggerWorkflowTaskParamsResource {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TriggerWorkflowTaskParamsResource {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl TriggerWorkflowTaskParamsResource {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TriggerWorkflowTaskParamsResource>
        for super::TriggerWorkflowTaskParamsResource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TriggerWorkflowTaskParamsResource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::TriggerWorkflowTaskParamsResource>
        for TriggerWorkflowTaskParamsResource {
            fn from(value: super::TriggerWorkflowTaskParamsResource) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TriggerWorkflowTaskParamsWorkflow {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TriggerWorkflowTaskParamsWorkflow {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl TriggerWorkflowTaskParamsWorkflow {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TriggerWorkflowTaskParamsWorkflow>
        for super::TriggerWorkflowTaskParamsWorkflow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TriggerWorkflowTaskParamsWorkflow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::TriggerWorkflowTaskParamsWorkflow>
        for TriggerWorkflowTaskParamsWorkflow {
            fn from(value: super::TriggerWorkflowTaskParamsWorkflow) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct TweetTwitterMessageTaskParams {
            message: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::TweetTwitterMessageTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for TweetTwitterMessageTaskParams {
            fn default() -> Self {
                Self {
                    message: Err("no value supplied for message".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl TweetTwitterMessageTaskParams {
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TweetTwitterMessageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<TweetTwitterMessageTaskParams>
        for super::TweetTwitterMessageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: TweetTwitterMessageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    message: value.message?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::TweetTwitterMessageTaskParams>
        for TweetTwitterMessageTaskParams {
            fn from(value: super::TweetTwitterMessageTaskParams) -> Self {
                Self {
                    message: Ok(value.message),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UnassignRoleFromUser {
            data: ::std::result::Result<
                super::UnassignRoleFromUserData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UnassignRoleFromUser {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UnassignRoleFromUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UnassignRoleFromUserData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UnassignRoleFromUser>
        for super::UnassignRoleFromUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UnassignRoleFromUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UnassignRoleFromUser> for UnassignRoleFromUser {
            fn from(value: super::UnassignRoleFromUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UnassignRoleFromUserData {
            attributes: ::std::result::Result<
                super::UnassignRoleFromUserDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UnassignRoleFromUserDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UnassignRoleFromUserData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UnassignRoleFromUserData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UnassignRoleFromUserDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UnassignRoleFromUserDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UnassignRoleFromUserData>
        for super::UnassignRoleFromUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UnassignRoleFromUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UnassignRoleFromUserData>
        for UnassignRoleFromUserData {
            fn from(value: super::UnassignRoleFromUserData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UnassignRoleFromUserDataAttributes {
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UnassignRoleFromUserDataAttributes {
            fn default() -> Self {
                Self {
                    incident_role_id: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl UnassignRoleFromUserDataAttributes {
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UnassignRoleFromUserDataAttributes>
        for super::UnassignRoleFromUserDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UnassignRoleFromUserDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_role_id: value.incident_role_id?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::UnassignRoleFromUserDataAttributes>
        for UnassignRoleFromUserDataAttributes {
            fn from(value: super::UnassignRoleFromUserDataAttributes) -> Self {
                Self {
                    incident_role_id: Ok(value.incident_role_id),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateActionItemTaskParams {
            assigned_to_user: ::std::result::Result<
                ::std::option::Option<super::UpdateActionItemTaskParamsAssignedToUser>,
                ::std::string::String,
            >,
            assigned_to_user_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            attribute_to_query_by: ::std::result::Result<
                super::UpdateActionItemTaskParamsAttributeToQueryBy,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateActionItemTaskParamsPriority>,
                ::std::string::String,
            >,
            query_value: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::UpdateActionItemTaskParamsStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateActionItemTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateActionItemTaskParams {
            fn default() -> Self {
                Self {
                    assigned_to_user: Ok(Default::default()),
                    assigned_to_user_id: Ok(Default::default()),
                    attribute_to_query_by: Err(
                        "no value supplied for attribute_to_query_by".to_string(),
                    ),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    query_value: Err("no value supplied for query_value".to_string()),
                    status: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateActionItemTaskParams {
            pub fn assigned_to_user<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateActionItemTaskParamsAssignedToUser,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user: {e}"
                        )
                    });
                self
            }
            pub fn assigned_to_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user_id: {e}"
                        )
                    });
                self
            }
            pub fn attribute_to_query_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateActionItemTaskParamsAttributeToQueryBy,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attribute_to_query_by = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for attribute_to_query_by: {e}"
                        )
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateActionItemTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn query_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.query_value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for query_value: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateActionItemTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateActionItemTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateActionItemTaskParams>
        for super::UpdateActionItemTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateActionItemTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_to_user: value.assigned_to_user?,
                    assigned_to_user_id: value.assigned_to_user_id?,
                    attribute_to_query_by: value.attribute_to_query_by?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    group_ids: value.group_ids?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    priority: value.priority?,
                    query_value: value.query_value?,
                    status: value.status?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateActionItemTaskParams>
        for UpdateActionItemTaskParams {
            fn from(value: super::UpdateActionItemTaskParams) -> Self {
                Self {
                    assigned_to_user: Ok(value.assigned_to_user),
                    assigned_to_user_id: Ok(value.assigned_to_user_id),
                    attribute_to_query_by: Ok(value.attribute_to_query_by),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    group_ids: Ok(value.group_ids),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    priority: Ok(value.priority),
                    query_value: Ok(value.query_value),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateActionItemTaskParamsAssignedToUser {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateActionItemTaskParamsAssignedToUser {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateActionItemTaskParamsAssignedToUser {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateActionItemTaskParamsAssignedToUser>
        for super::UpdateActionItemTaskParamsAssignedToUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateActionItemTaskParamsAssignedToUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateActionItemTaskParamsAssignedToUser>
        for UpdateActionItemTaskParamsAssignedToUser {
            fn from(value: super::UpdateActionItemTaskParamsAssignedToUser) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAirtableTableRecordTaskParams {
            base_key: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            record_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            table_name: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAirtableTableRecordTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAirtableTableRecordTaskParams {
            fn default() -> Self {
                Self {
                    base_key: Err("no value supplied for base_key".to_string()),
                    custom_fields_mapping: Ok(Default::default()),
                    record_id: Err("no value supplied for record_id".to_string()),
                    table_name: Err("no value supplied for table_name".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateAirtableTableRecordTaskParams {
            pub fn base_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.base_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for base_key: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn record_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.record_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for record_id: {e}")
                    });
                self
            }
            pub fn table_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.table_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for table_name: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAirtableTableRecordTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAirtableTableRecordTaskParams>
        for super::UpdateAirtableTableRecordTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAirtableTableRecordTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    base_key: value.base_key?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    record_id: value.record_id?,
                    table_name: value.table_name?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAirtableTableRecordTaskParams>
        for UpdateAirtableTableRecordTaskParams {
            fn from(value: super::UpdateAirtableTableRecordTaskParams) -> Self {
                Self {
                    base_key: Ok(value.base_key),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    record_id: Ok(value.record_id),
                    table_name: Ok(value.table_name),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlert {
            data: ::std::result::Result<super::UpdateAlertData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateAlert {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlert {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlert> for super::UpdateAlert {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlert,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlert> for UpdateAlert {
            fn from(value: super::UpdateAlert) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertData {
            attributes: ::std::result::Result<
                super::UpdateAlertDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertData> for super::UpdateAlertData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertData> for UpdateAlertData {
            fn from(value: super::UpdateAlertData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertDataAttributes {
            alert_field_values_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<
                        super::UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
                    >,
                >,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            data: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            deduplication_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::UpdateAlertDataAttributesLabelsItem>,
                >,
                ::std::string::String,
            >,
            noise: ::std::result::Result<
                ::std::option::Option<super::UpdateAlertDataAttributesNoise>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertDataAttributes {
            fn default() -> Self {
                Self {
                    alert_field_values_attributes: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    data: Ok(Default::default()),
                    deduplication_key: Ok(Default::default()),
                    description: Ok(Default::default()),
                    ended_at: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    noise: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    source: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    summary: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertDataAttributes {
            pub fn alert_field_values_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<
                            super::UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_values_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_values_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn deduplication_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::UpdateAlertDataAttributesLabelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn noise<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateAlertDataAttributesNoise>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.noise = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for noise: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertDataAttributes>
        for super::UpdateAlertDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_values_attributes: value.alert_field_values_attributes?,
                    alert_urgency_id: value.alert_urgency_id?,
                    data: value.data?,
                    deduplication_key: value.deduplication_key?,
                    description: value.description?,
                    ended_at: value.ended_at?,
                    environment_ids: value.environment_ids?,
                    external_id: value.external_id?,
                    external_url: value.external_url?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    labels: value.labels?,
                    noise: value.noise?,
                    service_ids: value.service_ids?,
                    source: value.source?,
                    started_at: value.started_at?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertDataAttributes>
        for UpdateAlertDataAttributes {
            fn from(value: super::UpdateAlertDataAttributes) -> Self {
                Self {
                    alert_field_values_attributes: Ok(
                        value.alert_field_values_attributes,
                    ),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    data: Ok(value.data),
                    deduplication_key: Ok(value.deduplication_key),
                    description: Ok(value.description),
                    ended_at: Ok(value.ended_at),
                    environment_ids: Ok(value.environment_ids),
                    external_id: Ok(value.external_id),
                    external_url: Ok(value.external_url),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    labels: Ok(value.labels),
                    noise: Ok(value.noise),
                    service_ids: Ok(value.service_ids),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
            alert_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Err(
                        "no value supplied for alert_field_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
        > for super::UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
        > for UpdateAlertDataAttributesAlertFieldValuesAttributesItem {
            fn from(
                value: super::UpdateAlertDataAttributesAlertFieldValuesAttributesItem,
            ) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertDataAttributesLabelsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<
                super::UpdateAlertDataAttributesLabelsItemValue,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertDataAttributesLabelsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateAlertDataAttributesLabelsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertDataAttributesLabelsItemValue,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertDataAttributesLabelsItem>
        for super::UpdateAlertDataAttributesLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertDataAttributesLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertDataAttributesLabelsItem>
        for UpdateAlertDataAttributesLabelsItem {
            fn from(value: super::UpdateAlertDataAttributesLabelsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertEvent {
            data: ::std::result::Result<
                super::UpdateAlertEventData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertEvent {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertEvent {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertEventData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertEvent> for super::UpdateAlertEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertEvent> for UpdateAlertEvent {
            fn from(value: super::UpdateAlertEvent) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertEventData {
            attributes: ::std::result::Result<
                super::UpdateAlertEventDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertEventDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertEventData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertEventData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertEventDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertEventDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertEventData>
        for super::UpdateAlertEventData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertEventData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertEventData> for UpdateAlertEventData {
            fn from(value: super::UpdateAlertEventData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertEventDataAttributes {
            details: ::std::result::Result<::std::string::String, ::std::string::String>,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertEventDataAttributes {
            fn default() -> Self {
                Self {
                    details: Err("no value supplied for details".to_string()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertEventDataAttributes {
            pub fn details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.details = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for details: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertEventDataAttributes>
        for super::UpdateAlertEventDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertEventDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    details: value.details?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertEventDataAttributes>
        for UpdateAlertEventDataAttributes {
            fn from(value: super::UpdateAlertEventDataAttributes) -> Self {
                Self {
                    details: Ok(value.details),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertField {
            data: ::std::result::Result<
                super::UpdateAlertFieldData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertField> for super::UpdateAlertField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertField> for UpdateAlertField {
            fn from(value: super::UpdateAlertField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertFieldData {
            attributes: ::std::result::Result<
                super::UpdateAlertFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertFieldData>
        for super::UpdateAlertFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertFieldData> for UpdateAlertFieldData {
            fn from(value: super::UpdateAlertFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertFieldDataAttributes {
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertFieldDataAttributes {
            fn default() -> Self {
                Self {
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertFieldDataAttributes {
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertFieldDataAttributes>
        for super::UpdateAlertFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { name: value.name? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertFieldDataAttributes>
        for UpdateAlertFieldDataAttributes {
            fn from(value: super::UpdateAlertFieldDataAttributes) -> Self {
                Self { name: Ok(value.name) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertGroup {
            data: ::std::result::Result<
                super::UpdateAlertGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertGroup> for super::UpdateAlertGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertGroup> for UpdateAlertGroup {
            fn from(value: super::UpdateAlertGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertGroupData {
            attributes: ::std::result::Result<
                super::UpdateAlertGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertGroupDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertGroupData>
        for super::UpdateAlertGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertGroupData> for UpdateAlertGroupData {
            fn from(value: super::UpdateAlertGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertGroupDataAttributes {
            attributes: ::std::result::Result<
                ::std::vec::Vec<super::UpdateAlertGroupDataAttributesAttributesItem>,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertGroupDataAttributesConditionType,
                >,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateAlertGroupDataAttributesConditionsItem>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_by_alert_title: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertGroupDataAttributesGroupByAlertTitle,
                >,
                ::std::string::String,
            >,
            group_by_alert_urgency: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertGroupDataAttributesGroupByAlertUrgency,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            targets: ::std::result::Result<
                ::std::vec::Vec<super::UpdateAlertGroupDataAttributesTargetsItem>,
                ::std::string::String,
            >,
            time_window: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertGroupDataAttributes {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    condition_type: Ok(Default::default()),
                    conditions: Ok(Default::default()),
                    description: Ok(Default::default()),
                    group_by_alert_title: Ok(Default::default()),
                    group_by_alert_urgency: Ok(Default::default()),
                    name: Ok(Default::default()),
                    targets: Ok(Default::default()),
                    time_window: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertGroupDataAttributes {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateAlertGroupDataAttributesAttributesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertGroupDataAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateAlertGroupDataAttributesConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_by_alert_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertGroupDataAttributesGroupByAlertTitle,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by_alert_title = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_by_alert_title: {e}"
                        )
                    });
                self
            }
            pub fn group_by_alert_urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertGroupDataAttributesGroupByAlertUrgency,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by_alert_urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for group_by_alert_urgency: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn targets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateAlertGroupDataAttributesTargetsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.targets = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for targets: {e}")
                    });
                self
            }
            pub fn time_window<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_window = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_window: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertGroupDataAttributes>
        for super::UpdateAlertGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    condition_type: value.condition_type?,
                    conditions: value.conditions?,
                    description: value.description?,
                    group_by_alert_title: value.group_by_alert_title?,
                    group_by_alert_urgency: value.group_by_alert_urgency?,
                    name: value.name?,
                    targets: value.targets?,
                    time_window: value.time_window?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertGroupDataAttributes>
        for UpdateAlertGroupDataAttributes {
            fn from(value: super::UpdateAlertGroupDataAttributes) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    condition_type: Ok(value.condition_type),
                    conditions: Ok(value.conditions),
                    description: Ok(value.description),
                    group_by_alert_title: Ok(value.group_by_alert_title),
                    group_by_alert_urgency: Ok(value.group_by_alert_urgency),
                    name: Ok(value.name),
                    targets: Ok(value.targets),
                    time_window: Ok(value.time_window),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertGroupDataAttributesAttributesItem {
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertGroupDataAttributesAttributesItem {
            fn default() -> Self {
                Self {
                    json_path: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertGroupDataAttributesAttributesItem {
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertGroupDataAttributesAttributesItem>
        for super::UpdateAlertGroupDataAttributesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertGroupDataAttributesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    json_path: value.json_path?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertGroupDataAttributesAttributesItem>
        for UpdateAlertGroupDataAttributesAttributesItem {
            fn from(value: super::UpdateAlertGroupDataAttributesAttributesItem) -> Self {
                Self {
                    json_path: Ok(value.json_path),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertGroupDataAttributesConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertGroupDataAttributesConditionsItemConditionableType,
                >,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertGroupDataAttributesConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertGroupDataAttributesConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertGroupDataAttributesConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertGroupDataAttributesConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertGroupDataAttributesConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertGroupDataAttributesConditionsItem>
        for super::UpdateAlertGroupDataAttributesConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertGroupDataAttributesConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertGroupDataAttributesConditionsItem>
        for UpdateAlertGroupDataAttributesConditionsItem {
            fn from(value: super::UpdateAlertGroupDataAttributesConditionsItem) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertGroupDataAttributesTargetsItem {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::UpdateAlertGroupDataAttributesTargetsItemTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertGroupDataAttributesTargetsItem {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl UpdateAlertGroupDataAttributesTargetsItem {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertGroupDataAttributesTargetsItemTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertGroupDataAttributesTargetsItem>
        for super::UpdateAlertGroupDataAttributesTargetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertGroupDataAttributesTargetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertGroupDataAttributesTargetsItem>
        for UpdateAlertGroupDataAttributesTargetsItem {
            fn from(value: super::UpdateAlertGroupDataAttributesTargetsItem) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRoute {
            data: ::std::result::Result<
                super::UpdateAlertRouteData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRoute {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertRoute {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertRouteData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRoute> for super::UpdateAlertRoute {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRoute,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRoute> for UpdateAlertRoute {
            fn from(value: super::UpdateAlertRoute) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRouteData {
            attributes: ::std::result::Result<
                super::UpdateAlertRouteDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertRouteDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRouteData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertRouteData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertRouteDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertRouteDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRouteData>
        for super::UpdateAlertRouteData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRouteData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRouteData> for UpdateAlertRouteData {
            fn from(value: super::UpdateAlertRouteData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRouteDataAttributes {
            alerts_source_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owning_team_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<super::UpdateAlertRouteDataAttributesRulesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRouteDataAttributes {
            fn default() -> Self {
                Self {
                    alerts_source_ids: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owning_team_ids: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRouteDataAttributes {
            pub fn alerts_source_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_ids: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owning_team_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.owning_team_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owning_team_ids: {e}"
                        )
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateAlertRouteDataAttributesRulesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRouteDataAttributes>
        for super::UpdateAlertRouteDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRouteDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_ids: value.alerts_source_ids?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owning_team_ids: value.owning_team_ids?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRouteDataAttributes>
        for UpdateAlertRouteDataAttributes {
            fn from(value: super::UpdateAlertRouteDataAttributes) -> Self {
                Self {
                    alerts_source_ids: Ok(value.alerts_source_ids),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owning_team_ids: Ok(value.owning_team_ids),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRouteDataAttributesRulesItem {
            condition_groups: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
                >,
                ::std::string::String,
            >,
            destinations: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
                >,
                ::std::string::String,
            >,
            fallback_rule: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRouteDataAttributesRulesItem {
            fn default() -> Self {
                Self {
                    condition_groups: Err(
                        "no value supplied for condition_groups".to_string(),
                    ),
                    destinations: Err("no value supplied for destinations".to_string()),
                    fallback_rule: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRouteDataAttributesRulesItem {
            pub fn condition_groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_groups = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_groups: {e}"
                        )
                    });
                self
            }
            pub fn destinations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destinations = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destinations: {e}")
                    });
                self
            }
            pub fn fallback_rule<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fallback_rule = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fallback_rule: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRouteDataAttributesRulesItem>
        for super::UpdateAlertRouteDataAttributesRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRouteDataAttributesRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_groups: value.condition_groups?,
                    destinations: value.destinations?,
                    fallback_rule: value.fallback_rule?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRouteDataAttributesRulesItem>
        for UpdateAlertRouteDataAttributesRulesItem {
            fn from(value: super::UpdateAlertRouteDataAttributesRulesItem) -> Self {
                Self {
                    condition_groups: Ok(value.condition_groups),
                    destinations: Ok(value.destinations),
                    fallback_rule: Ok(value.fallback_rule),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
            fn default() -> Self {
                Self {
                    conditions: Err("no value supplied for conditions".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
        > for super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditions: value.conditions?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
        > for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem {
            fn from(
                value: super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItem,
            ) -> Self {
                Self {
                    conditions: Ok(value.conditions),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            alert_urgency_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
                >,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_ids: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    property_field_condition_type: Err(
                        "no value supplied for property_field_condition_type".to_string(),
                    ),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Err(
                        "no value supplied for property_field_type".to_string(),
                    ),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            pub fn alert_urgency_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_ids: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldConditionType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItemPropertyFieldType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        >
        for super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_ids: value.alert_urgency_ids?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
        > for UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem {
            fn from(
                value: super::UpdateAlertRouteDataAttributesRulesItemConditionGroupsItemConditionsItem,
            ) -> Self {
                Self {
                    alert_urgency_ids: Ok(value.alert_urgency_ids),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
            target_id: ::std::result::Result<::uuid::Uuid, ::std::string::String>,
            target_type: ::std::result::Result<
                super::UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
            fn default() -> Self {
                Self {
                    target_id: Err("no value supplied for target_id".to_string()),
                    target_type: Err("no value supplied for target_type".to_string()),
                }
            }
        }
        impl UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::uuid::Uuid>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAlertRouteDataAttributesRulesItemDestinationsItemTargetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
        > for super::UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
        > for UpdateAlertRouteDataAttributesRulesItemDestinationsItem {
            fn from(
                value: super::UpdateAlertRouteDataAttributesRulesItemDestinationsItem,
            ) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRoutingRule {
            data: ::std::result::Result<
                super::UpdateAlertRoutingRuleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRoutingRule {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertRoutingRule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertRoutingRuleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRoutingRule>
        for super::UpdateAlertRoutingRule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRoutingRule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRoutingRule>
        for UpdateAlertRoutingRule {
            fn from(value: super::UpdateAlertRoutingRule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRoutingRuleData {
            attributes: ::std::result::Result<
                super::UpdateAlertRoutingRuleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertRoutingRuleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRoutingRuleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertRoutingRuleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertRoutingRuleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertRoutingRuleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRoutingRuleData>
        for super::UpdateAlertRoutingRuleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRoutingRuleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRoutingRuleData>
        for UpdateAlertRoutingRuleData {
            fn from(value: super::UpdateAlertRoutingRuleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRoutingRuleDataAttributes {
            alerts_source_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertRoutingRuleDataAttributesConditionType,
                >,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertRoutingRuleDataAttributesConditionsItem,
                >,
                ::std::string::String,
            >,
            destination: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertRoutingRuleDataAttributesDestination,
                >,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owning_team_ids: ::std::result::Result<
                ::std::vec::Vec<::uuid::Uuid>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertRoutingRuleDataAttributes {
            fn default() -> Self {
                Self {
                    alerts_source_id: Ok(Default::default()),
                    condition_type: Ok(Default::default()),
                    conditions: Ok(Default::default()),
                    destination: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owning_team_ids: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRoutingRuleDataAttributes {
            pub fn alerts_source_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_source_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_source_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertRoutingRuleDataAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertRoutingRuleDataAttributesConditionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn destination<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertRoutingRuleDataAttributesDestination,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.destination = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destination: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owning_team_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.owning_team_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owning_team_ids: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRoutingRuleDataAttributes>
        for super::UpdateAlertRoutingRuleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRoutingRuleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alerts_source_id: value.alerts_source_id?,
                    condition_type: value.condition_type?,
                    conditions: value.conditions?,
                    destination: value.destination?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owning_team_ids: value.owning_team_ids?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRoutingRuleDataAttributes>
        for UpdateAlertRoutingRuleDataAttributes {
            fn from(value: super::UpdateAlertRoutingRuleDataAttributes) -> Self {
                Self {
                    alerts_source_id: Ok(value.alerts_source_id),
                    condition_type: Ok(value.condition_type),
                    conditions: Ok(value.conditions),
                    destination: Ok(value.destination),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owning_team_ids: Ok(value.owning_team_ids),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRoutingRuleDataAttributesConditionsItem {
            id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            property_field_condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType,
                >,
                ::std::string::String,
            >,
            property_field_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType,
                >,
                ::std::string::String,
            >,
            property_field_value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            property_field_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertRoutingRuleDataAttributesConditionsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    property_field_condition_type: Ok(Default::default()),
                    property_field_name: Ok(Default::default()),
                    property_field_type: Ok(Default::default()),
                    property_field_value: Ok(Default::default()),
                    property_field_values: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRoutingRuleDataAttributesConditionsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn property_field_condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_condition_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_name: {e}"
                        )
                    });
                self
            }
            pub fn property_field_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertRoutingRuleDataAttributesConditionsItemPropertyFieldType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_type: {e}"
                        )
                    });
                self
            }
            pub fn property_field_value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_value = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_value: {e}"
                        )
                    });
                self
            }
            pub fn property_field_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.property_field_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for property_field_values: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRoutingRuleDataAttributesConditionsItem>
        for super::UpdateAlertRoutingRuleDataAttributesConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRoutingRuleDataAttributesConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    property_field_condition_type: value.property_field_condition_type?,
                    property_field_name: value.property_field_name?,
                    property_field_type: value.property_field_type?,
                    property_field_value: value.property_field_value?,
                    property_field_values: value.property_field_values?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertRoutingRuleDataAttributesConditionsItem,
        > for UpdateAlertRoutingRuleDataAttributesConditionsItem {
            fn from(
                value: super::UpdateAlertRoutingRuleDataAttributesConditionsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    property_field_condition_type: Ok(
                        value.property_field_condition_type,
                    ),
                    property_field_name: Ok(value.property_field_name),
                    property_field_type: Ok(value.property_field_type),
                    property_field_value: Ok(value.property_field_value),
                    property_field_values: Ok(value.property_field_values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertRoutingRuleDataAttributesDestination {
            target_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            target_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertRoutingRuleDataAttributesDestinationTargetType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertRoutingRuleDataAttributesDestination {
            fn default() -> Self {
                Self {
                    target_id: Ok(Default::default()),
                    target_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertRoutingRuleDataAttributesDestination {
            pub fn target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_id: {e}")
                    });
                self
            }
            pub fn target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertRoutingRuleDataAttributesDestinationTargetType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for target_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertRoutingRuleDataAttributesDestination>
        for super::UpdateAlertRoutingRuleDataAttributesDestination {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertRoutingRuleDataAttributesDestination,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    target_id: value.target_id?,
                    target_type: value.target_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertRoutingRuleDataAttributesDestination>
        for UpdateAlertRoutingRuleDataAttributesDestination {
            fn from(
                value: super::UpdateAlertRoutingRuleDataAttributesDestination,
            ) -> Self {
                Self {
                    target_id: Ok(value.target_id),
                    target_type: Ok(value.target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertUrgency {
            data: ::std::result::Result<
                super::UpdateAlertUrgencyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertUrgency {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertUrgency {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertUrgencyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertUrgency> for super::UpdateAlertUrgency {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertUrgency,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertUrgency> for UpdateAlertUrgency {
            fn from(value: super::UpdateAlertUrgency) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertUrgencyData {
            attributes: ::std::result::Result<
                super::UpdateAlertUrgencyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertUrgencyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertUrgencyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertUrgencyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertUrgencyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertUrgencyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertUrgencyData>
        for super::UpdateAlertUrgencyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertUrgencyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertUrgencyData>
        for UpdateAlertUrgencyData {
            fn from(value: super::UpdateAlertUrgencyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertUrgencyDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertUrgencyDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertUrgencyDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertUrgencyDataAttributes>
        for super::UpdateAlertUrgencyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertUrgencyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertUrgencyDataAttributes>
        for UpdateAlertUrgencyDataAttributes {
            fn from(value: super::UpdateAlertUrgencyDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSource {
            data: ::std::result::Result<
                super::UpdateAlertsSourceData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertsSource {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAlertsSource {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertsSourceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertsSource> for super::UpdateAlertsSource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAlertsSource> for UpdateAlertsSource {
            fn from(value: super::UpdateAlertsSource) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceData {
            attributes: ::std::result::Result<
                super::UpdateAlertsSourceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAlertsSourceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertsSourceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAlertsSourceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertsSourceDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAlertsSourceDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertsSourceData>
        for super::UpdateAlertsSourceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertsSourceData>
        for UpdateAlertsSourceData {
            fn from(value: super::UpdateAlertsSourceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributes {
            alert_source_fields_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
                >,
                ::std::string::String,
            >,
            alert_source_urgency_rules_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
                >,
                ::std::string::String,
            >,
            alert_template_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
                >,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            deduplicate_alerts_by_key: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            deduplication_key_kind: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesDeduplicationKeyKind,
                >,
                ::std::string::String,
            >,
            deduplication_key_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            deduplication_key_regexp: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            resolution_rule_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
                >,
                ::std::string::String,
            >,
            source_type: ::std::result::Result<
                ::std::option::Option<super::UpdateAlertsSourceDataAttributesSourceType>,
                ::std::string::String,
            >,
            sourceable_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesSourceableAttributes,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAlertsSourceDataAttributes {
            fn default() -> Self {
                Self {
                    alert_source_fields_attributes: Ok(Default::default()),
                    alert_source_urgency_rules_attributes: Ok(Default::default()),
                    alert_template_attributes: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    deduplicate_alerts_by_key: Ok(Default::default()),
                    deduplication_key_kind: Ok(Default::default()),
                    deduplication_key_path: Ok(Default::default()),
                    deduplication_key_regexp: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    resolution_rule_attributes: Ok(Default::default()),
                    source_type: Ok(Default::default()),
                    sourceable_attributes: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributes {
            pub fn alert_source_fields_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_source_fields_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_source_fields_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_source_urgency_rules_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_source_urgency_rules_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_source_urgency_rules_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_template_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_template_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_template_attributes: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn deduplicate_alerts_by_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplicate_alerts_by_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplicate_alerts_by_key: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesDeduplicationKeyKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_kind: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_path: {e}"
                        )
                    });
                self
            }
            pub fn deduplication_key_regexp<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.deduplication_key_regexp = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for deduplication_key_regexp: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn resolution_rule_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_rule_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_rule_attributes: {e}"
                        )
                    });
                self
            }
            pub fn source_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesSourceType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.source_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source_type: {e}")
                    });
                self
            }
            pub fn sourceable_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesSourceableAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.sourceable_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sourceable_attributes: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAlertsSourceDataAttributes>
        for super::UpdateAlertsSourceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_source_fields_attributes: value
                        .alert_source_fields_attributes?,
                    alert_source_urgency_rules_attributes: value
                        .alert_source_urgency_rules_attributes?,
                    alert_template_attributes: value.alert_template_attributes?,
                    alert_urgency_id: value.alert_urgency_id?,
                    deduplicate_alerts_by_key: value.deduplicate_alerts_by_key?,
                    deduplication_key_kind: value.deduplication_key_kind?,
                    deduplication_key_path: value.deduplication_key_path?,
                    deduplication_key_regexp: value.deduplication_key_regexp?,
                    enabled: value.enabled?,
                    name: value.name?,
                    owner_group_ids: value.owner_group_ids?,
                    resolution_rule_attributes: value.resolution_rule_attributes?,
                    source_type: value.source_type?,
                    sourceable_attributes: value.sourceable_attributes?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAlertsSourceDataAttributes>
        for UpdateAlertsSourceDataAttributes {
            fn from(value: super::UpdateAlertsSourceDataAttributes) -> Self {
                Self {
                    alert_source_fields_attributes: Ok(
                        value.alert_source_fields_attributes,
                    ),
                    alert_source_urgency_rules_attributes: Ok(
                        value.alert_source_urgency_rules_attributes,
                    ),
                    alert_template_attributes: Ok(value.alert_template_attributes),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    deduplicate_alerts_by_key: Ok(value.deduplicate_alerts_by_key),
                    deduplication_key_kind: Ok(value.deduplication_key_kind),
                    deduplication_key_path: Ok(value.deduplication_key_path),
                    deduplication_key_regexp: Ok(value.deduplication_key_regexp),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    owner_group_ids: Ok(value.owner_group_ids),
                    resolution_rule_attributes: Ok(value.resolution_rule_attributes),
                    source_type: Ok(value.source_type),
                    sourceable_attributes: Ok(value.sourceable_attributes),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            alert_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            template_body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            fn default() -> Self {
                Self {
                    alert_field_id: Ok(Default::default()),
                    template_body: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            pub fn alert_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_field_id: {e}"
                        )
                    });
                self
            }
            pub fn template_body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_body: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
        > for super::UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_field_id: value.alert_field_id?,
                    template_body: value.template_body?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
        > for UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesAlertSourceFieldsAttributesItem,
            ) -> Self {
                Self {
                    alert_field_id: Ok(value.alert_field_id),
                    template_body: Ok(value.template_body),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType,
                >,
                ::std::string::String,
            >,
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind,
                >,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Ok(Default::default()),
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    json_path: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItemOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
        >
        for super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    json_path: value.json_path?,
                    kind: value.kind?,
                    operator: value.operator?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
        > for UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesAlertSourceUrgencyRulesAttributesItem,
            ) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    json_path: Ok(value.json_path),
                    kind: Ok(value.kind),
                    operator: Ok(value.operator),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
        > for super::UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    external_url: value.external_url?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
        > for UpdateAlertsSourceDataAttributesAlertTemplateAttributes {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesAlertTemplateAttributes,
            ) -> Self {
                Self {
                    description: Ok(value.description),
                    external_url: Ok(value.external_url),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType,
                >,
                ::std::string::String,
            >,
            conditions_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
                >,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            identifier_json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            identifier_matchable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            identifier_matchable_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType,
                >,
                ::std::string::String,
            >,
            identifier_reference_kind: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind,
                >,
                ::std::string::String,
            >,
            identifier_value_regex: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
            fn default() -> Self {
                Self {
                    condition_type: Ok(Default::default()),
                    conditions_attributes: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    identifier_json_path: Ok(Default::default()),
                    identifier_matchable_id: Ok(Default::default()),
                    identifier_matchable_type: Ok(Default::default()),
                    identifier_reference_kind: Ok(Default::default()),
                    identifier_value_regex: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditions_attributes: {e}"
                        )
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn identifier_json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_json_path: {e}"
                        )
                    });
                self
            }
            pub fn identifier_matchable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_matchable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_matchable_id: {e}"
                        )
                    });
                self
            }
            pub fn identifier_matchable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierMatchableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_matchable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_matchable_type: {e}"
                        )
                    });
                self
            }
            pub fn identifier_reference_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesIdentifierReferenceKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_reference_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_reference_kind: {e}"
                        )
                    });
                self
            }
            pub fn identifier_value_regex<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.identifier_value_regex = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for identifier_value_regex: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
        > for super::UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition_type: value.condition_type?,
                    conditions_attributes: value.conditions_attributes?,
                    enabled: value.enabled?,
                    identifier_json_path: value.identifier_json_path?,
                    identifier_matchable_id: value.identifier_matchable_id?,
                    identifier_matchable_type: value.identifier_matchable_type?,
                    identifier_reference_kind: value.identifier_reference_kind?,
                    identifier_value_regex: value.identifier_value_regex?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
        > for UpdateAlertsSourceDataAttributesResolutionRuleAttributes {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesResolutionRuleAttributes,
            ) -> Self {
                Self {
                    condition_type: Ok(value.condition_type),
                    conditions_attributes: Ok(value.conditions_attributes),
                    enabled: Ok(value.enabled),
                    identifier_json_path: Ok(value.identifier_json_path),
                    identifier_matchable_id: Ok(value.identifier_matchable_id),
                    identifier_matchable_type: Ok(value.identifier_matchable_type),
                    identifier_reference_kind: Ok(value.identifier_reference_kind),
                    identifier_value_regex: Ok(value.identifier_value_regex),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            conditionable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            conditionable_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType,
                >,
                ::std::string::String,
            >,
            field: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind,
                >,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            fn default() -> Self {
                Self {
                    conditionable_id: Ok(Default::default()),
                    conditionable_type: Ok(Default::default()),
                    field: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    operator: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            pub fn conditionable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_id: {e}"
                        )
                    });
                self
            }
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemConditionableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn field<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.field = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItemOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
        >
        for super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_id: value.conditionable_id?,
                    conditionable_type: value.conditionable_type?,
                    field: value.field?,
                    kind: value.kind?,
                    operator: value.operator?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
        >
        for UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesResolutionRuleAttributesConditionsAttributesItem,
            ) -> Self {
                Self {
                    conditionable_id: Ok(value.conditionable_id),
                    conditionable_type: Ok(value.conditionable_type),
                    field: Ok(value.field),
                    kind: Ok(value.kind),
                    operator: Ok(value.operator),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesSourceableAttributes {
            accept_threaded_emails: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            auto_resolve: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            field_mappings_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
                >,
                ::std::string::String,
            >,
            resolve_state: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesSourceableAttributes {
            fn default() -> Self {
                Self {
                    accept_threaded_emails: Ok(Default::default()),
                    auto_resolve: Ok(Default::default()),
                    field_mappings_attributes: Ok(Default::default()),
                    resolve_state: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesSourceableAttributes {
            pub fn accept_threaded_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.accept_threaded_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for accept_threaded_emails: {e}"
                        )
                    });
                self
            }
            pub fn auto_resolve<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_resolve = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auto_resolve: {e}")
                    });
                self
            }
            pub fn field_mappings_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field_mappings_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for field_mappings_attributes: {e}"
                        )
                    });
                self
            }
            pub fn resolve_state<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolve_state = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolve_state: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesSourceableAttributes,
        > for super::UpdateAlertsSourceDataAttributesSourceableAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesSourceableAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    accept_threaded_emails: value.accept_threaded_emails?,
                    auto_resolve: value.auto_resolve?,
                    field_mappings_attributes: value.field_mappings_attributes?,
                    resolve_state: value.resolve_state?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesSourceableAttributes,
        > for UpdateAlertsSourceDataAttributesSourceableAttributes {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesSourceableAttributes,
            ) -> Self {
                Self {
                    accept_threaded_emails: Ok(value.accept_threaded_emails),
                    auto_resolve: Ok(value.auto_resolve),
                    field_mappings_attributes: Ok(value.field_mappings_attributes),
                    resolve_state: Ok(value.resolve_state),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            field: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField,
                >,
                ::std::string::String,
            >,
            json_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            fn default() -> Self {
                Self {
                    field: Ok(Default::default()),
                    json_path: Ok(Default::default()),
                }
            }
        }
        impl UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            pub fn field<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItemField,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.field = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for field: {e}")
                    });
                self
            }
            pub fn json_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.json_path = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for json_path: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
        >
        for super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    field: value.field?,
                    json_path: value.json_path?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
        >
        for UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem {
            fn from(
                value: super::UpdateAlertsSourceDataAttributesSourceableAttributesFieldMappingsAttributesItem,
            ) -> Self {
                Self {
                    field: Ok(value.field),
                    json_path: Ok(value.json_path),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateApiKey {
            data: ::std::result::Result<super::UpdateApiKeyData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateApiKey {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateApiKey {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateApiKeyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateApiKey> for super::UpdateApiKey {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateApiKey,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateApiKey> for UpdateApiKey {
            fn from(value: super::UpdateApiKey) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateApiKeyData {
            attributes: ::std::result::Result<
                super::UpdateApiKeyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateApiKeyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateApiKeyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateApiKeyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateApiKeyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateApiKeyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateApiKeyData> for super::UpdateApiKeyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateApiKeyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateApiKeyData> for UpdateApiKeyData {
            fn from(value: super::UpdateApiKeyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateApiKeyDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expires_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateApiKeyDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    expires_at: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateApiKeyDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expires_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.expires_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expires_at: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateApiKeyDataAttributes>
        for super::UpdateApiKeyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateApiKeyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    expires_at: value.expires_at?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateApiKeyDataAttributes>
        for UpdateApiKeyDataAttributes {
            fn from(value: super::UpdateApiKeyDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    expires_at: Ok(value.expires_at),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAsanaTaskTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completion: ::std::result::Result<
                super::UpdateAsanaTaskTaskParamsCompletion,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            dependency_direction: ::std::result::Result<
                super::UpdateAsanaTaskTaskParamsDependencyDirection,
                ::std::string::String,
            >,
            dependent_task_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notes: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateAsanaTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAsanaTaskTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    completion: Err("no value supplied for completion".to_string()),
                    custom_fields_mapping: Ok(Default::default()),
                    dependency_direction: Ok(
                        super::defaults::update_asana_task_task_params_dependency_direction(),
                    ),
                    dependent_task_ids: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    notes: Ok(Default::default()),
                    task_id: Err("no value supplied for task_id".to_string()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateAsanaTaskTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAsanaTaskTaskParamsCompletion>,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn dependency_direction<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateAsanaTaskTaskParamsDependencyDirection,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dependency_direction = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for dependency_direction: {e}"
                        )
                    });
                self
            }
            pub fn dependent_task_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.dependent_task_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for dependent_task_ids: {e}"
                        )
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn notes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.notes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notes: {e}")
                    });
                self
            }
            pub fn task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateAsanaTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAsanaTaskTaskParams>
        for super::UpdateAsanaTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAsanaTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    dependency_direction: value.dependency_direction?,
                    dependent_task_ids: value.dependent_task_ids?,
                    due_date: value.due_date?,
                    notes: value.notes?,
                    task_id: value.task_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAsanaTaskTaskParams>
        for UpdateAsanaTaskTaskParams {
            fn from(value: super::UpdateAsanaTaskTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    dependency_direction: Ok(value.dependency_direction),
                    dependent_task_ids: Ok(value.dependent_task_ids),
                    due_date: Ok(value.due_date),
                    notes: Ok(value.notes),
                    task_id: Ok(value.task_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAsanaTaskTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAsanaTaskTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateAsanaTaskTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAsanaTaskTaskParamsCompletion>
        for super::UpdateAsanaTaskTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAsanaTaskTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAsanaTaskTaskParamsCompletion>
        for UpdateAsanaTaskTaskParamsCompletion {
            fn from(value: super::UpdateAsanaTaskTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAttachedAlertsTaskParams {
            status: ::std::result::Result<
                super::UpdateAttachedAlertsTaskParamsStatus,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateAttachedAlertsTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAttachedAlertsTaskParams {
            fn default() -> Self {
                Self {
                    status: Err("no value supplied for status".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateAttachedAlertsTaskParams {
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAttachedAlertsTaskParamsStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateAttachedAlertsTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAttachedAlertsTaskParams>
        for super::UpdateAttachedAlertsTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAttachedAlertsTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    status: value.status?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAttachedAlertsTaskParams>
        for UpdateAttachedAlertsTaskParams {
            fn from(value: super::UpdateAttachedAlertsTaskParams) -> Self {
                Self {
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAuthorization {
            data: ::std::result::Result<
                super::UpdateAuthorizationData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAuthorization {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateAuthorization {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAuthorizationData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAuthorization>
        for super::UpdateAuthorization {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAuthorization,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateAuthorization> for UpdateAuthorization {
            fn from(value: super::UpdateAuthorization) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAuthorizationData {
            attributes: ::std::result::Result<
                super::UpdateAuthorizationDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateAuthorizationDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAuthorizationData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateAuthorizationData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAuthorizationDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateAuthorizationDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAuthorizationData>
        for super::UpdateAuthorizationData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAuthorizationData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAuthorizationData>
        for UpdateAuthorizationData {
            fn from(value: super::UpdateAuthorizationData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateAuthorizationDataAttributes {
            permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateAuthorizationDataAttributesPermissionsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateAuthorizationDataAttributes {
            fn default() -> Self {
                Self {
                    permissions: Ok(Default::default()),
                }
            }
        }
        impl UpdateAuthorizationDataAttributes {
            pub fn permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateAuthorizationDataAttributesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for permissions: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateAuthorizationDataAttributes>
        for super::UpdateAuthorizationDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateAuthorizationDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    permissions: value.permissions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateAuthorizationDataAttributes>
        for UpdateAuthorizationDataAttributes {
            fn from(value: super::UpdateAuthorizationDataAttributes) -> Self {
                Self {
                    permissions: Ok(value.permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalog {
            data: ::std::result::Result<super::UpdateCatalogData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateCatalog {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCatalog {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalog> for super::UpdateCatalog {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalog,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCatalog> for UpdateCatalog {
            fn from(value: super::UpdateCatalog) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogChecklistTemplate {
            data: ::std::result::Result<
                super::UpdateCatalogChecklistTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogChecklistTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCatalogChecklistTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogChecklistTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogChecklistTemplate>
        for super::UpdateCatalogChecklistTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogChecklistTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogChecklistTemplate>
        for UpdateCatalogChecklistTemplate {
            fn from(value: super::UpdateCatalogChecklistTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogChecklistTemplateData {
            attributes: ::std::result::Result<
                super::UpdateCatalogChecklistTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCatalogChecklistTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogChecklistTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogChecklistTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCatalogChecklistTemplateDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCatalogChecklistTemplateDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogChecklistTemplateData>
        for super::UpdateCatalogChecklistTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogChecklistTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogChecklistTemplateData>
        for UpdateCatalogChecklistTemplateData {
            fn from(value: super::UpdateCatalogChecklistTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogChecklistTemplateDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            fields: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateCatalogChecklistTemplateDataAttributesFieldsItem,
                    >,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owners: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateCatalogChecklistTemplateDataAttributesOwnersItem,
                    >,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogChecklistTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    fields: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owners: Ok(Default::default()),
                }
            }
        }
        impl UpdateCatalogChecklistTemplateDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateCatalogChecklistTemplateDataAttributesFieldsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.fields = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fields: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owners<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateCatalogChecklistTemplateDataAttributesOwnersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owners = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owners: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogChecklistTemplateDataAttributes>
        for super::UpdateCatalogChecklistTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogChecklistTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    fields: value.fields?,
                    name: value.name?,
                    owners: value.owners?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogChecklistTemplateDataAttributes>
        for UpdateCatalogChecklistTemplateDataAttributes {
            fn from(value: super::UpdateCatalogChecklistTemplateDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    fields: Ok(value.fields),
                    name: Ok(value.name),
                    owners: Ok(value.owners),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UpdateCatalogChecklistTemplateDataAttributesOwnersItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCatalogChecklistTemplateDataAttributesOwnersItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateCatalogChecklistTemplateDataAttributesOwnersItem,
        > for super::UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogChecklistTemplateDataAttributesOwnersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateCatalogChecklistTemplateDataAttributesOwnersItem,
        > for UpdateCatalogChecklistTemplateDataAttributesOwnersItem {
            fn from(
                value: super::UpdateCatalogChecklistTemplateDataAttributesOwnersItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogData {
            attributes: ::std::result::Result<
                super::UpdateCatalogDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCatalogDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogData> for super::UpdateCatalogData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogData> for UpdateCatalogData {
            fn from(value: super::UpdateCatalogData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<super::UpdateCatalogDataAttributesIcon>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateCatalogDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateCatalogDataAttributesIcon>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogDataAttributes>
        for super::UpdateCatalogDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    icon: value.icon?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogDataAttributes>
        for UpdateCatalogDataAttributes {
            fn from(value: super::UpdateCatalogDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntity {
            data: ::std::result::Result<
                super::UpdateCatalogEntityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogEntity {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCatalogEntity {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogEntityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntity>
        for super::UpdateCatalogEntity {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntity,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntity> for UpdateCatalogEntity {
            fn from(value: super::UpdateCatalogEntity) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntityData {
            attributes: ::std::result::Result<
                super::UpdateCatalogEntityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCatalogEntityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogEntityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogEntityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogEntityDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogEntityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntityData>
        for super::UpdateCatalogEntityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntityData>
        for UpdateCatalogEntityData {
            fn from(value: super::UpdateCatalogEntityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntityDataAttributes {
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateCatalogEntityDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogEntityDataAttributes {
            fn default() -> Self {
                Self {
                    backstage_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                }
            }
        }
        impl UpdateCatalogEntityDataAttributes {
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateCatalogEntityDataAttributesPropertiesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntityDataAttributes>
        for super::UpdateCatalogEntityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    backstage_id: value.backstage_id?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    properties: value.properties?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntityDataAttributes>
        for UpdateCatalogEntityDataAttributes {
            fn from(value: super::UpdateCatalogEntityDataAttributes) -> Self {
                Self {
                    backstage_id: Ok(value.backstage_id),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntityDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateCatalogEntityDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateCatalogEntityDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntityDataAttributesPropertiesItem>
        for super::UpdateCatalogEntityDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntityDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntityDataAttributesPropertiesItem>
        for UpdateCatalogEntityDataAttributesPropertiesItem {
            fn from(
                value: super::UpdateCatalogEntityDataAttributesPropertiesItem,
            ) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntityProperty {
            data: ::std::result::Result<
                super::UpdateCatalogEntityPropertyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogEntityProperty {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCatalogEntityProperty {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogEntityPropertyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntityProperty>
        for super::UpdateCatalogEntityProperty {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntityProperty,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntityProperty>
        for UpdateCatalogEntityProperty {
            fn from(value: super::UpdateCatalogEntityProperty) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntityPropertyData {
            attributes: ::std::result::Result<
                super::UpdateCatalogEntityPropertyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCatalogEntityPropertyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogEntityPropertyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogEntityPropertyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCatalogEntityPropertyDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogEntityPropertyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntityPropertyData>
        for super::UpdateCatalogEntityPropertyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntityPropertyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntityPropertyData>
        for UpdateCatalogEntityPropertyData {
            fn from(value: super::UpdateCatalogEntityPropertyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogEntityPropertyDataAttributes {
            key: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateCatalogEntityPropertyDataAttributesKey,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogEntityPropertyDataAttributes {
            fn default() -> Self {
                Self {
                    key: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateCatalogEntityPropertyDataAttributes {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateCatalogEntityPropertyDataAttributesKey,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogEntityPropertyDataAttributes>
        for super::UpdateCatalogEntityPropertyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogEntityPropertyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogEntityPropertyDataAttributes>
        for UpdateCatalogEntityPropertyDataAttributes {
            fn from(value: super::UpdateCatalogEntityPropertyDataAttributes) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogField {
            data: ::std::result::Result<
                super::UpdateCatalogFieldData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCatalogField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogField> for super::UpdateCatalogField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogField> for UpdateCatalogField {
            fn from(value: super::UpdateCatalogField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogFieldData {
            attributes: ::std::result::Result<
                super::UpdateCatalogFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCatalogFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogFieldData>
        for super::UpdateCatalogFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogFieldData>
        for UpdateCatalogFieldData {
            fn from(value: super::UpdateCatalogFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogFieldDataAttributes {
            catalog_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateCatalogFieldDataAttributesCatalogType,
                >,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateCatalogFieldDataAttributesKind>,
                ::std::string::String,
            >,
            kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogFieldDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_type: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    kind_catalog_id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                }
            }
        }
        impl UpdateCatalogFieldDataAttributes {
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateCatalogFieldDataAttributesCatalogType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateCatalogFieldDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kind_catalog_id: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogFieldDataAttributes>
        for super::UpdateCatalogFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_type: value.catalog_type?,
                    kind: value.kind?,
                    kind_catalog_id: value.kind_catalog_id?,
                    name: value.name?,
                    position: value.position?,
                    required: value.required?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogFieldDataAttributes>
        for UpdateCatalogFieldDataAttributes {
            fn from(value: super::UpdateCatalogFieldDataAttributes) -> Self {
                Self {
                    catalog_type: Ok(value.catalog_type),
                    kind: Ok(value.kind),
                    kind_catalog_id: Ok(value.kind_catalog_id),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    required: Ok(value.required),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogProperty {
            data: ::std::result::Result<
                super::UpdateCatalogPropertyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogProperty {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCatalogProperty {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogPropertyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogProperty>
        for super::UpdateCatalogProperty {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogProperty,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogProperty>
        for UpdateCatalogProperty {
            fn from(value: super::UpdateCatalogProperty) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogPropertyData {
            attributes: ::std::result::Result<
                super::UpdateCatalogPropertyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCatalogPropertyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogPropertyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCatalogPropertyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogPropertyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCatalogPropertyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogPropertyData>
        for super::UpdateCatalogPropertyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogPropertyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogPropertyData>
        for UpdateCatalogPropertyData {
            fn from(value: super::UpdateCatalogPropertyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCatalogPropertyDataAttributes {
            catalog_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateCatalogPropertyDataAttributesCatalogType,
                >,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateCatalogPropertyDataAttributesKind>,
                ::std::string::String,
            >,
            kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCatalogPropertyDataAttributes {
            fn default() -> Self {
                Self {
                    catalog_type: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    kind_catalog_id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                }
            }
        }
        impl UpdateCatalogPropertyDataAttributes {
            pub fn catalog_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateCatalogPropertyDataAttributesCatalogType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for catalog_type: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateCatalogPropertyDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kind_catalog_id: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCatalogPropertyDataAttributes>
        for super::UpdateCatalogPropertyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCatalogPropertyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_type: value.catalog_type?,
                    kind: value.kind?,
                    kind_catalog_id: value.kind_catalog_id?,
                    name: value.name?,
                    position: value.position?,
                    required: value.required?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCatalogPropertyDataAttributes>
        for UpdateCatalogPropertyDataAttributes {
            fn from(value: super::UpdateCatalogPropertyDataAttributes) -> Self {
                Self {
                    catalog_type: Ok(value.catalog_type),
                    kind: Ok(value.kind),
                    kind_catalog_id: Ok(value.kind_catalog_id),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    required: Ok(value.required),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCause {
            data: ::std::result::Result<super::UpdateCauseData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateCause {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCause {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCauseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCause> for super::UpdateCause {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCause,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCause> for UpdateCause {
            fn from(value: super::UpdateCause) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCauseData {
            attributes: ::std::result::Result<
                super::UpdateCauseDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCauseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCauseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCauseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCauseDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCauseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCauseData> for super::UpdateCauseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCauseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCauseData> for UpdateCauseData {
            fn from(value: super::UpdateCauseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCauseDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateCauseDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCauseDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                }
            }
        }
        impl UpdateCauseDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateCauseDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCauseDataAttributes>
        for super::UpdateCauseDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCauseDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                    properties: value.properties?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCauseDataAttributes>
        for UpdateCauseDataAttributes {
            fn from(value: super::UpdateCauseDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCauseDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateCauseDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateCauseDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCauseDataAttributesPropertiesItem>
        for super::UpdateCauseDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCauseDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCauseDataAttributesPropertiesItem>
        for UpdateCauseDataAttributesPropertiesItem {
            fn from(value: super::UpdateCauseDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateClickupTaskTaskParams {
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateClickupTaskTaskParamsPriority>,
                ::std::string::String,
            >,
            tags: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateClickupTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateClickupTaskTaskParams {
            fn default() -> Self {
                Self {
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    tags: Ok(Default::default()),
                    task_id: Err("no value supplied for task_id".to_string()),
                    task_payload: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateClickupTaskTaskParams {
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateClickupTaskTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn tags<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.tags = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tags: {e}")
                    });
                self
            }
            pub fn task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_id: {e}")
                    });
                self
            }
            pub fn task_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.task_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_payload: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateClickupTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateClickupTaskTaskParams>
        for super::UpdateClickupTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateClickupTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    due_date: value.due_date?,
                    priority: value.priority?,
                    tags: value.tags?,
                    task_id: value.task_id?,
                    task_payload: value.task_payload?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateClickupTaskTaskParams>
        for UpdateClickupTaskTaskParams {
            fn from(value: super::UpdateClickupTaskTaskParams) -> Self {
                Self {
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    priority: Ok(value.priority),
                    tags: Ok(value.tags),
                    task_id: Ok(value.task_id),
                    task_payload: Ok(value.task_payload),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateClickupTaskTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateClickupTaskTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateClickupTaskTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateClickupTaskTaskParamsPriority>
        for super::UpdateClickupTaskTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateClickupTaskTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateClickupTaskTaskParamsPriority>
        for UpdateClickupTaskTaskParamsPriority {
            fn from(value: super::UpdateClickupTaskTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCodaPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            doc_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            page_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            subtitle: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateCodaPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::UpdateCodaPageTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCodaPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    doc_id: Ok(Default::default()),
                    page_id: Err("no value supplied for page_id".to_string()),
                    subtitle: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateCodaPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn doc_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.doc_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for doc_id: {e}")
                    });
                self
            }
            pub fn page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for page_id: {e}")
                    });
                self
            }
            pub fn subtitle<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subtitle = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtitle: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateCodaPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateCodaPageTaskParamsTemplate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCodaPageTaskParams>
        for super::UpdateCodaPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCodaPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    doc_id: value.doc_id?,
                    page_id: value.page_id?,
                    subtitle: value.subtitle?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCodaPageTaskParams>
        for UpdateCodaPageTaskParams {
            fn from(value: super::UpdateCodaPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    doc_id: Ok(value.doc_id),
                    page_id: Ok(value.page_id),
                    subtitle: Ok(value.subtitle),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCodaPageTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCodaPageTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateCodaPageTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCodaPageTaskParamsTemplate>
        for super::UpdateCodaPageTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCodaPageTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCodaPageTaskParamsTemplate>
        for UpdateCodaPageTaskParamsTemplate {
            fn from(value: super::UpdateCodaPageTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsGroup {
            data: ::std::result::Result<
                super::UpdateCommunicationsGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCommunicationsGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsGroup>
        for super::UpdateCommunicationsGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsGroup>
        for UpdateCommunicationsGroup {
            fn from(value: super::UpdateCommunicationsGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsGroupData {
            attributes: ::std::result::Result<
                super::UpdateCommunicationsGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCommunicationsGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCommunicationsGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCommunicationsGroupDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsGroupData>
        for super::UpdateCommunicationsGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsGroupData>
        for UpdateCommunicationsGroupData {
            fn from(value: super::UpdateCommunicationsGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsGroupDataAttributes {
            communication_external_group_members: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_group_conditions: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_type_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            condition_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateCommunicationsGroupDataAttributesConditionType,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_channel: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            is_private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            member_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            sms_channel: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsGroupDataAttributes {
            fn default() -> Self {
                Self {
                    communication_external_group_members: Ok(Default::default()),
                    communication_group_conditions: Ok(Default::default()),
                    communication_type_id: Ok(Default::default()),
                    condition_type: Ok(Default::default()),
                    description: Ok(Default::default()),
                    email_channel: Ok(Default::default()),
                    is_private: Ok(Default::default()),
                    member_ids: Ok(Default::default()),
                    name: Ok(Default::default()),
                    slack_channel_ids: Ok(Default::default()),
                    sms_channel: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsGroupDataAttributes {
            pub fn communication_external_group_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_external_group_members = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_external_group_members: {e}"
                        )
                    });
                self
            }
            pub fn communication_group_conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_group_conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_group_conditions: {e}"
                        )
                    });
                self
            }
            pub fn communication_type_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type_id: {e}"
                        )
                    });
                self
            }
            pub fn condition_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateCommunicationsGroupDataAttributesConditionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_type: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn email_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_channel: {e}")
                    });
                self
            }
            pub fn is_private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_private: {e}")
                    });
                self
            }
            pub fn member_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.member_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_ids: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn slack_channel_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_ids: {e}"
                        )
                    });
                self
            }
            pub fn sms_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.sms_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sms_channel: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsGroupDataAttributes>
        for super::UpdateCommunicationsGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_external_group_members: value
                        .communication_external_group_members?,
                    communication_group_conditions: value
                        .communication_group_conditions?,
                    communication_type_id: value.communication_type_id?,
                    condition_type: value.condition_type?,
                    description: value.description?,
                    email_channel: value.email_channel?,
                    is_private: value.is_private?,
                    member_ids: value.member_ids?,
                    name: value.name?,
                    slack_channel_ids: value.slack_channel_ids?,
                    sms_channel: value.sms_channel?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsGroupDataAttributes>
        for UpdateCommunicationsGroupDataAttributes {
            fn from(value: super::UpdateCommunicationsGroupDataAttributes) -> Self {
                Self {
                    communication_external_group_members: Ok(
                        value.communication_external_group_members,
                    ),
                    communication_group_conditions: Ok(
                        value.communication_group_conditions,
                    ),
                    communication_type_id: Ok(value.communication_type_id),
                    condition_type: Ok(value.condition_type),
                    description: Ok(value.description),
                    email_channel: Ok(value.email_channel),
                    is_private: Ok(value.is_private),
                    member_ids: Ok(value.member_ids),
                    name: Ok(value.name),
                    slack_channel_ids: Ok(value.slack_channel_ids),
                    sms_channel: Ok(value.sms_channel),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            phone_number: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            fn default() -> Self {
                Self {
                    email: Ok(Default::default()),
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    phone_number: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn phone_number<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone_number = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_number: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
        >
        for super::UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    email: value.email?,
                    id: value.id?,
                    name: value.name?,
                    phone_number: value.phone_number?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
        >
        for UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem {
            fn from(
                value: super::UpdateCommunicationsGroupDataAttributesCommunicationExternalGroupMembersItem,
            ) -> Self {
                Self {
                    email: Ok(value.email),
                    id: Ok(value.id),
                    name: Ok(value.name),
                    phone_number: Ok(value.phone_number),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            property_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            fn default() -> Self {
                Self {
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    id: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    property_type: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn property_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItemPropertyType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for property_type: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
        >
        for super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    id: value.id?,
                    incident_type_ids: value.incident_type_ids?,
                    property_type: value.property_type?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
        > for UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem {
            fn from(
                value: super::UpdateCommunicationsGroupDataAttributesCommunicationGroupConditionsItem,
            ) -> Self {
                Self {
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    id: Ok(value.id),
                    incident_type_ids: Ok(value.incident_type_ids),
                    property_type: Ok(value.property_type),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsStage {
            data: ::std::result::Result<
                super::UpdateCommunicationsStageData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsStage {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCommunicationsStage {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsStageData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsStage>
        for super::UpdateCommunicationsStage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsStage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsStage>
        for UpdateCommunicationsStage {
            fn from(value: super::UpdateCommunicationsStage) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsStageData {
            attributes: ::std::result::Result<
                super::UpdateCommunicationsStageDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCommunicationsStageDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsStageData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCommunicationsStageData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCommunicationsStageDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsStageDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsStageData>
        for super::UpdateCommunicationsStageData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsStageData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsStageData>
        for UpdateCommunicationsStageData {
            fn from(value: super::UpdateCommunicationsStageData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsStageDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsStageDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsStageDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsStageDataAttributes>
        for super::UpdateCommunicationsStageDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsStageDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsStageDataAttributes>
        for UpdateCommunicationsStageDataAttributes {
            fn from(value: super::UpdateCommunicationsStageDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsTemplate {
            data: ::std::result::Result<
                super::UpdateCommunicationsTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCommunicationsTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsTemplate>
        for super::UpdateCommunicationsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsTemplate>
        for UpdateCommunicationsTemplate {
            fn from(value: super::UpdateCommunicationsTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsTemplateData {
            attributes: ::std::result::Result<
                super::UpdateCommunicationsTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCommunicationsTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCommunicationsTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCommunicationsTemplateDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsTemplateData>
        for super::UpdateCommunicationsTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsTemplateData>
        for UpdateCommunicationsTemplateData {
            fn from(value: super::UpdateCommunicationsTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsTemplateDataAttributes {
            communication_template_stages_attributes: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
                    >,
                >,
                ::std::string::String,
            >,
            communication_type_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    communication_template_stages_attributes: Ok(Default::default()),
                    communication_type_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsTemplateDataAttributes {
            pub fn communication_template_stages_attributes<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_template_stages_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_template_stages_attributes: {e}"
                        )
                    });
                self
            }
            pub fn communication_type_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.communication_type_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_type_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsTemplateDataAttributes>
        for super::UpdateCommunicationsTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    communication_template_stages_attributes: value
                        .communication_template_stages_attributes?,
                    communication_type_id: value.communication_type_id?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsTemplateDataAttributes>
        for UpdateCommunicationsTemplateDataAttributes {
            fn from(value: super::UpdateCommunicationsTemplateDataAttributes) -> Self {
                Self {
                    communication_template_stages_attributes: Ok(
                        value.communication_template_stages_attributes,
                    ),
                    communication_type_id: Ok(value.communication_type_id),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            email_body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email_subject: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sms_content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            fn default() -> Self {
                Self {
                    email_body: Ok(Default::default()),
                    email_subject: Ok(Default::default()),
                    id: Ok(Default::default()),
                    slack_content: Ok(Default::default()),
                    sms_content: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            pub fn email_body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_body: {e}")
                    });
                self
            }
            pub fn email_subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email_subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email_subject: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn slack_content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_content: {e}")
                    });
                self
            }
            pub fn sms_content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sms_content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sms_content: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
        >
        for super::UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    email_body: value.email_body?,
                    email_subject: value.email_subject?,
                    id: value.id?,
                    slack_content: value.slack_content?,
                    sms_content: value.sms_content?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
        >
        for UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem {
            fn from(
                value: super::UpdateCommunicationsTemplateDataAttributesCommunicationTemplateStagesAttributesItem,
            ) -> Self {
                Self {
                    email_body: Ok(value.email_body),
                    email_subject: Ok(value.email_subject),
                    id: Ok(value.id),
                    slack_content: Ok(value.slack_content),
                    sms_content: Ok(value.sms_content),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsType {
            data: ::std::result::Result<
                super::UpdateCommunicationsTypeData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsType {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCommunicationsType {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsTypeData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsType>
        for super::UpdateCommunicationsType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsType>
        for UpdateCommunicationsType {
            fn from(value: super::UpdateCommunicationsType) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsTypeData {
            attributes: ::std::result::Result<
                super::UpdateCommunicationsTypeDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCommunicationsTypeDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsTypeData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCommunicationsTypeData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateCommunicationsTypeDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCommunicationsTypeDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsTypeData>
        for super::UpdateCommunicationsTypeData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsTypeData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsTypeData>
        for UpdateCommunicationsTypeData {
            fn from(value: super::UpdateCommunicationsTypeData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCommunicationsTypeDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCommunicationsTypeDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateCommunicationsTypeDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCommunicationsTypeDataAttributes>
        for super::UpdateCommunicationsTypeDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCommunicationsTypeDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCommunicationsTypeDataAttributes>
        for UpdateCommunicationsTypeDataAttributes {
            fn from(value: super::UpdateCommunicationsTypeDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateConfluencePageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            integration: ::std::result::Result<
                ::std::option::Option<super::UpdateConfluencePageTaskParamsIntegration>,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateConfluencePageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::UpdateConfluencePageTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateConfluencePageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    integration: Ok(Default::default()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateConfluencePageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn integration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateConfluencePageTaskParamsIntegration,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for integration: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateConfluencePageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateConfluencePageTaskParamsTemplate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateConfluencePageTaskParams>
        for super::UpdateConfluencePageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateConfluencePageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    integration: value.integration?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateConfluencePageTaskParams>
        for UpdateConfluencePageTaskParams {
            fn from(value: super::UpdateConfluencePageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    integration: Ok(value.integration),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateConfluencePageTaskParamsIntegration {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateConfluencePageTaskParamsIntegration {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateConfluencePageTaskParamsIntegration {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateConfluencePageTaskParamsIntegration>
        for super::UpdateConfluencePageTaskParamsIntegration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateConfluencePageTaskParamsIntegration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateConfluencePageTaskParamsIntegration>
        for UpdateConfluencePageTaskParamsIntegration {
            fn from(value: super::UpdateConfluencePageTaskParamsIntegration) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateConfluencePageTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateConfluencePageTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateConfluencePageTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateConfluencePageTaskParamsTemplate>
        for super::UpdateConfluencePageTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateConfluencePageTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateConfluencePageTaskParamsTemplate>
        for UpdateConfluencePageTaskParamsTemplate {
            fn from(value: super::UpdateConfluencePageTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomField {
            data: ::std::result::Result<
                super::UpdateCustomFieldData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCustomField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomField> for super::UpdateCustomField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCustomField> for UpdateCustomField {
            fn from(value: super::UpdateCustomField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFieldData {
            attributes: ::std::result::Result<
                super::UpdateCustomFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCustomFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCustomFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFieldData>
        for super::UpdateCustomFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFieldData>
        for UpdateCustomFieldData {
            fn from(value: super::UpdateCustomFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFieldDataAttributes {
            default: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            label: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateCustomFieldDataAttributesRequiredItem>,
                >,
                ::std::string::String,
            >,
            shown: ::std::result::Result<
                ::std::vec::Vec<super::UpdateCustomFieldDataAttributesShownItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFieldDataAttributes {
            fn default() -> Self {
                Self {
                    default: Ok(Default::default()),
                    description: Ok(Default::default()),
                    label: Ok(Default::default()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                    shown: Ok(Default::default()),
                }
            }
        }
        impl UpdateCustomFieldDataAttributes {
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn label<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.label = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for label: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateCustomFieldDataAttributesRequiredItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn shown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateCustomFieldDataAttributesShownItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shown = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shown: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFieldDataAttributes>
        for super::UpdateCustomFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    default: value.default?,
                    description: value.description?,
                    label: value.label?,
                    position: value.position?,
                    required: value.required?,
                    shown: value.shown?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFieldDataAttributes>
        for UpdateCustomFieldDataAttributes {
            fn from(value: super::UpdateCustomFieldDataAttributes) -> Self {
                Self {
                    default: Ok(value.default),
                    description: Ok(value.description),
                    label: Ok(value.label),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    shown: Ok(value.shown),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFieldOption {
            data: ::std::result::Result<
                super::UpdateCustomFieldOptionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFieldOption {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCustomFieldOption {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFieldOptionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFieldOption>
        for super::UpdateCustomFieldOption {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFieldOption,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFieldOption>
        for UpdateCustomFieldOption {
            fn from(value: super::UpdateCustomFieldOption) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFieldOptionData {
            attributes: ::std::result::Result<
                super::UpdateCustomFieldOptionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCustomFieldOptionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFieldOptionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCustomFieldOptionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFieldOptionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFieldOptionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFieldOptionData>
        for super::UpdateCustomFieldOptionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFieldOptionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFieldOptionData>
        for UpdateCustomFieldOptionData {
            fn from(value: super::UpdateCustomFieldOptionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFieldOptionDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFieldOptionDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    default: Ok(Default::default()),
                    position: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateCustomFieldOptionDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFieldOptionDataAttributes>
        for super::UpdateCustomFieldOptionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFieldOptionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    default: value.default?,
                    position: value.position?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFieldOptionDataAttributes>
        for UpdateCustomFieldOptionDataAttributes {
            fn from(value: super::UpdateCustomFieldOptionDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    default: Ok(value.default),
                    position: Ok(value.position),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomForm {
            data: ::std::result::Result<
                super::UpdateCustomFormData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomForm {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateCustomForm {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFormData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomForm> for super::UpdateCustomForm {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomForm,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateCustomForm> for UpdateCustomForm {
            fn from(value: super::UpdateCustomForm) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFormData {
            attributes: ::std::result::Result<
                super::UpdateCustomFormDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateCustomFormDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFormData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateCustomFormData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFormDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateCustomFormDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFormData>
        for super::UpdateCustomFormData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFormData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFormData> for UpdateCustomFormData {
            fn from(value: super::UpdateCustomFormData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateCustomFormDataAttributes {
            command: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateCustomFormDataAttributes {
            fn default() -> Self {
                Self {
                    command: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateCustomFormDataAttributes {
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateCustomFormDataAttributes>
        for super::UpdateCustomFormDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateCustomFormDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    command: value.command?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateCustomFormDataAttributes>
        for UpdateCustomFormDataAttributes {
            fn from(value: super::UpdateCustomFormDataAttributes) -> Self {
                Self {
                    command: Ok(value.command),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboard {
            data: ::std::result::Result<
                super::UpdateDashboardData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboard {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateDashboard {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateDashboardData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboard> for super::UpdateDashboard {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboard,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateDashboard> for UpdateDashboard {
            fn from(value: super::UpdateDashboard) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardData>
        for super::UpdateDashboardData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardData> for UpdateDashboardData {
            fn from(value: super::UpdateDashboardData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardDataAttributes {
            auto_refresh: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardDataAttributesColor>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardDataAttributesOwner>,
                ::std::string::String,
            >,
            period: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardDataAttributesPeriod>,
                ::std::string::String,
            >,
            public: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            range: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardDataAttributes {
            fn default() -> Self {
                Self {
                    auto_refresh: Ok(Default::default()),
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owner: Ok(Default::default()),
                    period: Ok(Default::default()),
                    public: Ok(Default::default()),
                    range: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardDataAttributes {
            pub fn auto_refresh<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_refresh = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for auto_refresh: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardDataAttributesColor>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardDataAttributesOwner>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner: {e}")
                    });
                self
            }
            pub fn period<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardDataAttributesPeriod>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.period = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for period: {e}")
                    });
                self
            }
            pub fn public<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.public = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public: {e}")
                    });
                self
            }
            pub fn range<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.range = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for range: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardDataAttributes>
        for super::UpdateDashboardDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_refresh: value.auto_refresh?,
                    color: value.color?,
                    description: value.description?,
                    icon: value.icon?,
                    name: value.name?,
                    owner: value.owner?,
                    period: value.period?,
                    public: value.public?,
                    range: value.range?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardDataAttributes>
        for UpdateDashboardDataAttributes {
            fn from(value: super::UpdateDashboardDataAttributes) -> Self {
                Self {
                    auto_refresh: Ok(value.auto_refresh),
                    color: Ok(value.color),
                    description: Ok(value.description),
                    icon: Ok(value.icon),
                    name: Ok(value.name),
                    owner: Ok(value.owner),
                    period: Ok(value.period),
                    public: Ok(value.public),
                    range: Ok(value.range),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanel {
            data: ::std::result::Result<
                super::UpdateDashboardPanelData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardPanel {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateDashboardPanel {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateDashboardPanelData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanel>
        for super::UpdateDashboardPanel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardPanel> for UpdateDashboardPanel {
            fn from(value: super::UpdateDashboardPanel) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardPanelDataAttributes>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardPanelDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardPanelData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardPanelDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDashboardPanelDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanelData>
        for super::UpdateDashboardPanelData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardPanelData>
        for UpdateDashboardPanelData {
            fn from(value: super::UpdateDashboardPanelData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributes {
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            params: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardPanelDataAttributesParams>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<super::UpdateDashboardPanelDataAttributesPosition>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardPanelDataAttributes {
            fn default() -> Self {
                Self {
                    name: Ok(Default::default()),
                    params: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributes {
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for params: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesPosition,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanelDataAttributes>
        for super::UpdateDashboardPanelDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    name: value.name?,
                    params: value.params?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardPanelDataAttributes>
        for UpdateDashboardPanelDataAttributes {
            fn from(value: super::UpdateDashboardPanelDataAttributes) -> Self {
                Self {
                    name: Ok(value.name),
                    params: Ok(value.params),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParams {
            datalabels: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatalabels,
                >,
                ::std::string::String,
            >,
            datasets: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItem,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            display: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDisplay,
                >,
                ::std::string::String,
            >,
            legend: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsLegend,
                >,
                ::std::string::String,
            >,
            table_fields: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardPanelDataAttributesParams {
            fn default() -> Self {
                Self {
                    datalabels: Ok(Default::default()),
                    datasets: Ok(Default::default()),
                    description: Ok(Default::default()),
                    display: Ok(Default::default()),
                    legend: Ok(Default::default()),
                    table_fields: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParams {
            pub fn datalabels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatalabels,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.datalabels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for datalabels: {e}")
                    });
                self
            }
            pub fn datasets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.datasets = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for datasets: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn display<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDisplay,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.display = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for display: {e}")
                    });
                self
            }
            pub fn legend<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsLegend,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.legend = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for legend: {e}")
                    });
                self
            }
            pub fn table_fields<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.table_fields = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for table_fields: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanelDataAttributesParams>
        for super::UpdateDashboardPanelDataAttributesParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    datalabels: value.datalabels?,
                    datasets: value.datasets?,
                    description: value.description?,
                    display: value.display?,
                    legend: value.legend?,
                    table_fields: value.table_fields?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardPanelDataAttributesParams>
        for UpdateDashboardPanelDataAttributesParams {
            fn from(value: super::UpdateDashboardPanelDataAttributesParams) -> Self {
                Self {
                    datalabels: Ok(value.datalabels),
                    datasets: Ok(value.datasets),
                    description: Ok(value.description),
                    display: Ok(value.display),
                    legend: Ok(value.legend),
                    table_fields: Ok(value.table_fields),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsDatalabels {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateDashboardPanelDataAttributesParamsDatalabels {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsDatalabels {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanelDataAttributesParamsDatalabels>
        for super::UpdateDashboardPanelDataAttributesParamsDatalabels {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsDatalabels,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { enabled: value.enabled? })
            }
        }
        impl ::std::convert::From<
            super::UpdateDashboardPanelDataAttributesParamsDatalabels,
        > for UpdateDashboardPanelDataAttributesParamsDatalabels {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsDatalabels,
            ) -> Self {
                Self { enabled: Ok(value.enabled) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItem {
            aggregate: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
                >,
                ::std::string::String,
            >,
            collection: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection,
                >,
                ::std::string::String,
            >,
            filter: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
                >,
                ::std::string::String,
            >,
            group_by: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateDashboardPanelDataAttributesParamsDatasetsItem {
            fn default() -> Self {
                Self {
                    aggregate: Ok(Default::default()),
                    collection: Ok(Default::default()),
                    filter: Ok(Default::default()),
                    group_by: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsDatasetsItem {
            pub fn aggregate<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.aggregate = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for aggregate: {e}")
                    });
                self
            }
            pub fn collection<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemCollection,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.collection = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for collection: {e}")
                    });
                self
            }
            pub fn filter<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.filter = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for filter: {e}")
                    });
                self
            }
            pub fn group_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupBy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_by: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateDashboardPanelDataAttributesParamsDatasetsItem,
        > for super::UpdateDashboardPanelDataAttributesParamsDatasetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsDatasetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    aggregate: value.aggregate?,
                    collection: value.collection?,
                    filter: value.filter?,
                    group_by: value.group_by?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateDashboardPanelDataAttributesParamsDatasetsItem,
        > for UpdateDashboardPanelDataAttributesParamsDatasetsItem {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsDatasetsItem,
            ) -> Self {
                Self {
                    aggregate: Ok(value.aggregate),
                    collection: Ok(value.collection),
                    filter: Ok(value.filter),
                    group_by: Ok(value.group_by),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            cumulative: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            fn default() -> Self {
                Self {
                    cumulative: Ok(Default::default()),
                    key: Ok(Default::default()),
                    operation: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            pub fn cumulative<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.cumulative = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cumulative: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregateOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
        > for super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cumulative: value.cumulative?,
                    key: value.key?,
                    operation: value.operation?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
        > for UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsDatasetsItemAggregate,
            ) -> Self {
                Self {
                    cumulative: Ok(value.cumulative),
                    key: Ok(value.key),
                    operation: Ok(value.operation),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation,
                >,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            fn default() -> Self {
                Self {
                    operation: Ok(Default::default()),
                    rules: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
        > for super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    operation: value.operation?,
                    rules: value.rules?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
        > for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItem,
            ) -> Self {
                Self {
                    operation: Ok(value.operation),
                    rules: Ok(value.rules),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            condition: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            operation: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation,
                >,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            fn default() -> Self {
                Self {
                    condition: Ok(Default::default()),
                    key: Ok(Default::default()),
                    operation: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            pub fn condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.condition = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for condition: {e}")
                    });
                self
            }
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn operation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItemOperation,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.operation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operation: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
        >
        for super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    condition: value.condition?,
                    key: value.key?,
                    operation: value.operation?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
        > for UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsDatasetsItemFilterItemRulesItem,
            ) -> Self {
                Self {
                    condition: Ok(value.condition),
                    key: Ok(value.key),
                    operation: Ok(value.operation),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            key: ::std::result::Result<
                super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1Key,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
        >
        for super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
        > for UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1 {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsDatasetsItemGroupByVariant1,
            ) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesParamsLegend {
            groups: ::std::result::Result<
                super::UpdateDashboardPanelDataAttributesParamsLegendGroups,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDashboardPanelDataAttributesParamsLegend {
            fn default() -> Self {
                Self {
                    groups: Ok(
                        super::defaults::update_dashboard_panel_data_attributes_params_legend_groups(),
                    ),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesParamsLegend {
            pub fn groups<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateDashboardPanelDataAttributesParamsLegendGroups,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for groups: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanelDataAttributesParamsLegend>
        for super::UpdateDashboardPanelDataAttributesParamsLegend {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesParamsLegend,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { groups: value.groups? })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardPanelDataAttributesParamsLegend>
        for UpdateDashboardPanelDataAttributesParamsLegend {
            fn from(
                value: super::UpdateDashboardPanelDataAttributesParamsLegend,
            ) -> Self {
                Self { groups: Ok(value.groups) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDashboardPanelDataAttributesPosition {
            h: ::std::result::Result<f64, ::std::string::String>,
            w: ::std::result::Result<f64, ::std::string::String>,
            x: ::std::result::Result<f64, ::std::string::String>,
            y: ::std::result::Result<f64, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateDashboardPanelDataAttributesPosition {
            fn default() -> Self {
                Self {
                    h: Err("no value supplied for h".to_string()),
                    w: Err("no value supplied for w".to_string()),
                    x: Err("no value supplied for x".to_string()),
                    y: Err("no value supplied for y".to_string()),
                }
            }
        }
        impl UpdateDashboardPanelDataAttributesPosition {
            pub fn h<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.h = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for h: {e}"));
                self
            }
            pub fn w<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.w = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for w: {e}"));
                self
            }
            pub fn x<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.x = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for x: {e}"));
                self
            }
            pub fn y<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<f64>,
                T::Error: ::std::fmt::Display,
            {
                self.y = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for y: {e}"));
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDashboardPanelDataAttributesPosition>
        for super::UpdateDashboardPanelDataAttributesPosition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDashboardPanelDataAttributesPosition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    h: value.h?,
                    w: value.w?,
                    x: value.x?,
                    y: value.y?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDashboardPanelDataAttributesPosition>
        for UpdateDashboardPanelDataAttributesPosition {
            fn from(value: super::UpdateDashboardPanelDataAttributesPosition) -> Self {
                Self {
                    h: Ok(value.h),
                    w: Ok(value.w),
                    x: Ok(value.x),
                    y: Ok(value.y),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDatadogNotebookTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateDatadogNotebookTaskParamsKind>,
                ::std::string::String,
            >,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateDatadogNotebookTaskParamsTaskType>,
                ::std::string::String,
            >,
            template: ::std::result::Result<
                ::std::option::Option<super::UpdateDatadogNotebookTaskParamsTemplate>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDatadogNotebookTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    kind: Ok(Default::default()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateDatadogNotebookTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDatadogNotebookTaskParamsKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDatadogNotebookTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDatadogNotebookTaskParamsTemplate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.template = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDatadogNotebookTaskParams>
        for super::UpdateDatadogNotebookTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDatadogNotebookTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    kind: value.kind?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template: value.template?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDatadogNotebookTaskParams>
        for UpdateDatadogNotebookTaskParams {
            fn from(value: super::UpdateDatadogNotebookTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    kind: Ok(value.kind),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template: Ok(value.template),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDatadogNotebookTaskParamsTemplate {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDatadogNotebookTaskParamsTemplate {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateDatadogNotebookTaskParamsTemplate {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDatadogNotebookTaskParamsTemplate>
        for super::UpdateDatadogNotebookTaskParamsTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDatadogNotebookTaskParamsTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDatadogNotebookTaskParamsTemplate>
        for UpdateDatadogNotebookTaskParamsTemplate {
            fn from(value: super::UpdateDatadogNotebookTaskParamsTemplate) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateDropboxPaperPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateDropboxPaperPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateDropboxPaperPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateDropboxPaperPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateDropboxPaperPageTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateDropboxPaperPageTaskParams>
        for super::UpdateDropboxPaperPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateDropboxPaperPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateDropboxPaperPageTaskParams>
        for UpdateDropboxPaperPageTaskParams {
            fn from(value: super::UpdateDropboxPaperPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnector {
            edge_connector: ::std::result::Result<
                super::UpdateEdgeConnectorEdgeConnector,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnector {
            fn default() -> Self {
                Self {
                    edge_connector: Err(
                        "no value supplied for edge_connector".to_string(),
                    ),
                }
            }
        }
        impl UpdateEdgeConnector {
            pub fn edge_connector<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEdgeConnectorEdgeConnector>,
                T::Error: ::std::fmt::Display,
            {
                self.edge_connector = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for edge_connector: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnector>
        for super::UpdateEdgeConnector {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnector,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    edge_connector: value.edge_connector?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnector> for UpdateEdgeConnector {
            fn from(value: super::UpdateEdgeConnector) -> Self {
                Self {
                    edge_connector: Ok(value.edge_connector),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorAction {
            action: ::std::result::Result<
                super::UpdateEdgeConnectorActionAction,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorAction {
            fn default() -> Self {
                Self {
                    action: Err("no value supplied for action".to_string()),
                }
            }
        }
        impl UpdateEdgeConnectorAction {
            pub fn action<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEdgeConnectorActionAction>,
                T::Error: ::std::fmt::Display,
            {
                self.action = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorAction>
        for super::UpdateEdgeConnectorAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { action: value.action? })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorAction>
        for UpdateEdgeConnectorAction {
            fn from(value: super::UpdateEdgeConnectorAction) -> Self {
                Self { action: Ok(value.action) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorActionAction {
            action_type: ::std::result::Result<
                ::std::option::Option<super::UpdateEdgeConnectorActionActionActionType>,
                ::std::string::String,
            >,
            metadata: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorActionAction {
            fn default() -> Self {
                Self {
                    action_type: Ok(Default::default()),
                    metadata: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorActionAction {
            pub fn action_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEdgeConnectorActionActionActionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action_type: {e}")
                    });
                self
            }
            pub fn metadata<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.metadata = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for metadata: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorActionAction>
        for super::UpdateEdgeConnectorActionAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorActionAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_type: value.action_type?,
                    metadata: value.metadata?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorActionAction>
        for UpdateEdgeConnectorActionAction {
            fn from(value: super::UpdateEdgeConnectorActionAction) -> Self {
                Self {
                    action_type: Ok(value.action_type),
                    metadata: Ok(value.metadata),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorActionBody {
            action: ::std::result::Result<
                ::std::option::Option<super::UpdateEdgeConnectorActionBodyAction>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorActionBody {
            fn default() -> Self {
                Self {
                    action: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorActionBody {
            pub fn action<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateEdgeConnectorActionBodyAction>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorActionBody>
        for super::UpdateEdgeConnectorActionBody {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorActionBody,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { action: value.action? })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorActionBody>
        for UpdateEdgeConnectorActionBody {
            fn from(value: super::UpdateEdgeConnectorActionBody) -> Self {
                Self { action: Ok(value.action) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorActionBodyAction {
            action_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEdgeConnectorActionBodyActionActionType,
                >,
                ::std::string::String,
            >,
            metadata: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorActionBodyAction {
            fn default() -> Self {
                Self {
                    action_type: Ok(Default::default()),
                    metadata: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorActionBodyAction {
            pub fn action_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEdgeConnectorActionBodyActionActionType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.action_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for action_type: {e}")
                    });
                self
            }
            pub fn metadata<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.metadata = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for metadata: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorActionBodyAction>
        for super::UpdateEdgeConnectorActionBodyAction {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorActionBodyAction,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_type: value.action_type?,
                    metadata: value.metadata?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorActionBodyAction>
        for UpdateEdgeConnectorActionBodyAction {
            fn from(value: super::UpdateEdgeConnectorActionBodyAction) -> Self {
                Self {
                    action_type: Ok(value.action_type),
                    metadata: Ok(value.metadata),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorBody {
            data: ::std::result::Result<
                ::std::option::Option<super::UpdateEdgeConnectorBodyData>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorBody {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorBody {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateEdgeConnectorBodyData>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorBody>
        for super::UpdateEdgeConnectorBody {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorBody,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorBody>
        for UpdateEdgeConnectorBody {
            fn from(value: super::UpdateEdgeConnectorBody) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorBodyData {
            attributes: ::std::result::Result<
                ::std::option::Option<super::UpdateEdgeConnectorBodyDataAttributes>,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                ::std::option::Option<super::UpdateEdgeConnectorBodyDataType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorBodyData {
            fn default() -> Self {
                Self {
                    attributes: Ok(Default::default()),
                    id: Ok(Default::default()),
                    type_: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorBodyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateEdgeConnectorBodyDataAttributes>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateEdgeConnectorBodyDataType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorBodyData>
        for super::UpdateEdgeConnectorBodyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorBodyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorBodyData>
        for UpdateEdgeConnectorBodyData {
            fn from(value: super::UpdateEdgeConnectorBodyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorBodyDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            filters: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEdgeConnectorBodyDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            subscriptions: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorBodyDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    filters: Ok(Default::default()),
                    name: Ok(Default::default()),
                    status: Ok(Default::default()),
                    subscriptions: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorBodyDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn filters<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.filters = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for filters: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEdgeConnectorBodyDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn subscriptions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subscriptions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subscriptions: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorBodyDataAttributes>
        for super::UpdateEdgeConnectorBodyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorBodyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    filters: value.filters?,
                    name: value.name?,
                    status: value.status?,
                    subscriptions: value.subscriptions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorBodyDataAttributes>
        for UpdateEdgeConnectorBodyDataAttributes {
            fn from(value: super::UpdateEdgeConnectorBodyDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    filters: Ok(value.filters),
                    name: Ok(value.name),
                    status: Ok(value.status),
                    subscriptions: Ok(value.subscriptions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEdgeConnectorEdgeConnector {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::UpdateEdgeConnectorEdgeConnectorStatus>,
                ::std::string::String,
            >,
            subscriptions: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEdgeConnectorEdgeConnector {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    status: Ok(Default::default()),
                    subscriptions: Ok(Default::default()),
                }
            }
        }
        impl UpdateEdgeConnectorEdgeConnector {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateEdgeConnectorEdgeConnectorStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn subscriptions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subscriptions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subscriptions: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEdgeConnectorEdgeConnector>
        for super::UpdateEdgeConnectorEdgeConnector {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEdgeConnectorEdgeConnector,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    status: value.status?,
                    subscriptions: value.subscriptions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEdgeConnectorEdgeConnector>
        for UpdateEdgeConnectorEdgeConnector {
            fn from(value: super::UpdateEdgeConnectorEdgeConnector) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    status: Ok(value.status),
                    subscriptions: Ok(value.subscriptions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEnvironment {
            data: ::std::result::Result<
                super::UpdateEnvironmentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEnvironment {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateEnvironment {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEnvironmentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEnvironment> for super::UpdateEnvironment {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEnvironment,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateEnvironment> for UpdateEnvironment {
            fn from(value: super::UpdateEnvironment) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEnvironmentData {
            attributes: ::std::result::Result<
                super::UpdateEnvironmentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateEnvironmentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEnvironmentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateEnvironmentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEnvironmentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEnvironmentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEnvironmentData>
        for super::UpdateEnvironmentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEnvironmentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEnvironmentData>
        for UpdateEnvironmentData {
            fn from(value: super::UpdateEnvironmentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEnvironmentDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateEnvironmentDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateEnvironmentDataAttributesSlackAliasesItem,
                    >,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateEnvironmentDataAttributesSlackChannelsItem,
                    >,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEnvironmentDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl UpdateEnvironmentDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateEnvironmentDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateEnvironmentDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateEnvironmentDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEnvironmentDataAttributes>
        for super::UpdateEnvironmentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEnvironmentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    properties: value.properties?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEnvironmentDataAttributes>
        for UpdateEnvironmentDataAttributes {
            fn from(value: super::UpdateEnvironmentDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEnvironmentDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateEnvironmentDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateEnvironmentDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEnvironmentDataAttributesPropertiesItem>
        for super::UpdateEnvironmentDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEnvironmentDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEnvironmentDataAttributesPropertiesItem>
        for UpdateEnvironmentDataAttributesPropertiesItem {
            fn from(
                value: super::UpdateEnvironmentDataAttributesPropertiesItem,
            ) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEnvironmentDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateEnvironmentDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateEnvironmentDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEnvironmentDataAttributesSlackAliasesItem>
        for super::UpdateEnvironmentDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEnvironmentDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEnvironmentDataAttributesSlackAliasesItem>
        for UpdateEnvironmentDataAttributesSlackAliasesItem {
            fn from(
                value: super::UpdateEnvironmentDataAttributesSlackAliasesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEnvironmentDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateEnvironmentDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateEnvironmentDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEnvironmentDataAttributesSlackChannelsItem>
        for super::UpdateEnvironmentDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEnvironmentDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateEnvironmentDataAttributesSlackChannelsItem,
        > for UpdateEnvironmentDataAttributesSlackChannelsItem {
            fn from(
                value: super::UpdateEnvironmentDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicy {
            data: ::std::result::Result<
                super::UpdateEscalationPolicyData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicy {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicy {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicy>
        for super::UpdateEscalationPolicy {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicy,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicy>
        for UpdateEscalationPolicy {
            fn from(value: super::UpdateEscalationPolicy) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyData {
            attributes: ::std::result::Result<
                super::UpdateEscalationPolicyDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateEscalationPolicyDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicyData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyData>
        for super::UpdateEscalationPolicyData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyData>
        for UpdateEscalationPolicyData {
            fn from(value: super::UpdateEscalationPolicyData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyDataAttributes {
            business_hours: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyDataAttributesBusinessHours,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repeat_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyDataAttributes {
            fn default() -> Self {
                Self {
                    business_hours: Ok(Default::default()),
                    description: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    name: Ok(Default::default()),
                    repeat_count: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                }
            }
        }
        impl UpdateEscalationPolicyDataAttributes {
            pub fn business_hours<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyDataAttributesBusinessHours,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.business_hours = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for business_hours: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn repeat_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_count: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyDataAttributes>
        for super::UpdateEscalationPolicyDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    business_hours: value.business_hours?,
                    description: value.description?,
                    group_ids: value.group_ids?,
                    name: value.name?,
                    repeat_count: value.repeat_count?,
                    service_ids: value.service_ids?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyDataAttributes>
        for UpdateEscalationPolicyDataAttributes {
            fn from(value: super::UpdateEscalationPolicyDataAttributes) -> Self {
                Self {
                    business_hours: Ok(value.business_hours),
                    description: Ok(value.description),
                    group_ids: Ok(value.group_ids),
                    name: Ok(value.name),
                    repeat_count: Ok(value.repeat_count),
                    service_ids: Ok(value.service_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyDataAttributesBusinessHours {
            days: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem,
                    >,
                >,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateEscalationPolicyDataAttributesBusinessHours {
            fn default() -> Self {
                Self {
                    days: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                }
            }
        }
        impl UpdateEscalationPolicyDataAttributesBusinessHours {
            pub fn days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateEscalationPolicyDataAttributesBusinessHoursDaysItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for days: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyDataAttributesBusinessHoursTimeZone,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyDataAttributesBusinessHours>
        for super::UpdateEscalationPolicyDataAttributesBusinessHours {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyDataAttributesBusinessHours,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    days: value.days?,
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateEscalationPolicyDataAttributesBusinessHours,
        > for UpdateEscalationPolicyDataAttributesBusinessHours {
            fn from(
                value: super::UpdateEscalationPolicyDataAttributesBusinessHours,
            ) -> Self {
                Self {
                    days: Ok(value.days),
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyLevel {
            data: ::std::result::Result<
                super::UpdateEscalationPolicyLevelData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyLevel {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicyLevel {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyLevelData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyLevel>
        for super::UpdateEscalationPolicyLevel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyLevel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyLevel>
        for UpdateEscalationPolicyLevel {
            fn from(value: super::UpdateEscalationPolicyLevel) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyLevelData {
            attributes: ::std::result::Result<
                super::UpdateEscalationPolicyLevelDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateEscalationPolicyLevelDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyLevelData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicyLevelData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateEscalationPolicyLevelDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyLevelDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyLevelData>
        for super::UpdateEscalationPolicyLevelData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyLevelData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyLevelData>
        for UpdateEscalationPolicyLevelData {
            fn from(value: super::UpdateEscalationPolicyLevelData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyLevelDataAttributes {
            delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            escalation_policy_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_params: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
                    >,
                >,
                ::std::string::String,
            >,
            paging_strategy_configuration_schedule_strategy: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy,
                >,
                ::std::string::String,
            >,
            paging_strategy_configuration_strategy: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyLevelDataAttributes {
            fn default() -> Self {
                Self {
                    delay: Ok(Default::default()),
                    escalation_policy_path_id: Ok(Default::default()),
                    notification_target_params: Ok(Default::default()),
                    paging_strategy_configuration_schedule_strategy: Ok(
                        Default::default(),
                    ),
                    paging_strategy_configuration_strategy: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateEscalationPolicyLevelDataAttributes {
            pub fn delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay: {e}")
                    });
                self
            }
            pub fn escalation_policy_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_path_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<
                            super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_params: {e}"
                        )
                    });
                self
            }
            pub fn paging_strategy_configuration_schedule_strategy<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationScheduleStrategy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_strategy_configuration_schedule_strategy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_strategy_configuration_schedule_strategy: {e}"
                        )
                    });
                self
            }
            pub fn paging_strategy_configuration_strategy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyLevelDataAttributesPagingStrategyConfigurationStrategy,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_strategy_configuration_strategy = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_strategy_configuration_strategy: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyLevelDataAttributes>
        for super::UpdateEscalationPolicyLevelDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyLevelDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    delay: value.delay?,
                    escalation_policy_path_id: value.escalation_policy_path_id?,
                    notification_target_params: value.notification_target_params?,
                    paging_strategy_configuration_schedule_strategy: value
                        .paging_strategy_configuration_schedule_strategy?,
                    paging_strategy_configuration_strategy: value
                        .paging_strategy_configuration_strategy?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyLevelDataAttributes>
        for UpdateEscalationPolicyLevelDataAttributes {
            fn from(value: super::UpdateEscalationPolicyLevelDataAttributes) -> Self {
                Self {
                    delay: Ok(value.delay),
                    escalation_policy_path_id: Ok(value.escalation_policy_path_id),
                    notification_target_params: Ok(value.notification_target_params),
                    paging_strategy_configuration_schedule_strategy: Ok(
                        value.paging_strategy_configuration_schedule_strategy,
                    ),
                    paging_strategy_configuration_strategy: Ok(
                        value.paging_strategy_configuration_strategy,
                    ),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            team_members: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers,
                >,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    team_members: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn team_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemTeamMembers,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.team_members = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for team_members: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
        >
        for super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    team_members: value.team_members?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
        > for UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem {
            fn from(
                value: super::UpdateEscalationPolicyLevelDataAttributesNotificationTargetParamsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    team_members: Ok(value.team_members),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyPath {
            data: ::std::result::Result<
                super::UpdateEscalationPolicyPathData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyPath {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicyPath {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyPathData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyPath>
        for super::UpdateEscalationPolicyPath {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyPath,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyPath>
        for UpdateEscalationPolicyPath {
            fn from(value: super::UpdateEscalationPolicyPath) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyPathData {
            attributes: ::std::result::Result<
                super::UpdateEscalationPolicyPathDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateEscalationPolicyPathDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyPathData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateEscalationPolicyPathData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateEscalationPolicyPathDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateEscalationPolicyPathDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyPathData>
        for super::UpdateEscalationPolicyPathData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyPathData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyPathData>
        for UpdateEscalationPolicyPathData {
            fn from(value: super::UpdateEscalationPolicyPathData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyPathDataAttributes {
            after_deferral_behavior: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior,
                >,
                ::std::string::String,
            >,
            after_deferral_path_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            initial_delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            match_mode: ::std::result::Result<
                super::UpdateEscalationPolicyPathDataAttributesMatchMode,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_type: ::std::result::Result<
                super::UpdateEscalationPolicyPathDataAttributesNotificationType,
                ::std::string::String,
            >,
            path_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyPathDataAttributesPathType,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            repeat_count: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            rules: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyPathDataAttributesRulesItem,
                    >,
                >,
                ::std::string::String,
            >,
            time_restriction_time_zone: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone,
                >,
                ::std::string::String,
            >,
            time_restrictions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateEscalationPolicyPathDataAttributes {
            fn default() -> Self {
                Self {
                    after_deferral_behavior: Ok(Default::default()),
                    after_deferral_path_id: Ok(Default::default()),
                    default: Ok(Default::default()),
                    initial_delay: Ok(Default::default()),
                    match_mode: Ok(
                        super::defaults::update_escalation_policy_path_data_attributes_match_mode(),
                    ),
                    name: Ok(Default::default()),
                    notification_type: Ok(
                        super::defaults::update_escalation_policy_path_data_attributes_notification_type(),
                    ),
                    path_type: Ok(Default::default()),
                    position: Ok(Default::default()),
                    repeat: Ok(Default::default()),
                    repeat_count: Ok(Default::default()),
                    rules: Ok(Default::default()),
                    time_restriction_time_zone: Ok(Default::default()),
                    time_restrictions: Ok(Default::default()),
                }
            }
        }
        impl UpdateEscalationPolicyPathDataAttributes {
            pub fn after_deferral_behavior<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyPathDataAttributesAfterDeferralBehavior,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.after_deferral_behavior = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for after_deferral_behavior: {e}"
                        )
                    });
                self
            }
            pub fn after_deferral_path_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.after_deferral_path_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for after_deferral_path_id: {e}"
                        )
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn initial_delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.initial_delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for initial_delay: {e}")
                    });
                self
            }
            pub fn match_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateEscalationPolicyPathDataAttributesMatchMode,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.match_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for match_mode: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateEscalationPolicyPathDataAttributesNotificationType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_type: {e}"
                        )
                    });
                self
            }
            pub fn path_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyPathDataAttributesPathType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.path_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for path_type: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn repeat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat: {e}")
                    });
                self
            }
            pub fn repeat_count<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_count = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_count: {e}")
                    });
                self
            }
            pub fn rules<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<
                            super::UpdateEscalationPolicyPathDataAttributesRulesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rules = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rules: {e}")
                    });
                self
            }
            pub fn time_restriction_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionTimeZone,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_restriction_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_restriction_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn time_restrictions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.time_restrictions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_restrictions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateEscalationPolicyPathDataAttributes>
        for super::UpdateEscalationPolicyPathDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyPathDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    after_deferral_behavior: value.after_deferral_behavior?,
                    after_deferral_path_id: value.after_deferral_path_id?,
                    default: value.default?,
                    initial_delay: value.initial_delay?,
                    match_mode: value.match_mode?,
                    name: value.name?,
                    notification_type: value.notification_type?,
                    path_type: value.path_type?,
                    position: value.position?,
                    repeat: value.repeat?,
                    repeat_count: value.repeat_count?,
                    rules: value.rules?,
                    time_restriction_time_zone: value.time_restriction_time_zone?,
                    time_restrictions: value.time_restrictions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateEscalationPolicyPathDataAttributes>
        for UpdateEscalationPolicyPathDataAttributes {
            fn from(value: super::UpdateEscalationPolicyPathDataAttributes) -> Self {
                Self {
                    after_deferral_behavior: Ok(value.after_deferral_behavior),
                    after_deferral_path_id: Ok(value.after_deferral_path_id),
                    default: Ok(value.default),
                    initial_delay: Ok(value.initial_delay),
                    match_mode: Ok(value.match_mode),
                    name: Ok(value.name),
                    notification_type: Ok(value.notification_type),
                    path_type: Ok(value.path_type),
                    position: Ok(value.position),
                    repeat: Ok(value.repeat),
                    repeat_count: Ok(value.repeat_count),
                    rules: Ok(value.rules),
                    time_restriction_time_zone: Ok(value.time_restriction_time_zone),
                    time_restrictions: Ok(value.time_restrictions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            all_day: ::std::result::Result<bool, ::std::string::String>,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            friday: ::std::result::Result<bool, ::std::string::String>,
            monday: ::std::result::Result<bool, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            saturday: ::std::result::Result<bool, ::std::string::String>,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sunday: ::std::result::Result<bool, ::std::string::String>,
            thursday: ::std::result::Result<bool, ::std::string::String>,
            tuesday: ::std::result::Result<bool, ::std::string::String>,
            wednesday: ::std::result::Result<bool, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            fn default() -> Self {
                Self {
                    all_day: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    friday: Ok(Default::default()),
                    monday: Ok(Default::default()),
                    position: Ok(Default::default()),
                    saturday: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                    sunday: Ok(Default::default()),
                    thursday: Ok(Default::default()),
                    tuesday: Ok(Default::default()),
                    wednesday: Ok(Default::default()),
                }
            }
        }
        impl UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            pub fn all_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.all_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for all_day: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn friday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.friday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for friday: {e}")
                    });
                self
            }
            pub fn monday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.monday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for monday: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn saturday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.saturday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for saturday: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn sunday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.sunday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sunday: {e}")
                    });
                self
            }
            pub fn thursday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.thursday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for thursday: {e}")
                    });
                self
            }
            pub fn tuesday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.tuesday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tuesday: {e}")
                    });
                self
            }
            pub fn wednesday<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.wednesday = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for wednesday: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
        > for super::UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    all_day: value.all_day?,
                    end_time: value.end_time?,
                    friday: value.friday?,
                    monday: value.monday?,
                    position: value.position?,
                    saturday: value.saturday?,
                    start_time: value.start_time?,
                    sunday: value.sunday?,
                    thursday: value.thursday?,
                    tuesday: value.tuesday?,
                    wednesday: value.wednesday?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
        > for UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem {
            fn from(
                value: super::UpdateEscalationPolicyPathDataAttributesRulesItemTimeBlocksItem,
            ) -> Self {
                Self {
                    all_day: Ok(value.all_day),
                    end_time: Ok(value.end_time),
                    friday: Ok(value.friday),
                    monday: Ok(value.monday),
                    position: Ok(value.position),
                    saturday: Ok(value.saturday),
                    start_time: Ok(value.start_time),
                    sunday: Ok(value.sunday),
                    thursday: Ok(value.thursday),
                    tuesday: Ok(value.tuesday),
                    wednesday: Ok(value.wednesday),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            end_day: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay,
                >,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_day: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay,
                >,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            fn default() -> Self {
                Self {
                    end_day: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    start_day: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                }
            }
        }
        impl UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            pub fn end_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemEndDay,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_day: {e}")
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItemStartDay,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_day = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_day: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
        > for super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_day: value.end_day?,
                    end_time: value.end_time?,
                    start_day: value.start_day?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
        > for UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem {
            fn from(
                value: super::UpdateEscalationPolicyPathDataAttributesTimeRestrictionsItem,
            ) -> Self {
                Self {
                    end_day: Ok(value.end_day),
                    end_time: Ok(value.end_time),
                    start_day: Ok(value.start_day),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormField {
            data: ::std::result::Result<
                super::UpdateFormFieldData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormField {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormField {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormField> for super::UpdateFormField {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormField,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormField> for UpdateFormField {
            fn from(value: super::UpdateFormField) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldData {
            attributes: ::std::result::Result<
                super::UpdateFormFieldDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormFieldDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormFieldData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldData>
        for super::UpdateFormFieldData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldData> for UpdateFormFieldData {
            fn from(value: super::UpdateFormFieldData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldDataAttributes {
            auto_set_by_catalog_property_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default_values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            input_kind: ::std::result::Result<
                ::std::option::Option<super::UpdateFormFieldDataAttributesInputKind>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateFormFieldDataAttributesKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            show_on_incident_details: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shown: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            value_kind: ::std::result::Result<
                ::std::option::Option<super::UpdateFormFieldDataAttributesValueKind>,
                ::std::string::String,
            >,
            value_kind_catalog_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldDataAttributes {
            fn default() -> Self {
                Self {
                    auto_set_by_catalog_property_id: Ok(Default::default()),
                    default_values: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    input_kind: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Ok(Default::default()),
                    required: Ok(Default::default()),
                    show_on_incident_details: Ok(Default::default()),
                    shown: Ok(Default::default()),
                    value_kind: Ok(Default::default()),
                    value_kind_catalog_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormFieldDataAttributes {
            pub fn auto_set_by_catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_set_by_catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_set_by_catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn default_values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.default_values = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for default_values: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn input_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateFormFieldDataAttributesInputKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.input_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for input_kind: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateFormFieldDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn show_on_incident_details<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_on_incident_details = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_on_incident_details: {e}"
                        )
                    });
                self
            }
            pub fn shown<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shown = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shown: {e}")
                    });
                self
            }
            pub fn value_kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateFormFieldDataAttributesValueKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.value_kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value_kind: {e}")
                    });
                self
            }
            pub fn value_kind_catalog_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value_kind_catalog_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for value_kind_catalog_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldDataAttributes>
        for super::UpdateFormFieldDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    auto_set_by_catalog_property_id: value
                        .auto_set_by_catalog_property_id?,
                    default_values: value.default_values?,
                    description: value.description?,
                    enabled: value.enabled?,
                    input_kind: value.input_kind?,
                    kind: value.kind?,
                    name: value.name?,
                    required: value.required?,
                    show_on_incident_details: value.show_on_incident_details?,
                    shown: value.shown?,
                    value_kind: value.value_kind?,
                    value_kind_catalog_id: value.value_kind_catalog_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldDataAttributes>
        for UpdateFormFieldDataAttributes {
            fn from(value: super::UpdateFormFieldDataAttributes) -> Self {
                Self {
                    auto_set_by_catalog_property_id: Ok(
                        value.auto_set_by_catalog_property_id,
                    ),
                    default_values: Ok(value.default_values),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    input_kind: Ok(value.input_kind),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    required: Ok(value.required),
                    show_on_incident_details: Ok(value.show_on_incident_details),
                    shown: Ok(value.shown),
                    value_kind: Ok(value.value_kind),
                    value_kind_catalog_id: Ok(value.value_kind_catalog_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldOption {
            data: ::std::result::Result<
                super::UpdateFormFieldOptionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldOption {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormFieldOption {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldOptionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldOption>
        for super::UpdateFormFieldOption {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldOption,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldOption>
        for UpdateFormFieldOption {
            fn from(value: super::UpdateFormFieldOption) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldOptionData {
            attributes: ::std::result::Result<
                super::UpdateFormFieldOptionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormFieldOptionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldOptionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormFieldOptionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldOptionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldOptionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldOptionData>
        for super::UpdateFormFieldOptionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldOptionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldOptionData>
        for UpdateFormFieldOptionData {
            fn from(value: super::UpdateFormFieldOptionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldOptionDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldOptionDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    default: Ok(Default::default()),
                    position: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormFieldOptionDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldOptionDataAttributes>
        for super::UpdateFormFieldOptionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldOptionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    default: value.default?,
                    position: value.position?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldOptionDataAttributes>
        for UpdateFormFieldOptionDataAttributes {
            fn from(value: super::UpdateFormFieldOptionDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    default: Ok(value.default),
                    position: Ok(value.position),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPlacement {
            data: ::std::result::Result<
                super::UpdateFormFieldPlacementData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPlacement {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormFieldPlacement {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldPlacementData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPlacement>
        for super::UpdateFormFieldPlacement {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPlacement,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPlacement>
        for UpdateFormFieldPlacement {
            fn from(value: super::UpdateFormFieldPlacement) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPlacementCondition {
            data: ::std::result::Result<
                super::UpdateFormFieldPlacementConditionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPlacementCondition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormFieldPlacementCondition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldPlacementConditionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPlacementCondition>
        for super::UpdateFormFieldPlacementCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPlacementCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPlacementCondition>
        for UpdateFormFieldPlacementCondition {
            fn from(value: super::UpdateFormFieldPlacementCondition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPlacementConditionData {
            attributes: ::std::result::Result<
                super::UpdateFormFieldPlacementConditionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormFieldPlacementConditionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPlacementConditionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormFieldPlacementConditionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateFormFieldPlacementConditionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateFormFieldPlacementConditionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPlacementConditionData>
        for super::UpdateFormFieldPlacementConditionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPlacementConditionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPlacementConditionData>
        for UpdateFormFieldPlacementConditionData {
            fn from(value: super::UpdateFormFieldPlacementConditionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPlacementConditionDataAttributes {
            comparison: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateFormFieldPlacementConditionDataAttributesComparison,
                >,
                ::std::string::String,
            >,
            conditioned: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateFormFieldPlacementConditionDataAttributesConditioned,
                >,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateFormFieldPlacementConditionDataAttributes {
            fn default() -> Self {
                Self {
                    comparison: Ok(Default::default()),
                    conditioned: Ok(Default::default()),
                    form_field_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormFieldPlacementConditionDataAttributes {
            pub fn comparison<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateFormFieldPlacementConditionDataAttributesComparison,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.comparison = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comparison: {e}")
                    });
                self
            }
            pub fn conditioned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateFormFieldPlacementConditionDataAttributesConditioned,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditioned = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditioned: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPlacementConditionDataAttributes>
        for super::UpdateFormFieldPlacementConditionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPlacementConditionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comparison: value.comparison?,
                    conditioned: value.conditioned?,
                    form_field_id: value.form_field_id?,
                    position: value.position?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPlacementConditionDataAttributes>
        for UpdateFormFieldPlacementConditionDataAttributes {
            fn from(
                value: super::UpdateFormFieldPlacementConditionDataAttributes,
            ) -> Self {
                Self {
                    comparison: Ok(value.comparison),
                    conditioned: Ok(value.conditioned),
                    form_field_id: Ok(value.form_field_id),
                    position: Ok(value.position),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPlacementData {
            attributes: ::std::result::Result<
                super::UpdateFormFieldPlacementDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormFieldPlacementDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPlacementData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormFieldPlacementData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateFormFieldPlacementDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldPlacementDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPlacementData>
        for super::UpdateFormFieldPlacementData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPlacementData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPlacementData>
        for UpdateFormFieldPlacementData {
            fn from(value: super::UpdateFormFieldPlacementData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPlacementDataAttributes {
            form: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            form_set_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            non_editable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            placement_operator: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateFormFieldPlacementDataAttributesPlacementOperator,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            required: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            required_operator: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateFormFieldPlacementDataAttributesRequiredOperator,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPlacementDataAttributes {
            fn default() -> Self {
                Self {
                    form: Ok(Default::default()),
                    form_set_id: Ok(Default::default()),
                    non_editable: Ok(Default::default()),
                    placement_operator: Ok(Default::default()),
                    position: Ok(Default::default()),
                    required: Ok(Default::default()),
                    required_operator: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormFieldPlacementDataAttributes {
            pub fn form<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.form = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form: {e}")
                    });
                self
            }
            pub fn form_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_set_id: {e}")
                    });
                self
            }
            pub fn non_editable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.non_editable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for non_editable: {e}")
                    });
                self
            }
            pub fn placement_operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateFormFieldPlacementDataAttributesPlacementOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.placement_operator = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for placement_operator: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn required<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.required = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for required: {e}")
                    });
                self
            }
            pub fn required_operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateFormFieldPlacementDataAttributesRequiredOperator,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.required_operator = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for required_operator: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPlacementDataAttributes>
        for super::UpdateFormFieldPlacementDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPlacementDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form: value.form?,
                    form_set_id: value.form_set_id?,
                    non_editable: value.non_editable?,
                    placement_operator: value.placement_operator?,
                    position: value.position?,
                    required: value.required?,
                    required_operator: value.required_operator?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPlacementDataAttributes>
        for UpdateFormFieldPlacementDataAttributes {
            fn from(value: super::UpdateFormFieldPlacementDataAttributes) -> Self {
                Self {
                    form: Ok(value.form),
                    form_set_id: Ok(value.form_set_id),
                    non_editable: Ok(value.non_editable),
                    placement_operator: Ok(value.placement_operator),
                    position: Ok(value.position),
                    required: Ok(value.required),
                    required_operator: Ok(value.required_operator),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPosition {
            data: ::std::result::Result<
                super::UpdateFormFieldPositionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPosition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormFieldPosition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldPositionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPosition>
        for super::UpdateFormFieldPosition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPosition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPosition>
        for UpdateFormFieldPosition {
            fn from(value: super::UpdateFormFieldPosition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPositionData {
            attributes: ::std::result::Result<
                super::UpdateFormFieldPositionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormFieldPositionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPositionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormFieldPositionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldPositionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormFieldPositionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPositionData>
        for super::UpdateFormFieldPositionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPositionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPositionData>
        for UpdateFormFieldPositionData {
            fn from(value: super::UpdateFormFieldPositionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormFieldPositionDataAttributes {
            form: ::std::result::Result<
                ::std::option::Option<super::UpdateFormFieldPositionDataAttributesForm>,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormFieldPositionDataAttributes {
            fn default() -> Self {
                Self {
                    form: Ok(Default::default()),
                    form_field_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormFieldPositionDataAttributes {
            pub fn form<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateFormFieldPositionDataAttributesForm,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormFieldPositionDataAttributes>
        for super::UpdateFormFieldPositionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormFieldPositionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form: value.form?,
                    form_field_id: value.form_field_id?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormFieldPositionDataAttributes>
        for UpdateFormFieldPositionDataAttributes {
            fn from(value: super::UpdateFormFieldPositionDataAttributes) -> Self {
                Self {
                    form: Ok(value.form),
                    form_field_id: Ok(value.form_field_id),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormSet {
            data: ::std::result::Result<super::UpdateFormSetData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateFormSet {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormSet {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormSetData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormSet> for super::UpdateFormSet {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormSet,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormSet> for UpdateFormSet {
            fn from(value: super::UpdateFormSet) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormSetCondition {
            data: ::std::result::Result<
                super::UpdateFormSetConditionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormSetCondition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFormSetCondition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormSetConditionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormSetCondition>
        for super::UpdateFormSetCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormSetCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFormSetCondition>
        for UpdateFormSetCondition {
            fn from(value: super::UpdateFormSetCondition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormSetConditionData {
            attributes: ::std::result::Result<
                super::UpdateFormSetConditionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormSetConditionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormSetConditionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormSetConditionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormSetConditionDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormSetConditionDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormSetConditionData>
        for super::UpdateFormSetConditionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormSetConditionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormSetConditionData>
        for UpdateFormSetConditionData {
            fn from(value: super::UpdateFormSetConditionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormSetConditionDataAttributes {
            comparison: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateFormSetConditionDataAttributesComparison,
                >,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormSetConditionDataAttributes {
            fn default() -> Self {
                Self {
                    comparison: Ok(Default::default()),
                    form_field_id: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormSetConditionDataAttributes {
            pub fn comparison<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateFormSetConditionDataAttributesComparison,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.comparison = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for comparison: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormSetConditionDataAttributes>
        for super::UpdateFormSetConditionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormSetConditionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    comparison: value.comparison?,
                    form_field_id: value.form_field_id?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormSetConditionDataAttributes>
        for UpdateFormSetConditionDataAttributes {
            fn from(value: super::UpdateFormSetConditionDataAttributes) -> Self {
                Self {
                    comparison: Ok(value.comparison),
                    form_field_id: Ok(value.form_field_id),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormSetData {
            attributes: ::std::result::Result<
                super::UpdateFormSetDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFormSetDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormSetData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFormSetData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormSetDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFormSetDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormSetData> for super::UpdateFormSetData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormSetData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormSetData> for UpdateFormSetData {
            fn from(value: super::UpdateFormSetData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFormSetDataAttributes {
            forms: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFormSetDataAttributes {
            fn default() -> Self {
                Self {
                    forms: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateFormSetDataAttributes {
            pub fn forms<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.forms = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for forms: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFormSetDataAttributes>
        for super::UpdateFormSetDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFormSetDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    forms: value.forms?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFormSetDataAttributes>
        for UpdateFormSetDataAttributes {
            fn from(value: super::UpdateFormSetDataAttributes) -> Self {
                Self {
                    forms: Ok(value.forms),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFunctionality {
            data: ::std::result::Result<
                super::UpdateFunctionalityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFunctionality {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateFunctionality {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFunctionalityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFunctionality>
        for super::UpdateFunctionality {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFunctionality,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateFunctionality> for UpdateFunctionality {
            fn from(value: super::UpdateFunctionality) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFunctionalityData {
            attributes: ::std::result::Result<
                super::UpdateFunctionalityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateFunctionalityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFunctionalityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateFunctionalityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFunctionalityDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateFunctionalityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFunctionalityData>
        for super::UpdateFunctionalityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFunctionalityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFunctionalityData>
        for UpdateFunctionalityData {
            fn from(value: super::UpdateFunctionalityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFunctionalityDataAttributes {
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_team_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            owner_user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateFunctionalityDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateFunctionalityDataAttributesSlackAliasesItem,
                    >,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateFunctionalityDataAttributesSlackChannelsItem,
                    >,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateFunctionalityDataAttributes {
            fn default() -> Self {
                Self {
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    escalation_policy_id: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    opsgenie_team_id: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_ids: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl UpdateFunctionalityDataAttributes {
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn opsgenie_team_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_team_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_team_id: {e}"
                        )
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateFunctionalityDataAttributesPropertiesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateFunctionalityDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateFunctionalityDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFunctionalityDataAttributes>
        for super::UpdateFunctionalityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFunctionalityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    description: value.description?,
                    environment_ids: value.environment_ids?,
                    escalation_policy_id: value.escalation_policy_id?,
                    external_id: value.external_id?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    opsgenie_team_id: value.opsgenie_team_id?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_ids: value.owner_user_ids?,
                    pagerduty_id: value.pagerduty_id?,
                    position: value.position?,
                    properties: value.properties?,
                    public_description: value.public_description?,
                    service_ids: value.service_ids?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFunctionalityDataAttributes>
        for UpdateFunctionalityDataAttributes {
            fn from(value: super::UpdateFunctionalityDataAttributes) -> Self {
                Self {
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    description: Ok(value.description),
                    environment_ids: Ok(value.environment_ids),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    external_id: Ok(value.external_id),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    opsgenie_team_id: Ok(value.opsgenie_team_id),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_ids: Ok(value.owner_user_ids),
                    pagerduty_id: Ok(value.pagerduty_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    public_description: Ok(value.public_description),
                    service_ids: Ok(value.service_ids),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFunctionalityDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateFunctionalityDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateFunctionalityDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFunctionalityDataAttributesPropertiesItem>
        for super::UpdateFunctionalityDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFunctionalityDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateFunctionalityDataAttributesPropertiesItem>
        for UpdateFunctionalityDataAttributesPropertiesItem {
            fn from(
                value: super::UpdateFunctionalityDataAttributesPropertiesItem,
            ) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFunctionalityDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateFunctionalityDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateFunctionalityDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFunctionalityDataAttributesSlackAliasesItem>
        for super::UpdateFunctionalityDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFunctionalityDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateFunctionalityDataAttributesSlackAliasesItem,
        > for UpdateFunctionalityDataAttributesSlackAliasesItem {
            fn from(
                value: super::UpdateFunctionalityDataAttributesSlackAliasesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateFunctionalityDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateFunctionalityDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateFunctionalityDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateFunctionalityDataAttributesSlackChannelsItem>
        for super::UpdateFunctionalityDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateFunctionalityDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateFunctionalityDataAttributesSlackChannelsItem,
        > for UpdateFunctionalityDataAttributesSlackChannelsItem {
            fn from(
                value: super::UpdateFunctionalityDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGithubIssueTaskParams {
            body: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completion: ::std::result::Result<
                super::UpdateGithubIssueTaskParamsCompletion,
                ::std::string::String,
            >,
            issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            issue_type: ::std::result::Result<
                ::std::option::Option<super::UpdateGithubIssueTaskParamsIssueType>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::UpdateGithubIssueTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            labels_mode: ::std::result::Result<
                super::UpdateGithubIssueTaskParamsLabelsMode,
                ::std::string::String,
            >,
            repository: ::std::result::Result<
                ::std::option::Option<super::UpdateGithubIssueTaskParamsRepository>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateGithubIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGithubIssueTaskParams {
            fn default() -> Self {
                Self {
                    body: Ok(Default::default()),
                    completion: Err("no value supplied for completion".to_string()),
                    issue_id: Err("no value supplied for issue_id".to_string()),
                    issue_type: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    labels_mode: Ok(
                        super::defaults::update_github_issue_task_params_labels_mode(),
                    ),
                    repository: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateGithubIssueTaskParams {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateGithubIssueTaskParamsCompletion>,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_id: {e}")
                    });
                self
            }
            pub fn issue_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGithubIssueTaskParamsIssueType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.issue_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_type: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateGithubIssueTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn labels_mode<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateGithubIssueTaskParamsLabelsMode>,
                T::Error: ::std::fmt::Display,
            {
                self.labels_mode = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels_mode: {e}")
                    });
                self
            }
            pub fn repository<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGithubIssueTaskParamsRepository>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.repository = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repository: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGithubIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGithubIssueTaskParams>
        for super::UpdateGithubIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGithubIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    completion: value.completion?,
                    issue_id: value.issue_id?,
                    issue_type: value.issue_type?,
                    labels: value.labels?,
                    labels_mode: value.labels_mode?,
                    repository: value.repository?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGithubIssueTaskParams>
        for UpdateGithubIssueTaskParams {
            fn from(value: super::UpdateGithubIssueTaskParams) -> Self {
                Self {
                    body: Ok(value.body),
                    completion: Ok(value.completion),
                    issue_id: Ok(value.issue_id),
                    issue_type: Ok(value.issue_type),
                    labels: Ok(value.labels),
                    labels_mode: Ok(value.labels_mode),
                    repository: Ok(value.repository),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGithubIssueTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGithubIssueTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGithubIssueTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGithubIssueTaskParamsCompletion>
        for super::UpdateGithubIssueTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGithubIssueTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGithubIssueTaskParamsCompletion>
        for UpdateGithubIssueTaskParamsCompletion {
            fn from(value: super::UpdateGithubIssueTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGithubIssueTaskParamsIssueType {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGithubIssueTaskParamsIssueType {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGithubIssueTaskParamsIssueType {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGithubIssueTaskParamsIssueType>
        for super::UpdateGithubIssueTaskParamsIssueType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGithubIssueTaskParamsIssueType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGithubIssueTaskParamsIssueType>
        for UpdateGithubIssueTaskParamsIssueType {
            fn from(value: super::UpdateGithubIssueTaskParamsIssueType) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGithubIssueTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGithubIssueTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGithubIssueTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGithubIssueTaskParamsLabelsItem>
        for super::UpdateGithubIssueTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGithubIssueTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGithubIssueTaskParamsLabelsItem>
        for UpdateGithubIssueTaskParamsLabelsItem {
            fn from(value: super::UpdateGithubIssueTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGithubIssueTaskParamsRepository {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGithubIssueTaskParamsRepository {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGithubIssueTaskParamsRepository {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGithubIssueTaskParamsRepository>
        for super::UpdateGithubIssueTaskParamsRepository {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGithubIssueTaskParamsRepository,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGithubIssueTaskParamsRepository>
        for UpdateGithubIssueTaskParamsRepository {
            fn from(value: super::UpdateGithubIssueTaskParamsRepository) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGitlabIssueTaskParams {
            completion: ::std::result::Result<
                super::UpdateGitlabIssueTaskParamsCompletion,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            issue_type: ::std::result::Result<
                ::std::option::Option<super::UpdateGitlabIssueTaskParamsIssueType>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateGitlabIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGitlabIssueTaskParams {
            fn default() -> Self {
                Self {
                    completion: Err("no value supplied for completion".to_string()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    issue_id: Err("no value supplied for issue_id".to_string()),
                    issue_type: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateGitlabIssueTaskParams {
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateGitlabIssueTaskParamsCompletion>,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_id: {e}")
                    });
                self
            }
            pub fn issue_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGitlabIssueTaskParamsIssueType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.issue_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_type: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGitlabIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGitlabIssueTaskParams>
        for super::UpdateGitlabIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGitlabIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    completion: value.completion?,
                    description: value.description?,
                    due_date: value.due_date?,
                    issue_id: value.issue_id?,
                    issue_type: value.issue_type?,
                    labels: value.labels?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGitlabIssueTaskParams>
        for UpdateGitlabIssueTaskParams {
            fn from(value: super::UpdateGitlabIssueTaskParams) -> Self {
                Self {
                    completion: Ok(value.completion),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    issue_id: Ok(value.issue_id),
                    issue_type: Ok(value.issue_type),
                    labels: Ok(value.labels),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGitlabIssueTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGitlabIssueTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGitlabIssueTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGitlabIssueTaskParamsCompletion>
        for super::UpdateGitlabIssueTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGitlabIssueTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGitlabIssueTaskParamsCompletion>
        for UpdateGitlabIssueTaskParamsCompletion {
            fn from(value: super::UpdateGitlabIssueTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGoogleCalendarEventTaskParams {
            adjustment_days: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            attendees: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            calendar_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            can_guests_invite_others: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            can_guests_modify_event: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            can_guests_see_other_guests: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            conference_solution_key: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey,
                >,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            event_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            meeting_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_to_incident_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            post_to_slack_channels: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
                >,
                ::std::string::String,
            >,
            replace_attendees: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            send_updates: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateGoogleCalendarEventTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
            time_of_meeting: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGoogleCalendarEventTaskParams {
            fn default() -> Self {
                Self {
                    adjustment_days: Ok(Default::default()),
                    attendees: Ok(Default::default()),
                    calendar_id: Ok(Default::default()),
                    can_guests_invite_others: Ok(Default::default()),
                    can_guests_modify_event: Ok(Default::default()),
                    can_guests_see_other_guests: Ok(Default::default()),
                    conference_solution_key: Ok(Default::default()),
                    description: Ok(Default::default()),
                    event_id: Err("no value supplied for event_id".to_string()),
                    meeting_duration: Ok(Default::default()),
                    post_to_incident_timeline: Ok(Default::default()),
                    post_to_slack_channels: Ok(Default::default()),
                    replace_attendees: Ok(Default::default()),
                    send_updates: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    time_of_meeting: Ok(Default::default()),
                }
            }
        }
        impl UpdateGoogleCalendarEventTaskParams {
            pub fn adjustment_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.adjustment_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for adjustment_days: {e}"
                        )
                    });
                self
            }
            pub fn attendees<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.attendees = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attendees: {e}")
                    });
                self
            }
            pub fn calendar_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.calendar_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for calendar_id: {e}")
                    });
                self
            }
            pub fn can_guests_invite_others<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.can_guests_invite_others = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for can_guests_invite_others: {e}"
                        )
                    });
                self
            }
            pub fn can_guests_modify_event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.can_guests_modify_event = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for can_guests_modify_event: {e}"
                        )
                    });
                self
            }
            pub fn can_guests_see_other_guests<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.can_guests_see_other_guests = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for can_guests_see_other_guests: {e}"
                        )
                    });
                self
            }
            pub fn conference_solution_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateGoogleCalendarEventTaskParamsConferenceSolutionKey,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conference_solution_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conference_solution_key: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn event_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.event_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_id: {e}")
                    });
                self
            }
            pub fn meeting_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.meeting_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for meeting_duration: {e}"
                        )
                    });
                self
            }
            pub fn post_to_incident_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_incident_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_incident_timeline: {e}"
                        )
                    });
                self
            }
            pub fn post_to_slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.post_to_slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_to_slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn replace_attendees<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.replace_attendees = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for replace_attendees: {e}"
                        )
                    });
                self
            }
            pub fn send_updates<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.send_updates = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for send_updates: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateGoogleCalendarEventTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn time_of_meeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_of_meeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for time_of_meeting: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGoogleCalendarEventTaskParams>
        for super::UpdateGoogleCalendarEventTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGoogleCalendarEventTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    adjustment_days: value.adjustment_days?,
                    attendees: value.attendees?,
                    calendar_id: value.calendar_id?,
                    can_guests_invite_others: value.can_guests_invite_others?,
                    can_guests_modify_event: value.can_guests_modify_event?,
                    can_guests_see_other_guests: value.can_guests_see_other_guests?,
                    conference_solution_key: value.conference_solution_key?,
                    description: value.description?,
                    event_id: value.event_id?,
                    meeting_duration: value.meeting_duration?,
                    post_to_incident_timeline: value.post_to_incident_timeline?,
                    post_to_slack_channels: value.post_to_slack_channels?,
                    replace_attendees: value.replace_attendees?,
                    send_updates: value.send_updates?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                    time_of_meeting: value.time_of_meeting?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGoogleCalendarEventTaskParams>
        for UpdateGoogleCalendarEventTaskParams {
            fn from(value: super::UpdateGoogleCalendarEventTaskParams) -> Self {
                Self {
                    adjustment_days: Ok(value.adjustment_days),
                    attendees: Ok(value.attendees),
                    calendar_id: Ok(value.calendar_id),
                    can_guests_invite_others: Ok(value.can_guests_invite_others),
                    can_guests_modify_event: Ok(value.can_guests_modify_event),
                    can_guests_see_other_guests: Ok(value.can_guests_see_other_guests),
                    conference_solution_key: Ok(value.conference_solution_key),
                    description: Ok(value.description),
                    event_id: Ok(value.event_id),
                    meeting_duration: Ok(value.meeting_duration),
                    post_to_incident_timeline: Ok(value.post_to_incident_timeline),
                    post_to_slack_channels: Ok(value.post_to_slack_channels),
                    replace_attendees: Ok(value.replace_attendees),
                    send_updates: Ok(value.send_updates),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    time_of_meeting: Ok(value.time_of_meeting),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
        > for super::UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
        > for UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem {
            fn from(
                value: super::UpdateGoogleCalendarEventTaskParamsPostToSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGoogleChatSpaceDescriptionTaskParams {
            description: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            space: ::std::result::Result<
                super::UpdateGoogleChatSpaceDescriptionTaskParamsSpace,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateGoogleChatSpaceDescriptionTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGoogleChatSpaceDescriptionTaskParams {
            fn default() -> Self {
                Self {
                    description: Err("no value supplied for description".to_string()),
                    space: Err("no value supplied for space".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateGoogleChatSpaceDescriptionTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn space<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateGoogleChatSpaceDescriptionTaskParamsSpace,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.space = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for space: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateGoogleChatSpaceDescriptionTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGoogleChatSpaceDescriptionTaskParams>
        for super::UpdateGoogleChatSpaceDescriptionTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGoogleChatSpaceDescriptionTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    space: value.space?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGoogleChatSpaceDescriptionTaskParams>
        for UpdateGoogleChatSpaceDescriptionTaskParams {
            fn from(value: super::UpdateGoogleChatSpaceDescriptionTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    space: Ok(value.space),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGoogleChatSpaceDescriptionTaskParamsSpace>
        for super::UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGoogleChatSpaceDescriptionTaskParamsSpace,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGoogleChatSpaceDescriptionTaskParamsSpace>
        for UpdateGoogleChatSpaceDescriptionTaskParamsSpace {
            fn from(
                value: super::UpdateGoogleChatSpaceDescriptionTaskParamsSpace,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateGoogleDocsPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateGoogleDocsPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateGoogleDocsPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template_id: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateGoogleDocsPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGoogleDocsPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_id: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateGoogleDocsPageTaskParams>
        for super::UpdateGoogleDocsPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateGoogleDocsPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template_id: value.template_id?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateGoogleDocsPageTaskParams>
        for UpdateGoogleDocsPageTaskParams {
            fn from(value: super::UpdateGoogleDocsPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template_id: Ok(value.template_id),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateHeartbeat {
            data: ::std::result::Result<
                super::UpdateHeartbeatData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateHeartbeat {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateHeartbeat {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateHeartbeatData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateHeartbeat> for super::UpdateHeartbeat {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateHeartbeat,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateHeartbeat> for UpdateHeartbeat {
            fn from(value: super::UpdateHeartbeat) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateHeartbeatData {
            attributes: ::std::result::Result<
                super::UpdateHeartbeatDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateHeartbeatDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateHeartbeatData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateHeartbeatData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateHeartbeatDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateHeartbeatDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateHeartbeatData>
        for super::UpdateHeartbeatData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateHeartbeatData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateHeartbeatData> for UpdateHeartbeatData {
            fn from(value: super::UpdateHeartbeatData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateHeartbeatDataAttributes {
            alert_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            interval: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            interval_unit: ::std::result::Result<
                ::std::option::Option<super::UpdateHeartbeatDataAttributesIntervalUnit>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_target_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateHeartbeatDataAttributesNotificationTargetType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateHeartbeatDataAttributes {
            fn default() -> Self {
                Self {
                    alert_description: Ok(Default::default()),
                    alert_summary: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    interval: Ok(Default::default()),
                    interval_unit: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notification_target_id: Ok(Default::default()),
                    notification_target_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateHeartbeatDataAttributes {
            pub fn alert_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_description: {e}"
                        )
                    });
                self
            }
            pub fn alert_summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_summary: {e}")
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn interval<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.interval = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for interval: {e}")
                    });
                self
            }
            pub fn interval_unit<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateHeartbeatDataAttributesIntervalUnit,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.interval_unit = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for interval_unit: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_target_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_id: {e}"
                        )
                    });
                self
            }
            pub fn notification_target_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateHeartbeatDataAttributesNotificationTargetType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_target_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_target_type: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateHeartbeatDataAttributes>
        for super::UpdateHeartbeatDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateHeartbeatDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_description: value.alert_description?,
                    alert_summary: value.alert_summary?,
                    alert_urgency_id: value.alert_urgency_id?,
                    description: value.description?,
                    enabled: value.enabled?,
                    interval: value.interval?,
                    interval_unit: value.interval_unit?,
                    name: value.name?,
                    notification_target_id: value.notification_target_id?,
                    notification_target_type: value.notification_target_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateHeartbeatDataAttributes>
        for UpdateHeartbeatDataAttributes {
            fn from(value: super::UpdateHeartbeatDataAttributes) -> Self {
                Self {
                    alert_description: Ok(value.alert_description),
                    alert_summary: Ok(value.alert_summary),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    interval: Ok(value.interval),
                    interval_unit: Ok(value.interval_unit),
                    name: Ok(value.name),
                    notification_target_id: Ok(value.notification_target_id),
                    notification_target_type: Ok(value.notification_target_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncident {
            data: ::std::result::Result<
                super::UpdateIncidentData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncident {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncident {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncident> for super::UpdateIncident {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncident,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncident> for UpdateIncident {
            fn from(value: super::UpdateIncident) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentActionItem {
            data: ::std::result::Result<
                super::UpdateIncidentActionItemData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentActionItem {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentActionItem {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentActionItemData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentActionItem>
        for super::UpdateIncidentActionItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentActionItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentActionItem>
        for UpdateIncidentActionItem {
            fn from(value: super::UpdateIncidentActionItem) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentActionItemData {
            attributes: ::std::result::Result<
                super::UpdateIncidentActionItemDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentActionItemDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentActionItemData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentActionItemData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentActionItemDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentActionItemDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentActionItemData>
        for super::UpdateIncidentActionItemData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentActionItemData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentActionItemData>
        for UpdateIncidentActionItemData {
            fn from(value: super::UpdateIncidentActionItemData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentActionItemDataAttributes {
            assigned_to_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            assigned_to_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            form_field_selections: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
                    >,
                >,
                ::std::string::String,
            >,
            jira_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentActionItemDataAttributesKind>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentActionItemDataAttributesPriority,
                >,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentActionItemDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentActionItemDataAttributes {
            fn default() -> Self {
                Self {
                    assigned_to_group_ids: Ok(Default::default()),
                    assigned_to_user_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    form_field_selections: Ok(Default::default()),
                    jira_issue_id: Ok(Default::default()),
                    jira_issue_key: Ok(Default::default()),
                    jira_issue_url: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentActionItemDataAttributes {
            pub fn assigned_to_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn assigned_to_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_to_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_to_user_id: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn form_field_selections<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_selections = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for form_field_selections: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentActionItemDataAttributesKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentActionItemDataAttributesPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentActionItemDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentActionItemDataAttributes>
        for super::UpdateIncidentActionItemDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentActionItemDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_to_group_ids: value.assigned_to_group_ids?,
                    assigned_to_user_id: value.assigned_to_user_id?,
                    description: value.description?,
                    due_date: value.due_date?,
                    form_field_selections: value.form_field_selections?,
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    jira_issue_url: value.jira_issue_url?,
                    kind: value.kind?,
                    priority: value.priority?,
                    status: value.status?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentActionItemDataAttributes>
        for UpdateIncidentActionItemDataAttributes {
            fn from(value: super::UpdateIncidentActionItemDataAttributes) -> Self {
                Self {
                    assigned_to_group_ids: Ok(value.assigned_to_group_ids),
                    assigned_to_user_id: Ok(value.assigned_to_user_id),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    form_field_selections: Ok(value.form_field_selections),
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    jira_issue_url: Ok(value.jira_issue_url),
                    kind: Ok(value.kind),
                    priority: Ok(value.priority),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
            destroy: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItemValue,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
            fn default() -> Self {
                Self {
                    destroy: Ok(Default::default()),
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    id: Ok(Default::default()),
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
            pub fn destroy<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.destroy = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for destroy: {e}")
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItemValue,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
        > for super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    destroy: value.destroy?,
                    form_field_id: value.form_field_id?,
                    id: value.id?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
        > for UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem {
            fn from(
                value: super::UpdateIncidentActionItemDataAttributesFormFieldSelectionsItem,
            ) -> Self {
                Self {
                    destroy: Ok(value.destroy),
                    form_field_id: Ok(value.form_field_id),
                    id: Ok(value.id),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentCustomFieldSelection {
            data: ::std::result::Result<
                super::UpdateIncidentCustomFieldSelectionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentCustomFieldSelection {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentCustomFieldSelection {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentCustomFieldSelectionData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentCustomFieldSelection>
        for super::UpdateIncidentCustomFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentCustomFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentCustomFieldSelection>
        for UpdateIncidentCustomFieldSelection {
            fn from(value: super::UpdateIncidentCustomFieldSelection) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentCustomFieldSelectionData {
            attributes: ::std::result::Result<
                super::UpdateIncidentCustomFieldSelectionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentCustomFieldSelectionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentCustomFieldSelectionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentCustomFieldSelectionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentCustomFieldSelectionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentCustomFieldSelectionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentCustomFieldSelectionData>
        for super::UpdateIncidentCustomFieldSelectionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentCustomFieldSelectionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentCustomFieldSelectionData>
        for UpdateIncidentCustomFieldSelectionData {
            fn from(value: super::UpdateIncidentCustomFieldSelectionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentCustomFieldSelectionDataAttributes {
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateIncidentCustomFieldSelectionDataAttributes {
            fn default() -> Self {
                Self {
                    selected_option_ids: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentCustomFieldSelectionDataAttributes {
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentCustomFieldSelectionDataAttributes>
        for super::UpdateIncidentCustomFieldSelectionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentCustomFieldSelectionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    selected_option_ids: value.selected_option_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentCustomFieldSelectionDataAttributes,
        > for UpdateIncidentCustomFieldSelectionDataAttributes {
            fn from(
                value: super::UpdateIncidentCustomFieldSelectionDataAttributes,
            ) -> Self {
                Self {
                    selected_option_ids: Ok(value.selected_option_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentData {
            attributes: ::std::result::Result<
                super::UpdateIncidentDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentData> for super::UpdateIncidentData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentData> for UpdateIncidentData {
            fn from(value: super::UpdateIncidentData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentDataAttributes {
            acknowledged_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            cancellation_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cancelled_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cause_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            closed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            detected_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            duplicate_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            google_drive_parent_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            google_drive_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            in_triage_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            jira_issue_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_key: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            jira_issue_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentDataAttributesKind>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            mitigated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            mitigation_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            muted_service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            parent_incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            public_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolution_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolved_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            scheduled_for: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            scheduled_until: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_archived: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slack_channel_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_channel_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentDataAttributesStatus>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentDataAttributes {
            fn default() -> Self {
                Self {
                    acknowledged_at: Ok(Default::default()),
                    alert_ids: Ok(Default::default()),
                    cancellation_message: Ok(Default::default()),
                    cancelled_at: Ok(Default::default()),
                    cause_ids: Ok(Default::default()),
                    closed_at: Ok(Default::default()),
                    detected_at: Ok(Default::default()),
                    duplicate_incident_id: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    google_drive_parent_id: Ok(Default::default()),
                    google_drive_url: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    in_triage_at: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    jira_issue_id: Ok(Default::default()),
                    jira_issue_key: Ok(Default::default()),
                    jira_issue_url: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    mitigated_at: Ok(Default::default()),
                    mitigation_message: Ok(Default::default()),
                    muted_service_ids: Ok(Default::default()),
                    parent_incident_id: Ok(Default::default()),
                    private: Ok(Default::default()),
                    public_title: Ok(Default::default()),
                    resolution_message: Ok(Default::default()),
                    resolved_at: Ok(Default::default()),
                    scheduled_for: Ok(Default::default()),
                    scheduled_until: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_id: Ok(Default::default()),
                    slack_channel_archived: Ok(Default::default()),
                    slack_channel_id: Ok(Default::default()),
                    slack_channel_name: Ok(Default::default()),
                    slack_channel_url: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentDataAttributes {
            pub fn acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn alert_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_ids: {e}")
                    });
                self
            }
            pub fn cancellation_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cancellation_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for cancellation_message: {e}"
                        )
                    });
                self
            }
            pub fn cancelled_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cancelled_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cancelled_at: {e}")
                    });
                self
            }
            pub fn cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cause_ids: {e}")
                    });
                self
            }
            pub fn closed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.closed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for closed_at: {e}")
                    });
                self
            }
            pub fn detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for detected_at: {e}")
                    });
                self
            }
            pub fn duplicate_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.duplicate_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for duplicate_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_parent_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_parent_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_parent_id: {e}"
                        )
                    });
                self
            }
            pub fn google_drive_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.google_drive_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for google_drive_url: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn in_triage_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.in_triage_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for in_triage_at: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for jira_issue_id: {e}")
                    });
                self
            }
            pub fn jira_issue_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_key = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_key: {e}"
                        )
                    });
                self
            }
            pub fn jira_issue_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.jira_issue_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for jira_issue_url: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateIncidentDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_at: {e}")
                    });
                self
            }
            pub fn mitigation_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigation_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for mitigation_message: {e}"
                        )
                    });
                self
            }
            pub fn muted_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.muted_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for muted_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn parent_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn resolution_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_message: {e}"
                        )
                    });
                self
            }
            pub fn resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_at: {e}")
                    });
                self
            }
            pub fn scheduled_for<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scheduled_for = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for scheduled_for: {e}")
                    });
                self
            }
            pub fn scheduled_until<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.scheduled_until = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for scheduled_until: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_id: {e}")
                    });
                self
            }
            pub fn slack_channel_archived<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_archived = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_archived: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_name: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channel_url: {e}"
                        )
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateIncidentDataAttributesStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentDataAttributes>
        for super::UpdateIncidentDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    acknowledged_at: value.acknowledged_at?,
                    alert_ids: value.alert_ids?,
                    cancellation_message: value.cancellation_message?,
                    cancelled_at: value.cancelled_at?,
                    cause_ids: value.cause_ids?,
                    closed_at: value.closed_at?,
                    detected_at: value.detected_at?,
                    duplicate_incident_id: value.duplicate_incident_id?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    google_drive_parent_id: value.google_drive_parent_id?,
                    google_drive_url: value.google_drive_url?,
                    group_ids: value.group_ids?,
                    in_triage_at: value.in_triage_at?,
                    incident_type_ids: value.incident_type_ids?,
                    jira_issue_id: value.jira_issue_id?,
                    jira_issue_key: value.jira_issue_key?,
                    jira_issue_url: value.jira_issue_url?,
                    kind: value.kind?,
                    labels: value.labels?,
                    mitigated_at: value.mitigated_at?,
                    mitigation_message: value.mitigation_message?,
                    muted_service_ids: value.muted_service_ids?,
                    parent_incident_id: value.parent_incident_id?,
                    private: value.private?,
                    public_title: value.public_title?,
                    resolution_message: value.resolution_message?,
                    resolved_at: value.resolved_at?,
                    scheduled_for: value.scheduled_for?,
                    scheduled_until: value.scheduled_until?,
                    service_ids: value.service_ids?,
                    severity_id: value.severity_id?,
                    slack_channel_archived: value.slack_channel_archived?,
                    slack_channel_id: value.slack_channel_id?,
                    slack_channel_name: value.slack_channel_name?,
                    slack_channel_url: value.slack_channel_url?,
                    started_at: value.started_at?,
                    status: value.status?,
                    summary: value.summary?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentDataAttributes>
        for UpdateIncidentDataAttributes {
            fn from(value: super::UpdateIncidentDataAttributes) -> Self {
                Self {
                    acknowledged_at: Ok(value.acknowledged_at),
                    alert_ids: Ok(value.alert_ids),
                    cancellation_message: Ok(value.cancellation_message),
                    cancelled_at: Ok(value.cancelled_at),
                    cause_ids: Ok(value.cause_ids),
                    closed_at: Ok(value.closed_at),
                    detected_at: Ok(value.detected_at),
                    duplicate_incident_id: Ok(value.duplicate_incident_id),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    google_drive_parent_id: Ok(value.google_drive_parent_id),
                    google_drive_url: Ok(value.google_drive_url),
                    group_ids: Ok(value.group_ids),
                    in_triage_at: Ok(value.in_triage_at),
                    incident_type_ids: Ok(value.incident_type_ids),
                    jira_issue_id: Ok(value.jira_issue_id),
                    jira_issue_key: Ok(value.jira_issue_key),
                    jira_issue_url: Ok(value.jira_issue_url),
                    kind: Ok(value.kind),
                    labels: Ok(value.labels),
                    mitigated_at: Ok(value.mitigated_at),
                    mitigation_message: Ok(value.mitigation_message),
                    muted_service_ids: Ok(value.muted_service_ids),
                    parent_incident_id: Ok(value.parent_incident_id),
                    private: Ok(value.private),
                    public_title: Ok(value.public_title),
                    resolution_message: Ok(value.resolution_message),
                    resolved_at: Ok(value.resolved_at),
                    scheduled_for: Ok(value.scheduled_for),
                    scheduled_until: Ok(value.scheduled_until),
                    service_ids: Ok(value.service_ids),
                    severity_id: Ok(value.severity_id),
                    slack_channel_archived: Ok(value.slack_channel_archived),
                    slack_channel_id: Ok(value.slack_channel_id),
                    slack_channel_name: Ok(value.slack_channel_name),
                    slack_channel_url: Ok(value.slack_channel_url),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEvent {
            data: ::std::result::Result<
                super::UpdateIncidentEventData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEvent {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentEvent {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentEventData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEvent>
        for super::UpdateIncidentEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEvent> for UpdateIncidentEvent {
            fn from(value: super::UpdateIncidentEvent) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventData {
            attributes: ::std::result::Result<
                super::UpdateIncidentEventDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentEventDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentEventData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentEventDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentEventDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventData>
        for super::UpdateIncidentEventData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventData>
        for UpdateIncidentEventData {
            fn from(value: super::UpdateIncidentEventData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventDataAttributes {
            event: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            visibility: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentEventDataAttributesVisibility,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventDataAttributes {
            fn default() -> Self {
                Self {
                    event: Ok(Default::default()),
                    visibility: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentEventDataAttributes {
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn visibility<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentEventDataAttributesVisibility,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.visibility = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for visibility: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventDataAttributes>
        for super::UpdateIncidentEventDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    event: value.event?,
                    visibility: value.visibility?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventDataAttributes>
        for UpdateIncidentEventDataAttributes {
            fn from(value: super::UpdateIncidentEventDataAttributes) -> Self {
                Self {
                    event: Ok(value.event),
                    visibility: Ok(value.visibility),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventFunctionality {
            data: ::std::result::Result<
                super::UpdateIncidentEventFunctionalityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventFunctionality {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentEventFunctionality {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentEventFunctionalityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventFunctionality>
        for super::UpdateIncidentEventFunctionality {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventFunctionality,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventFunctionality>
        for UpdateIncidentEventFunctionality {
            fn from(value: super::UpdateIncidentEventFunctionality) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventFunctionalityData {
            attributes: ::std::result::Result<
                super::UpdateIncidentEventFunctionalityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentEventFunctionalityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventFunctionalityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentEventFunctionalityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentEventFunctionalityDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentEventFunctionalityDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventFunctionalityData>
        for super::UpdateIncidentEventFunctionalityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventFunctionalityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventFunctionalityData>
        for UpdateIncidentEventFunctionalityData {
            fn from(value: super::UpdateIncidentEventFunctionalityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventFunctionalityDataAttributes {
            status: ::std::result::Result<
                super::UpdateIncidentEventFunctionalityDataAttributesStatus,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventFunctionalityDataAttributes {
            fn default() -> Self {
                Self {
                    status: Err("no value supplied for status".to_string()),
                }
            }
        }
        impl UpdateIncidentEventFunctionalityDataAttributes {
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentEventFunctionalityDataAttributesStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventFunctionalityDataAttributes>
        for super::UpdateIncidentEventFunctionalityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventFunctionalityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { status: value.status? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventFunctionalityDataAttributes>
        for UpdateIncidentEventFunctionalityDataAttributes {
            fn from(
                value: super::UpdateIncidentEventFunctionalityDataAttributes,
            ) -> Self {
                Self { status: Ok(value.status) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventService {
            data: ::std::result::Result<
                super::UpdateIncidentEventServiceData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventService {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentEventService {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentEventServiceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventService>
        for super::UpdateIncidentEventService {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventService,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventService>
        for UpdateIncidentEventService {
            fn from(value: super::UpdateIncidentEventService) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventServiceData {
            attributes: ::std::result::Result<
                super::UpdateIncidentEventServiceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentEventServiceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventServiceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentEventServiceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentEventServiceDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentEventServiceDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventServiceData>
        for super::UpdateIncidentEventServiceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventServiceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventServiceData>
        for UpdateIncidentEventServiceData {
            fn from(value: super::UpdateIncidentEventServiceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentEventServiceDataAttributes {
            status: ::std::result::Result<
                super::UpdateIncidentEventServiceDataAttributesStatus,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentEventServiceDataAttributes {
            fn default() -> Self {
                Self {
                    status: Err("no value supplied for status".to_string()),
                }
            }
        }
        impl UpdateIncidentEventServiceDataAttributes {
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentEventServiceDataAttributesStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentEventServiceDataAttributes>
        for super::UpdateIncidentEventServiceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentEventServiceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { status: value.status? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentEventServiceDataAttributes>
        for UpdateIncidentEventServiceDataAttributes {
            fn from(value: super::UpdateIncidentEventServiceDataAttributes) -> Self {
                Self { status: Ok(value.status) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentFeedback {
            data: ::std::result::Result<
                super::UpdateIncidentFeedbackData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentFeedback {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentFeedback {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentFeedbackData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentFeedback>
        for super::UpdateIncidentFeedback {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentFeedback,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentFeedback>
        for UpdateIncidentFeedback {
            fn from(value: super::UpdateIncidentFeedback) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentFeedbackData {
            attributes: ::std::result::Result<
                super::UpdateIncidentFeedbackDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentFeedbackDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentFeedbackData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentFeedbackData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentFeedbackDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentFeedbackDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentFeedbackData>
        for super::UpdateIncidentFeedbackData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentFeedbackData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentFeedbackData>
        for UpdateIncidentFeedbackData {
            fn from(value: super::UpdateIncidentFeedbackData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentFeedbackDataAttributes {
            anonymous: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            feedback: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            rating: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentFeedbackDataAttributesRating>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentFeedbackDataAttributes {
            fn default() -> Self {
                Self {
                    anonymous: Ok(Default::default()),
                    feedback: Ok(Default::default()),
                    rating: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentFeedbackDataAttributes {
            pub fn anonymous<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.anonymous = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for anonymous: {e}")
                    });
                self
            }
            pub fn feedback<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.feedback = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for feedback: {e}")
                    });
                self
            }
            pub fn rating<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentFeedbackDataAttributesRating,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.rating = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for rating: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentFeedbackDataAttributes>
        for super::UpdateIncidentFeedbackDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentFeedbackDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    anonymous: value.anonymous?,
                    feedback: value.feedback?,
                    rating: value.rating?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentFeedbackDataAttributes>
        for UpdateIncidentFeedbackDataAttributes {
            fn from(value: super::UpdateIncidentFeedbackDataAttributes) -> Self {
                Self {
                    anonymous: Ok(value.anonymous),
                    feedback: Ok(value.feedback),
                    rating: Ok(value.rating),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentFormFieldSelection {
            data: ::std::result::Result<
                super::UpdateIncidentFormFieldSelectionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentFormFieldSelection {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentFormFieldSelection {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentFormFieldSelectionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentFormFieldSelection>
        for super::UpdateIncidentFormFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentFormFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentFormFieldSelection>
        for UpdateIncidentFormFieldSelection {
            fn from(value: super::UpdateIncidentFormFieldSelection) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentFormFieldSelectionData {
            attributes: ::std::result::Result<
                super::UpdateIncidentFormFieldSelectionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentFormFieldSelectionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentFormFieldSelectionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentFormFieldSelectionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentFormFieldSelectionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentFormFieldSelectionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentFormFieldSelectionData>
        for super::UpdateIncidentFormFieldSelectionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentFormFieldSelectionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentFormFieldSelectionData>
        for UpdateIncidentFormFieldSelectionData {
            fn from(value: super::UpdateIncidentFormFieldSelectionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentFormFieldSelectionDataAttributes {
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            value: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentFormFieldSelectionDataAttributes {
            fn default() -> Self {
                Self {
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    value: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentFormFieldSelectionDataAttributes {
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentFormFieldSelectionDataAttributes>
        for super::UpdateIncidentFormFieldSelectionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentFormFieldSelectionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentFormFieldSelectionDataAttributes>
        for UpdateIncidentFormFieldSelectionDataAttributes {
            fn from(
                value: super::UpdateIncidentFormFieldSelectionDataAttributes,
            ) -> Self {
                Self {
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSet {
            data: ::std::result::Result<
                super::UpdateIncidentPermissionSetData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSet {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentPermissionSet {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentPermissionSetData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSet>
        for super::UpdateIncidentPermissionSet {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSet,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSet>
        for UpdateIncidentPermissionSet {
            fn from(value: super::UpdateIncidentPermissionSet) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetBoolean {
            data: ::std::result::Result<
                super::UpdateIncidentPermissionSetBooleanData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSetBoolean {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentPermissionSetBoolean {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetBooleanData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetBoolean>
        for super::UpdateIncidentPermissionSetBoolean {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetBoolean,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSetBoolean>
        for UpdateIncidentPermissionSetBoolean {
            fn from(value: super::UpdateIncidentPermissionSetBoolean) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetBooleanData {
            attributes: ::std::result::Result<
                super::UpdateIncidentPermissionSetBooleanDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentPermissionSetBooleanDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSetBooleanData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentPermissionSetBooleanData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetBooleanDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetBooleanDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetBooleanData>
        for super::UpdateIncidentPermissionSetBooleanData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetBooleanData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSetBooleanData>
        for UpdateIncidentPermissionSetBooleanData {
            fn from(value: super::UpdateIncidentPermissionSetBooleanData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetBooleanDataAttributes {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentPermissionSetBooleanDataAttributesKind,
                >,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            severity_params: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateIncidentPermissionSetBooleanDataAttributes {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    private: Ok(Default::default()),
                    severity_params: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPermissionSetBooleanDataAttributes {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentPermissionSetBooleanDataAttributesKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn severity_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severity_params: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetBooleanDataAttributes>
        for super::UpdateIncidentPermissionSetBooleanDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetBooleanDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    enabled: value.enabled?,
                    kind: value.kind?,
                    private: value.private?,
                    severity_params: value.severity_params?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentPermissionSetBooleanDataAttributes,
        > for UpdateIncidentPermissionSetBooleanDataAttributes {
            fn from(
                value: super::UpdateIncidentPermissionSetBooleanDataAttributes,
            ) -> Self {
                Self {
                    enabled: Ok(value.enabled),
                    kind: Ok(value.kind),
                    private: Ok(value.private),
                    severity_params: Ok(value.severity_params),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
            applies_to_unassigned: ::std::result::Result<bool, ::std::string::String>,
            create_enabled: ::std::result::Result<bool, ::std::string::String>,
            fully_enabled: ::std::result::Result<bool, ::std::string::String>,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
            fn default() -> Self {
                Self {
                    applies_to_unassigned: Ok(super::defaults::default_bool::<true>()),
                    create_enabled: Ok(Default::default()),
                    fully_enabled: Ok(super::defaults::default_bool::<true>()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
            pub fn applies_to_unassigned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.applies_to_unassigned = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for applies_to_unassigned: {e}"
                        )
                    });
                self
            }
            pub fn create_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.create_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for create_enabled: {e}"
                        )
                    });
                self
            }
            pub fn fully_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fully_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fully_enabled: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
        > for super::UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    applies_to_unassigned: value.applies_to_unassigned?,
                    create_enabled: value.create_enabled?,
                    fully_enabled: value.fully_enabled?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
        > for UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams {
            fn from(
                value: super::UpdateIncidentPermissionSetBooleanDataAttributesSeverityParams,
            ) -> Self {
                Self {
                    applies_to_unassigned: Ok(value.applies_to_unassigned),
                    create_enabled: Ok(value.create_enabled),
                    fully_enabled: Ok(value.fully_enabled),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetData {
            attributes: ::std::result::Result<
                super::UpdateIncidentPermissionSetDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentPermissionSetDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSetData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentPermissionSetData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentPermissionSetDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetData>
        for super::UpdateIncidentPermissionSetData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSetData>
        for UpdateIncidentPermissionSetData {
            fn from(value: super::UpdateIncidentPermissionSetData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            private_incident_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem,
                >,
                ::std::string::String,
            >,
            public_incident_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSetDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    private_incident_permissions: Ok(Default::default()),
                    public_incident_permissions: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPermissionSetDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn private_incident_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateIncidentPermissionSetDataAttributesPrivateIncidentPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private_incident_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for private_incident_permissions: {e}"
                        )
                    });
                self
            }
            pub fn public_incident_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateIncidentPermissionSetDataAttributesPublicIncidentPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.public_incident_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_incident_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetDataAttributes>
        for super::UpdateIncidentPermissionSetDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    private_incident_permissions: value.private_incident_permissions?,
                    public_incident_permissions: value.public_incident_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSetDataAttributes>
        for UpdateIncidentPermissionSetDataAttributes {
            fn from(value: super::UpdateIncidentPermissionSetDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    private_incident_permissions: Ok(value.private_incident_permissions),
                    public_incident_permissions: Ok(value.public_incident_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetResource {
            data: ::std::result::Result<
                super::UpdateIncidentPermissionSetResourceData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSetResource {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentPermissionSetResource {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetResourceData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetResource>
        for super::UpdateIncidentPermissionSetResource {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetResource,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSetResource>
        for UpdateIncidentPermissionSetResource {
            fn from(value: super::UpdateIncidentPermissionSetResource) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetResourceData {
            attributes: ::std::result::Result<
                super::UpdateIncidentPermissionSetResourceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentPermissionSetResourceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPermissionSetResourceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentPermissionSetResourceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetResourceDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPermissionSetResourceDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetResourceData>
        for super::UpdateIncidentPermissionSetResourceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetResourceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPermissionSetResourceData>
        for UpdateIncidentPermissionSetResourceData {
            fn from(value: super::UpdateIncidentPermissionSetResourceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetResourceDataAttributes {
            kind: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentPermissionSetResourceDataAttributesKind,
                >,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            resource_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resource_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            severity_params: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateIncidentPermissionSetResourceDataAttributes {
            fn default() -> Self {
                Self {
                    kind: Ok(Default::default()),
                    private: Ok(Default::default()),
                    resource_id: Ok(Default::default()),
                    resource_type: Ok(Default::default()),
                    severity_params: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPermissionSetResourceDataAttributes {
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentPermissionSetResourceDataAttributesKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn resource_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resource_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource_id: {e}")
                    });
                self
            }
            pub fn resource_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resource_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resource_type: {e}")
                    });
                self
            }
            pub fn severity_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severity_params: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPermissionSetResourceDataAttributes>
        for super::UpdateIncidentPermissionSetResourceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetResourceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    kind: value.kind?,
                    private: value.private?,
                    resource_id: value.resource_id?,
                    resource_type: value.resource_type?,
                    severity_params: value.severity_params?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentPermissionSetResourceDataAttributes,
        > for UpdateIncidentPermissionSetResourceDataAttributes {
            fn from(
                value: super::UpdateIncidentPermissionSetResourceDataAttributes,
            ) -> Self {
                Self {
                    kind: Ok(value.kind),
                    private: Ok(value.private),
                    resource_id: Ok(value.resource_id),
                    resource_type: Ok(value.resource_type),
                    severity_params: Ok(value.severity_params),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
            applies_to_unassigned: ::std::result::Result<bool, ::std::string::String>,
            create_enabled: ::std::result::Result<bool, ::std::string::String>,
            fully_enabled: ::std::result::Result<bool, ::std::string::String>,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
            fn default() -> Self {
                Self {
                    applies_to_unassigned: Ok(super::defaults::default_bool::<true>()),
                    create_enabled: Ok(Default::default()),
                    fully_enabled: Ok(super::defaults::default_bool::<true>()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
            pub fn applies_to_unassigned<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.applies_to_unassigned = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for applies_to_unassigned: {e}"
                        )
                    });
                self
            }
            pub fn create_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.create_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for create_enabled: {e}"
                        )
                    });
                self
            }
            pub fn fully_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.fully_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for fully_enabled: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
        > for super::UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    applies_to_unassigned: value.applies_to_unassigned?,
                    create_enabled: value.create_enabled?,
                    fully_enabled: value.fully_enabled?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
        > for UpdateIncidentPermissionSetResourceDataAttributesSeverityParams {
            fn from(
                value: super::UpdateIncidentPermissionSetResourceDataAttributesSeverityParams,
            ) -> Self {
                Self {
                    applies_to_unassigned: Ok(value.applies_to_unassigned),
                    create_enabled: Ok(value.create_enabled),
                    fully_enabled: Ok(value.fully_enabled),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPostMortem {
            data: ::std::result::Result<
                super::UpdateIncidentPostMortemData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPostMortem {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentPostMortem {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentPostMortemData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPostMortem>
        for super::UpdateIncidentPostMortem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPostMortem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPostMortem>
        for UpdateIncidentPostMortem {
            fn from(value: super::UpdateIncidentPostMortem) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPostMortemData {
            attributes: ::std::result::Result<
                super::UpdateIncidentPostMortemDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentPostMortemDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPostMortemData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentPostMortemData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentPostMortemDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentPostMortemDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPostMortemData>
        for super::UpdateIncidentPostMortemData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPostMortemData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPostMortemData>
        for UpdateIncidentPostMortemData {
            fn from(value: super::UpdateIncidentPostMortemData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPostMortemDataAttributes {
            cause_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            mitigated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolved_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            show_action_items: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_alerts_attached: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_functionalities_impacted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_groups_impacted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_services_impacted: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_action_items: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_genius: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_tasks: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_trail: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentPostMortemDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPostMortemDataAttributes {
            fn default() -> Self {
                Self {
                    cause_ids: Ok(Default::default()),
                    mitigated_at: Ok(Default::default()),
                    resolved_at: Ok(Default::default()),
                    show_action_items: Ok(Default::default()),
                    show_alerts_attached: Ok(Default::default()),
                    show_functionalities_impacted: Ok(Default::default()),
                    show_groups_impacted: Ok(Default::default()),
                    show_services_impacted: Ok(Default::default()),
                    show_timeline: Ok(Default::default()),
                    show_timeline_action_items: Ok(Default::default()),
                    show_timeline_genius: Ok(Default::default()),
                    show_timeline_tasks: Ok(Default::default()),
                    show_timeline_trail: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPostMortemDataAttributes {
            pub fn cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cause_ids: {e}")
                    });
                self
            }
            pub fn mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_at: {e}")
                    });
                self
            }
            pub fn resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_at: {e}")
                    });
                self
            }
            pub fn show_action_items<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_action_items = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_action_items: {e}"
                        )
                    });
                self
            }
            pub fn show_alerts_attached<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_alerts_attached = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_alerts_attached: {e}"
                        )
                    });
                self
            }
            pub fn show_functionalities_impacted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_functionalities_impacted = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_functionalities_impacted: {e}"
                        )
                    });
                self
            }
            pub fn show_groups_impacted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_groups_impacted = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_groups_impacted: {e}"
                        )
                    });
                self
            }
            pub fn show_services_impacted<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_services_impacted = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_services_impacted: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_timeline: {e}")
                    });
                self
            }
            pub fn show_timeline_action_items<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_action_items = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_action_items: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_genius<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_genius = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_genius: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_tasks<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_tasks = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_tasks: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_trail<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_trail = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_trail: {e}"
                        )
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentPostMortemDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPostMortemDataAttributes>
        for super::UpdateIncidentPostMortemDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPostMortemDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cause_ids: value.cause_ids?,
                    mitigated_at: value.mitigated_at?,
                    resolved_at: value.resolved_at?,
                    show_action_items: value.show_action_items?,
                    show_alerts_attached: value.show_alerts_attached?,
                    show_functionalities_impacted: value.show_functionalities_impacted?,
                    show_groups_impacted: value.show_groups_impacted?,
                    show_services_impacted: value.show_services_impacted?,
                    show_timeline: value.show_timeline?,
                    show_timeline_action_items: value.show_timeline_action_items?,
                    show_timeline_genius: value.show_timeline_genius?,
                    show_timeline_tasks: value.show_timeline_tasks?,
                    show_timeline_trail: value.show_timeline_trail?,
                    started_at: value.started_at?,
                    status: value.status?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPostMortemDataAttributes>
        for UpdateIncidentPostMortemDataAttributes {
            fn from(value: super::UpdateIncidentPostMortemDataAttributes) -> Self {
                Self {
                    cause_ids: Ok(value.cause_ids),
                    mitigated_at: Ok(value.mitigated_at),
                    resolved_at: Ok(value.resolved_at),
                    show_action_items: Ok(value.show_action_items),
                    show_alerts_attached: Ok(value.show_alerts_attached),
                    show_functionalities_impacted: Ok(
                        value.show_functionalities_impacted,
                    ),
                    show_groups_impacted: Ok(value.show_groups_impacted),
                    show_services_impacted: Ok(value.show_services_impacted),
                    show_timeline: Ok(value.show_timeline),
                    show_timeline_action_items: Ok(value.show_timeline_action_items),
                    show_timeline_genius: Ok(value.show_timeline_genius),
                    show_timeline_tasks: Ok(value.show_timeline_tasks),
                    show_timeline_trail: Ok(value.show_timeline_trail),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentPostmortemTaskParams {
            postmortem_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentPostmortemTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentPostmortemTaskParams {
            fn default() -> Self {
                Self {
                    postmortem_id: Err(
                        "no value supplied for postmortem_id".to_string(),
                    ),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentPostmortemTaskParams {
            pub fn postmortem_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.postmortem_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for postmortem_id: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentPostmortemTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentPostmortemTaskParams>
        for super::UpdateIncidentPostmortemTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentPostmortemTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    postmortem_id: value.postmortem_id?,
                    status: value.status?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentPostmortemTaskParams>
        for UpdateIncidentPostmortemTaskParams {
            fn from(value: super::UpdateIncidentPostmortemTaskParams) -> Self {
                Self {
                    postmortem_id: Ok(value.postmortem_id),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRetrospectiveStep {
            data: ::std::result::Result<
                super::UpdateIncidentRetrospectiveStepData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRetrospectiveStep {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentRetrospectiveStep {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRetrospectiveStepData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRetrospectiveStep>
        for super::UpdateIncidentRetrospectiveStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRetrospectiveStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRetrospectiveStep>
        for UpdateIncidentRetrospectiveStep {
            fn from(value: super::UpdateIncidentRetrospectiveStep) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRetrospectiveStepData {
            attributes: ::std::result::Result<
                super::UpdateIncidentRetrospectiveStepDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentRetrospectiveStepDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRetrospectiveStepData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentRetrospectiveStepData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentRetrospectiveStepDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentRetrospectiveStepDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRetrospectiveStepData>
        for super::UpdateIncidentRetrospectiveStepData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRetrospectiveStepData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRetrospectiveStepData>
        for UpdateIncidentRetrospectiveStepData {
            fn from(value: super::UpdateIncidentRetrospectiveStepData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRetrospectiveStepDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            skippable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentRetrospectiveStepDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRetrospectiveStepDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    position: Ok(Default::default()),
                    skippable: Ok(Default::default()),
                    status: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentRetrospectiveStepDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn skippable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skippable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for skippable: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentRetrospectiveStepDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRetrospectiveStepDataAttributes>
        for super::UpdateIncidentRetrospectiveStepDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRetrospectiveStepDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    due_date: value.due_date?,
                    position: value.position?,
                    skippable: value.skippable?,
                    status: value.status?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRetrospectiveStepDataAttributes>
        for UpdateIncidentRetrospectiveStepDataAttributes {
            fn from(
                value: super::UpdateIncidentRetrospectiveStepDataAttributes,
            ) -> Self {
                Self {
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    position: Ok(value.position),
                    skippable: Ok(value.skippable),
                    status: Ok(value.status),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRole {
            data: ::std::result::Result<
                super::UpdateIncidentRoleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRole {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentRole {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRoleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRole> for super::UpdateIncidentRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRole> for UpdateIncidentRole {
            fn from(value: super::UpdateIncidentRole) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRoleData {
            attributes: ::std::result::Result<
                super::UpdateIncidentRoleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentRoleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRoleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentRoleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRoleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRoleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRoleData>
        for super::UpdateIncidentRoleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRoleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRoleData>
        for UpdateIncidentRoleData {
            fn from(value: super::UpdateIncidentRoleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRoleDataAttributes {
            allow_multi_user_assignment: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            optional: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRoleDataAttributes {
            fn default() -> Self {
                Self {
                    allow_multi_user_assignment: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                    optional: Ok(Default::default()),
                    position: Ok(Default::default()),
                    summary: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentRoleDataAttributes {
            pub fn allow_multi_user_assignment<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.allow_multi_user_assignment = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for allow_multi_user_assignment: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn optional<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.optional = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for optional: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRoleDataAttributes>
        for super::UpdateIncidentRoleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRoleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    allow_multi_user_assignment: value.allow_multi_user_assignment?,
                    description: value.description?,
                    enabled: value.enabled?,
                    name: value.name?,
                    optional: value.optional?,
                    position: value.position?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRoleDataAttributes>
        for UpdateIncidentRoleDataAttributes {
            fn from(value: super::UpdateIncidentRoleDataAttributes) -> Self {
                Self {
                    allow_multi_user_assignment: Ok(value.allow_multi_user_assignment),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    optional: Ok(value.optional),
                    position: Ok(value.position),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRoleTask {
            data: ::std::result::Result<
                super::UpdateIncidentRoleTaskData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRoleTask {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentRoleTask {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRoleTaskData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRoleTask>
        for super::UpdateIncidentRoleTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRoleTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRoleTask>
        for UpdateIncidentRoleTask {
            fn from(value: super::UpdateIncidentRoleTask) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRoleTaskData {
            attributes: ::std::result::Result<
                super::UpdateIncidentRoleTaskDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentRoleTaskDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRoleTaskData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentRoleTaskData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRoleTaskDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentRoleTaskDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRoleTaskData>
        for super::UpdateIncidentRoleTaskData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRoleTaskData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRoleTaskData>
        for UpdateIncidentRoleTaskData {
            fn from(value: super::UpdateIncidentRoleTaskData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentRoleTaskDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentRoleTaskDataAttributesPriority,
                >,
                ::std::string::String,
            >,
            task: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentRoleTaskDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    task: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentRoleTaskDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentRoleTaskDataAttributesPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.task = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentRoleTaskDataAttributes>
        for super::UpdateIncidentRoleTaskDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentRoleTaskDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    priority: value.priority?,
                    task: value.task?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentRoleTaskDataAttributes>
        for UpdateIncidentRoleTaskDataAttributes {
            fn from(value: super::UpdateIncidentRoleTaskDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    priority: Ok(value.priority),
                    task: Ok(value.task),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentStatusPageEvent {
            data: ::std::result::Result<
                super::UpdateIncidentStatusPageEventData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentStatusPageEvent {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentStatusPageEvent {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentStatusPageEventData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentStatusPageEvent>
        for super::UpdateIncidentStatusPageEvent {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentStatusPageEvent,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentStatusPageEvent>
        for UpdateIncidentStatusPageEvent {
            fn from(value: super::UpdateIncidentStatusPageEvent) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentStatusPageEventData {
            attributes: ::std::result::Result<
                super::UpdateIncidentStatusPageEventDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentStatusPageEventDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentStatusPageEventData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentStatusPageEventData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentStatusPageEventDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentStatusPageEventDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentStatusPageEventData>
        for super::UpdateIncidentStatusPageEventData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentStatusPageEventData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentStatusPageEventData>
        for UpdateIncidentStatusPageEventData {
            fn from(value: super::UpdateIncidentStatusPageEventData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentStatusPageEventDataAttributes {
            event: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_subscribers: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            should_tweet: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentStatusPageEventDataAttributesStatus,
                >,
                ::std::string::String,
            >,
            status_page_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentStatusPageEventDataAttributes {
            fn default() -> Self {
                Self {
                    event: Ok(Default::default()),
                    notify_subscribers: Ok(Default::default()),
                    should_tweet: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    status_page_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentStatusPageEventDataAttributes {
            pub fn event<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.event = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event: {e}")
                    });
                self
            }
            pub fn notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn should_tweet<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_tweet = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for should_tweet: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentStatusPageEventDataAttributesStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn status_page_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status_page_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_page_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentStatusPageEventDataAttributes>
        for super::UpdateIncidentStatusPageEventDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentStatusPageEventDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    event: value.event?,
                    notify_subscribers: value.notify_subscribers?,
                    should_tweet: value.should_tweet?,
                    started_at: value.started_at?,
                    status: value.status?,
                    status_page_id: value.status_page_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentStatusPageEventDataAttributes>
        for UpdateIncidentStatusPageEventDataAttributes {
            fn from(value: super::UpdateIncidentStatusPageEventDataAttributes) -> Self {
                Self {
                    event: Ok(value.event),
                    notify_subscribers: Ok(value.notify_subscribers),
                    should_tweet: Ok(value.should_tweet),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    status_page_id: Ok(value.status_page_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentStatusTimestampTaskParams {
            assigned_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateIncidentStatusTimestampTaskParamsTaskType,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentStatusTimestampTaskParams {
            fn default() -> Self {
                Self {
                    assigned_at: Err("no value supplied for assigned_at".to_string()),
                    sub_status_id: Err(
                        "no value supplied for sub_status_id".to_string(),
                    ),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentStatusTimestampTaskParams {
            pub fn assigned_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for assigned_at: {e}")
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateIncidentStatusTimestampTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentStatusTimestampTaskParams>
        for super::UpdateIncidentStatusTimestampTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentStatusTimestampTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_at: value.assigned_at?,
                    sub_status_id: value.sub_status_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentStatusTimestampTaskParams>
        for UpdateIncidentStatusTimestampTaskParams {
            fn from(value: super::UpdateIncidentStatusTimestampTaskParams) -> Self {
                Self {
                    assigned_at: Ok(value.assigned_at),
                    sub_status_id: Ok(value.sub_status_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentSubStatus {
            data: ::std::result::Result<
                super::UpdateIncidentSubStatusData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentSubStatus {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentSubStatus {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentSubStatusData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentSubStatus>
        for super::UpdateIncidentSubStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentSubStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentSubStatus>
        for UpdateIncidentSubStatus {
            fn from(value: super::UpdateIncidentSubStatus) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentSubStatusData {
            attributes: ::std::result::Result<
                super::UpdateIncidentSubStatusDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentSubStatusDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentSubStatusData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentSubStatusData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentSubStatusDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentSubStatusDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentSubStatusData>
        for super::UpdateIncidentSubStatusData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentSubStatusData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentSubStatusData>
        for UpdateIncidentSubStatusData {
            fn from(value: super::UpdateIncidentSubStatusData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentSubStatusDataAttributes {
            assigned_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            assigned_by_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentSubStatusDataAttributes {
            fn default() -> Self {
                Self {
                    assigned_at: Ok(Default::default()),
                    assigned_by_user_id: Ok(Default::default()),
                    sub_status_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentSubStatusDataAttributes {
            pub fn assigned_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for assigned_at: {e}")
                    });
                self
            }
            pub fn assigned_by_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.assigned_by_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assigned_by_user_id: {e}"
                        )
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentSubStatusDataAttributes>
        for super::UpdateIncidentSubStatusDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentSubStatusDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assigned_at: value.assigned_at?,
                    assigned_by_user_id: value.assigned_by_user_id?,
                    sub_status_id: value.sub_status_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentSubStatusDataAttributes>
        for UpdateIncidentSubStatusDataAttributes {
            fn from(value: super::UpdateIncidentSubStatusDataAttributes) -> Self {
                Self {
                    assigned_at: Ok(value.assigned_at),
                    assigned_by_user_id: Ok(value.assigned_by_user_id),
                    sub_status_id: Ok(value.sub_status_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentTaskParams {
            acknowledged_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            attribute_to_query_by: ::std::result::Result<
                super::UpdateIncidentTaskParamsAttributeToQueryBy,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            detected_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            mitigated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            private: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            resolved_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentTaskParams {
            fn default() -> Self {
                Self {
                    acknowledged_at: Ok(Default::default()),
                    attribute_to_query_by: Ok(
                        super::defaults::update_incident_task_params_attribute_to_query_by(),
                    ),
                    custom_fields_mapping: Ok(Default::default()),
                    detected_at: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    incident_type_ids: Ok(Default::default()),
                    mitigated_at: Ok(Default::default()),
                    private: Ok(Default::default()),
                    resolved_at: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_id: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentTaskParams {
            pub fn acknowledged_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.acknowledged_at = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for acknowledged_at: {e}"
                        )
                    });
                self
            }
            pub fn attribute_to_query_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateIncidentTaskParamsAttributeToQueryBy,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attribute_to_query_by = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for attribute_to_query_by: {e}"
                        )
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn detected_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.detected_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for detected_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn mitigated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.mitigated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for mitigated_at: {e}")
                    });
                self
            }
            pub fn private<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.private = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for private: {e}")
                    });
                self
            }
            pub fn resolved_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolved_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolved_at: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_id: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateIncidentTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentTaskParams>
        for super::UpdateIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    acknowledged_at: value.acknowledged_at?,
                    attribute_to_query_by: value.attribute_to_query_by?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    detected_at: value.detected_at?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_id: value.incident_id?,
                    incident_type_ids: value.incident_type_ids?,
                    mitigated_at: value.mitigated_at?,
                    private: value.private?,
                    resolved_at: value.resolved_at?,
                    service_ids: value.service_ids?,
                    severity_id: value.severity_id?,
                    started_at: value.started_at?,
                    status: value.status?,
                    summary: value.summary?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentTaskParams>
        for UpdateIncidentTaskParams {
            fn from(value: super::UpdateIncidentTaskParams) -> Self {
                Self {
                    acknowledged_at: Ok(value.acknowledged_at),
                    attribute_to_query_by: Ok(value.attribute_to_query_by),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    detected_at: Ok(value.detected_at),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_id: Ok(value.incident_id),
                    incident_type_ids: Ok(value.incident_type_ids),
                    mitigated_at: Ok(value.mitigated_at),
                    private: Ok(value.private),
                    resolved_at: Ok(value.resolved_at),
                    service_ids: Ok(value.service_ids),
                    severity_id: Ok(value.severity_id),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    summary: Ok(value.summary),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentType {
            data: ::std::result::Result<
                super::UpdateIncidentTypeData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentType {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateIncidentType {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentTypeData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentType> for super::UpdateIncidentType {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentType,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentType> for UpdateIncidentType {
            fn from(value: super::UpdateIncidentType) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentTypeData {
            attributes: ::std::result::Result<
                super::UpdateIncidentTypeDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateIncidentTypeDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentTypeData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateIncidentTypeData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentTypeDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateIncidentTypeDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentTypeData>
        for super::UpdateIncidentTypeData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentTypeData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentTypeData>
        for UpdateIncidentTypeData {
            fn from(value: super::UpdateIncidentTypeData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentTypeDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateIncidentTypeDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateIncidentTypeDataAttributesSlackAliasesItem,
                    >,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateIncidentTypeDataAttributesSlackChannelsItem,
                    >,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateIncidentTypeDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl UpdateIncidentTypeDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateIncidentTypeDataAttributesPropertiesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateIncidentTypeDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateIncidentTypeDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentTypeDataAttributes>
        for super::UpdateIncidentTypeDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentTypeDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    properties: value.properties?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentTypeDataAttributes>
        for UpdateIncidentTypeDataAttributes {
            fn from(value: super::UpdateIncidentTypeDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentTypeDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateIncidentTypeDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateIncidentTypeDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentTypeDataAttributesPropertiesItem>
        for super::UpdateIncidentTypeDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentTypeDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateIncidentTypeDataAttributesPropertiesItem>
        for UpdateIncidentTypeDataAttributesPropertiesItem {
            fn from(
                value: super::UpdateIncidentTypeDataAttributesPropertiesItem,
            ) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentTypeDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateIncidentTypeDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateIncidentTypeDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentTypeDataAttributesSlackAliasesItem>
        for super::UpdateIncidentTypeDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentTypeDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentTypeDataAttributesSlackAliasesItem,
        > for UpdateIncidentTypeDataAttributesSlackAliasesItem {
            fn from(
                value: super::UpdateIncidentTypeDataAttributesSlackAliasesItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateIncidentTypeDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default
        for UpdateIncidentTypeDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateIncidentTypeDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateIncidentTypeDataAttributesSlackChannelsItem>
        for super::UpdateIncidentTypeDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateIncidentTypeDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateIncidentTypeDataAttributesSlackChannelsItem,
        > for UpdateIncidentTypeDataAttributesSlackChannelsItem {
            fn from(
                value: super::UpdateIncidentTypeDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateJiraIssueTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            integration: ::std::result::Result<
                ::std::option::Option<super::UpdateJiraIssueTaskParamsIntegration>,
                ::std::string::String,
            >,
            issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateJiraIssueTaskParamsPriority>,
                ::std::string::String,
            >,
            project_key: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            reporter_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::UpdateJiraIssueTaskParamsStatus>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateJiraIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            update_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateJiraIssueTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    integration: Ok(Default::default()),
                    issue_id: Err("no value supplied for issue_id".to_string()),
                    labels: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    project_key: Err("no value supplied for project_key".to_string()),
                    reporter_user_email: Ok(Default::default()),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                    update_payload: Ok(Default::default()),
                }
            }
        }
        impl UpdateJiraIssueTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn integration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateJiraIssueTaskParamsIntegration>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for integration: {e}")
                    });
                self
            }
            pub fn issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_id: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateJiraIssueTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn project_key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.project_key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project_key: {e}")
                    });
                self
            }
            pub fn reporter_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.reporter_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for reporter_user_email: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateJiraIssueTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateJiraIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn update_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for update_payload: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateJiraIssueTaskParams>
        for super::UpdateJiraIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateJiraIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    due_date: value.due_date?,
                    integration: value.integration?,
                    issue_id: value.issue_id?,
                    labels: value.labels?,
                    priority: value.priority?,
                    project_key: value.project_key?,
                    reporter_user_email: value.reporter_user_email?,
                    status: value.status?,
                    task_type: value.task_type?,
                    title: value.title?,
                    update_payload: value.update_payload?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateJiraIssueTaskParams>
        for UpdateJiraIssueTaskParams {
            fn from(value: super::UpdateJiraIssueTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    integration: Ok(value.integration),
                    issue_id: Ok(value.issue_id),
                    labels: Ok(value.labels),
                    priority: Ok(value.priority),
                    project_key: Ok(value.project_key),
                    reporter_user_email: Ok(value.reporter_user_email),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    update_payload: Ok(value.update_payload),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateJiraIssueTaskParamsIntegration {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateJiraIssueTaskParamsIntegration {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateJiraIssueTaskParamsIntegration {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateJiraIssueTaskParamsIntegration>
        for super::UpdateJiraIssueTaskParamsIntegration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateJiraIssueTaskParamsIntegration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateJiraIssueTaskParamsIntegration>
        for UpdateJiraIssueTaskParamsIntegration {
            fn from(value: super::UpdateJiraIssueTaskParamsIntegration) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateJiraIssueTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateJiraIssueTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateJiraIssueTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateJiraIssueTaskParamsPriority>
        for super::UpdateJiraIssueTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateJiraIssueTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateJiraIssueTaskParamsPriority>
        for UpdateJiraIssueTaskParamsPriority {
            fn from(value: super::UpdateJiraIssueTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateJiraIssueTaskParamsStatus {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateJiraIssueTaskParamsStatus {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateJiraIssueTaskParamsStatus {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateJiraIssueTaskParamsStatus>
        for super::UpdateJiraIssueTaskParamsStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateJiraIssueTaskParamsStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateJiraIssueTaskParamsStatus>
        for UpdateJiraIssueTaskParamsStatus {
            fn from(value: super::UpdateJiraIssueTaskParamsStatus) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLinearIssueTaskParams {
            assign_user_email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            issue_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::UpdateLinearIssueTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateLinearIssueTaskParamsPriority>,
                ::std::string::String,
            >,
            project: ::std::result::Result<
                ::std::option::Option<super::UpdateLinearIssueTaskParamsProject>,
                ::std::string::String,
            >,
            state: ::std::result::Result<
                ::std::option::Option<super::UpdateLinearIssueTaskParamsState>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateLinearIssueTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLinearIssueTaskParams {
            fn default() -> Self {
                Self {
                    assign_user_email: Ok(Default::default()),
                    description: Ok(Default::default()),
                    issue_id: Err("no value supplied for issue_id".to_string()),
                    labels: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    project: Ok(Default::default()),
                    state: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateLinearIssueTaskParams {
            pub fn assign_user_email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.assign_user_email = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assign_user_email: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn issue_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.issue_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for issue_id: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateLinearIssueTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateLinearIssueTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn project<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateLinearIssueTaskParamsProject>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.project = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for project: {e}")
                    });
                self
            }
            pub fn state<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateLinearIssueTaskParamsState>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.state = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for state: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateLinearIssueTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLinearIssueTaskParams>
        for super::UpdateLinearIssueTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLinearIssueTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assign_user_email: value.assign_user_email?,
                    description: value.description?,
                    issue_id: value.issue_id?,
                    labels: value.labels?,
                    priority: value.priority?,
                    project: value.project?,
                    state: value.state?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLinearIssueTaskParams>
        for UpdateLinearIssueTaskParams {
            fn from(value: super::UpdateLinearIssueTaskParams) -> Self {
                Self {
                    assign_user_email: Ok(value.assign_user_email),
                    description: Ok(value.description),
                    issue_id: Ok(value.issue_id),
                    labels: Ok(value.labels),
                    priority: Ok(value.priority),
                    project: Ok(value.project),
                    state: Ok(value.state),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLinearIssueTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLinearIssueTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateLinearIssueTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLinearIssueTaskParamsLabelsItem>
        for super::UpdateLinearIssueTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLinearIssueTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLinearIssueTaskParamsLabelsItem>
        for UpdateLinearIssueTaskParamsLabelsItem {
            fn from(value: super::UpdateLinearIssueTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLinearIssueTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLinearIssueTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateLinearIssueTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLinearIssueTaskParamsPriority>
        for super::UpdateLinearIssueTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLinearIssueTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLinearIssueTaskParamsPriority>
        for UpdateLinearIssueTaskParamsPriority {
            fn from(value: super::UpdateLinearIssueTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLinearIssueTaskParamsProject {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLinearIssueTaskParamsProject {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateLinearIssueTaskParamsProject {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLinearIssueTaskParamsProject>
        for super::UpdateLinearIssueTaskParamsProject {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLinearIssueTaskParamsProject,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLinearIssueTaskParamsProject>
        for UpdateLinearIssueTaskParamsProject {
            fn from(value: super::UpdateLinearIssueTaskParamsProject) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLinearIssueTaskParamsState {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLinearIssueTaskParamsState {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateLinearIssueTaskParamsState {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLinearIssueTaskParamsState>
        for super::UpdateLinearIssueTaskParamsState {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLinearIssueTaskParamsState,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLinearIssueTaskParamsState>
        for UpdateLinearIssueTaskParamsState {
            fn from(value: super::UpdateLinearIssueTaskParamsState) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLiveCallRouter {
            data: ::std::result::Result<
                super::UpdateLiveCallRouterData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLiveCallRouter {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateLiveCallRouter {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateLiveCallRouterData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLiveCallRouter>
        for super::UpdateLiveCallRouter {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLiveCallRouter,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateLiveCallRouter> for UpdateLiveCallRouter {
            fn from(value: super::UpdateLiveCallRouter) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLiveCallRouterData {
            attributes: ::std::result::Result<
                super::UpdateLiveCallRouterDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateLiveCallRouterDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLiveCallRouterData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateLiveCallRouterData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateLiveCallRouterDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateLiveCallRouterDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLiveCallRouterData>
        for super::UpdateLiveCallRouterData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLiveCallRouterData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLiveCallRouterData>
        for UpdateLiveCallRouterData {
            fn from(value: super::UpdateLiveCallRouterData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLiveCallRouterDataAttributes {
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            caller_greeting: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            calling_tree_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            calling_tree_prompt: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            country_code: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateLiveCallRouterDataAttributesCountryCode,
                >,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            escalation_level_delay_in_seconds: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            escalation_policy_trigger_params: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
                >,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateLiveCallRouterDataAttributesKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            paging_targets: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateLiveCallRouterDataAttributesPagingTargetsItem,
                >,
                ::std::string::String,
            >,
            phone_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateLiveCallRouterDataAttributesPhoneType,
                >,
                ::std::string::String,
            >,
            sent_to_voicemail_delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            should_auto_resolve_alert_on_call_end: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            should_redirect_to_voicemail_on_no_answer: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            voicemail_greeting: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            waiting_music_url: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateLiveCallRouterDataAttributesWaitingMusicUrl,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateLiveCallRouterDataAttributes {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Ok(Default::default()),
                    caller_greeting: Ok(Default::default()),
                    calling_tree_enabled: Ok(Default::default()),
                    calling_tree_prompt: Ok(Default::default()),
                    country_code: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    escalation_level_delay_in_seconds: Ok(Default::default()),
                    escalation_policy_trigger_params: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Ok(Default::default()),
                    paging_targets: Ok(Default::default()),
                    phone_type: Ok(Default::default()),
                    sent_to_voicemail_delay: Ok(Default::default()),
                    should_auto_resolve_alert_on_call_end: Ok(Default::default()),
                    should_redirect_to_voicemail_on_no_answer: Ok(Default::default()),
                    voicemail_greeting: Ok(Default::default()),
                    waiting_music_url: Ok(Default::default()),
                }
            }
        }
        impl UpdateLiveCallRouterDataAttributes {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn caller_greeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.caller_greeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for caller_greeting: {e}"
                        )
                    });
                self
            }
            pub fn calling_tree_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.calling_tree_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for calling_tree_enabled: {e}"
                        )
                    });
                self
            }
            pub fn calling_tree_prompt<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.calling_tree_prompt = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for calling_tree_prompt: {e}"
                        )
                    });
                self
            }
            pub fn country_code<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateLiveCallRouterDataAttributesCountryCode,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.country_code = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for country_code: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn escalation_level_delay_in_seconds<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_level_delay_in_seconds = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_level_delay_in_seconds: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_trigger_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_trigger_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_trigger_params: {e}"
                        )
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateLiveCallRouterDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn paging_targets<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateLiveCallRouterDataAttributesPagingTargetsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_targets = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_targets: {e}"
                        )
                    });
                self
            }
            pub fn phone_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateLiveCallRouterDataAttributesPhoneType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.phone_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone_type: {e}")
                    });
                self
            }
            pub fn sent_to_voicemail_delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.sent_to_voicemail_delay = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sent_to_voicemail_delay: {e}"
                        )
                    });
                self
            }
            pub fn should_auto_resolve_alert_on_call_end<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_auto_resolve_alert_on_call_end = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_auto_resolve_alert_on_call_end: {e}"
                        )
                    });
                self
            }
            pub fn should_redirect_to_voicemail_on_no_answer<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_redirect_to_voicemail_on_no_answer = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_redirect_to_voicemail_on_no_answer: {e}"
                        )
                    });
                self
            }
            pub fn voicemail_greeting<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.voicemail_greeting = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for voicemail_greeting: {e}"
                        )
                    });
                self
            }
            pub fn waiting_music_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateLiveCallRouterDataAttributesWaitingMusicUrl,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.waiting_music_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for waiting_music_url: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLiveCallRouterDataAttributes>
        for super::UpdateLiveCallRouterDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLiveCallRouterDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    caller_greeting: value.caller_greeting?,
                    calling_tree_enabled: value.calling_tree_enabled?,
                    calling_tree_prompt: value.calling_tree_prompt?,
                    country_code: value.country_code?,
                    enabled: value.enabled?,
                    escalation_level_delay_in_seconds: value
                        .escalation_level_delay_in_seconds?,
                    escalation_policy_trigger_params: value
                        .escalation_policy_trigger_params?,
                    kind: value.kind?,
                    name: value.name?,
                    paging_targets: value.paging_targets?,
                    phone_type: value.phone_type?,
                    sent_to_voicemail_delay: value.sent_to_voicemail_delay?,
                    should_auto_resolve_alert_on_call_end: value
                        .should_auto_resolve_alert_on_call_end?,
                    should_redirect_to_voicemail_on_no_answer: value
                        .should_redirect_to_voicemail_on_no_answer?,
                    voicemail_greeting: value.voicemail_greeting?,
                    waiting_music_url: value.waiting_music_url?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateLiveCallRouterDataAttributes>
        for UpdateLiveCallRouterDataAttributes {
            fn from(value: super::UpdateLiveCallRouterDataAttributes) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    caller_greeting: Ok(value.caller_greeting),
                    calling_tree_enabled: Ok(value.calling_tree_enabled),
                    calling_tree_prompt: Ok(value.calling_tree_prompt),
                    country_code: Ok(value.country_code),
                    enabled: Ok(value.enabled),
                    escalation_level_delay_in_seconds: Ok(
                        value.escalation_level_delay_in_seconds,
                    ),
                    escalation_policy_trigger_params: Ok(
                        value.escalation_policy_trigger_params,
                    ),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    paging_targets: Ok(value.paging_targets),
                    phone_type: Ok(value.phone_type),
                    sent_to_voicemail_delay: Ok(value.sent_to_voicemail_delay),
                    should_auto_resolve_alert_on_call_end: Ok(
                        value.should_auto_resolve_alert_on_call_end,
                    ),
                    should_redirect_to_voicemail_on_no_answer: Ok(
                        value.should_redirect_to_voicemail_on_no_answer,
                    ),
                    voicemail_greeting: Ok(value.voicemail_greeting),
                    waiting_music_url: Ok(value.waiting_music_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParamsType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
        > for super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
        > for UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams {
            fn from(
                value: super::UpdateLiveCallRouterDataAttributesEscalationPolicyTriggerParams,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateLiveCallRouterDataAttributesPagingTargetsItem {
            alert_urgency_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UpdateLiveCallRouterDataAttributesPagingTargetsItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateLiveCallRouterDataAttributesPagingTargetsItem {
            fn default() -> Self {
                Self {
                    alert_urgency_id: Err(
                        "no value supplied for alert_urgency_id".to_string(),
                    ),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateLiveCallRouterDataAttributesPagingTargetsItem {
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateLiveCallRouterDataAttributesPagingTargetsItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateLiveCallRouterDataAttributesPagingTargetsItem>
        for super::UpdateLiveCallRouterDataAttributesPagingTargetsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateLiveCallRouterDataAttributesPagingTargetsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_urgency_id: value.alert_urgency_id?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateLiveCallRouterDataAttributesPagingTargetsItem,
        > for UpdateLiveCallRouterDataAttributesPagingTargetsItem {
            fn from(
                value: super::UpdateLiveCallRouterDataAttributesPagingTargetsItem,
            ) -> Self {
                Self {
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateMotionTaskTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateMotionTaskTaskParamsPriority>,
                ::std::string::String,
            >,
            task_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateMotionTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateMotionTaskTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    duration: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    task_id: Err("no value supplied for task_id".to_string()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateMotionTaskTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.duration = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for duration: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateMotionTaskTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateMotionTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateMotionTaskTaskParams>
        for super::UpdateMotionTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateMotionTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    due_date: value.due_date?,
                    duration: value.duration?,
                    labels: value.labels?,
                    priority: value.priority?,
                    task_id: value.task_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateMotionTaskTaskParams>
        for UpdateMotionTaskTaskParams {
            fn from(value: super::UpdateMotionTaskTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    duration: Ok(value.duration),
                    labels: Ok(value.labels),
                    priority: Ok(value.priority),
                    task_id: Ok(value.task_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateMotionTaskTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateMotionTaskTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateMotionTaskTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateMotionTaskTaskParamsPriority>
        for super::UpdateMotionTaskTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateMotionTaskTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateMotionTaskTaskParamsPriority>
        for UpdateMotionTaskTaskParamsPriority {
            fn from(value: super::UpdateMotionTaskTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateNotionPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            show_action_items_as_table: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_timeline_as_table: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateNotionPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateNotionPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    post_mortem_template_id: Ok(Default::default()),
                    show_action_items_as_table: Ok(Default::default()),
                    show_timeline_as_table: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateNotionPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn show_action_items_as_table<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_action_items_as_table = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_action_items_as_table: {e}"
                        )
                    });
                self
            }
            pub fn show_timeline_as_table<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_timeline_as_table = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_timeline_as_table: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateNotionPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateNotionPageTaskParams>
        for super::UpdateNotionPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateNotionPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    show_action_items_as_table: value.show_action_items_as_table?,
                    show_timeline_as_table: value.show_timeline_as_table?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateNotionPageTaskParams>
        for UpdateNotionPageTaskParams {
            fn from(value: super::UpdateNotionPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    show_action_items_as_table: Ok(value.show_action_items_as_table),
                    show_timeline_as_table: Ok(value.show_timeline_as_table),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallPayReport {
            data: ::std::result::Result<
                super::UpdateOnCallPayReportData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallPayReport {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateOnCallPayReport {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallPayReportData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallPayReport>
        for super::UpdateOnCallPayReport {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallPayReport,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallPayReport>
        for UpdateOnCallPayReport {
            fn from(value: super::UpdateOnCallPayReport) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallPayReportData {
            attributes: ::std::result::Result<
                super::UpdateOnCallPayReportDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateOnCallPayReportDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallPayReportData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateOnCallPayReportData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallPayReportDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallPayReportDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallPayReportData>
        for super::UpdateOnCallPayReportData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallPayReportData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallPayReportData>
        for UpdateOnCallPayReportData {
            fn from(value: super::UpdateOnCallPayReportData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallPayReportDataAttributes {
            end_date: ::std::result::Result<
                ::std::option::Option<::chrono::naive::NaiveDate>,
                ::std::string::String,
            >,
            schedule_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            start_date: ::std::result::Result<
                ::std::option::Option<::chrono::naive::NaiveDate>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            use_responders_time_zone: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallPayReportDataAttributes {
            fn default() -> Self {
                Self {
                    end_date: Ok(Default::default()),
                    schedule_ids: Ok(Default::default()),
                    start_date: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                    use_responders_time_zone: Ok(Default::default()),
                }
            }
        }
        impl UpdateOnCallPayReportDataAttributes {
            pub fn end_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::naive::NaiveDate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_date: {e}")
                    });
                self
            }
            pub fn schedule_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_ids: {e}")
                    });
                self
            }
            pub fn start_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::naive::NaiveDate>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_date: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn use_responders_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.use_responders_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for use_responders_time_zone: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallPayReportDataAttributes>
        for super::UpdateOnCallPayReportDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallPayReportDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_date: value.end_date?,
                    schedule_ids: value.schedule_ids?,
                    start_date: value.start_date?,
                    time_zone: value.time_zone?,
                    use_responders_time_zone: value.use_responders_time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallPayReportDataAttributes>
        for UpdateOnCallPayReportDataAttributes {
            fn from(value: super::UpdateOnCallPayReportDataAttributes) -> Self {
                Self {
                    end_date: Ok(value.end_date),
                    schedule_ids: Ok(value.schedule_ids),
                    start_date: Ok(value.start_date),
                    time_zone: Ok(value.time_zone),
                    use_responders_time_zone: Ok(value.use_responders_time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallRole {
            data: ::std::result::Result<
                super::UpdateOnCallRoleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallRole {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateOnCallRole {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallRoleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallRole> for super::UpdateOnCallRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallRole> for UpdateOnCallRole {
            fn from(value: super::UpdateOnCallRole) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallRoleData {
            attributes: ::std::result::Result<
                super::UpdateOnCallRoleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateOnCallRoleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallRoleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateOnCallRoleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallRoleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallRoleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallRoleData>
        for super::UpdateOnCallRoleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallRoleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallRoleData> for UpdateOnCallRoleData {
            fn from(value: super::UpdateOnCallRoleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallRoleDataAttributes {
            alert_fields_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_groups_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_routing_rules_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_sources_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem,
                >,
                ::std::string::String,
            >,
            alert_urgency_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem,
                >,
                ::std::string::String,
            >,
            alerts_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAlertsPermissionsItem,
                >,
                ::std::string::String,
            >,
            api_keys_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesApiKeysPermissionsItem,
                >,
                ::std::string::String,
            >,
            audits_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesAuditsPermissionsItem,
                >,
                ::std::string::String,
            >,
            catalogs_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesCatalogsPermissionsItem,
                >,
                ::std::string::String,
            >,
            contacts_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesContactsPermissionsItem,
                >,
                ::std::string::String,
            >,
            escalation_policies_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem,
                >,
                ::std::string::String,
            >,
            groups_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesGroupsPermissionsItem,
                >,
                ::std::string::String,
            >,
            heartbeats_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem,
                >,
                ::std::string::String,
            >,
            integrations_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem,
                >,
                ::std::string::String,
            >,
            invitations_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesInvitationsPermissionsItem,
                >,
                ::std::string::String,
            >,
            live_call_routing_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            on_call_readiness_report_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem,
                >,
                ::std::string::String,
            >,
            on_call_roles_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem,
                >,
                ::std::string::String,
            >,
            schedule_override_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem,
                >,
                ::std::string::String,
            >,
            schedules_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesSchedulesPermissionsItem,
                >,
                ::std::string::String,
            >,
            services_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesServicesPermissionsItem,
                >,
                ::std::string::String,
            >,
            system_role: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            webhooks_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesWebhooksPermissionsItem,
                >,
                ::std::string::String,
            >,
            workflows_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallRoleDataAttributes {
            fn default() -> Self {
                Self {
                    alert_fields_permissions: Ok(Default::default()),
                    alert_groups_permissions: Ok(Default::default()),
                    alert_routing_rules_permissions: Ok(Default::default()),
                    alert_sources_permissions: Ok(Default::default()),
                    alert_urgency_permissions: Ok(Default::default()),
                    alerts_permissions: Ok(Default::default()),
                    api_keys_permissions: Ok(Default::default()),
                    audits_permissions: Ok(Default::default()),
                    catalogs_permissions: Ok(Default::default()),
                    contacts_permissions: Ok(Default::default()),
                    escalation_policies_permissions: Ok(Default::default()),
                    groups_permissions: Ok(Default::default()),
                    heartbeats_permissions: Ok(Default::default()),
                    integrations_permissions: Ok(Default::default()),
                    invitations_permissions: Ok(Default::default()),
                    live_call_routing_permissions: Ok(Default::default()),
                    name: Ok(Default::default()),
                    on_call_readiness_report_permissions: Ok(Default::default()),
                    on_call_roles_permissions: Ok(Default::default()),
                    schedule_override_permissions: Ok(Default::default()),
                    schedules_permissions: Ok(Default::default()),
                    services_permissions: Ok(Default::default()),
                    system_role: Ok(
                        super::defaults::update_on_call_role_data_attributes_system_role(),
                    ),
                    webhooks_permissions: Ok(Default::default()),
                    workflows_permissions: Ok(Default::default()),
                }
            }
        }
        impl UpdateOnCallRoleDataAttributes {
            pub fn alert_fields_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAlertFieldsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_fields_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_fields_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAlertGroupsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_routing_rules_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAlertRoutingRulesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_routing_rules_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_routing_rules_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_sources_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAlertSourcesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_sources_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_sources_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAlertUrgencyPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_permissions: {e}"
                        )
                    });
                self
            }
            pub fn alerts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAlertsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn api_keys_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesApiKeysPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.api_keys_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for api_keys_permissions: {e}"
                        )
                    });
                self
            }
            pub fn audits_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesAuditsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.audits_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for audits_permissions: {e}"
                        )
                    });
                self
            }
            pub fn catalogs_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesCatalogsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalogs_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalogs_permissions: {e}"
                        )
                    });
                self
            }
            pub fn contacts_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesContactsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.contacts_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for contacts_permissions: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policies_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesEscalationPoliciesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policies_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policies_permissions: {e}"
                        )
                    });
                self
            }
            pub fn groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesGroupsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn heartbeats_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesHeartbeatsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.heartbeats_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for heartbeats_permissions: {e}"
                        )
                    });
                self
            }
            pub fn integrations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesIntegrationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn invitations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesInvitationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.invitations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for invitations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn live_call_routing_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesLiveCallRoutingPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.live_call_routing_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for live_call_routing_permissions: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn on_call_readiness_report_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesOnCallReadinessReportPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_readiness_report_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_readiness_report_permissions: {e}"
                        )
                    });
                self
            }
            pub fn on_call_roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesOnCallRolesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn schedule_override_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesScheduleOverridePermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_override_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_override_permissions: {e}"
                        )
                    });
                self
            }
            pub fn schedules_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesSchedulesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedules_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedules_permissions: {e}"
                        )
                    });
                self
            }
            pub fn services_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesServicesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_permissions: {e}"
                        )
                    });
                self
            }
            pub fn system_role<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.system_role = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for system_role: {e}")
                    });
                self
            }
            pub fn webhooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesWebhooksPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn workflows_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateOnCallRoleDataAttributesWorkflowsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.workflows_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflows_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallRoleDataAttributes>
        for super::UpdateOnCallRoleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallRoleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_fields_permissions: value.alert_fields_permissions?,
                    alert_groups_permissions: value.alert_groups_permissions?,
                    alert_routing_rules_permissions: value
                        .alert_routing_rules_permissions?,
                    alert_sources_permissions: value.alert_sources_permissions?,
                    alert_urgency_permissions: value.alert_urgency_permissions?,
                    alerts_permissions: value.alerts_permissions?,
                    api_keys_permissions: value.api_keys_permissions?,
                    audits_permissions: value.audits_permissions?,
                    catalogs_permissions: value.catalogs_permissions?,
                    contacts_permissions: value.contacts_permissions?,
                    escalation_policies_permissions: value
                        .escalation_policies_permissions?,
                    groups_permissions: value.groups_permissions?,
                    heartbeats_permissions: value.heartbeats_permissions?,
                    integrations_permissions: value.integrations_permissions?,
                    invitations_permissions: value.invitations_permissions?,
                    live_call_routing_permissions: value.live_call_routing_permissions?,
                    name: value.name?,
                    on_call_readiness_report_permissions: value
                        .on_call_readiness_report_permissions?,
                    on_call_roles_permissions: value.on_call_roles_permissions?,
                    schedule_override_permissions: value.schedule_override_permissions?,
                    schedules_permissions: value.schedules_permissions?,
                    services_permissions: value.services_permissions?,
                    system_role: value.system_role?,
                    webhooks_permissions: value.webhooks_permissions?,
                    workflows_permissions: value.workflows_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallRoleDataAttributes>
        for UpdateOnCallRoleDataAttributes {
            fn from(value: super::UpdateOnCallRoleDataAttributes) -> Self {
                Self {
                    alert_fields_permissions: Ok(value.alert_fields_permissions),
                    alert_groups_permissions: Ok(value.alert_groups_permissions),
                    alert_routing_rules_permissions: Ok(
                        value.alert_routing_rules_permissions,
                    ),
                    alert_sources_permissions: Ok(value.alert_sources_permissions),
                    alert_urgency_permissions: Ok(value.alert_urgency_permissions),
                    alerts_permissions: Ok(value.alerts_permissions),
                    api_keys_permissions: Ok(value.api_keys_permissions),
                    audits_permissions: Ok(value.audits_permissions),
                    catalogs_permissions: Ok(value.catalogs_permissions),
                    contacts_permissions: Ok(value.contacts_permissions),
                    escalation_policies_permissions: Ok(
                        value.escalation_policies_permissions,
                    ),
                    groups_permissions: Ok(value.groups_permissions),
                    heartbeats_permissions: Ok(value.heartbeats_permissions),
                    integrations_permissions: Ok(value.integrations_permissions),
                    invitations_permissions: Ok(value.invitations_permissions),
                    live_call_routing_permissions: Ok(
                        value.live_call_routing_permissions,
                    ),
                    name: Ok(value.name),
                    on_call_readiness_report_permissions: Ok(
                        value.on_call_readiness_report_permissions,
                    ),
                    on_call_roles_permissions: Ok(value.on_call_roles_permissions),
                    schedule_override_permissions: Ok(
                        value.schedule_override_permissions,
                    ),
                    schedules_permissions: Ok(value.schedules_permissions),
                    services_permissions: Ok(value.services_permissions),
                    system_role: Ok(value.system_role),
                    webhooks_permissions: Ok(value.webhooks_permissions),
                    workflows_permissions: Ok(value.workflows_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallShadow {
            data: ::std::result::Result<
                super::UpdateOnCallShadowData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallShadow {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateOnCallShadow {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallShadowData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallShadow> for super::UpdateOnCallShadow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallShadow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallShadow> for UpdateOnCallShadow {
            fn from(value: super::UpdateOnCallShadow) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallShadowData {
            attributes: ::std::result::Result<
                super::UpdateOnCallShadowDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateOnCallShadowDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallShadowData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateOnCallShadowData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallShadowDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOnCallShadowDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallShadowData>
        for super::UpdateOnCallShadowData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallShadowData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallShadowData>
        for UpdateOnCallShadowData {
            fn from(value: super::UpdateOnCallShadowData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOnCallShadowDataAttributes {
            ends_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            schedule_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shadow_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            shadowable_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shadowable_type: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateOnCallShadowDataAttributesShadowableType,
                >,
                ::std::string::String,
            >,
            starts_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOnCallShadowDataAttributes {
            fn default() -> Self {
                Self {
                    ends_at: Ok(Default::default()),
                    schedule_id: Ok(Default::default()),
                    shadow_user_id: Ok(Default::default()),
                    shadowable_id: Ok(Default::default()),
                    shadowable_type: Ok(Default::default()),
                    starts_at: Ok(Default::default()),
                }
            }
        }
        impl UpdateOnCallShadowDataAttributes {
            pub fn ends_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ends_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ends_at: {e}")
                    });
                self
            }
            pub fn schedule_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for schedule_id: {e}")
                    });
                self
            }
            pub fn shadow_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.shadow_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shadow_user_id: {e}"
                        )
                    });
                self
            }
            pub fn shadowable_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shadowable_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for shadowable_id: {e}")
                    });
                self
            }
            pub fn shadowable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateOnCallShadowDataAttributesShadowableType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shadowable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shadowable_type: {e}"
                        )
                    });
                self
            }
            pub fn starts_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.starts_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for starts_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOnCallShadowDataAttributes>
        for super::UpdateOnCallShadowDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOnCallShadowDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    ends_at: value.ends_at?,
                    schedule_id: value.schedule_id?,
                    shadow_user_id: value.shadow_user_id?,
                    shadowable_id: value.shadowable_id?,
                    shadowable_type: value.shadowable_type?,
                    starts_at: value.starts_at?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOnCallShadowDataAttributes>
        for UpdateOnCallShadowDataAttributes {
            fn from(value: super::UpdateOnCallShadowDataAttributes) -> Self {
                Self {
                    ends_at: Ok(value.ends_at),
                    schedule_id: Ok(value.schedule_id),
                    shadow_user_id: Ok(value.shadow_user_id),
                    shadowable_id: Ok(value.shadowable_id),
                    shadowable_type: Ok(value.shadowable_type),
                    starts_at: Ok(value.starts_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOpsgenieAlertTaskParams {
            alert_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            completion: ::std::result::Result<
                super::UpdateOpsgenieAlertTaskParamsCompletion,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                super::UpdateOpsgenieAlertTaskParamsPriority,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateOpsgenieAlertTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOpsgenieAlertTaskParams {
            fn default() -> Self {
                Self {
                    alert_id: Err("no value supplied for alert_id".to_string()),
                    completion: Err("no value supplied for completion".to_string()),
                    description: Ok(Default::default()),
                    message: Ok(Default::default()),
                    priority: Err("no value supplied for priority".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateOpsgenieAlertTaskParams {
            pub fn alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_id: {e}")
                    });
                self
            }
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateOpsgenieAlertTaskParamsCompletion,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOpsgenieAlertTaskParamsPriority>,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateOpsgenieAlertTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOpsgenieAlertTaskParams>
        for super::UpdateOpsgenieAlertTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOpsgenieAlertTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_id: value.alert_id?,
                    completion: value.completion?,
                    description: value.description?,
                    message: value.message?,
                    priority: value.priority?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOpsgenieAlertTaskParams>
        for UpdateOpsgenieAlertTaskParams {
            fn from(value: super::UpdateOpsgenieAlertTaskParams) -> Self {
                Self {
                    alert_id: Ok(value.alert_id),
                    completion: Ok(value.completion),
                    description: Ok(value.description),
                    message: Ok(value.message),
                    priority: Ok(value.priority),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOpsgenieAlertTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOpsgenieAlertTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateOpsgenieAlertTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOpsgenieAlertTaskParamsCompletion>
        for super::UpdateOpsgenieAlertTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOpsgenieAlertTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOpsgenieAlertTaskParamsCompletion>
        for UpdateOpsgenieAlertTaskParamsCompletion {
            fn from(value: super::UpdateOpsgenieAlertTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOpsgenieIncidentTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            opsgenie_incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateOpsgenieIncidentTaskParamsPriority>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::UpdateOpsgenieIncidentTaskParamsStatus>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateOpsgenieIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOpsgenieIncidentTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    message: Ok(Default::default()),
                    opsgenie_incident_id: Err(
                        "no value supplied for opsgenie_incident_id".to_string(),
                    ),
                    priority: Ok(Default::default()),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateOpsgenieIncidentTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.message = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for message: {e}")
                    });
                self
            }
            pub fn opsgenie_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for opsgenie_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateOpsgenieIncidentTaskParamsPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateOpsgenieIncidentTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateOpsgenieIncidentTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOpsgenieIncidentTaskParams>
        for super::UpdateOpsgenieIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOpsgenieIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    message: value.message?,
                    opsgenie_incident_id: value.opsgenie_incident_id?,
                    priority: value.priority?,
                    status: value.status?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOpsgenieIncidentTaskParams>
        for UpdateOpsgenieIncidentTaskParams {
            fn from(value: super::UpdateOpsgenieIncidentTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    message: Ok(value.message),
                    opsgenie_incident_id: Ok(value.opsgenie_incident_id),
                    priority: Ok(value.priority),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOverrideShift {
            data: ::std::result::Result<
                super::UpdateOverrideShiftData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOverrideShift {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateOverrideShift {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOverrideShiftData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOverrideShift>
        for super::UpdateOverrideShift {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOverrideShift,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateOverrideShift> for UpdateOverrideShift {
            fn from(value: super::UpdateOverrideShift) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOverrideShiftData {
            attributes: ::std::result::Result<
                super::UpdateOverrideShiftDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateOverrideShiftDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateOverrideShiftData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateOverrideShiftData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOverrideShiftDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateOverrideShiftDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOverrideShiftData>
        for super::UpdateOverrideShiftData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOverrideShiftData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateOverrideShiftData>
        for UpdateOverrideShiftData {
            fn from(value: super::UpdateOverrideShiftData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateOverrideShiftDataAttributes {
            user_id: ::std::result::Result<i64, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateOverrideShiftDataAttributes {
            fn default() -> Self {
                Self {
                    user_id: Err("no value supplied for user_id".to_string()),
                }
            }
        }
        impl UpdateOverrideShiftDataAttributes {
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateOverrideShiftDataAttributes>
        for super::UpdateOverrideShiftDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateOverrideShiftDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { user_id: value.user_id? })
            }
        }
        impl ::std::convert::From<super::UpdateOverrideShiftDataAttributes>
        for UpdateOverrideShiftDataAttributes {
            fn from(value: super::UpdateOverrideShiftDataAttributes) -> Self {
                Self { user_id: Ok(value.user_id) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePagerdutyIncidentTaskParams {
            escalation_level: ::std::result::Result<
                ::std::option::Option<::std::num::NonZeroU64>,
                ::std::string::String,
            >,
            pagerduty_incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            resolution: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                ::std::option::Option<super::UpdatePagerdutyIncidentTaskParamsStatus>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdatePagerdutyIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            urgency: ::std::result::Result<
                ::std::option::Option<super::UpdatePagerdutyIncidentTaskParamsUrgency>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePagerdutyIncidentTaskParams {
            fn default() -> Self {
                Self {
                    escalation_level: Ok(Default::default()),
                    pagerduty_incident_id: Err(
                        "no value supplied for pagerduty_incident_id".to_string(),
                    ),
                    priority: Ok(Default::default()),
                    resolution: Ok(Default::default()),
                    status: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                    urgency: Ok(Default::default()),
                }
            }
        }
        impl UpdatePagerdutyIncidentTaskParams {
            pub fn escalation_level<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::num::NonZeroU64>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_level = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_level: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_incident_id: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn resolution<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolution = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for resolution: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdatePagerdutyIncidentTaskParamsStatus>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdatePagerdutyIncidentTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdatePagerdutyIncidentTaskParamsUrgency,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for urgency: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePagerdutyIncidentTaskParams>
        for super::UpdatePagerdutyIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePagerdutyIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    escalation_level: value.escalation_level?,
                    pagerduty_incident_id: value.pagerduty_incident_id?,
                    priority: value.priority?,
                    resolution: value.resolution?,
                    status: value.status?,
                    task_type: value.task_type?,
                    title: value.title?,
                    urgency: value.urgency?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePagerdutyIncidentTaskParams>
        for UpdatePagerdutyIncidentTaskParams {
            fn from(value: super::UpdatePagerdutyIncidentTaskParams) -> Self {
                Self {
                    escalation_level: Ok(value.escalation_level),
                    pagerduty_incident_id: Ok(value.pagerduty_incident_id),
                    priority: Ok(value.priority),
                    resolution: Ok(value.resolution),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                    urgency: Ok(value.urgency),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePagertreeAlertTaskParams {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            pagertree_alert_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            severity: ::std::result::Result<
                ::std::option::Option<super::UpdatePagertreeAlertTaskParamsSeverity>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdatePagertreeAlertTaskParamsTaskType>,
                ::std::string::String,
            >,
            teams: ::std::result::Result<
                ::std::vec::Vec<super::UpdatePagertreeAlertTaskParamsTeamsItem>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            urgency: ::std::result::Result<
                ::std::option::Option<super::UpdatePagertreeAlertTaskParamsUrgency>,
                ::std::string::String,
            >,
            users: ::std::result::Result<
                ::std::vec::Vec<super::UpdatePagertreeAlertTaskParamsUsersItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePagertreeAlertTaskParams {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    incident: Ok(Default::default()),
                    pagertree_alert_id: Ok(Default::default()),
                    severity: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    teams: Ok(Default::default()),
                    title: Ok(Default::default()),
                    urgency: Ok(Default::default()),
                    users: Ok(Default::default()),
                }
            }
        }
        impl UpdatePagertreeAlertTaskParams {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn incident<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident: {e}")
                    });
                self
            }
            pub fn pagertree_alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagertree_alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagertree_alert_id: {e}"
                        )
                    });
                self
            }
            pub fn severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdatePagertreeAlertTaskParamsSeverity>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdatePagertreeAlertTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn teams<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdatePagertreeAlertTaskParamsTeamsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.teams = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for teams: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn urgency<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdatePagertreeAlertTaskParamsUrgency>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.urgency = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for urgency: {e}")
                    });
                self
            }
            pub fn users<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdatePagertreeAlertTaskParamsUsersItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.users = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for users: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePagertreeAlertTaskParams>
        for super::UpdatePagertreeAlertTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePagertreeAlertTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    incident: value.incident?,
                    pagertree_alert_id: value.pagertree_alert_id?,
                    severity: value.severity?,
                    task_type: value.task_type?,
                    teams: value.teams?,
                    title: value.title?,
                    urgency: value.urgency?,
                    users: value.users?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePagertreeAlertTaskParams>
        for UpdatePagertreeAlertTaskParams {
            fn from(value: super::UpdatePagertreeAlertTaskParams) -> Self {
                Self {
                    description: Ok(value.description),
                    incident: Ok(value.incident),
                    pagertree_alert_id: Ok(value.pagertree_alert_id),
                    severity: Ok(value.severity),
                    task_type: Ok(value.task_type),
                    teams: Ok(value.teams),
                    title: Ok(value.title),
                    urgency: Ok(value.urgency),
                    users: Ok(value.users),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePagertreeAlertTaskParamsTeamsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePagertreeAlertTaskParamsTeamsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdatePagertreeAlertTaskParamsTeamsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePagertreeAlertTaskParamsTeamsItem>
        for super::UpdatePagertreeAlertTaskParamsTeamsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePagertreeAlertTaskParamsTeamsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePagertreeAlertTaskParamsTeamsItem>
        for UpdatePagertreeAlertTaskParamsTeamsItem {
            fn from(value: super::UpdatePagertreeAlertTaskParamsTeamsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePagertreeAlertTaskParamsUsersItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePagertreeAlertTaskParamsUsersItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdatePagertreeAlertTaskParamsUsersItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePagertreeAlertTaskParamsUsersItem>
        for super::UpdatePagertreeAlertTaskParamsUsersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePagertreeAlertTaskParamsUsersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePagertreeAlertTaskParamsUsersItem>
        for UpdatePagertreeAlertTaskParamsUsersItem {
            fn from(value: super::UpdatePagertreeAlertTaskParamsUsersItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePlaybook {
            data: ::std::result::Result<
                super::UpdatePlaybookData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePlaybook {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdatePlaybook {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePlaybookData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePlaybook> for super::UpdatePlaybook {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePlaybook,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdatePlaybook> for UpdatePlaybook {
            fn from(value: super::UpdatePlaybook) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePlaybookData {
            attributes: ::std::result::Result<
                super::UpdatePlaybookDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdatePlaybookDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePlaybookData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdatePlaybookData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePlaybookDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePlaybookDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePlaybookData> for super::UpdatePlaybookData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePlaybookData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePlaybookData> for UpdatePlaybookData {
            fn from(value: super::UpdatePlaybookData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePlaybookDataAttributes {
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePlaybookDataAttributes {
            fn default() -> Self {
                Self {
                    environment_ids: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    summary: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdatePlaybookDataAttributes {
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePlaybookDataAttributes>
        for super::UpdatePlaybookDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePlaybookDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    environment_ids: value.environment_ids?,
                    external_url: value.external_url?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                    summary: value.summary?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePlaybookDataAttributes>
        for UpdatePlaybookDataAttributes {
            fn from(value: super::UpdatePlaybookDataAttributes) -> Self {
                Self {
                    environment_ids: Ok(value.environment_ids),
                    external_url: Ok(value.external_url),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                    summary: Ok(value.summary),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePlaybookTask {
            data: ::std::result::Result<
                super::UpdatePlaybookTaskData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePlaybookTask {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdatePlaybookTask {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePlaybookTaskData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePlaybookTask> for super::UpdatePlaybookTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePlaybookTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdatePlaybookTask> for UpdatePlaybookTask {
            fn from(value: super::UpdatePlaybookTask) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePlaybookTaskData {
            attributes: ::std::result::Result<
                super::UpdatePlaybookTaskDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdatePlaybookTaskDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePlaybookTaskData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdatePlaybookTaskData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePlaybookTaskDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePlaybookTaskDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePlaybookTaskData>
        for super::UpdatePlaybookTaskData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePlaybookTaskData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePlaybookTaskData>
        for UpdatePlaybookTaskData {
            fn from(value: super::UpdatePlaybookTaskData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePlaybookTaskDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            task: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePlaybookTaskDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    position: Ok(Default::default()),
                    task: Ok(Default::default()),
                }
            }
        }
        impl UpdatePlaybookTaskDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn task<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.task = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePlaybookTaskDataAttributes>
        for super::UpdatePlaybookTaskDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePlaybookTaskDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    position: value.position?,
                    task: value.task?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePlaybookTaskDataAttributes>
        for UpdatePlaybookTaskDataAttributes {
            fn from(value: super::UpdatePlaybookTaskDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    position: Ok(value.position),
                    task: Ok(value.task),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePostMortemTemplate {
            data: ::std::result::Result<
                super::UpdatePostMortemTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePostMortemTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdatePostMortemTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePostMortemTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePostMortemTemplate>
        for super::UpdatePostMortemTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePostMortemTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdatePostMortemTemplate>
        for UpdatePostMortemTemplate {
            fn from(value: super::UpdatePostMortemTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePostMortemTemplateData {
            attributes: ::std::result::Result<
                super::UpdatePostMortemTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdatePostMortemTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePostMortemTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdatePostMortemTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdatePostMortemTemplateDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePostMortemTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePostMortemTemplateData>
        for super::UpdatePostMortemTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePostMortemTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePostMortemTemplateData>
        for UpdatePostMortemTemplateData {
            fn from(value: super::UpdatePostMortemTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePostMortemTemplateDataAttributes {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            default: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            format: ::std::result::Result<
                ::std::option::Option<
                    super::UpdatePostMortemTemplateDataAttributesFormat,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePostMortemTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    default: Ok(Default::default()),
                    format: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdatePostMortemTemplateDataAttributes {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn default<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.default = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for default: {e}")
                    });
                self
            }
            pub fn format<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdatePostMortemTemplateDataAttributesFormat,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.format = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for format: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePostMortemTemplateDataAttributes>
        for super::UpdatePostMortemTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePostMortemTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    default: value.default?,
                    format: value.format?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePostMortemTemplateDataAttributes>
        for UpdatePostMortemTemplateDataAttributes {
            fn from(value: super::UpdatePostMortemTemplateDataAttributes) -> Self {
                Self {
                    content: Ok(value.content),
                    default: Ok(value.default),
                    format: Ok(value.format),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePulse {
            data: ::std::result::Result<super::UpdatePulseData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdatePulse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdatePulse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePulseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePulse> for super::UpdatePulse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePulse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdatePulse> for UpdatePulse {
            fn from(value: super::UpdatePulse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePulseData {
            attributes: ::std::result::Result<
                super::UpdatePulseDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdatePulseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePulseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdatePulseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePulseDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdatePulseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePulseData> for super::UpdatePulseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePulseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePulseData> for UpdatePulseData {
            fn from(value: super::UpdatePulseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePulseDataAttributes {
            data: ::std::result::Result<
                ::std::option::Option<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                ::std::string::String,
            >,
            ended_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            external_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::UpdatePulseDataAttributesLabelsItem>,
                >,
                ::std::string::String,
            >,
            refs: ::std::result::Result<
                ::std::vec::Vec<
                    ::std::option::Option<super::UpdatePulseDataAttributesRefsItem>,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            source: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            summary: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdatePulseDataAttributes {
            fn default() -> Self {
                Self {
                    data: Ok(Default::default()),
                    ended_at: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    external_url: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    refs: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    source: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    summary: Ok(Default::default()),
                }
            }
        }
        impl UpdatePulseDataAttributes {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn ended_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.ended_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ended_at: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn external_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_url: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::UpdatePulseDataAttributesLabelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn refs<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        ::std::option::Option<super::UpdatePulseDataAttributesRefsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.refs = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for refs: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn source<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.source = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for source: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn summary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.summary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for summary: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePulseDataAttributes>
        for super::UpdatePulseDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePulseDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    ended_at: value.ended_at?,
                    environment_ids: value.environment_ids?,
                    external_url: value.external_url?,
                    labels: value.labels?,
                    refs: value.refs?,
                    service_ids: value.service_ids?,
                    source: value.source?,
                    started_at: value.started_at?,
                    summary: value.summary?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePulseDataAttributes>
        for UpdatePulseDataAttributes {
            fn from(value: super::UpdatePulseDataAttributes) -> Self {
                Self {
                    data: Ok(value.data),
                    ended_at: Ok(value.ended_at),
                    environment_ids: Ok(value.environment_ids),
                    external_url: Ok(value.external_url),
                    labels: Ok(value.labels),
                    refs: Ok(value.refs),
                    service_ids: Ok(value.service_ids),
                    source: Ok(value.source),
                    started_at: Ok(value.started_at),
                    summary: Ok(value.summary),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePulseDataAttributesLabelsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdatePulseDataAttributesLabelsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdatePulseDataAttributesLabelsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePulseDataAttributesLabelsItem>
        for super::UpdatePulseDataAttributesLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePulseDataAttributesLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePulseDataAttributesLabelsItem>
        for UpdatePulseDataAttributesLabelsItem {
            fn from(value: super::UpdatePulseDataAttributesLabelsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdatePulseDataAttributesRefsItem {
            key: ::std::result::Result<::std::string::String, ::std::string::String>,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdatePulseDataAttributesRefsItem {
            fn default() -> Self {
                Self {
                    key: Err("no value supplied for key".to_string()),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdatePulseDataAttributesRefsItem {
            pub fn key<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.key = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for key: {e}")
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdatePulseDataAttributesRefsItem>
        for super::UpdatePulseDataAttributesRefsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdatePulseDataAttributesRefsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    key: value.key?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdatePulseDataAttributesRefsItem>
        for UpdatePulseDataAttributesRefsItem {
            fn from(value: super::UpdatePulseDataAttributesRefsItem) -> Self {
                Self {
                    key: Ok(value.key),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateQuipPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateQuipPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateQuipPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    template_id: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateQuipPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateQuipPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for template_id: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateQuipPageTaskParams>
        for super::UpdateQuipPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateQuipPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    template_id: value.template_id?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateQuipPageTaskParams>
        for UpdateQuipPageTaskParams {
            fn from(value: super::UpdateQuipPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    template_id: Ok(value.template_id),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveConfiguration {
            data: ::std::result::Result<
                super::UpdateRetrospectiveConfigurationData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveConfiguration {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveConfiguration {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveConfigurationData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveConfiguration>
        for super::UpdateRetrospectiveConfiguration {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveConfiguration,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveConfiguration>
        for UpdateRetrospectiveConfiguration {
            fn from(value: super::UpdateRetrospectiveConfiguration) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveConfigurationData {
            attributes: ::std::result::Result<
                super::UpdateRetrospectiveConfigurationDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateRetrospectiveConfigurationDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveConfigurationData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveConfigurationData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveConfigurationDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveConfigurationDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveConfigurationData>
        for super::UpdateRetrospectiveConfigurationData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveConfigurationData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveConfigurationData>
        for UpdateRetrospectiveConfigurationData {
            fn from(value: super::UpdateRetrospectiveConfigurationData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveConfigurationDataAttributes {
            group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveConfigurationDataAttributes {
            fn default() -> Self {
                Self {
                    group_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                }
            }
        }
        impl UpdateRetrospectiveConfigurationDataAttributes {
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveConfigurationDataAttributes>
        for super::UpdateRetrospectiveConfigurationDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveConfigurationDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    group_ids: value.group_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    severity_ids: value.severity_ids?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveConfigurationDataAttributes>
        for UpdateRetrospectiveConfigurationDataAttributes {
            fn from(
                value: super::UpdateRetrospectiveConfigurationDataAttributes,
            ) -> Self {
                Self {
                    group_ids: Ok(value.group_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    severity_ids: Ok(value.severity_ids),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcess {
            data: ::std::result::Result<
                super::UpdateRetrospectiveProcessData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcess {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveProcess {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveProcessData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcess>
        for super::UpdateRetrospectiveProcess {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcess,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcess>
        for UpdateRetrospectiveProcess {
            fn from(value: super::UpdateRetrospectiveProcess) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessData {
            attributes: ::std::result::Result<
                super::UpdateRetrospectiveProcessDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateRetrospectiveProcessDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveProcessData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveProcessDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveProcessDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessData>
        for super::UpdateRetrospectiveProcessData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessData>
        for UpdateRetrospectiveProcessData {
            fn from(value: super::UpdateRetrospectiveProcessData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            retrospective_process_matching_criteria: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    retrospective_process_matching_criteria: Ok(Default::default()),
                }
            }
        }
        impl UpdateRetrospectiveProcessDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn retrospective_process_matching_criteria<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateRetrospectiveProcessDataAttributesRetrospectiveProcessMatchingCriteria,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_process_matching_criteria = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_process_matching_criteria: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessDataAttributes>
        for super::UpdateRetrospectiveProcessDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    retrospective_process_matching_criteria: value
                        .retrospective_process_matching_criteria?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessDataAttributes>
        for UpdateRetrospectiveProcessDataAttributes {
            fn from(value: super::UpdateRetrospectiveProcessDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    retrospective_process_matching_criteria: Ok(
                        value.retrospective_process_matching_criteria,
                    ),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessGroup {
            data: ::std::result::Result<
                super::UpdateRetrospectiveProcessGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveProcessGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveProcessGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessGroup>
        for super::UpdateRetrospectiveProcessGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessGroup>
        for UpdateRetrospectiveProcessGroup {
            fn from(value: super::UpdateRetrospectiveProcessGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessGroupData {
            attributes: ::std::result::Result<
                super::UpdateRetrospectiveProcessGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateRetrospectiveProcessGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveProcessGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveProcessGroupDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveProcessGroupDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessGroupData>
        for super::UpdateRetrospectiveProcessGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessGroupData>
        for UpdateRetrospectiveProcessGroupData {
            fn from(value: super::UpdateRetrospectiveProcessGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessGroupDataAttributes {
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            sub_status_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessGroupDataAttributes {
            fn default() -> Self {
                Self {
                    position: Ok(Default::default()),
                    sub_status_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateRetrospectiveProcessGroupDataAttributes {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for sub_status_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessGroupDataAttributes>
        for super::UpdateRetrospectiveProcessGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    sub_status_id: value.sub_status_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessGroupDataAttributes>
        for UpdateRetrospectiveProcessGroupDataAttributes {
            fn from(
                value: super::UpdateRetrospectiveProcessGroupDataAttributes,
            ) -> Self {
                Self {
                    position: Ok(value.position),
                    sub_status_id: Ok(value.sub_status_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessGroupStep {
            data: ::std::result::Result<
                super::UpdateRetrospectiveProcessGroupStepData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessGroupStep {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveProcessGroupStep {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveProcessGroupStepData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessGroupStep>
        for super::UpdateRetrospectiveProcessGroupStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessGroupStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessGroupStep>
        for UpdateRetrospectiveProcessGroupStep {
            fn from(value: super::UpdateRetrospectiveProcessGroupStep) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessGroupStepData {
            attributes: ::std::result::Result<
                super::UpdateRetrospectiveProcessGroupStepDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateRetrospectiveProcessGroupStepDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveProcessGroupStepData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveProcessGroupStepData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveProcessGroupStepDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateRetrospectiveProcessGroupStepDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessGroupStepData>
        for super::UpdateRetrospectiveProcessGroupStepData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessGroupStepData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveProcessGroupStepData>
        for UpdateRetrospectiveProcessGroupStepData {
            fn from(value: super::UpdateRetrospectiveProcessGroupStepData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveProcessGroupStepDataAttributes {
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateRetrospectiveProcessGroupStepDataAttributes {
            fn default() -> Self {
                Self {
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateRetrospectiveProcessGroupStepDataAttributes {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveProcessGroupStepDataAttributes>
        for super::UpdateRetrospectiveProcessGroupStepDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveProcessGroupStepDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { position: value.position? })
            }
        }
        impl ::std::convert::From<
            super::UpdateRetrospectiveProcessGroupStepDataAttributes,
        > for UpdateRetrospectiveProcessGroupStepDataAttributes {
            fn from(
                value: super::UpdateRetrospectiveProcessGroupStepDataAttributes,
            ) -> Self {
                Self {
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveStep {
            data: ::std::result::Result<
                super::UpdateRetrospectiveStepData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveStep {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveStep {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveStepData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveStep>
        for super::UpdateRetrospectiveStep {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveStep,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveStep>
        for UpdateRetrospectiveStep {
            fn from(value: super::UpdateRetrospectiveStep) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveStepData {
            attributes: ::std::result::Result<
                super::UpdateRetrospectiveStepDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateRetrospectiveStepDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveStepData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateRetrospectiveStepData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveStepDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRetrospectiveStepDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveStepData>
        for super::UpdateRetrospectiveStepData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveStepData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveStepData>
        for UpdateRetrospectiveStepData {
            fn from(value: super::UpdateRetrospectiveStepData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRetrospectiveStepDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_after_days: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            incident_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            skippable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRetrospectiveStepDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    due_after_days: Ok(Default::default()),
                    incident_role_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    skippable: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateRetrospectiveStepDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_after_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_after_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for due_after_days: {e}"
                        )
                    });
                self
            }
            pub fn incident_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_id: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn skippable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skippable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for skippable: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRetrospectiveStepDataAttributes>
        for super::UpdateRetrospectiveStepDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRetrospectiveStepDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    due_after_days: value.due_after_days?,
                    incident_role_id: value.incident_role_id?,
                    position: value.position?,
                    skippable: value.skippable?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRetrospectiveStepDataAttributes>
        for UpdateRetrospectiveStepDataAttributes {
            fn from(value: super::UpdateRetrospectiveStepDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    due_after_days: Ok(value.due_after_days),
                    incident_role_id: Ok(value.incident_role_id),
                    position: Ok(value.position),
                    skippable: Ok(value.skippable),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRole {
            data: ::std::result::Result<super::UpdateRoleData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateRole {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateRole {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRoleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRole> for super::UpdateRole {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRole,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateRole> for UpdateRole {
            fn from(value: super::UpdateRole) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRoleData {
            attributes: ::std::result::Result<
                super::UpdateRoleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateRoleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRoleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateRoleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRoleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateRoleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRoleData> for super::UpdateRoleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRoleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRoleData> for UpdateRoleData {
            fn from(value: super::UpdateRoleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateRoleDataAttributes {
            api_keys_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesApiKeysPermissionsItem>,
                ::std::string::String,
            >,
            audits_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesAuditsPermissionsItem>,
                ::std::string::String,
            >,
            billing_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesBillingPermissionsItem>,
                ::std::string::String,
            >,
            catalogs_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesCatalogsPermissionsItem>,
                ::std::string::String,
            >,
            communication_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesCommunicationPermissionsItem,
                >,
                ::std::string::String,
            >,
            edge_connector_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesEdgeConnectorPermissionsItem,
                >,
                ::std::string::String,
            >,
            environments_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesEnvironmentsPermissionsItem,
                >,
                ::std::string::String,
            >,
            form_fields_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesFormFieldsPermissionsItem,
                >,
                ::std::string::String,
            >,
            functionalities_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesFunctionalitiesPermissionsItem,
                >,
                ::std::string::String,
            >,
            groups_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesGroupsPermissionsItem>,
                ::std::string::String,
            >,
            incident_causes_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesIncidentCausesPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_communication_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesIncidentCommunicationPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_feedbacks_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_permission_set_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_roles_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesIncidentRolesPermissionsItem,
                >,
                ::std::string::String,
            >,
            incident_types_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesIncidentTypesPermissionsItem,
                >,
                ::std::string::String,
            >,
            incidents_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesIncidentsPermissionsItem>,
                ::std::string::String,
            >,
            integrations_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesIntegrationsPermissionsItem,
                >,
                ::std::string::String,
            >,
            invitations_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesInvitationsPermissionsItem,
                >,
                ::std::string::String,
            >,
            is_deletable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            is_editable: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            paging_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesPagingPermissionsItem>,
                ::std::string::String,
            >,
            playbooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesPlaybooksPermissionsItem>,
                ::std::string::String,
            >,
            private_incidents_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesPrivateIncidentsPermissionsItem,
                >,
                ::std::string::String,
            >,
            retrospective_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesRetrospectivePermissionsItem,
                >,
                ::std::string::String,
            >,
            roles_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesRolesPermissionsItem>,
                ::std::string::String,
            >,
            secrets_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesSecretsPermissionsItem>,
                ::std::string::String,
            >,
            services_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesServicesPermissionsItem>,
                ::std::string::String,
            >,
            severities_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesSeveritiesPermissionsItem,
                >,
                ::std::string::String,
            >,
            slas_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesSlasPermissionsItem>,
                ::std::string::String,
            >,
            status_pages_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesStatusPagesPermissionsItem,
                >,
                ::std::string::String,
            >,
            sub_statuses_permissions: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateRoleDataAttributesSubStatusesPermissionsItem,
                >,
                ::std::string::String,
            >,
            webhooks_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesWebhooksPermissionsItem>,
                ::std::string::String,
            >,
            workflows_permissions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateRoleDataAttributesWorkflowsPermissionsItem>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateRoleDataAttributes {
            fn default() -> Self {
                Self {
                    api_keys_permissions: Ok(Default::default()),
                    audits_permissions: Ok(Default::default()),
                    billing_permissions: Ok(Default::default()),
                    catalogs_permissions: Ok(Default::default()),
                    communication_permissions: Ok(Default::default()),
                    edge_connector_permissions: Ok(Default::default()),
                    environments_permissions: Ok(Default::default()),
                    form_fields_permissions: Ok(Default::default()),
                    functionalities_permissions: Ok(Default::default()),
                    groups_permissions: Ok(Default::default()),
                    incident_causes_permissions: Ok(Default::default()),
                    incident_communication_permissions: Ok(Default::default()),
                    incident_feedbacks_permissions: Ok(Default::default()),
                    incident_permission_set_id: Ok(Default::default()),
                    incident_roles_permissions: Ok(Default::default()),
                    incident_types_permissions: Ok(Default::default()),
                    incidents_permissions: Ok(Default::default()),
                    integrations_permissions: Ok(Default::default()),
                    invitations_permissions: Ok(Default::default()),
                    is_deletable: Ok(Default::default()),
                    is_editable: Ok(Default::default()),
                    name: Ok(Default::default()),
                    paging_permissions: Ok(Default::default()),
                    playbooks_permissions: Ok(Default::default()),
                    private_incidents_permissions: Ok(Default::default()),
                    retrospective_permissions: Ok(Default::default()),
                    roles_permissions: Ok(Default::default()),
                    secrets_permissions: Ok(Default::default()),
                    services_permissions: Ok(Default::default()),
                    severities_permissions: Ok(Default::default()),
                    slas_permissions: Ok(Default::default()),
                    status_pages_permissions: Ok(Default::default()),
                    sub_statuses_permissions: Ok(Default::default()),
                    webhooks_permissions: Ok(Default::default()),
                    workflows_permissions: Ok(Default::default()),
                }
            }
        }
        impl UpdateRoleDataAttributes {
            pub fn api_keys_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesApiKeysPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.api_keys_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for api_keys_permissions: {e}"
                        )
                    });
                self
            }
            pub fn audits_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateRoleDataAttributesAuditsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.audits_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for audits_permissions: {e}"
                        )
                    });
                self
            }
            pub fn billing_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesBillingPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.billing_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for billing_permissions: {e}"
                        )
                    });
                self
            }
            pub fn catalogs_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesCatalogsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.catalogs_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalogs_permissions: {e}"
                        )
                    });
                self
            }
            pub fn communication_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesCommunicationPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.communication_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for communication_permissions: {e}"
                        )
                    });
                self
            }
            pub fn edge_connector_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesEdgeConnectorPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.edge_connector_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for edge_connector_permissions: {e}"
                        )
                    });
                self
            }
            pub fn environments_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesEnvironmentsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environments_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environments_permissions: {e}"
                        )
                    });
                self
            }
            pub fn form_fields_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesFormFieldsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.form_fields_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for form_fields_permissions: {e}"
                        )
                    });
                self
            }
            pub fn functionalities_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesFunctionalitiesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.functionalities_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionalities_permissions: {e}"
                        )
                    });
                self
            }
            pub fn groups_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateRoleDataAttributesGroupsPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.groups_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for groups_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_causes_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIncidentCausesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_causes_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_causes_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_communication_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIncidentCommunicationPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_communication_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_communication_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_feedbacks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIncidentFeedbacksPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_feedbacks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_feedbacks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_permission_set_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_permission_set_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_permission_set_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIncidentRolesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incident_types_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIncidentTypesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_types_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_types_permissions: {e}"
                        )
                    });
                self
            }
            pub fn incidents_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIncidentsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incidents_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incidents_permissions: {e}"
                        )
                    });
                self
            }
            pub fn integrations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesIntegrationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.integrations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for integrations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn invitations_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesInvitationsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.invitations_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for invitations_permissions: {e}"
                        )
                    });
                self
            }
            pub fn is_deletable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_deletable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_deletable: {e}")
                    });
                self
            }
            pub fn is_editable<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.is_editable = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for is_editable: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn paging_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateRoleDataAttributesPagingPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.paging_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for paging_permissions: {e}"
                        )
                    });
                self
            }
            pub fn playbooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesPlaybooksPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.playbooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for playbooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn private_incidents_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesPrivateIncidentsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.private_incidents_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for private_incidents_permissions: {e}"
                        )
                    });
                self
            }
            pub fn retrospective_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesRetrospectivePermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.retrospective_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for retrospective_permissions: {e}"
                        )
                    });
                self
            }
            pub fn roles_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateRoleDataAttributesRolesPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.roles_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for roles_permissions: {e}"
                        )
                    });
                self
            }
            pub fn secrets_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesSecretsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.secrets_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for secrets_permissions: {e}"
                        )
                    });
                self
            }
            pub fn services_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesServicesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.services_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for services_permissions: {e}"
                        )
                    });
                self
            }
            pub fn severities_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesSeveritiesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severities_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for severities_permissions: {e}"
                        )
                    });
                self
            }
            pub fn slas_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateRoleDataAttributesSlasPermissionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slas_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slas_permissions: {e}"
                        )
                    });
                self
            }
            pub fn status_pages_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesStatusPagesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status_pages_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_pages_permissions: {e}"
                        )
                    });
                self
            }
            pub fn sub_statuses_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesSubStatusesPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.sub_statuses_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sub_statuses_permissions: {e}"
                        )
                    });
                self
            }
            pub fn webhooks_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesWebhooksPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.webhooks_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for webhooks_permissions: {e}"
                        )
                    });
                self
            }
            pub fn workflows_permissions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateRoleDataAttributesWorkflowsPermissionsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.workflows_permissions = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflows_permissions: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateRoleDataAttributes>
        for super::UpdateRoleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateRoleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    api_keys_permissions: value.api_keys_permissions?,
                    audits_permissions: value.audits_permissions?,
                    billing_permissions: value.billing_permissions?,
                    catalogs_permissions: value.catalogs_permissions?,
                    communication_permissions: value.communication_permissions?,
                    edge_connector_permissions: value.edge_connector_permissions?,
                    environments_permissions: value.environments_permissions?,
                    form_fields_permissions: value.form_fields_permissions?,
                    functionalities_permissions: value.functionalities_permissions?,
                    groups_permissions: value.groups_permissions?,
                    incident_causes_permissions: value.incident_causes_permissions?,
                    incident_communication_permissions: value
                        .incident_communication_permissions?,
                    incident_feedbacks_permissions: value
                        .incident_feedbacks_permissions?,
                    incident_permission_set_id: value.incident_permission_set_id?,
                    incident_roles_permissions: value.incident_roles_permissions?,
                    incident_types_permissions: value.incident_types_permissions?,
                    incidents_permissions: value.incidents_permissions?,
                    integrations_permissions: value.integrations_permissions?,
                    invitations_permissions: value.invitations_permissions?,
                    is_deletable: value.is_deletable?,
                    is_editable: value.is_editable?,
                    name: value.name?,
                    paging_permissions: value.paging_permissions?,
                    playbooks_permissions: value.playbooks_permissions?,
                    private_incidents_permissions: value.private_incidents_permissions?,
                    retrospective_permissions: value.retrospective_permissions?,
                    roles_permissions: value.roles_permissions?,
                    secrets_permissions: value.secrets_permissions?,
                    services_permissions: value.services_permissions?,
                    severities_permissions: value.severities_permissions?,
                    slas_permissions: value.slas_permissions?,
                    status_pages_permissions: value.status_pages_permissions?,
                    sub_statuses_permissions: value.sub_statuses_permissions?,
                    webhooks_permissions: value.webhooks_permissions?,
                    workflows_permissions: value.workflows_permissions?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateRoleDataAttributes>
        for UpdateRoleDataAttributes {
            fn from(value: super::UpdateRoleDataAttributes) -> Self {
                Self {
                    api_keys_permissions: Ok(value.api_keys_permissions),
                    audits_permissions: Ok(value.audits_permissions),
                    billing_permissions: Ok(value.billing_permissions),
                    catalogs_permissions: Ok(value.catalogs_permissions),
                    communication_permissions: Ok(value.communication_permissions),
                    edge_connector_permissions: Ok(value.edge_connector_permissions),
                    environments_permissions: Ok(value.environments_permissions),
                    form_fields_permissions: Ok(value.form_fields_permissions),
                    functionalities_permissions: Ok(value.functionalities_permissions),
                    groups_permissions: Ok(value.groups_permissions),
                    incident_causes_permissions: Ok(value.incident_causes_permissions),
                    incident_communication_permissions: Ok(
                        value.incident_communication_permissions,
                    ),
                    incident_feedbacks_permissions: Ok(
                        value.incident_feedbacks_permissions,
                    ),
                    incident_permission_set_id: Ok(value.incident_permission_set_id),
                    incident_roles_permissions: Ok(value.incident_roles_permissions),
                    incident_types_permissions: Ok(value.incident_types_permissions),
                    incidents_permissions: Ok(value.incidents_permissions),
                    integrations_permissions: Ok(value.integrations_permissions),
                    invitations_permissions: Ok(value.invitations_permissions),
                    is_deletable: Ok(value.is_deletable),
                    is_editable: Ok(value.is_editable),
                    name: Ok(value.name),
                    paging_permissions: Ok(value.paging_permissions),
                    playbooks_permissions: Ok(value.playbooks_permissions),
                    private_incidents_permissions: Ok(
                        value.private_incidents_permissions,
                    ),
                    retrospective_permissions: Ok(value.retrospective_permissions),
                    roles_permissions: Ok(value.roles_permissions),
                    secrets_permissions: Ok(value.secrets_permissions),
                    services_permissions: Ok(value.services_permissions),
                    severities_permissions: Ok(value.severities_permissions),
                    slas_permissions: Ok(value.slas_permissions),
                    status_pages_permissions: Ok(value.status_pages_permissions),
                    sub_statuses_permissions: Ok(value.sub_statuses_permissions),
                    webhooks_permissions: Ok(value.webhooks_permissions),
                    workflows_permissions: Ok(value.workflows_permissions),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSchedule {
            data: ::std::result::Result<
                super::UpdateScheduleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSchedule {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateSchedule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSchedule> for super::UpdateSchedule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSchedule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateSchedule> for UpdateSchedule {
            fn from(value: super::UpdateSchedule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleData {
            attributes: ::std::result::Result<
                super::UpdateScheduleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateScheduleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateScheduleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleData> for super::UpdateScheduleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleData> for UpdateScheduleData {
            fn from(value: super::UpdateScheduleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleDataAttributes {
            all_time_coverage: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            include_shadows_in_slack_notifications: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            owner_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            shift_report_day_of_week: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateScheduleDataAttributesShiftReportDayOfWeek,
                >,
                ::std::string::String,
            >,
            shift_report_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shift_report_time_of_day: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shift_report_time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            shift_start_notifications_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            shift_update_notifications_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            slack_channel: ::std::result::Result<
                ::std::option::Option<super::UpdateScheduleDataAttributesSlackChannel>,
                ::std::string::String,
            >,
            slack_user_group: ::std::result::Result<
                ::std::option::Option<super::UpdateScheduleDataAttributesSlackUserGroup>,
                ::std::string::String,
            >,
            sync_linear_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleDataAttributes {
            fn default() -> Self {
                Self {
                    all_time_coverage: Ok(Default::default()),
                    description: Ok(Default::default()),
                    include_shadows_in_slack_notifications: Ok(Default::default()),
                    name: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_id: Ok(Default::default()),
                    shift_report_day_of_week: Ok(Default::default()),
                    shift_report_enabled: Ok(Default::default()),
                    shift_report_time_of_day: Ok(Default::default()),
                    shift_report_time_zone: Ok(Default::default()),
                    shift_start_notifications_enabled: Ok(Default::default()),
                    shift_update_notifications_enabled: Ok(Default::default()),
                    slack_channel: Ok(Default::default()),
                    slack_user_group: Ok(Default::default()),
                    sync_linear_enabled: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleDataAttributes {
            pub fn all_time_coverage<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.all_time_coverage = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for all_time_coverage: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn include_shadows_in_slack_notifications<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.include_shadows_in_slack_notifications = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for include_shadows_in_slack_notifications: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for owner_user_id: {e}")
                    });
                self
            }
            pub fn shift_report_day_of_week<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateScheduleDataAttributesShiftReportDayOfWeek,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_day_of_week = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_day_of_week: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_enabled: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_time_of_day<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_time_of_day = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_time_of_day: {e}"
                        )
                    });
                self
            }
            pub fn shift_report_time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_report_time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_report_time_zone: {e}"
                        )
                    });
                self
            }
            pub fn shift_start_notifications_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_start_notifications_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_start_notifications_enabled: {e}"
                        )
                    });
                self
            }
            pub fn shift_update_notifications_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.shift_update_notifications_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for shift_update_notifications_enabled: {e}"
                        )
                    });
                self
            }
            pub fn slack_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateScheduleDataAttributesSlackChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_channel: {e}")
                    });
                self
            }
            pub fn slack_user_group<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateScheduleDataAttributesSlackUserGroup,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_user_group = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_user_group: {e}"
                        )
                    });
                self
            }
            pub fn sync_linear_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.sync_linear_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sync_linear_enabled: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleDataAttributes>
        for super::UpdateScheduleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    all_time_coverage: value.all_time_coverage?,
                    description: value.description?,
                    include_shadows_in_slack_notifications: value
                        .include_shadows_in_slack_notifications?,
                    name: value.name?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_id: value.owner_user_id?,
                    shift_report_day_of_week: value.shift_report_day_of_week?,
                    shift_report_enabled: value.shift_report_enabled?,
                    shift_report_time_of_day: value.shift_report_time_of_day?,
                    shift_report_time_zone: value.shift_report_time_zone?,
                    shift_start_notifications_enabled: value
                        .shift_start_notifications_enabled?,
                    shift_update_notifications_enabled: value
                        .shift_update_notifications_enabled?,
                    slack_channel: value.slack_channel?,
                    slack_user_group: value.slack_user_group?,
                    sync_linear_enabled: value.sync_linear_enabled?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleDataAttributes>
        for UpdateScheduleDataAttributes {
            fn from(value: super::UpdateScheduleDataAttributes) -> Self {
                Self {
                    all_time_coverage: Ok(value.all_time_coverage),
                    description: Ok(value.description),
                    include_shadows_in_slack_notifications: Ok(
                        value.include_shadows_in_slack_notifications,
                    ),
                    name: Ok(value.name),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_id: Ok(value.owner_user_id),
                    shift_report_day_of_week: Ok(value.shift_report_day_of_week),
                    shift_report_enabled: Ok(value.shift_report_enabled),
                    shift_report_time_of_day: Ok(value.shift_report_time_of_day),
                    shift_report_time_zone: Ok(value.shift_report_time_zone),
                    shift_start_notifications_enabled: Ok(
                        value.shift_start_notifications_enabled,
                    ),
                    shift_update_notifications_enabled: Ok(
                        value.shift_update_notifications_enabled,
                    ),
                    slack_channel: Ok(value.slack_channel),
                    slack_user_group: Ok(value.slack_user_group),
                    sync_linear_enabled: Ok(value.sync_linear_enabled),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleDataAttributesSlackChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleDataAttributesSlackChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleDataAttributesSlackChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleDataAttributesSlackChannel>
        for super::UpdateScheduleDataAttributesSlackChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleDataAttributesSlackChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleDataAttributesSlackChannel>
        for UpdateScheduleDataAttributesSlackChannel {
            fn from(value: super::UpdateScheduleDataAttributesSlackChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleDataAttributesSlackUserGroup {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleDataAttributesSlackUserGroup {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleDataAttributesSlackUserGroup {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleDataAttributesSlackUserGroup>
        for super::UpdateScheduleDataAttributesSlackUserGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleDataAttributesSlackUserGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleDataAttributesSlackUserGroup>
        for UpdateScheduleDataAttributesSlackUserGroup {
            fn from(value: super::UpdateScheduleDataAttributesSlackUserGroup) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotation {
            data: ::std::result::Result<
                super::UpdateScheduleRotationData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotation {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateScheduleRotation {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleRotationData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotation>
        for super::UpdateScheduleRotation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotation>
        for UpdateScheduleRotation {
            fn from(value: super::UpdateScheduleRotation) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationActiveDay {
            data: ::std::result::Result<
                super::UpdateScheduleRotationActiveDayData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationActiveDay {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateScheduleRotationActiveDay {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleRotationActiveDayData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationActiveDay>
        for super::UpdateScheduleRotationActiveDay {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationActiveDay,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationActiveDay>
        for UpdateScheduleRotationActiveDay {
            fn from(value: super::UpdateScheduleRotationActiveDay) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationActiveDayData {
            attributes: ::std::result::Result<
                super::UpdateScheduleRotationActiveDayDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateScheduleRotationActiveDayDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationActiveDayData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateScheduleRotationActiveDayData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateScheduleRotationActiveDayDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateScheduleRotationActiveDayDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationActiveDayData>
        for super::UpdateScheduleRotationActiveDayData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationActiveDayData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationActiveDayData>
        for UpdateScheduleRotationActiveDayData {
            fn from(value: super::UpdateScheduleRotationActiveDayData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationActiveDayDataAttributes {
            active_time_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
                >,
                ::std::string::String,
            >,
            day_name: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateScheduleRotationActiveDayDataAttributesDayName,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationActiveDayDataAttributes {
            fn default() -> Self {
                Self {
                    active_time_attributes: Ok(Default::default()),
                    day_name: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleRotationActiveDayDataAttributes {
            pub fn active_time_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_attributes: {e}"
                        )
                    });
                self
            }
            pub fn day_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateScheduleRotationActiveDayDataAttributesDayName,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.day_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for day_name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationActiveDayDataAttributes>
        for super::UpdateScheduleRotationActiveDayDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationActiveDayDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    active_time_attributes: value.active_time_attributes?,
                    day_name: value.day_name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationActiveDayDataAttributes>
        for UpdateScheduleRotationActiveDayDataAttributes {
            fn from(
                value: super::UpdateScheduleRotationActiveDayDataAttributes,
            ) -> Self {
                Self {
                    active_time_attributes: Ok(value.active_time_attributes),
                    day_name: Ok(value.day_name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            end_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            fn default() -> Self {
                Self {
                    end_time: Ok(Default::default()),
                    start_time: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
        >
        for super::UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
        > for UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem {
            fn from(
                value: super::UpdateScheduleRotationActiveDayDataAttributesActiveTimeAttributesItem,
            ) -> Self {
                Self {
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationData {
            attributes: ::std::result::Result<
                super::UpdateScheduleRotationDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateScheduleRotationDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateScheduleRotationData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleRotationDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleRotationDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationData>
        for super::UpdateScheduleRotationData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationData>
        for UpdateScheduleRotationData {
            fn from(value: super::UpdateScheduleRotationData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationDataAttributes {
            active_all_week: ::std::result::Result<bool, ::std::string::String>,
            active_days: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateScheduleRotationDataAttributesActiveDaysItem,
                >,
                ::std::string::String,
            >,
            active_time_attributes: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
                >,
                ::std::string::String,
            >,
            active_time_type: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            end_time: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            schedule_rotation_members: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
                    >,
                >,
                ::std::string::String,
            >,
            schedule_rotationable_attributes: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateScheduleRotationDataAttributesScheduleRotationableAttributes,
                >,
                ::std::string::String,
            >,
            schedule_rotationable_type: ::std::result::Result<
                super::UpdateScheduleRotationDataAttributesScheduleRotationableType,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationDataAttributes {
            fn default() -> Self {
                Self {
                    active_all_week: Ok(super::defaults::default_bool::<true>()),
                    active_days: Ok(Default::default()),
                    active_time_attributes: Ok(Default::default()),
                    active_time_type: Ok(Default::default()),
                    end_time: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    schedule_rotation_members: Ok(Default::default()),
                    schedule_rotationable_attributes: Ok(Default::default()),
                    schedule_rotationable_type: Err(
                        "no value supplied for schedule_rotationable_type".to_string(),
                    ),
                    start_time: Ok(Default::default()),
                    time_zone: Ok(
                        super::defaults::update_schedule_rotation_data_attributes_time_zone(),
                    ),
                }
            }
        }
        impl UpdateScheduleRotationDataAttributes {
            pub fn active_all_week<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.active_all_week = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_all_week: {e}"
                        )
                    });
                self
            }
            pub fn active_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateScheduleRotationDataAttributesActiveDaysItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for active_days: {e}")
                    });
                self
            }
            pub fn active_time_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_attributes: {e}"
                        )
                    });
                self
            }
            pub fn active_time_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.active_time_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for active_time_type: {e}"
                        )
                    });
                self
            }
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn schedule_rotation_members<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotation_members = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotation_members: {e}"
                        )
                    });
                self
            }
            pub fn schedule_rotationable_attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateScheduleRotationDataAttributesScheduleRotationableAttributes,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotationable_attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotationable_attributes: {e}"
                        )
                    });
                self
            }
            pub fn schedule_rotationable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateScheduleRotationDataAttributesScheduleRotationableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.schedule_rotationable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for schedule_rotationable_type: {e}"
                        )
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationDataAttributes>
        for super::UpdateScheduleRotationDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    active_all_week: value.active_all_week?,
                    active_days: value.active_days?,
                    active_time_attributes: value.active_time_attributes?,
                    active_time_type: value.active_time_type?,
                    end_time: value.end_time?,
                    name: value.name?,
                    position: value.position?,
                    schedule_rotation_members: value.schedule_rotation_members?,
                    schedule_rotationable_attributes: value
                        .schedule_rotationable_attributes?,
                    schedule_rotationable_type: value.schedule_rotationable_type?,
                    start_time: value.start_time?,
                    time_zone: value.time_zone?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationDataAttributes>
        for UpdateScheduleRotationDataAttributes {
            fn from(value: super::UpdateScheduleRotationDataAttributes) -> Self {
                Self {
                    active_all_week: Ok(value.active_all_week),
                    active_days: Ok(value.active_days),
                    active_time_attributes: Ok(value.active_time_attributes),
                    active_time_type: Ok(value.active_time_type),
                    end_time: Ok(value.end_time),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    schedule_rotation_members: Ok(value.schedule_rotation_members),
                    schedule_rotationable_attributes: Ok(
                        value.schedule_rotationable_attributes,
                    ),
                    schedule_rotationable_type: Ok(value.schedule_rotationable_type),
                    start_time: Ok(value.start_time),
                    time_zone: Ok(value.time_zone),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
            end_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            start_time: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
            fn default() -> Self {
                Self {
                    end_time: Err("no value supplied for end_time".to_string()),
                    start_time: Err("no value supplied for start_time".to_string()),
                }
            }
        }
        impl UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
            pub fn end_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.end_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for end_time: {e}")
                    });
                self
            }
            pub fn start_time<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.start_time = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for start_time: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
        > for super::UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    end_time: value.end_time?,
                    start_time: value.start_time?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
        > for UpdateScheduleRotationDataAttributesActiveTimeAttributesItem {
            fn from(
                value: super::UpdateScheduleRotationDataAttributesActiveTimeAttributesItem,
            ) -> Self {
                Self {
                    end_time: Ok(value.end_time),
                    start_time: Ok(value.start_time),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
            member_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            member_type: ::std::result::Result<
                super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
            fn default() -> Self {
                Self {
                    member_id: Err("no value supplied for member_id".to_string()),
                    member_type: Err("no value supplied for member_type".to_string()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
            pub fn member_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.member_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_id: {e}")
                    });
                self
            }
            pub fn member_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItemMemberType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.member_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for member_type: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
        > for super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    member_id: value.member_id?,
                    member_type: value.member_type?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
        > for UpdateScheduleRotationDataAttributesScheduleRotationMembersItem {
            fn from(
                value: super::UpdateScheduleRotationDataAttributesScheduleRotationMembersItem,
            ) -> Self {
                Self {
                    member_id: Ok(value.member_id),
                    member_type: Ok(value.member_type),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationUser {
            data: ::std::result::Result<
                super::UpdateScheduleRotationUserData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationUser {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateScheduleRotationUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleRotationUserData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationUser>
        for super::UpdateScheduleRotationUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationUser>
        for UpdateScheduleRotationUser {
            fn from(value: super::UpdateScheduleRotationUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationUserData {
            attributes: ::std::result::Result<
                super::UpdateScheduleRotationUserDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateScheduleRotationUserDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationUserData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateScheduleRotationUserData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateScheduleRotationUserDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateScheduleRotationUserDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationUserData>
        for super::UpdateScheduleRotationUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationUserData>
        for UpdateScheduleRotationUserData {
            fn from(value: super::UpdateScheduleRotationUserData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateScheduleRotationUserDataAttributes {
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateScheduleRotationUserDataAttributes {
            fn default() -> Self {
                Self {
                    position: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateScheduleRotationUserDataAttributes {
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateScheduleRotationUserDataAttributes>
        for super::UpdateScheduleRotationUserDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateScheduleRotationUserDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    position: value.position?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateScheduleRotationUserDataAttributes>
        for UpdateScheduleRotationUserDataAttributes {
            fn from(value: super::UpdateScheduleRotationUserDataAttributes) -> Self {
                Self {
                    position: Ok(value.position),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSecret {
            data: ::std::result::Result<super::UpdateSecretData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateSecret {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateSecret {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSecretData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSecret> for super::UpdateSecret {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSecret,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateSecret> for UpdateSecret {
            fn from(value: super::UpdateSecret) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSecretData {
            attributes: ::std::result::Result<
                super::UpdateSecretDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateSecretDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSecretData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateSecretData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSecretDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSecretDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSecretData> for super::UpdateSecretData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSecretData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSecretData> for UpdateSecretData {
            fn from(value: super::UpdateSecretData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSecretDataAttributes {
            hashicorp_vault_mount: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            hashicorp_vault_path: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            hashicorp_vault_version: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            secret: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSecretDataAttributes {
            fn default() -> Self {
                Self {
                    hashicorp_vault_mount: Ok(Default::default()),
                    hashicorp_vault_path: Ok(Default::default()),
                    hashicorp_vault_version: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    secret: Ok(Default::default()),
                }
            }
        }
        impl UpdateSecretDataAttributes {
            pub fn hashicorp_vault_mount<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_mount = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_mount: {e}"
                        )
                    });
                self
            }
            pub fn hashicorp_vault_path<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_path = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_path: {e}"
                        )
                    });
                self
            }
            pub fn hashicorp_vault_version<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.hashicorp_vault_version = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for hashicorp_vault_version: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSecretDataAttributes>
        for super::UpdateSecretDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSecretDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    hashicorp_vault_mount: value.hashicorp_vault_mount?,
                    hashicorp_vault_path: value.hashicorp_vault_path?,
                    hashicorp_vault_version: value.hashicorp_vault_version?,
                    name: value.name?,
                    secret: value.secret?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSecretDataAttributes>
        for UpdateSecretDataAttributes {
            fn from(value: super::UpdateSecretDataAttributes) -> Self {
                Self {
                    hashicorp_vault_mount: Ok(value.hashicorp_vault_mount),
                    hashicorp_vault_path: Ok(value.hashicorp_vault_path),
                    hashicorp_vault_version: Ok(value.hashicorp_vault_version),
                    name: Ok(value.name),
                    secret: Ok(value.secret),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateService {
            data: ::std::result::Result<super::UpdateServiceData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateService {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateService {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateServiceData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateService> for super::UpdateService {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateService,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateService> for UpdateService {
            fn from(value: super::UpdateService) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceData {
            attributes: ::std::result::Result<
                super::UpdateServiceDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateServiceDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateServiceData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateServiceData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateServiceDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateServiceDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceData> for super::UpdateServiceData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceData> for UpdateServiceData {
            fn from(value: super::UpdateServiceData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceDataAttributes {
            alert_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateServiceDataAttributesAlertBroadcastChannel,
                >,
                ::std::string::String,
            >,
            alert_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            escalation_policy_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_repository_branch: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            github_repository_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_repository_branch: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            gitlab_repository_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateServiceDataAttributesIncidentBroadcastChannel,
                >,
                ::std::string::String,
            >,
            incident_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kubernetes_deployment_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            owner_group_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            owner_user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateServiceDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateServiceDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateServiceDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateServiceDataAttributes {
            fn default() -> Self {
                Self {
                    alert_broadcast_channel: Ok(Default::default()),
                    alert_broadcast_enabled: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    alerts_email_enabled: Ok(Default::default()),
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    escalation_policy_id: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    github_repository_branch: Ok(Default::default()),
                    github_repository_name: Ok(Default::default()),
                    gitlab_repository_branch: Ok(Default::default()),
                    gitlab_repository_name: Ok(Default::default()),
                    incident_broadcast_channel: Ok(Default::default()),
                    incident_broadcast_enabled: Ok(Default::default()),
                    kubernetes_deployment_name: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    owner_group_ids: Ok(Default::default()),
                    owner_user_ids: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl UpdateServiceDataAttributes {
            pub fn alert_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateServiceDataAttributesAlertBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn alert_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_enabled: {e}"
                        )
                    });
                self
            }
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn escalation_policy_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.escalation_policy_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for escalation_policy_id: {e}"
                        )
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn github_repository_branch<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_repository_branch = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_repository_branch: {e}"
                        )
                    });
                self
            }
            pub fn github_repository_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.github_repository_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for github_repository_name: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_repository_branch<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_repository_branch = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_repository_branch: {e}"
                        )
                    });
                self
            }
            pub fn gitlab_repository_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.gitlab_repository_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for gitlab_repository_name: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateServiceDataAttributesIncidentBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn kubernetes_deployment_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.kubernetes_deployment_name = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for kubernetes_deployment_name: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn owner_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.owner_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn owner_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.owner_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for owner_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateServiceDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateServiceDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateServiceDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceDataAttributes>
        for super::UpdateServiceDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    alert_broadcast_channel: value.alert_broadcast_channel?,
                    alert_broadcast_enabled: value.alert_broadcast_enabled?,
                    alert_urgency_id: value.alert_urgency_id?,
                    alerts_email_enabled: value.alerts_email_enabled?,
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    description: value.description?,
                    environment_ids: value.environment_ids?,
                    escalation_policy_id: value.escalation_policy_id?,
                    external_id: value.external_id?,
                    github_repository_branch: value.github_repository_branch?,
                    github_repository_name: value.github_repository_name?,
                    gitlab_repository_branch: value.gitlab_repository_branch?,
                    gitlab_repository_name: value.gitlab_repository_name?,
                    incident_broadcast_channel: value.incident_broadcast_channel?,
                    incident_broadcast_enabled: value.incident_broadcast_enabled?,
                    kubernetes_deployment_name: value.kubernetes_deployment_name?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    owner_group_ids: value.owner_group_ids?,
                    owner_user_ids: value.owner_user_ids?,
                    pagerduty_id: value.pagerduty_id?,
                    position: value.position?,
                    properties: value.properties?,
                    public_description: value.public_description?,
                    service_ids: value.service_ids?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceDataAttributes>
        for UpdateServiceDataAttributes {
            fn from(value: super::UpdateServiceDataAttributes) -> Self {
                Self {
                    alert_broadcast_channel: Ok(value.alert_broadcast_channel),
                    alert_broadcast_enabled: Ok(value.alert_broadcast_enabled),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    alerts_email_enabled: Ok(value.alerts_email_enabled),
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    description: Ok(value.description),
                    environment_ids: Ok(value.environment_ids),
                    escalation_policy_id: Ok(value.escalation_policy_id),
                    external_id: Ok(value.external_id),
                    github_repository_branch: Ok(value.github_repository_branch),
                    github_repository_name: Ok(value.github_repository_name),
                    gitlab_repository_branch: Ok(value.gitlab_repository_branch),
                    gitlab_repository_name: Ok(value.gitlab_repository_name),
                    incident_broadcast_channel: Ok(value.incident_broadcast_channel),
                    incident_broadcast_enabled: Ok(value.incident_broadcast_enabled),
                    kubernetes_deployment_name: Ok(value.kubernetes_deployment_name),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    owner_group_ids: Ok(value.owner_group_ids),
                    owner_user_ids: Ok(value.owner_user_ids),
                    pagerduty_id: Ok(value.pagerduty_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    public_description: Ok(value.public_description),
                    service_ids: Ok(value.service_ids),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceDataAttributesAlertBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateServiceDataAttributesAlertBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateServiceDataAttributesAlertBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceDataAttributesAlertBroadcastChannel>
        for super::UpdateServiceDataAttributesAlertBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceDataAttributesAlertBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateServiceDataAttributesAlertBroadcastChannel,
        > for UpdateServiceDataAttributesAlertBroadcastChannel {
            fn from(
                value: super::UpdateServiceDataAttributesAlertBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceDataAttributesIncidentBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateServiceDataAttributesIncidentBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateServiceDataAttributesIncidentBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceDataAttributesIncidentBroadcastChannel>
        for super::UpdateServiceDataAttributesIncidentBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceDataAttributesIncidentBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateServiceDataAttributesIncidentBroadcastChannel,
        > for UpdateServiceDataAttributesIncidentBroadcastChannel {
            fn from(
                value: super::UpdateServiceDataAttributesIncidentBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateServiceDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateServiceDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceDataAttributesPropertiesItem>
        for super::UpdateServiceDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceDataAttributesPropertiesItem>
        for UpdateServiceDataAttributesPropertiesItem {
            fn from(value: super::UpdateServiceDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateServiceDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateServiceDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceDataAttributesSlackAliasesItem>
        for super::UpdateServiceDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceDataAttributesSlackAliasesItem>
        for UpdateServiceDataAttributesSlackAliasesItem {
            fn from(value: super::UpdateServiceDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateServiceDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateServiceDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceDataAttributesSlackChannelsItem>
        for super::UpdateServiceDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceDataAttributesSlackChannelsItem>
        for UpdateServiceDataAttributesSlackChannelsItem {
            fn from(value: super::UpdateServiceDataAttributesSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceNowIncidentTaskParams {
            completion: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateServiceNowIncidentTaskParamsCompletion,
                >,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateServiceNowIncidentTaskParamsPriority>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateServiceNowIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateServiceNowIncidentTaskParams {
            fn default() -> Self {
                Self {
                    completion: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    description: Ok(Default::default()),
                    incident_id: Err("no value supplied for incident_id".to_string()),
                    priority: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateServiceNowIncidentTaskParams {
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateServiceNowIncidentTaskParamsCompletion,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateServiceNowIncidentTaskParamsPriority,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateServiceNowIncidentTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceNowIncidentTaskParams>
        for super::UpdateServiceNowIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceNowIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    description: value.description?,
                    incident_id: value.incident_id?,
                    priority: value.priority?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceNowIncidentTaskParams>
        for UpdateServiceNowIncidentTaskParams {
            fn from(value: super::UpdateServiceNowIncidentTaskParams) -> Self {
                Self {
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    description: Ok(value.description),
                    incident_id: Ok(value.incident_id),
                    priority: Ok(value.priority),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceNowIncidentTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateServiceNowIncidentTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateServiceNowIncidentTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceNowIncidentTaskParamsCompletion>
        for super::UpdateServiceNowIncidentTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceNowIncidentTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceNowIncidentTaskParamsCompletion>
        for UpdateServiceNowIncidentTaskParamsCompletion {
            fn from(value: super::UpdateServiceNowIncidentTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateServiceNowIncidentTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateServiceNowIncidentTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateServiceNowIncidentTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateServiceNowIncidentTaskParamsPriority>
        for super::UpdateServiceNowIncidentTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateServiceNowIncidentTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateServiceNowIncidentTaskParamsPriority>
        for UpdateServiceNowIncidentTaskParamsPriority {
            fn from(value: super::UpdateServiceNowIncidentTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSeverity {
            data: ::std::result::Result<
                super::UpdateSeverityData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSeverity {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateSeverity {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSeverityData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSeverity> for super::UpdateSeverity {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSeverity,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateSeverity> for UpdateSeverity {
            fn from(value: super::UpdateSeverity) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSeverityData {
            attributes: ::std::result::Result<
                super::UpdateSeverityDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateSeverityDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSeverityData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateSeverityData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSeverityDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSeverityDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSeverityData> for super::UpdateSeverityData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSeverityData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSeverityData> for UpdateSeverityData {
            fn from(value: super::UpdateSeverityData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSeverityDataAttributes {
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            severity: ::std::result::Result<
                ::std::option::Option<super::UpdateSeverityDataAttributesSeverity>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateSeverityDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateSeverityDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSeverityDataAttributes {
            fn default() -> Self {
                Self {
                    color: Ok(Default::default()),
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    position: Ok(Default::default()),
                    severity: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                }
            }
        }
        impl UpdateSeverityDataAttributes {
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn severity<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateSeverityDataAttributesSeverity>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.severity = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity: {e}")
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateSeverityDataAttributesSlackAliasesItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateSeverityDataAttributesSlackChannelsItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSeverityDataAttributes>
        for super::UpdateSeverityDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSeverityDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    color: value.color?,
                    description: value.description?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    position: value.position?,
                    severity: value.severity?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSeverityDataAttributes>
        for UpdateSeverityDataAttributes {
            fn from(value: super::UpdateSeverityDataAttributes) -> Self {
                Self {
                    color: Ok(value.color),
                    description: Ok(value.description),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    position: Ok(value.position),
                    severity: Ok(value.severity),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSeverityDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateSeverityDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateSeverityDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSeverityDataAttributesSlackAliasesItem>
        for super::UpdateSeverityDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSeverityDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSeverityDataAttributesSlackAliasesItem>
        for UpdateSeverityDataAttributesSlackAliasesItem {
            fn from(value: super::UpdateSeverityDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSeverityDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateSeverityDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateSeverityDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSeverityDataAttributesSlackChannelsItem>
        for super::UpdateSeverityDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSeverityDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSeverityDataAttributesSlackChannelsItem>
        for UpdateSeverityDataAttributesSlackChannelsItem {
            fn from(
                value: super::UpdateSeverityDataAttributesSlackChannelsItem,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSharepointPageTaskParams {
            content: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            file_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            post_mortem_template_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateSharepointPageTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSharepointPageTaskParams {
            fn default() -> Self {
                Self {
                    content: Ok(Default::default()),
                    file_id: Err("no value supplied for file_id".to_string()),
                    post_mortem_template_id: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateSharepointPageTaskParams {
            pub fn content<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.content = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for content: {e}")
                    });
                self
            }
            pub fn file_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.file_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for file_id: {e}")
                    });
                self
            }
            pub fn post_mortem_template_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_template_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_template_id: {e}"
                        )
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateSharepointPageTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSharepointPageTaskParams>
        for super::UpdateSharepointPageTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSharepointPageTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    content: value.content?,
                    file_id: value.file_id?,
                    post_mortem_template_id: value.post_mortem_template_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSharepointPageTaskParams>
        for UpdateSharepointPageTaskParams {
            fn from(value: super::UpdateSharepointPageTaskParams) -> Self {
                Self {
                    content: Ok(value.content),
                    file_id: Ok(value.file_id),
                    post_mortem_template_id: Ok(value.post_mortem_template_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateShortcutStoryTaskParams {
            archivation: ::std::result::Result<
                super::UpdateShortcutStoryTaskParamsArchivation,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            story_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateShortcutStoryTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateShortcutStoryTaskParams {
            fn default() -> Self {
                Self {
                    archivation: Err("no value supplied for archivation".to_string()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    story_id: Err("no value supplied for story_id".to_string()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateShortcutStoryTaskParams {
            pub fn archivation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateShortcutStoryTaskParamsArchivation,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.archivation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for archivation: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn story_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.story_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for story_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateShortcutStoryTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateShortcutStoryTaskParams>
        for super::UpdateShortcutStoryTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateShortcutStoryTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    archivation: value.archivation?,
                    description: value.description?,
                    due_date: value.due_date?,
                    labels: value.labels?,
                    story_id: value.story_id?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateShortcutStoryTaskParams>
        for UpdateShortcutStoryTaskParams {
            fn from(value: super::UpdateShortcutStoryTaskParams) -> Self {
                Self {
                    archivation: Ok(value.archivation),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    labels: Ok(value.labels),
                    story_id: Ok(value.story_id),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateShortcutStoryTaskParamsArchivation {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateShortcutStoryTaskParamsArchivation {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateShortcutStoryTaskParamsArchivation {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateShortcutStoryTaskParamsArchivation>
        for super::UpdateShortcutStoryTaskParamsArchivation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateShortcutStoryTaskParamsArchivation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateShortcutStoryTaskParamsArchivation>
        for UpdateShortcutStoryTaskParamsArchivation {
            fn from(value: super::UpdateShortcutStoryTaskParamsArchivation) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateShortcutTaskTaskParams {
            completion: ::std::result::Result<
                super::UpdateShortcutTaskTaskParamsCompletion,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            parent_story_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            task_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateShortcutTaskTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateShortcutTaskTaskParams {
            fn default() -> Self {
                Self {
                    completion: Err("no value supplied for completion".to_string()),
                    description: Ok(Default::default()),
                    parent_story_id: Err(
                        "no value supplied for parent_story_id".to_string(),
                    ),
                    task_id: Err("no value supplied for task_id".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateShortcutTaskTaskParams {
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateShortcutTaskTaskParamsCompletion,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn parent_story_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.parent_story_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for parent_story_id: {e}"
                        )
                    });
                self
            }
            pub fn task_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.task_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_id: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateShortcutTaskTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateShortcutTaskTaskParams>
        for super::UpdateShortcutTaskTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateShortcutTaskTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    completion: value.completion?,
                    description: value.description?,
                    parent_story_id: value.parent_story_id?,
                    task_id: value.task_id?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateShortcutTaskTaskParams>
        for UpdateShortcutTaskTaskParams {
            fn from(value: super::UpdateShortcutTaskTaskParams) -> Self {
                Self {
                    completion: Ok(value.completion),
                    description: Ok(value.description),
                    parent_story_id: Ok(value.parent_story_id),
                    task_id: Ok(value.task_id),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateShortcutTaskTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateShortcutTaskTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateShortcutTaskTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateShortcutTaskTaskParamsCompletion>
        for super::UpdateShortcutTaskTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateShortcutTaskTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateShortcutTaskTaskParamsCompletion>
        for UpdateShortcutTaskTaskParamsCompletion {
            fn from(value: super::UpdateShortcutTaskTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSla {
            data: ::std::result::Result<super::UpdateSlaData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateSla {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateSla {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSlaData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSla> for super::UpdateSla {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSla,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateSla> for UpdateSla {
            fn from(value: super::UpdateSla) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSlaData {
            attributes: ::std::result::Result<
                super::UpdateSlaDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateSlaDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSlaData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateSlaData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSlaDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSlaDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSlaData> for super::UpdateSlaData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSlaData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSlaData> for UpdateSlaData {
            fn from(value: super::UpdateSlaData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSlaDataAttributes {
            assignment_deadline_days: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateSlaDataAttributesAssignmentDeadlineDays,
                >,
                ::std::string::String,
            >,
            assignment_deadline_parent_status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateSlaDataAttributesAssignmentDeadlineParentStatus,
                >,
                ::std::string::String,
            >,
            assignment_deadline_sub_status_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            assignment_skip_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            completion_deadline_days: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateSlaDataAttributesCompletionDeadlineDays,
                >,
                ::std::string::String,
            >,
            completion_deadline_parent_status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateSlaDataAttributesCompletionDeadlineParentStatus,
                >,
                ::std::string::String,
            >,
            completion_deadline_sub_status_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            completion_skip_weekends: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            condition_match_type: ::std::result::Result<
                ::std::option::Option<super::UpdateSlaDataAttributesConditionMatchType>,
                ::std::string::String,
            >,
            conditions: ::std::result::Result<
                ::std::vec::Vec<super::UpdateSlaDataAttributesConditionsItem>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            manager_role_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            manager_user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notification_configurations: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateSlaDataAttributesNotificationConfigurationsItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSlaDataAttributes {
            fn default() -> Self {
                Self {
                    assignment_deadline_days: Ok(Default::default()),
                    assignment_deadline_parent_status: Ok(Default::default()),
                    assignment_deadline_sub_status_id: Ok(Default::default()),
                    assignment_skip_weekends: Ok(Default::default()),
                    completion_deadline_days: Ok(Default::default()),
                    completion_deadline_parent_status: Ok(Default::default()),
                    completion_deadline_sub_status_id: Ok(Default::default()),
                    completion_skip_weekends: Ok(Default::default()),
                    condition_match_type: Ok(Default::default()),
                    conditions: Ok(Default::default()),
                    description: Ok(Default::default()),
                    manager_role_id: Ok(Default::default()),
                    manager_user_id: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notification_configurations: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateSlaDataAttributes {
            pub fn assignment_deadline_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlaDataAttributesAssignmentDeadlineDays,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_days: {e}"
                        )
                    });
                self
            }
            pub fn assignment_deadline_parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlaDataAttributesAssignmentDeadlineParentStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_parent_status: {e}"
                        )
                    });
                self
            }
            pub fn assignment_deadline_sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_deadline_sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_deadline_sub_status_id: {e}"
                        )
                    });
                self
            }
            pub fn assignment_skip_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.assignment_skip_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for assignment_skip_weekends: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlaDataAttributesCompletionDeadlineDays,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_days: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_parent_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlaDataAttributesCompletionDeadlineParentStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_parent_status = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_parent_status: {e}"
                        )
                    });
                self
            }
            pub fn completion_deadline_sub_status_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_deadline_sub_status_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_deadline_sub_status_id: {e}"
                        )
                    });
                self
            }
            pub fn completion_skip_weekends<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.completion_skip_weekends = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for completion_skip_weekends: {e}"
                        )
                    });
                self
            }
            pub fn condition_match_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlaDataAttributesConditionMatchType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.condition_match_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for condition_match_type: {e}"
                        )
                    });
                self
            }
            pub fn conditions<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateSlaDataAttributesConditionsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditions = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for conditions: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn manager_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.manager_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for manager_role_id: {e}"
                        )
                    });
                self
            }
            pub fn manager_user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.manager_user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for manager_user_id: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notification_configurations<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateSlaDataAttributesNotificationConfigurationsItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_configurations = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_configurations: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSlaDataAttributes>
        for super::UpdateSlaDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSlaDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    assignment_deadline_days: value.assignment_deadline_days?,
                    assignment_deadline_parent_status: value
                        .assignment_deadline_parent_status?,
                    assignment_deadline_sub_status_id: value
                        .assignment_deadline_sub_status_id?,
                    assignment_skip_weekends: value.assignment_skip_weekends?,
                    completion_deadline_days: value.completion_deadline_days?,
                    completion_deadline_parent_status: value
                        .completion_deadline_parent_status?,
                    completion_deadline_sub_status_id: value
                        .completion_deadline_sub_status_id?,
                    completion_skip_weekends: value.completion_skip_weekends?,
                    condition_match_type: value.condition_match_type?,
                    conditions: value.conditions?,
                    description: value.description?,
                    manager_role_id: value.manager_role_id?,
                    manager_user_id: value.manager_user_id?,
                    name: value.name?,
                    notification_configurations: value.notification_configurations?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSlaDataAttributes>
        for UpdateSlaDataAttributes {
            fn from(value: super::UpdateSlaDataAttributes) -> Self {
                Self {
                    assignment_deadline_days: Ok(value.assignment_deadline_days),
                    assignment_deadline_parent_status: Ok(
                        value.assignment_deadline_parent_status,
                    ),
                    assignment_deadline_sub_status_id: Ok(
                        value.assignment_deadline_sub_status_id,
                    ),
                    assignment_skip_weekends: Ok(value.assignment_skip_weekends),
                    completion_deadline_days: Ok(value.completion_deadline_days),
                    completion_deadline_parent_status: Ok(
                        value.completion_deadline_parent_status,
                    ),
                    completion_deadline_sub_status_id: Ok(
                        value.completion_deadline_sub_status_id,
                    ),
                    completion_skip_weekends: Ok(value.completion_skip_weekends),
                    condition_match_type: Ok(value.condition_match_type),
                    conditions: Ok(value.conditions),
                    description: Ok(value.description),
                    manager_role_id: Ok(value.manager_role_id),
                    manager_user_id: Ok(value.manager_user_id),
                    name: Ok(value.name),
                    notification_configurations: Ok(value.notification_configurations),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSlaDataAttributesConditionsItem {
            conditionable_type: ::std::result::Result<
                super::UpdateSlaDataAttributesConditionsItemConditionableType,
                ::std::string::String,
            >,
            form_field_id: ::std::result::Result<
                ::std::option::Option<::uuid::Uuid>,
                ::std::string::String,
            >,
            operator: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            property: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateSlaDataAttributesConditionsItemProperty,
                >,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSlaDataAttributesConditionsItem {
            fn default() -> Self {
                Self {
                    conditionable_type: Err(
                        "no value supplied for conditionable_type".to_string(),
                    ),
                    form_field_id: Ok(Default::default()),
                    operator: Err("no value supplied for operator".to_string()),
                    position: Ok(Default::default()),
                    property: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl UpdateSlaDataAttributesConditionsItem {
            pub fn conditionable_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateSlaDataAttributesConditionsItemConditionableType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.conditionable_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for conditionable_type: {e}"
                        )
                    });
                self
            }
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::uuid::Uuid>>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn operator<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.operator = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for operator: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn property<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlaDataAttributesConditionsItemProperty,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.property = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for property: {e}")
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSlaDataAttributesConditionsItem>
        for super::UpdateSlaDataAttributesConditionsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSlaDataAttributesConditionsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    conditionable_type: value.conditionable_type?,
                    form_field_id: value.form_field_id?,
                    operator: value.operator?,
                    position: value.position?,
                    property: value.property?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSlaDataAttributesConditionsItem>
        for UpdateSlaDataAttributesConditionsItem {
            fn from(value: super::UpdateSlaDataAttributesConditionsItem) -> Self {
                Self {
                    conditionable_type: Ok(value.conditionable_type),
                    form_field_id: Ok(value.form_field_id),
                    operator: Ok(value.operator),
                    position: Ok(value.position),
                    property: Ok(value.property),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSlaDataAttributesNotificationConfigurationsItem {
            offset_days: ::std::result::Result<i64, ::std::string::String>,
            offset_type: ::std::result::Result<
                super::UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateSlaDataAttributesNotificationConfigurationsItem {
            fn default() -> Self {
                Self {
                    offset_days: Err("no value supplied for offset_days".to_string()),
                    offset_type: Err("no value supplied for offset_type".to_string()),
                }
            }
        }
        impl UpdateSlaDataAttributesNotificationConfigurationsItem {
            pub fn offset_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.offset_days = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for offset_days: {e}")
                    });
                self
            }
            pub fn offset_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateSlaDataAttributesNotificationConfigurationsItemOffsetType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.offset_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for offset_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<
            UpdateSlaDataAttributesNotificationConfigurationsItem,
        > for super::UpdateSlaDataAttributesNotificationConfigurationsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSlaDataAttributesNotificationConfigurationsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    offset_days: value.offset_days?,
                    offset_type: value.offset_type?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateSlaDataAttributesNotificationConfigurationsItem,
        > for UpdateSlaDataAttributesNotificationConfigurationsItem {
            fn from(
                value: super::UpdateSlaDataAttributesNotificationConfigurationsItem,
            ) -> Self {
                Self {
                    offset_days: Ok(value.offset_days),
                    offset_type: Ok(value.offset_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSlackChannelTopicTaskParams {
            channel: ::std::result::Result<
                super::UpdateSlackChannelTopicTaskParamsChannel,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateSlackChannelTopicTaskParamsTaskType>,
                ::std::string::String,
            >,
            topic: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateSlackChannelTopicTaskParams {
            fn default() -> Self {
                Self {
                    channel: Err("no value supplied for channel".to_string()),
                    task_type: Ok(Default::default()),
                    topic: Err("no value supplied for topic".to_string()),
                }
            }
        }
        impl UpdateSlackChannelTopicTaskParams {
            pub fn channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateSlackChannelTopicTaskParamsChannel,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.channel = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for channel: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateSlackChannelTopicTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn topic<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.topic = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for topic: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSlackChannelTopicTaskParams>
        for super::UpdateSlackChannelTopicTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSlackChannelTopicTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    channel: value.channel?,
                    task_type: value.task_type?,
                    topic: value.topic?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSlackChannelTopicTaskParams>
        for UpdateSlackChannelTopicTaskParams {
            fn from(value: super::UpdateSlackChannelTopicTaskParams) -> Self {
                Self {
                    channel: Ok(value.channel),
                    task_type: Ok(value.task_type),
                    topic: Ok(value.topic),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSlackChannelTopicTaskParamsChannel {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSlackChannelTopicTaskParamsChannel {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateSlackChannelTopicTaskParamsChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSlackChannelTopicTaskParamsChannel>
        for super::UpdateSlackChannelTopicTaskParamsChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSlackChannelTopicTaskParamsChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSlackChannelTopicTaskParamsChannel>
        for UpdateSlackChannelTopicTaskParamsChannel {
            fn from(value: super::UpdateSlackChannelTopicTaskParamsChannel) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusPage {
            data: ::std::result::Result<
                super::UpdateStatusPageData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusPage {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateStatusPage {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateStatusPageData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusPage> for super::UpdateStatusPage {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusPage,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateStatusPage> for UpdateStatusPage {
            fn from(value: super::UpdateStatusPage) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusPageData {
            attributes: ::std::result::Result<
                super::UpdateStatusPageDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateStatusPageDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusPageData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateStatusPageData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateStatusPageDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateStatusPageDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusPageData>
        for super::UpdateStatusPageData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusPageData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateStatusPageData> for UpdateStatusPageData {
            fn from(value: super::UpdateStatusPageData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusPageDataAttributes {
            allow_search_engine_index: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            authentication_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            authentication_method: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateStatusPageDataAttributesAuthenticationMethod,
                >,
                ::std::string::String,
            >,
            authentication_password: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            external_domain_names: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            failure_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            footer_color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            ga_tracking_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            header_color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            public_description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            public_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_cert: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_slo_service_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_idp_sso_service_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            saml_name_identifier_format: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateStatusPageDataAttributesSamlNameIdentifierFormat,
                >,
                ::std::string::String,
            >,
            section_order: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<
                        super::UpdateStatusPageDataAttributesSectionOrderItem,
                    >,
                >,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            show_uptime: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            show_uptime_last_days: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateStatusPageDataAttributesShowUptimeLastDays,
                >,
                ::std::string::String,
            >,
            success_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_privacy_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_support_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            website_url: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusPageDataAttributes {
            fn default() -> Self {
                Self {
                    allow_search_engine_index: Ok(Default::default()),
                    authentication_enabled: Ok(Default::default()),
                    authentication_method: Ok(Default::default()),
                    authentication_password: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    external_domain_names: Ok(Default::default()),
                    failure_message: Ok(Default::default()),
                    footer_color: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    ga_tracking_id: Ok(Default::default()),
                    header_color: Ok(Default::default()),
                    public: Ok(Default::default()),
                    public_description: Ok(Default::default()),
                    public_title: Ok(Default::default()),
                    saml_idp_cert: Ok(Default::default()),
                    saml_idp_slo_service_url: Ok(Default::default()),
                    saml_idp_sso_service_url: Ok(Default::default()),
                    saml_name_identifier_format: Ok(Default::default()),
                    section_order: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    show_uptime: Ok(Default::default()),
                    show_uptime_last_days: Ok(Default::default()),
                    success_message: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                    title: Ok(Default::default()),
                    website_privacy_url: Ok(Default::default()),
                    website_support_url: Ok(Default::default()),
                    website_url: Ok(Default::default()),
                }
            }
        }
        impl UpdateStatusPageDataAttributes {
            pub fn allow_search_engine_index<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.allow_search_engine_index = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for allow_search_engine_index: {e}"
                        )
                    });
                self
            }
            pub fn authentication_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_enabled: {e}"
                        )
                    });
                self
            }
            pub fn authentication_method<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateStatusPageDataAttributesAuthenticationMethod,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_method = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_method: {e}"
                        )
                    });
                self
            }
            pub fn authentication_password<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.authentication_password = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for authentication_password: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn external_domain_names<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.external_domain_names = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for external_domain_names: {e}"
                        )
                    });
                self
            }
            pub fn failure_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.failure_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for failure_message: {e}"
                        )
                    });
                self
            }
            pub fn footer_color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.footer_color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for footer_color: {e}")
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn ga_tracking_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ga_tracking_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for ga_tracking_id: {e}"
                        )
                    });
                self
            }
            pub fn header_color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.header_color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for header_color: {e}")
                    });
                self
            }
            pub fn public<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.public = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public: {e}")
                    });
                self
            }
            pub fn public_description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_description = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for public_description: {e}"
                        )
                    });
                self
            }
            pub fn public_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.public_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for public_title: {e}")
                    });
                self
            }
            pub fn saml_idp_cert<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_cert = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for saml_idp_cert: {e}")
                    });
                self
            }
            pub fn saml_idp_slo_service_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_slo_service_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_slo_service_url: {e}"
                        )
                    });
                self
            }
            pub fn saml_idp_sso_service_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.saml_idp_sso_service_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_idp_sso_service_url: {e}"
                        )
                    });
                self
            }
            pub fn saml_name_identifier_format<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateStatusPageDataAttributesSamlNameIdentifierFormat,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.saml_name_identifier_format = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for saml_name_identifier_format: {e}"
                        )
                    });
                self
            }
            pub fn section_order<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<
                            super::UpdateStatusPageDataAttributesSectionOrderItem,
                        >,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.section_order = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for section_order: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn show_uptime<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for show_uptime: {e}")
                    });
                self
            }
            pub fn show_uptime_last_days<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateStatusPageDataAttributesShowUptimeLastDays,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.show_uptime_last_days = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for show_uptime_last_days: {e}"
                        )
                    });
                self
            }
            pub fn success_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.success_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for success_message: {e}"
                        )
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn website_privacy_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_privacy_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for website_privacy_url: {e}"
                        )
                    });
                self
            }
            pub fn website_support_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_support_url = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for website_support_url: {e}"
                        )
                    });
                self
            }
            pub fn website_url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.website_url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for website_url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusPageDataAttributes>
        for super::UpdateStatusPageDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusPageDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    allow_search_engine_index: value.allow_search_engine_index?,
                    authentication_enabled: value.authentication_enabled?,
                    authentication_method: value.authentication_method?,
                    authentication_password: value.authentication_password?,
                    description: value.description?,
                    enabled: value.enabled?,
                    external_domain_names: value.external_domain_names?,
                    failure_message: value.failure_message?,
                    footer_color: value.footer_color?,
                    functionality_ids: value.functionality_ids?,
                    ga_tracking_id: value.ga_tracking_id?,
                    header_color: value.header_color?,
                    public: value.public?,
                    public_description: value.public_description?,
                    public_title: value.public_title?,
                    saml_idp_cert: value.saml_idp_cert?,
                    saml_idp_slo_service_url: value.saml_idp_slo_service_url?,
                    saml_idp_sso_service_url: value.saml_idp_sso_service_url?,
                    saml_name_identifier_format: value.saml_name_identifier_format?,
                    section_order: value.section_order?,
                    service_ids: value.service_ids?,
                    show_uptime: value.show_uptime?,
                    show_uptime_last_days: value.show_uptime_last_days?,
                    success_message: value.success_message?,
                    time_zone: value.time_zone?,
                    title: value.title?,
                    website_privacy_url: value.website_privacy_url?,
                    website_support_url: value.website_support_url?,
                    website_url: value.website_url?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateStatusPageDataAttributes>
        for UpdateStatusPageDataAttributes {
            fn from(value: super::UpdateStatusPageDataAttributes) -> Self {
                Self {
                    allow_search_engine_index: Ok(value.allow_search_engine_index),
                    authentication_enabled: Ok(value.authentication_enabled),
                    authentication_method: Ok(value.authentication_method),
                    authentication_password: Ok(value.authentication_password),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    external_domain_names: Ok(value.external_domain_names),
                    failure_message: Ok(value.failure_message),
                    footer_color: Ok(value.footer_color),
                    functionality_ids: Ok(value.functionality_ids),
                    ga_tracking_id: Ok(value.ga_tracking_id),
                    header_color: Ok(value.header_color),
                    public: Ok(value.public),
                    public_description: Ok(value.public_description),
                    public_title: Ok(value.public_title),
                    saml_idp_cert: Ok(value.saml_idp_cert),
                    saml_idp_slo_service_url: Ok(value.saml_idp_slo_service_url),
                    saml_idp_sso_service_url: Ok(value.saml_idp_sso_service_url),
                    saml_name_identifier_format: Ok(value.saml_name_identifier_format),
                    section_order: Ok(value.section_order),
                    service_ids: Ok(value.service_ids),
                    show_uptime: Ok(value.show_uptime),
                    show_uptime_last_days: Ok(value.show_uptime_last_days),
                    success_message: Ok(value.success_message),
                    time_zone: Ok(value.time_zone),
                    title: Ok(value.title),
                    website_privacy_url: Ok(value.website_privacy_url),
                    website_support_url: Ok(value.website_support_url),
                    website_url: Ok(value.website_url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusPageTemplate {
            data: ::std::result::Result<
                super::UpdateStatusPageTemplateData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusPageTemplate {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateStatusPageTemplate {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateStatusPageTemplateData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusPageTemplate>
        for super::UpdateStatusPageTemplate {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusPageTemplate,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateStatusPageTemplate>
        for UpdateStatusPageTemplate {
            fn from(value: super::UpdateStatusPageTemplate) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusPageTemplateData {
            attributes: ::std::result::Result<
                super::UpdateStatusPageTemplateDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateStatusPageTemplateDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusPageTemplateData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateStatusPageTemplateData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateStatusPageTemplateDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateStatusPageTemplateDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusPageTemplateData>
        for super::UpdateStatusPageTemplateData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusPageTemplateData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateStatusPageTemplateData>
        for UpdateStatusPageTemplateData {
            fn from(value: super::UpdateStatusPageTemplateData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusPageTemplateDataAttributes {
            body: ::std::result::Result<::std::string::String, ::std::string::String>,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateStatusPageTemplateDataAttributesKind>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            should_notify_subscribers: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            title: ::std::result::Result<::std::string::String, ::std::string::String>,
            update_status: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateStatusPageTemplateDataAttributesUpdateStatus,
                >,
                ::std::string::String,
            >,
            update_title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusPageTemplateDataAttributes {
            fn default() -> Self {
                Self {
                    body: Err("no value supplied for body".to_string()),
                    enabled: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    position: Ok(Default::default()),
                    should_notify_subscribers: Ok(Default::default()),
                    title: Err("no value supplied for title".to_string()),
                    update_status: Ok(Default::default()),
                    update_title: Ok(Default::default()),
                }
            }
        }
        impl UpdateStatusPageTemplateDataAttributes {
            pub fn body<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.body = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for body: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateStatusPageTemplateDataAttributesKind,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn should_notify_subscribers<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.should_notify_subscribers = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for should_notify_subscribers: {e}"
                        )
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
            pub fn update_status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateStatusPageTemplateDataAttributesUpdateStatus,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.update_status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for update_status: {e}")
                    });
                self
            }
            pub fn update_title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.update_title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for update_title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusPageTemplateDataAttributes>
        for super::UpdateStatusPageTemplateDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusPageTemplateDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    body: value.body?,
                    enabled: value.enabled?,
                    kind: value.kind?,
                    position: value.position?,
                    should_notify_subscribers: value.should_notify_subscribers?,
                    title: value.title?,
                    update_status: value.update_status?,
                    update_title: value.update_title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateStatusPageTemplateDataAttributes>
        for UpdateStatusPageTemplateDataAttributes {
            fn from(value: super::UpdateStatusPageTemplateDataAttributes) -> Self {
                Self {
                    body: Ok(value.body),
                    enabled: Ok(value.enabled),
                    kind: Ok(value.kind),
                    position: Ok(value.position),
                    should_notify_subscribers: Ok(value.should_notify_subscribers),
                    title: Ok(value.title),
                    update_status: Ok(value.update_status),
                    update_title: Ok(value.update_title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateStatusTaskParams {
            inactivity_timeout: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::UpdateStatusTaskParamsStatus,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateStatusTaskParamsTaskType>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateStatusTaskParams {
            fn default() -> Self {
                Self {
                    inactivity_timeout: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    task_type: Ok(Default::default()),
                }
            }
        }
        impl UpdateStatusTaskParams {
            pub fn inactivity_timeout<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.inactivity_timeout = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for inactivity_timeout: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateStatusTaskParamsStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateStatusTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateStatusTaskParams>
        for super::UpdateStatusTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateStatusTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    inactivity_timeout: value.inactivity_timeout?,
                    status: value.status?,
                    task_type: value.task_type?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateStatusTaskParams>
        for UpdateStatusTaskParams {
            fn from(value: super::UpdateStatusTaskParams) -> Self {
                Self {
                    inactivity_timeout: Ok(value.inactivity_timeout),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSubStatus {
            data: ::std::result::Result<
                super::UpdateSubStatusData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSubStatus {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateSubStatus {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSubStatusData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSubStatus> for super::UpdateSubStatus {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSubStatus,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateSubStatus> for UpdateSubStatus {
            fn from(value: super::UpdateSubStatus) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSubStatusData {
            attributes: ::std::result::Result<
                super::UpdateSubStatusDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateSubStatusDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSubStatusData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateSubStatusData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSubStatusDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateSubStatusDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSubStatusData>
        for super::UpdateSubStatusData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSubStatusData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSubStatusData> for UpdateSubStatusData {
            fn from(value: super::UpdateSubStatusData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateSubStatusDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateSubStatusDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateSubStatusDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateSubStatusDataAttributes>
        for super::UpdateSubStatusDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateSubStatusDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateSubStatusDataAttributes>
        for UpdateSubStatusDataAttributes {
            fn from(value: super::UpdateSubStatusDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeam {
            data: ::std::result::Result<super::UpdateTeamData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateTeam {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateTeam {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateTeamData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeam> for super::UpdateTeam {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeam,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateTeam> for UpdateTeam {
            fn from(value: super::UpdateTeam) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamData {
            attributes: ::std::result::Result<
                super::UpdateTeamDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateTeamDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTeamData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateTeamData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateTeamDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateTeamDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamData> for super::UpdateTeamData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTeamData> for UpdateTeamData {
            fn from(value: super::UpdateTeamData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamDataAttributes {
            admin_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            alert_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateTeamDataAttributesAlertBroadcastChannel,
                >,
                ::std::string::String,
            >,
            alert_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            alert_urgency_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alerts_email_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            auto_add_members_scope: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateTeamDataAttributesAutoAddMembersScope,
                >,
                ::std::string::String,
            >,
            auto_add_members_when_attached: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            backstage_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            color: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            cortex_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            external_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_broadcast_channel: ::std::result::Result<
                ::std::option::Option<
                    super::UpdateTeamDataAttributesIncidentBroadcastChannel,
                >,
                ::std::string::String,
            >,
            incident_broadcast_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            notify_emails: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                ::std::string::String,
            >,
            opsgenie_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagerduty_service_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pagertree_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            properties: ::std::result::Result<
                ::std::vec::Vec<super::UpdateTeamDataAttributesPropertiesItem>,
                ::std::string::String,
            >,
            service_now_ci_sys_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            slack_aliases: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateTeamDataAttributesSlackAliasesItem>,
                >,
                ::std::string::String,
            >,
            slack_channels: ::std::result::Result<
                ::std::option::Option<
                    ::std::vec::Vec<super::UpdateTeamDataAttributesSlackChannelsItem>,
                >,
                ::std::string::String,
            >,
            user_ids: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<i64>>,
                ::std::string::String,
            >,
            victor_ops_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTeamDataAttributes {
            fn default() -> Self {
                Self {
                    admin_ids: Ok(Default::default()),
                    alert_broadcast_channel: Ok(Default::default()),
                    alert_broadcast_enabled: Ok(Default::default()),
                    alert_urgency_id: Ok(Default::default()),
                    alerts_email_enabled: Ok(Default::default()),
                    auto_add_members_scope: Ok(Default::default()),
                    auto_add_members_when_attached: Ok(Default::default()),
                    backstage_id: Ok(Default::default()),
                    color: Ok(Default::default()),
                    cortex_id: Ok(Default::default()),
                    description: Ok(Default::default()),
                    external_id: Ok(Default::default()),
                    incident_broadcast_channel: Ok(Default::default()),
                    incident_broadcast_enabled: Ok(Default::default()),
                    name: Ok(Default::default()),
                    notify_emails: Ok(Default::default()),
                    opsgenie_id: Ok(Default::default()),
                    pagerduty_id: Ok(Default::default()),
                    pagerduty_service_id: Ok(Default::default()),
                    pagertree_id: Ok(Default::default()),
                    position: Ok(Default::default()),
                    properties: Ok(Default::default()),
                    service_now_ci_sys_id: Ok(Default::default()),
                    slack_aliases: Ok(Default::default()),
                    slack_channels: Ok(Default::default()),
                    user_ids: Ok(Default::default()),
                    victor_ops_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateTeamDataAttributes {
            pub fn admin_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.admin_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for admin_ids: {e}")
                    });
                self
            }
            pub fn alert_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateTeamDataAttributesAlertBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn alert_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn alert_urgency_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_urgency_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alert_urgency_id: {e}"
                        )
                    });
                self
            }
            pub fn alerts_email_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.alerts_email_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for alerts_email_enabled: {e}"
                        )
                    });
                self
            }
            pub fn auto_add_members_scope<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateTeamDataAttributesAutoAddMembersScope,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.auto_add_members_scope = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_add_members_scope: {e}"
                        )
                    });
                self
            }
            pub fn auto_add_members_when_attached<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.auto_add_members_when_attached = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for auto_add_members_when_attached: {e}"
                        )
                    });
                self
            }
            pub fn backstage_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.backstage_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for backstage_id: {e}")
                    });
                self
            }
            pub fn color<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.color = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for color: {e}")
                    });
                self
            }
            pub fn cortex_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cortex_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cortex_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn external_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.external_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for external_id: {e}")
                    });
                self
            }
            pub fn incident_broadcast_channel<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateTeamDataAttributesIncidentBroadcastChannel,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_channel = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_channel: {e}"
                        )
                    });
                self
            }
            pub fn incident_broadcast_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_broadcast_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_broadcast_enabled: {e}"
                        )
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn notify_emails<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<::std::string::String>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notify_emails = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for notify_emails: {e}")
                    });
                self
            }
            pub fn opsgenie_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.opsgenie_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for opsgenie_id: {e}")
                    });
                self
            }
            pub fn pagerduty_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagerduty_id: {e}")
                    });
                self
            }
            pub fn pagerduty_service_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagerduty_service_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for pagerduty_service_id: {e}"
                        )
                    });
                self
            }
            pub fn pagertree_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pagertree_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pagertree_id: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn properties<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateTeamDataAttributesPropertiesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.properties = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for properties: {e}")
                    });
                self
            }
            pub fn service_now_ci_sys_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_now_ci_sys_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for service_now_ci_sys_id: {e}"
                        )
                    });
                self
            }
            pub fn slack_aliases<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::UpdateTeamDataAttributesSlackAliasesItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_aliases = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slack_aliases: {e}")
                    });
                self
            }
            pub fn slack_channels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        ::std::vec::Vec<super::UpdateTeamDataAttributesSlackChannelsItem>,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.slack_channels = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for slack_channels: {e}"
                        )
                    });
                self
            }
            pub fn user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::vec::Vec<i64>>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_ids: {e}")
                    });
                self
            }
            pub fn victor_ops_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.victor_ops_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for victor_ops_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamDataAttributes>
        for super::UpdateTeamDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    admin_ids: value.admin_ids?,
                    alert_broadcast_channel: value.alert_broadcast_channel?,
                    alert_broadcast_enabled: value.alert_broadcast_enabled?,
                    alert_urgency_id: value.alert_urgency_id?,
                    alerts_email_enabled: value.alerts_email_enabled?,
                    auto_add_members_scope: value.auto_add_members_scope?,
                    auto_add_members_when_attached: value
                        .auto_add_members_when_attached?,
                    backstage_id: value.backstage_id?,
                    color: value.color?,
                    cortex_id: value.cortex_id?,
                    description: value.description?,
                    external_id: value.external_id?,
                    incident_broadcast_channel: value.incident_broadcast_channel?,
                    incident_broadcast_enabled: value.incident_broadcast_enabled?,
                    name: value.name?,
                    notify_emails: value.notify_emails?,
                    opsgenie_id: value.opsgenie_id?,
                    pagerduty_id: value.pagerduty_id?,
                    pagerduty_service_id: value.pagerduty_service_id?,
                    pagertree_id: value.pagertree_id?,
                    position: value.position?,
                    properties: value.properties?,
                    service_now_ci_sys_id: value.service_now_ci_sys_id?,
                    slack_aliases: value.slack_aliases?,
                    slack_channels: value.slack_channels?,
                    user_ids: value.user_ids?,
                    victor_ops_id: value.victor_ops_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTeamDataAttributes>
        for UpdateTeamDataAttributes {
            fn from(value: super::UpdateTeamDataAttributes) -> Self {
                Self {
                    admin_ids: Ok(value.admin_ids),
                    alert_broadcast_channel: Ok(value.alert_broadcast_channel),
                    alert_broadcast_enabled: Ok(value.alert_broadcast_enabled),
                    alert_urgency_id: Ok(value.alert_urgency_id),
                    alerts_email_enabled: Ok(value.alerts_email_enabled),
                    auto_add_members_scope: Ok(value.auto_add_members_scope),
                    auto_add_members_when_attached: Ok(
                        value.auto_add_members_when_attached,
                    ),
                    backstage_id: Ok(value.backstage_id),
                    color: Ok(value.color),
                    cortex_id: Ok(value.cortex_id),
                    description: Ok(value.description),
                    external_id: Ok(value.external_id),
                    incident_broadcast_channel: Ok(value.incident_broadcast_channel),
                    incident_broadcast_enabled: Ok(value.incident_broadcast_enabled),
                    name: Ok(value.name),
                    notify_emails: Ok(value.notify_emails),
                    opsgenie_id: Ok(value.opsgenie_id),
                    pagerduty_id: Ok(value.pagerduty_id),
                    pagerduty_service_id: Ok(value.pagerduty_service_id),
                    pagertree_id: Ok(value.pagertree_id),
                    position: Ok(value.position),
                    properties: Ok(value.properties),
                    service_now_ci_sys_id: Ok(value.service_now_ci_sys_id),
                    slack_aliases: Ok(value.slack_aliases),
                    slack_channels: Ok(value.slack_channels),
                    user_ids: Ok(value.user_ids),
                    victor_ops_id: Ok(value.victor_ops_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamDataAttributesAlertBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTeamDataAttributesAlertBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateTeamDataAttributesAlertBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamDataAttributesAlertBroadcastChannel>
        for super::UpdateTeamDataAttributesAlertBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamDataAttributesAlertBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTeamDataAttributesAlertBroadcastChannel>
        for UpdateTeamDataAttributesAlertBroadcastChannel {
            fn from(
                value: super::UpdateTeamDataAttributesAlertBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamDataAttributesIncidentBroadcastChannel {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateTeamDataAttributesIncidentBroadcastChannel {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateTeamDataAttributesIncidentBroadcastChannel {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamDataAttributesIncidentBroadcastChannel>
        for super::UpdateTeamDataAttributesIncidentBroadcastChannel {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamDataAttributesIncidentBroadcastChannel,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateTeamDataAttributesIncidentBroadcastChannel,
        > for UpdateTeamDataAttributesIncidentBroadcastChannel {
            fn from(
                value: super::UpdateTeamDataAttributesIncidentBroadcastChannel,
            ) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamDataAttributesPropertiesItem {
            catalog_property_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            value: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateTeamDataAttributesPropertiesItem {
            fn default() -> Self {
                Self {
                    catalog_property_id: Err(
                        "no value supplied for catalog_property_id".to_string(),
                    ),
                    value: Err("no value supplied for value".to_string()),
                }
            }
        }
        impl UpdateTeamDataAttributesPropertiesItem {
            pub fn catalog_property_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.catalog_property_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for catalog_property_id: {e}"
                        )
                    });
                self
            }
            pub fn value<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.value = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for value: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamDataAttributesPropertiesItem>
        for super::UpdateTeamDataAttributesPropertiesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamDataAttributesPropertiesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    catalog_property_id: value.catalog_property_id?,
                    value: value.value?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTeamDataAttributesPropertiesItem>
        for UpdateTeamDataAttributesPropertiesItem {
            fn from(value: super::UpdateTeamDataAttributesPropertiesItem) -> Self {
                Self {
                    catalog_property_id: Ok(value.catalog_property_id),
                    value: Ok(value.value),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamDataAttributesSlackAliasesItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateTeamDataAttributesSlackAliasesItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateTeamDataAttributesSlackAliasesItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamDataAttributesSlackAliasesItem>
        for super::UpdateTeamDataAttributesSlackAliasesItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamDataAttributesSlackAliasesItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTeamDataAttributesSlackAliasesItem>
        for UpdateTeamDataAttributesSlackAliasesItem {
            fn from(value: super::UpdateTeamDataAttributesSlackAliasesItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTeamDataAttributesSlackChannelsItem {
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateTeamDataAttributesSlackChannelsItem {
            fn default() -> Self {
                Self {
                    id: Err("no value supplied for id".to_string()),
                    name: Err("no value supplied for name".to_string()),
                }
            }
        }
        impl UpdateTeamDataAttributesSlackChannelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTeamDataAttributesSlackChannelsItem>
        for super::UpdateTeamDataAttributesSlackChannelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTeamDataAttributesSlackChannelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTeamDataAttributesSlackChannelsItem>
        for UpdateTeamDataAttributesSlackChannelsItem {
            fn from(value: super::UpdateTeamDataAttributesSlackChannelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTrelloCardTaskParams {
            archivation: ::std::result::Result<
                super::UpdateTrelloCardTaskParamsArchivation,
                ::std::string::String,
            >,
            board: ::std::result::Result<
                ::std::option::Option<super::UpdateTrelloCardTaskParamsBoard>,
                ::std::string::String,
            >,
            card_id: ::std::result::Result<::std::string::String, ::std::string::String>,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            due_date: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            labels: ::std::result::Result<
                ::std::vec::Vec<super::UpdateTrelloCardTaskParamsLabelsItem>,
                ::std::string::String,
            >,
            list: ::std::result::Result<
                ::std::option::Option<super::UpdateTrelloCardTaskParamsList>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateTrelloCardTaskParamsTaskType>,
                ::std::string::String,
            >,
            title: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTrelloCardTaskParams {
            fn default() -> Self {
                Self {
                    archivation: Err("no value supplied for archivation".to_string()),
                    board: Ok(Default::default()),
                    card_id: Err("no value supplied for card_id".to_string()),
                    description: Ok(Default::default()),
                    due_date: Ok(Default::default()),
                    labels: Ok(Default::default()),
                    list: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    title: Ok(Default::default()),
                }
            }
        }
        impl UpdateTrelloCardTaskParams {
            pub fn archivation<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateTrelloCardTaskParamsArchivation>,
                T::Error: ::std::fmt::Display,
            {
                self.archivation = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for archivation: {e}")
                    });
                self
            }
            pub fn board<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateTrelloCardTaskParamsBoard>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.board = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for board: {e}")
                    });
                self
            }
            pub fn card_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.card_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for card_id: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn due_date<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.due_date = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for due_date: {e}")
                    });
                self
            }
            pub fn labels<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UpdateTrelloCardTaskParamsLabelsItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.labels = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for labels: {e}")
                    });
                self
            }
            pub fn list<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateTrelloCardTaskParamsList>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.list = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for list: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateTrelloCardTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn title<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.title = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for title: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTrelloCardTaskParams>
        for super::UpdateTrelloCardTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTrelloCardTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    archivation: value.archivation?,
                    board: value.board?,
                    card_id: value.card_id?,
                    description: value.description?,
                    due_date: value.due_date?,
                    labels: value.labels?,
                    list: value.list?,
                    task_type: value.task_type?,
                    title: value.title?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTrelloCardTaskParams>
        for UpdateTrelloCardTaskParams {
            fn from(value: super::UpdateTrelloCardTaskParams) -> Self {
                Self {
                    archivation: Ok(value.archivation),
                    board: Ok(value.board),
                    card_id: Ok(value.card_id),
                    description: Ok(value.description),
                    due_date: Ok(value.due_date),
                    labels: Ok(value.labels),
                    list: Ok(value.list),
                    task_type: Ok(value.task_type),
                    title: Ok(value.title),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTrelloCardTaskParamsArchivation {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTrelloCardTaskParamsArchivation {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateTrelloCardTaskParamsArchivation {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTrelloCardTaskParamsArchivation>
        for super::UpdateTrelloCardTaskParamsArchivation {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTrelloCardTaskParamsArchivation,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTrelloCardTaskParamsArchivation>
        for UpdateTrelloCardTaskParamsArchivation {
            fn from(value: super::UpdateTrelloCardTaskParamsArchivation) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTrelloCardTaskParamsBoard {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTrelloCardTaskParamsBoard {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateTrelloCardTaskParamsBoard {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTrelloCardTaskParamsBoard>
        for super::UpdateTrelloCardTaskParamsBoard {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTrelloCardTaskParamsBoard,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTrelloCardTaskParamsBoard>
        for UpdateTrelloCardTaskParamsBoard {
            fn from(value: super::UpdateTrelloCardTaskParamsBoard) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTrelloCardTaskParamsLabelsItem {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTrelloCardTaskParamsLabelsItem {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateTrelloCardTaskParamsLabelsItem {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTrelloCardTaskParamsLabelsItem>
        for super::UpdateTrelloCardTaskParamsLabelsItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTrelloCardTaskParamsLabelsItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTrelloCardTaskParamsLabelsItem>
        for UpdateTrelloCardTaskParamsLabelsItem {
            fn from(value: super::UpdateTrelloCardTaskParamsLabelsItem) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateTrelloCardTaskParamsList {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateTrelloCardTaskParamsList {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateTrelloCardTaskParamsList {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateTrelloCardTaskParamsList>
        for super::UpdateTrelloCardTaskParamsList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateTrelloCardTaskParamsList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateTrelloCardTaskParamsList>
        for UpdateTrelloCardTaskParamsList {
            fn from(value: super::UpdateTrelloCardTaskParamsList) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUser {
            data: ::std::result::Result<super::UpdateUserData, ::std::string::String>,
        }
        impl ::std::default::Default for UpdateUser {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateUser {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUser> for super::UpdateUser {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUser,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateUser> for UpdateUser {
            fn from(value: super::UpdateUser) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserData {
            attributes: ::std::result::Result<
                super::UpdateUserDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateUserDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateUserData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserData> for super::UpdateUserData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateUserData> for UpdateUserData {
            fn from(value: super::UpdateUserData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserDataAttributes {
            first_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            last_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            on_call_role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            role_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserDataAttributes {
            fn default() -> Self {
                Self {
                    first_name: Ok(Default::default()),
                    last_name: Ok(Default::default()),
                    on_call_role_id: Ok(Default::default()),
                    role_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateUserDataAttributes {
            pub fn first_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.first_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for first_name: {e}")
                    });
                self
            }
            pub fn last_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last_name: {e}")
                    });
                self
            }
            pub fn on_call_role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for on_call_role_id: {e}"
                        )
                    });
                self
            }
            pub fn role_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.role_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for role_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserDataAttributes>
        for super::UpdateUserDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    first_name: value.first_name?,
                    last_name: value.last_name?,
                    on_call_role_id: value.on_call_role_id?,
                    role_id: value.role_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateUserDataAttributes>
        for UpdateUserDataAttributes {
            fn from(value: super::UpdateUserDataAttributes) -> Self {
                Self {
                    first_name: Ok(value.first_name),
                    last_name: Ok(value.last_name),
                    on_call_role_id: Ok(value.on_call_role_id),
                    role_id: Ok(value.role_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserEmailAddress {
            data: ::std::result::Result<
                super::UpdateUserEmailAddressData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserEmailAddress {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateUserEmailAddress {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserEmailAddressData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserEmailAddress>
        for super::UpdateUserEmailAddress {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserEmailAddress,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateUserEmailAddress>
        for UpdateUserEmailAddress {
            fn from(value: super::UpdateUserEmailAddress) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserEmailAddressData {
            attributes: ::std::result::Result<
                super::UpdateUserEmailAddressDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateUserEmailAddressDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserEmailAddressData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateUserEmailAddressData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserEmailAddressDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserEmailAddressDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserEmailAddressData>
        for super::UpdateUserEmailAddressData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserEmailAddressData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateUserEmailAddressData>
        for UpdateUserEmailAddressData {
            fn from(value: super::UpdateUserEmailAddressData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserEmailAddressDataAttributes {
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserEmailAddressDataAttributes {
            fn default() -> Self {
                Self {
                    email: Ok(Default::default()),
                }
            }
        }
        impl UpdateUserEmailAddressDataAttributes {
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserEmailAddressDataAttributes>
        for super::UpdateUserEmailAddressDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserEmailAddressDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { email: value.email? })
            }
        }
        impl ::std::convert::From<super::UpdateUserEmailAddressDataAttributes>
        for UpdateUserEmailAddressDataAttributes {
            fn from(value: super::UpdateUserEmailAddressDataAttributes) -> Self {
                Self { email: Ok(value.email) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserNotificationRule {
            data: ::std::result::Result<
                super::UpdateUserNotificationRuleData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserNotificationRule {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateUserNotificationRule {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserNotificationRuleData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserNotificationRule>
        for super::UpdateUserNotificationRule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserNotificationRule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateUserNotificationRule>
        for UpdateUserNotificationRule {
            fn from(value: super::UpdateUserNotificationRule) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserNotificationRuleData {
            attributes: ::std::result::Result<
                super::UpdateUserNotificationRuleDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateUserNotificationRuleDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserNotificationRuleData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateUserNotificationRuleData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateUserNotificationRuleDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserNotificationRuleDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserNotificationRuleData>
        for super::UpdateUserNotificationRuleData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserNotificationRuleData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateUserNotificationRuleData>
        for UpdateUserNotificationRuleData {
            fn from(value: super::UpdateUserNotificationRuleData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserNotificationRuleDataAttributes {
            delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            enabled_contact_types: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem,
                >,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            user_call_number_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_device_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_email_address_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_sms_number_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserNotificationRuleDataAttributes {
            fn default() -> Self {
                Self {
                    delay: Ok(Default::default()),
                    enabled_contact_types: Ok(Default::default()),
                    position: Ok(Default::default()),
                    user_call_number_id: Ok(Default::default()),
                    user_device_id: Ok(Default::default()),
                    user_email_address_id: Ok(Default::default()),
                    user_sms_number_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateUserNotificationRuleDataAttributes {
            pub fn delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay: {e}")
                    });
                self
            }
            pub fn enabled_contact_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateUserNotificationRuleDataAttributesEnabledContactTypesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.enabled_contact_types = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for enabled_contact_types: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn user_call_number_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_call_number_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_call_number_id: {e}"
                        )
                    });
                self
            }
            pub fn user_device_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_device_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_device_id: {e}"
                        )
                    });
                self
            }
            pub fn user_email_address_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_email_address_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_email_address_id: {e}"
                        )
                    });
                self
            }
            pub fn user_sms_number_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_sms_number_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_sms_number_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserNotificationRuleDataAttributes>
        for super::UpdateUserNotificationRuleDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserNotificationRuleDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    delay: value.delay?,
                    enabled_contact_types: value.enabled_contact_types?,
                    position: value.position?,
                    user_call_number_id: value.user_call_number_id?,
                    user_device_id: value.user_device_id?,
                    user_email_address_id: value.user_email_address_id?,
                    user_sms_number_id: value.user_sms_number_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateUserNotificationRuleDataAttributes>
        for UpdateUserNotificationRuleDataAttributes {
            fn from(value: super::UpdateUserNotificationRuleDataAttributes) -> Self {
                Self {
                    delay: Ok(value.delay),
                    enabled_contact_types: Ok(value.enabled_contact_types),
                    position: Ok(value.position),
                    user_call_number_id: Ok(value.user_call_number_id),
                    user_device_id: Ok(value.user_device_id),
                    user_email_address_id: Ok(value.user_email_address_id),
                    user_sms_number_id: Ok(value.user_sms_number_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserPhoneNumber {
            data: ::std::result::Result<
                super::UpdateUserPhoneNumberData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserPhoneNumber {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateUserPhoneNumber {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserPhoneNumberData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserPhoneNumber>
        for super::UpdateUserPhoneNumber {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserPhoneNumber,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateUserPhoneNumber>
        for UpdateUserPhoneNumber {
            fn from(value: super::UpdateUserPhoneNumber) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserPhoneNumberData {
            attributes: ::std::result::Result<
                super::UpdateUserPhoneNumberDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateUserPhoneNumberDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserPhoneNumberData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateUserPhoneNumberData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserPhoneNumberDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateUserPhoneNumberDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserPhoneNumberData>
        for super::UpdateUserPhoneNumberData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserPhoneNumberData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateUserPhoneNumberData>
        for UpdateUserPhoneNumberData {
            fn from(value: super::UpdateUserPhoneNumberData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateUserPhoneNumberDataAttributes {
            phone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateUserPhoneNumberDataAttributes {
            fn default() -> Self {
                Self {
                    phone: Ok(Default::default()),
                }
            }
        }
        impl UpdateUserPhoneNumberDataAttributes {
            pub fn phone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateUserPhoneNumberDataAttributes>
        for super::UpdateUserPhoneNumberDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateUserPhoneNumberDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { phone: value.phone? })
            }
        }
        impl ::std::convert::From<super::UpdateUserPhoneNumberDataAttributes>
        for UpdateUserPhoneNumberDataAttributes {
            fn from(value: super::UpdateUserPhoneNumberDataAttributes) -> Self {
                Self { phone: Ok(value.phone) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateVictorOpsIncidentTaskParams {
            resolution_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::UpdateVictorOpsIncidentTaskParamsStatus,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateVictorOpsIncidentTaskParamsTaskType>,
                ::std::string::String,
            >,
            victor_ops_incident_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateVictorOpsIncidentTaskParams {
            fn default() -> Self {
                Self {
                    resolution_message: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    task_type: Ok(Default::default()),
                    victor_ops_incident_id: Err(
                        "no value supplied for victor_ops_incident_id".to_string(),
                    ),
                }
            }
        }
        impl UpdateVictorOpsIncidentTaskParams {
            pub fn resolution_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.resolution_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for resolution_message: {e}"
                        )
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateVictorOpsIncidentTaskParamsStatus,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateVictorOpsIncidentTaskParamsTaskType,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn victor_ops_incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.victor_ops_incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for victor_ops_incident_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateVictorOpsIncidentTaskParams>
        for super::UpdateVictorOpsIncidentTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateVictorOpsIncidentTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    resolution_message: value.resolution_message?,
                    status: value.status?,
                    task_type: value.task_type?,
                    victor_ops_incident_id: value.victor_ops_incident_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateVictorOpsIncidentTaskParams>
        for UpdateVictorOpsIncidentTaskParams {
            fn from(value: super::UpdateVictorOpsIncidentTaskParams) -> Self {
                Self {
                    resolution_message: Ok(value.resolution_message),
                    status: Ok(value.status),
                    task_type: Ok(value.task_type),
                    victor_ops_incident_id: Ok(value.victor_ops_incident_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWebhooksEndpoint {
            data: ::std::result::Result<
                super::UpdateWebhooksEndpointData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWebhooksEndpoint {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateWebhooksEndpoint {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWebhooksEndpointData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWebhooksEndpoint>
        for super::UpdateWebhooksEndpoint {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWebhooksEndpoint,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateWebhooksEndpoint>
        for UpdateWebhooksEndpoint {
            fn from(value: super::UpdateWebhooksEndpoint) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWebhooksEndpointData {
            attributes: ::std::result::Result<
                super::UpdateWebhooksEndpointDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateWebhooksEndpointDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWebhooksEndpointData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateWebhooksEndpointData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWebhooksEndpointDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWebhooksEndpointDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWebhooksEndpointData>
        for super::UpdateWebhooksEndpointData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWebhooksEndpointData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWebhooksEndpointData>
        for UpdateWebhooksEndpointData {
            fn from(value: super::UpdateWebhooksEndpointData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWebhooksEndpointDataAttributes {
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            event_types: ::std::result::Result<
                ::std::vec::Vec<
                    super::UpdateWebhooksEndpointDataAttributesEventTypesItem,
                >,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWebhooksEndpointDataAttributes {
            fn default() -> Self {
                Self {
                    enabled: Ok(Default::default()),
                    event_types: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateWebhooksEndpointDataAttributes {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn event_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<
                        super::UpdateWebhooksEndpointDataAttributesEventTypesItem,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.event_types = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_types: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWebhooksEndpointDataAttributes>
        for super::UpdateWebhooksEndpointDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWebhooksEndpointDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    enabled: value.enabled?,
                    event_types: value.event_types?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWebhooksEndpointDataAttributes>
        for UpdateWebhooksEndpointDataAttributes {
            fn from(value: super::UpdateWebhooksEndpointDataAttributes) -> Self {
                Self {
                    enabled: Ok(value.enabled),
                    event_types: Ok(value.event_types),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflow {
            data: ::std::result::Result<
                super::UpdateWorkflowData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflow {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateWorkflow {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflow> for super::UpdateWorkflow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflow> for UpdateWorkflow {
            fn from(value: super::UpdateWorkflow) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowCustomFieldSelection {
            data: ::std::result::Result<
                super::UpdateWorkflowCustomFieldSelectionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowCustomFieldSelection {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateWorkflowCustomFieldSelection {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowCustomFieldSelectionData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowCustomFieldSelection>
        for super::UpdateWorkflowCustomFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowCustomFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowCustomFieldSelection>
        for UpdateWorkflowCustomFieldSelection {
            fn from(value: super::UpdateWorkflowCustomFieldSelection) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowCustomFieldSelectionData {
            attributes: ::std::result::Result<
                super::UpdateWorkflowCustomFieldSelectionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateWorkflowCustomFieldSelectionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowCustomFieldSelectionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateWorkflowCustomFieldSelectionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowCustomFieldSelectionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowCustomFieldSelectionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowCustomFieldSelectionData>
        for super::UpdateWorkflowCustomFieldSelectionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowCustomFieldSelectionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowCustomFieldSelectionData>
        for UpdateWorkflowCustomFieldSelectionData {
            fn from(value: super::UpdateWorkflowCustomFieldSelectionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowCustomFieldSelectionDataAttributes {
            incident_condition: ::std::result::Result<
                super::UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default
        for UpdateWorkflowCustomFieldSelectionDataAttributes {
            fn default() -> Self {
                Self {
                    incident_condition: Ok(
                        super::defaults::update_workflow_custom_field_selection_data_attributes_incident_condition(),
                    ),
                    selected_option_ids: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl UpdateWorkflowCustomFieldSelectionDataAttributes {
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowCustomFieldSelectionDataAttributes>
        for super::UpdateWorkflowCustomFieldSelectionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowCustomFieldSelectionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_condition: value.incident_condition?,
                    selected_option_ids: value.selected_option_ids?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<
            super::UpdateWorkflowCustomFieldSelectionDataAttributes,
        > for UpdateWorkflowCustomFieldSelectionDataAttributes {
            fn from(
                value: super::UpdateWorkflowCustomFieldSelectionDataAttributes,
            ) -> Self {
                Self {
                    incident_condition: Ok(value.incident_condition),
                    selected_option_ids: Ok(value.selected_option_ids),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowData {
            attributes: ::std::result::Result<
                super::UpdateWorkflowDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateWorkflowDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateWorkflowData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowData> for super::UpdateWorkflowData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowData> for UpdateWorkflowData {
            fn from(value: super::UpdateWorkflowData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowDataAttributes {
            cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            command: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            command_feedback_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            continuously_repeat: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            locked: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat_condition_duration_since_first_run: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repeat_condition_number_of_repeats: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat_every_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            sub_status_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            trigger_params: ::std::result::Result<
                ::std::option::Option<super::UpdateWorkflowDataAttributesTriggerParams>,
                ::std::string::String,
            >,
            wait: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            workflow_group_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowDataAttributes {
            fn default() -> Self {
                Self {
                    cause_ids: Ok(Default::default()),
                    command: Ok(Default::default()),
                    command_feedback_enabled: Ok(Default::default()),
                    continuously_repeat: Ok(Default::default()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_role_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    locked: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    repeat_condition_duration_since_first_run: Ok(Default::default()),
                    repeat_condition_number_of_repeats: Ok(Default::default()),
                    repeat_every_duration: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    sub_status_ids: Ok(Default::default()),
                    trigger_params: Ok(Default::default()),
                    wait: Ok(Default::default()),
                    workflow_group_id: Ok(Default::default()),
                }
            }
        }
        impl UpdateWorkflowDataAttributes {
            pub fn cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cause_ids: {e}")
                    });
                self
            }
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn command_feedback_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.command_feedback_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for command_feedback_enabled: {e}"
                        )
                    });
                self
            }
            pub fn continuously_repeat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.continuously_repeat = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for continuously_repeat: {e}"
                        )
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_role_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_ids: {e}"
                        )
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn locked<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.locked = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for locked: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn repeat_condition_duration_since_first_run<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_condition_duration_since_first_run = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_condition_duration_since_first_run: {e}"
                        )
                    });
                self
            }
            pub fn repeat_condition_number_of_repeats<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_condition_number_of_repeats = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_condition_number_of_repeats: {e}"
                        )
                    });
                self
            }
            pub fn repeat_every_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_every_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_every_duration: {e}"
                        )
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn sub_status_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sub_status_ids: {e}"
                        )
                    });
                self
            }
            pub fn trigger_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateWorkflowDataAttributesTriggerParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for trigger_params: {e}"
                        )
                    });
                self
            }
            pub fn wait<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.wait = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for wait: {e}")
                    });
                self
            }
            pub fn workflow_group_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_group_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflow_group_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowDataAttributes>
        for super::UpdateWorkflowDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cause_ids: value.cause_ids?,
                    command: value.command?,
                    command_feedback_enabled: value.command_feedback_enabled?,
                    continuously_repeat: value.continuously_repeat?,
                    description: value.description?,
                    enabled: value.enabled?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_role_ids: value.incident_role_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    locked: value.locked?,
                    name: value.name?,
                    position: value.position?,
                    repeat_condition_duration_since_first_run: value
                        .repeat_condition_duration_since_first_run?,
                    repeat_condition_number_of_repeats: value
                        .repeat_condition_number_of_repeats?,
                    repeat_every_duration: value.repeat_every_duration?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                    sub_status_ids: value.sub_status_ids?,
                    trigger_params: value.trigger_params?,
                    wait: value.wait?,
                    workflow_group_id: value.workflow_group_id?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowDataAttributes>
        for UpdateWorkflowDataAttributes {
            fn from(value: super::UpdateWorkflowDataAttributes) -> Self {
                Self {
                    cause_ids: Ok(value.cause_ids),
                    command: Ok(value.command),
                    command_feedback_enabled: Ok(value.command_feedback_enabled),
                    continuously_repeat: Ok(value.continuously_repeat),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_role_ids: Ok(value.incident_role_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    locked: Ok(value.locked),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    repeat_condition_duration_since_first_run: Ok(
                        value.repeat_condition_duration_since_first_run,
                    ),
                    repeat_condition_number_of_repeats: Ok(
                        value.repeat_condition_number_of_repeats,
                    ),
                    repeat_every_duration: Ok(value.repeat_every_duration),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                    sub_status_ids: Ok(value.sub_status_ids),
                    trigger_params: Ok(value.trigger_params),
                    wait: Ok(value.wait),
                    workflow_group_id: Ok(value.workflow_group_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowFormFieldCondition {
            data: ::std::result::Result<
                super::UpdateWorkflowFormFieldConditionData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowFormFieldCondition {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateWorkflowFormFieldCondition {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowFormFieldConditionData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowFormFieldCondition>
        for super::UpdateWorkflowFormFieldCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowFormFieldCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowFormFieldCondition>
        for UpdateWorkflowFormFieldCondition {
            fn from(value: super::UpdateWorkflowFormFieldCondition) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowFormFieldConditionData {
            attributes: ::std::result::Result<
                super::UpdateWorkflowFormFieldConditionDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateWorkflowFormFieldConditionDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowFormFieldConditionData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateWorkflowFormFieldConditionData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowFormFieldConditionDataAttributes,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowFormFieldConditionDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowFormFieldConditionData>
        for super::UpdateWorkflowFormFieldConditionData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowFormFieldConditionData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowFormFieldConditionData>
        for UpdateWorkflowFormFieldConditionData {
            fn from(value: super::UpdateWorkflowFormFieldConditionData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowFormFieldConditionDataAttributes {
            incident_condition: ::std::result::Result<
                super::UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowFormFieldConditionDataAttributes {
            fn default() -> Self {
                Self {
                    incident_condition: Ok(
                        super::defaults::update_workflow_form_field_condition_data_attributes_incident_condition(),
                    ),
                    selected_catalog_entity_ids: Ok(Default::default()),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Ok(Default::default()),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Ok(Default::default()),
                    values: Ok(Default::default()),
                }
            }
        }
        impl UpdateWorkflowFormFieldConditionDataAttributes {
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowFormFieldConditionDataAttributes>
        for super::UpdateWorkflowFormFieldConditionDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowFormFieldConditionDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    incident_condition: value.incident_condition?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    values: value.values?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowFormFieldConditionDataAttributes>
        for UpdateWorkflowFormFieldConditionDataAttributes {
            fn from(
                value: super::UpdateWorkflowFormFieldConditionDataAttributes,
            ) -> Self {
                Self {
                    incident_condition: Ok(value.incident_condition),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    values: Ok(value.values),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowGroup {
            data: ::std::result::Result<
                super::UpdateWorkflowGroupData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowGroup {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateWorkflowGroup {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowGroupData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowGroup>
        for super::UpdateWorkflowGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowGroup> for UpdateWorkflowGroup {
            fn from(value: super::UpdateWorkflowGroup) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowGroupData {
            attributes: ::std::result::Result<
                super::UpdateWorkflowGroupDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateWorkflowGroupDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowGroupData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateWorkflowGroupData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowGroupDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowGroupDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowGroupData>
        for super::UpdateWorkflowGroupData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowGroupData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowGroupData>
        for UpdateWorkflowGroupData {
            fn from(value: super::UpdateWorkflowGroupData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowGroupDataAttributes {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expanded: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::UpdateWorkflowGroupDataAttributesKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowGroupDataAttributes {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    expanded: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                }
            }
        }
        impl UpdateWorkflowGroupDataAttributes {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expanded<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.expanded = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expanded: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateWorkflowGroupDataAttributesKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowGroupDataAttributes>
        for super::UpdateWorkflowGroupDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowGroupDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    expanded: value.expanded?,
                    icon: value.icon?,
                    kind: value.kind?,
                    name: value.name?,
                    position: value.position?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowGroupDataAttributes>
        for UpdateWorkflowGroupDataAttributes {
            fn from(value: super::UpdateWorkflowGroupDataAttributes) -> Self {
                Self {
                    description: Ok(value.description),
                    expanded: Ok(value.expanded),
                    icon: Ok(value.icon),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    position: Ok(value.position),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowTask {
            data: ::std::result::Result<
                super::UpdateWorkflowTaskData,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowTask {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UpdateWorkflowTask {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowTaskData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowTask> for super::UpdateWorkflowTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowTask> for UpdateWorkflowTask {
            fn from(value: super::UpdateWorkflowTask) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowTaskData {
            attributes: ::std::result::Result<
                super::UpdateWorkflowTaskDataAttributes,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UpdateWorkflowTaskDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowTaskData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UpdateWorkflowTaskData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowTaskDataAttributes>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UpdateWorkflowTaskDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowTaskData>
        for super::UpdateWorkflowTaskData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowTaskData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowTaskData>
        for UpdateWorkflowTaskData {
            fn from(value: super::UpdateWorkflowTaskData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowTaskDataAttributes {
            enabled: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            skip_on_failure: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            task_params: ::std::result::Result<
                ::std::option::Option<super::UpdateWorkflowTaskDataAttributesTaskParams>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowTaskDataAttributes {
            fn default() -> Self {
                Self {
                    enabled: Ok(super::defaults::default_bool::<true>()),
                    name: Ok(Default::default()),
                    position: Ok(Default::default()),
                    skip_on_failure: Ok(Default::default()),
                    task_params: Ok(Default::default()),
                }
            }
        }
        impl UpdateWorkflowTaskDataAttributes {
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn skip_on_failure<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.skip_on_failure = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for skip_on_failure: {e}"
                        )
                    });
                self
            }
            pub fn task_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateWorkflowTaskDataAttributesTaskParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_params: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowTaskDataAttributes>
        for super::UpdateWorkflowTaskDataAttributes {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowTaskDataAttributes,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    enabled: value.enabled?,
                    name: value.name?,
                    position: value.position?,
                    skip_on_failure: value.skip_on_failure?,
                    task_params: value.task_params?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowTaskDataAttributes>
        for UpdateWorkflowTaskDataAttributes {
            fn from(value: super::UpdateWorkflowTaskDataAttributes) -> Self {
                Self {
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    skip_on_failure: Ok(value.skip_on_failure),
                    task_params: Ok(value.task_params),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateWorkflowTaskDataAttributesTaskParams {
            subtype_0: ::std::result::Result<
                ::std::option::Option<super::AddActionItemTaskParams>,
                ::std::string::String,
            >,
            subtype_1: ::std::result::Result<
                ::std::option::Option<super::UpdateActionItemTaskParams>,
                ::std::string::String,
            >,
            subtype_2: ::std::result::Result<
                ::std::option::Option<super::AddRoleTaskParams>,
                ::std::string::String,
            >,
            subtype_3: ::std::result::Result<
                ::std::option::Option<super::AddSlackBookmarkTaskParams>,
                ::std::string::String,
            >,
            subtype_4: ::std::result::Result<
                ::std::option::Option<super::AddTeamTaskParams>,
                ::std::string::String,
            >,
            subtype_5: ::std::result::Result<
                ::std::option::Option<super::AddToTimelineTaskParams>,
                ::std::string::String,
            >,
            subtype_6: ::std::result::Result<
                ::std::option::Option<super::ArchiveSlackChannelsTaskParams>,
                ::std::string::String,
            >,
            subtype_7: ::std::result::Result<
                ::std::option::Option<super::AttachDatadogDashboardsTaskParams>,
                ::std::string::String,
            >,
            subtype_8: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleOpsgenieTaskParams>,
                ::std::string::String,
            >,
            subtype_9: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleRootlyTaskParams>,
                ::std::string::String,
            >,
            subtype_10: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRolePagerdutyTaskParams>,
                ::std::string::String,
            >,
            subtype_11: ::std::result::Result<
                ::std::option::Option<super::UpdatePagerdutyIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_12: ::std::result::Result<
                ::std::option::Option<super::CreatePagerdutyStatusUpdateTaskParams>,
                ::std::string::String,
            >,
            subtype_13: ::std::result::Result<
                ::std::option::Option<super::CreatePagertreeAlertTaskParams>,
                ::std::string::String,
            >,
            subtype_14: ::std::result::Result<
                ::std::option::Option<super::UpdatePagertreeAlertTaskParams>,
                ::std::string::String,
            >,
            subtype_15: ::std::result::Result<
                ::std::option::Option<super::AutoAssignRoleVictorOpsTaskParams>,
                ::std::string::String,
            >,
            subtype_16: ::std::result::Result<
                ::std::option::Option<super::CallPeopleTaskParams>,
                ::std::string::String,
            >,
            subtype_17: ::std::result::Result<
                ::std::option::Option<super::CreateAirtableTableRecordTaskParams>,
                ::std::string::String,
            >,
            subtype_18: ::std::result::Result<
                ::std::option::Option<super::CreateAsanaSubtaskTaskParams>,
                ::std::string::String,
            >,
            subtype_19: ::std::result::Result<
                ::std::option::Option<super::CreateAsanaTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_20: ::std::result::Result<
                ::std::option::Option<super::CreateConfluencePageTaskParams>,
                ::std::string::String,
            >,
            subtype_21: ::std::result::Result<
                ::std::option::Option<super::CreateDatadogNotebookTaskParams>,
                ::std::string::String,
            >,
            subtype_22: ::std::result::Result<
                ::std::option::Option<super::CreateCodaPageTaskParams>,
                ::std::string::String,
            >,
            subtype_23: ::std::result::Result<
                ::std::option::Option<super::CreateDropboxPaperPageTaskParams>,
                ::std::string::String,
            >,
            subtype_24: ::std::result::Result<
                ::std::option::Option<super::CreateGithubIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_25: ::std::result::Result<
                ::std::option::Option<super::CreateGitlabIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_26: ::std::result::Result<
                ::std::option::Option<super::CreateOutlookEventTaskParams>,
                ::std::string::String,
            >,
            subtype_27: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleCalendarEventTaskParams>,
                ::std::string::String,
            >,
            subtype_28: ::std::result::Result<
                ::std::option::Option<super::UpdateGoogleDocsPageTaskParams>,
                ::std::string::String,
            >,
            subtype_29: ::std::result::Result<
                ::std::option::Option<super::UpdateCodaPageTaskParams>,
                ::std::string::String,
            >,
            subtype_30: ::std::result::Result<
                ::std::option::Option<super::UpdateGoogleCalendarEventTaskParams>,
                ::std::string::String,
            >,
            subtype_31: ::std::result::Result<
                ::std::option::Option<super::CreateSharepointPageTaskParams>,
                ::std::string::String,
            >,
            subtype_32: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleDocsPageTaskParams>,
                ::std::string::String,
            >,
            subtype_33: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleDocsPermissionsTaskParams>,
                ::std::string::String,
            >,
            subtype_34: ::std::result::Result<
                ::std::option::Option<super::RemoveGoogleDocsPermissionsTaskParams>,
                ::std::string::String,
            >,
            subtype_35: ::std::result::Result<
                ::std::option::Option<super::CreateQuipPageTaskParams>,
                ::std::string::String,
            >,
            subtype_36: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleMeetingTaskParams>,
                ::std::string::String,
            >,
            subtype_37: ::std::result::Result<
                ::std::option::Option<super::CreateGoToMeetingTaskParams>,
                ::std::string::String,
            >,
            subtype_38: ::std::result::Result<
                ::std::option::Option<super::CreateIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_39: ::std::result::Result<
                ::std::option::Option<super::CreateSubIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_40: ::std::result::Result<
                ::std::option::Option<super::CreateIncidentPostmortemTaskParams>,
                ::std::string::String,
            >,
            subtype_41: ::std::result::Result<
                ::std::option::Option<super::CreateJiraIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_42: ::std::result::Result<
                ::std::option::Option<super::CreateJiraSubtaskTaskParams>,
                ::std::string::String,
            >,
            subtype_43: ::std::result::Result<
                ::std::option::Option<super::CreateLinearIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_44: ::std::result::Result<
                ::std::option::Option<super::CreateLinearSubtaskIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_45: ::std::result::Result<
                ::std::option::Option<super::CreateLinearIssueCommentTaskParams>,
                ::std::string::String,
            >,
            subtype_46: ::std::result::Result<
                ::std::option::Option<super::CreateMicrosoftTeamsMeetingTaskParams>,
                ::std::string::String,
            >,
            subtype_47: ::std::result::Result<
                ::std::option::Option<super::CreateMicrosoftTeamsChannelTaskParams>,
                ::std::string::String,
            >,
            subtype_48: ::std::result::Result<
                ::std::option::Option<super::CreateMicrosoftTeamsChatTaskParams>,
                ::std::string::String,
            >,
            subtype_49: ::std::result::Result<
                ::std::option::Option<super::AddMicrosoftTeamsTabTaskParams>,
                ::std::string::String,
            >,
            subtype_50: ::std::result::Result<
                ::std::option::Option<super::AddMicrosoftTeamsChatTabTaskParams>,
                ::std::string::String,
            >,
            subtype_51: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleChatSpaceTaskParams>,
                ::std::string::String,
            >,
            subtype_52: ::std::result::Result<
                ::std::option::Option<super::SendGoogleChatMessageTaskParams>,
                ::std::string::String,
            >,
            subtype_53: ::std::result::Result<
                ::std::option::Option<super::SendGoogleChatAttachmentsTaskParams>,
                ::std::string::String,
            >,
            subtype_54: ::std::result::Result<
                ::std::option::Option<super::InviteToGoogleChatSpaceTaskParams>,
                ::std::string::String,
            >,
            subtype_55: ::std::result::Result<
                ::std::option::Option<super::ArchiveGoogleChatSpacesTaskParams>,
                ::std::string::String,
            >,
            subtype_56: ::std::result::Result<
                ::std::option::Option<super::RenameGoogleChatSpaceTaskParams>,
                ::std::string::String,
            >,
            subtype_57: ::std::result::Result<
                ::std::option::Option<super::UpdateGoogleChatSpaceDescriptionTaskParams>,
                ::std::string::String,
            >,
            subtype_58: ::std::result::Result<
                ::std::option::Option<super::ChangeGoogleChatSpacePrivacyTaskParams>,
                ::std::string::String,
            >,
            subtype_59: ::std::result::Result<
                ::std::option::Option<super::ArchiveMicrosoftTeamsChannelsTaskParams>,
                ::std::string::String,
            >,
            subtype_60: ::std::result::Result<
                ::std::option::Option<super::RenameMicrosoftTeamsChannelTaskParams>,
                ::std::string::String,
            >,
            subtype_61: ::std::result::Result<
                ::std::option::Option<super::InviteToMicrosoftTeamsChannelTaskParams>,
                ::std::string::String,
            >,
            subtype_62: ::std::result::Result<
                ::std::option::Option<super::CreateNotionPageTaskParams>,
                ::std::string::String,
            >,
            subtype_63: ::std::result::Result<
                ::std::option::Option<super::SendMicrosoftTeamsMessageTaskParams>,
                ::std::string::String,
            >,
            subtype_64: ::std::result::Result<
                ::std::option::Option<super::SendMicrosoftTeamsChatMessageTaskParams>,
                ::std::string::String,
            >,
            subtype_65: ::std::result::Result<
                ::std::option::Option<super::SendMicrosoftTeamsBlocksTaskParams>,
                ::std::string::String,
            >,
            subtype_66: ::std::result::Result<
                ::std::option::Option<super::UpdateNotionPageTaskParams>,
                ::std::string::String,
            >,
            subtype_67: ::std::result::Result<
                ::std::option::Option<super::UpdateQuipPageTaskParams>,
                ::std::string::String,
            >,
            subtype_68: ::std::result::Result<
                ::std::option::Option<super::UpdateConfluencePageTaskParams>,
                ::std::string::String,
            >,
            subtype_69: ::std::result::Result<
                ::std::option::Option<super::UpdateSharepointPageTaskParams>,
                ::std::string::String,
            >,
            subtype_70: ::std::result::Result<
                ::std::option::Option<super::UpdateDropboxPaperPageTaskParams>,
                ::std::string::String,
            >,
            subtype_71: ::std::result::Result<
                ::std::option::Option<super::UpdateDatadogNotebookTaskParams>,
                ::std::string::String,
            >,
            subtype_72: ::std::result::Result<
                ::std::option::Option<super::CreateServiceNowIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_73: ::std::result::Result<
                ::std::option::Option<super::CreateShortcutStoryTaskParams>,
                ::std::string::String,
            >,
            subtype_74: ::std::result::Result<
                ::std::option::Option<super::CreateShortcutTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_75: ::std::result::Result<
                ::std::option::Option<super::CreateTrelloCardTaskParams>,
                ::std::string::String,
            >,
            subtype_76: ::std::result::Result<
                ::std::option::Option<super::CreateWebexMeetingTaskParams>,
                ::std::string::String,
            >,
            subtype_77: ::std::result::Result<
                ::std::option::Option<super::CreateZendeskTicketTaskParams>,
                ::std::string::String,
            >,
            subtype_78: ::std::result::Result<
                ::std::option::Option<super::CreateZendeskJiraLinkTaskParams>,
                ::std::string::String,
            >,
            subtype_79: ::std::result::Result<
                ::std::option::Option<super::CreateClickupTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_80: ::std::result::Result<
                ::std::option::Option<super::CreateMotionTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_81: ::std::result::Result<
                ::std::option::Option<super::CreateZoomMeetingTaskParams>,
                ::std::string::String,
            >,
            subtype_82: ::std::result::Result<
                ::std::option::Option<super::GetGithubCommitsTaskParams>,
                ::std::string::String,
            >,
            subtype_83: ::std::result::Result<
                ::std::option::Option<super::GetGitlabCommitsTaskParams>,
                ::std::string::String,
            >,
            subtype_84: ::std::result::Result<
                ::std::option::Option<super::GetPulsesTaskParams>,
                ::std::string::String,
            >,
            subtype_85: ::std::result::Result<
                ::std::option::Option<super::GetAlertsTaskParams>,
                ::std::string::String,
            >,
            subtype_86: ::std::result::Result<
                ::std::option::Option<super::HttpClientTaskParams>,
                ::std::string::String,
            >,
            subtype_87: ::std::result::Result<
                ::std::option::Option<super::InviteToSlackChannelOpsgenieTaskParams>,
                ::std::string::String,
            >,
            subtype_88: ::std::result::Result<
                ::std::option::Option<super::InviteToSlackChannelRootlyTaskParams>,
                ::std::string::String,
            >,
            subtype_89: ::std::result::Result<
                ::std::option::Option<super::InviteToSlackChannelPagerdutyTaskParams>,
                ::std::string::String,
            >,
            subtype_90: ::std::result::Result<
                ::std::option::Option<super::InviteToSlackChannelTaskParams>,
                ::std::string::String,
            >,
            subtype_91: ::std::result::Result<
                ::std::option::Option<super::InviteToSlackChannelVictorOpsTaskParams>,
                ::std::string::String,
            >,
            subtype_92: ::std::result::Result<
                ::std::option::Option<super::PageOpsgenieOnCallRespondersTaskParams>,
                ::std::string::String,
            >,
            subtype_93: ::std::result::Result<
                ::std::option::Option<super::CreateOpsgenieAlertTaskParams>,
                ::std::string::String,
            >,
            subtype_94: ::std::result::Result<
                ::std::option::Option<super::CreateJsmopsAlertTaskParams>,
                ::std::string::String,
            >,
            subtype_95: ::std::result::Result<
                ::std::option::Option<super::PageJsmopsOnCallRespondersTaskParams>,
                ::std::string::String,
            >,
            subtype_96: ::std::result::Result<
                ::std::option::Option<super::UpdateOpsgenieAlertTaskParams>,
                ::std::string::String,
            >,
            subtype_97: ::std::result::Result<
                ::std::option::Option<super::UpdateOpsgenieIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_98: ::std::result::Result<
                ::std::option::Option<super::PageRootlyOnCallRespondersTaskParams>,
                ::std::string::String,
            >,
            subtype_99: ::std::result::Result<
                ::std::option::Option<super::PagePagerdutyOnCallRespondersTaskParams>,
                ::std::string::String,
            >,
            subtype_100: ::std::result::Result<
                ::std::option::Option<super::PageVictorOpsOnCallRespondersTaskParams>,
                ::std::string::String,
            >,
            subtype_101: ::std::result::Result<
                ::std::option::Option<super::UpdateVictorOpsIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_102: ::std::result::Result<
                ::std::option::Option<super::PrintTaskParams>,
                ::std::string::String,
            >,
            subtype_103: ::std::result::Result<
                ::std::option::Option<super::PublishIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_104: ::std::result::Result<
                ::std::option::Option<super::RedisClientTaskParams>,
                ::std::string::String,
            >,
            subtype_105: ::std::result::Result<
                ::std::option::Option<super::RenameSlackChannelTaskParams>,
                ::std::string::String,
            >,
            subtype_106: ::std::result::Result<
                ::std::option::Option<super::ChangeSlackChannelPrivacyTaskParams>,
                ::std::string::String,
            >,
            subtype_107: ::std::result::Result<
                ::std::option::Option<super::RunCommandHerokuTaskParams>,
                ::std::string::String,
            >,
            subtype_108: ::std::result::Result<
                ::std::option::Option<super::SendEmailTaskParams>,
                ::std::string::String,
            >,
            subtype_109: ::std::result::Result<
                ::std::option::Option<super::SendDashboardReportTaskParams>,
                ::std::string::String,
            >,
            subtype_110: ::std::result::Result<
                ::std::option::Option<super::CreateSlackChannelTaskParams>,
                ::std::string::String,
            >,
            subtype_111: ::std::result::Result<
                ::std::option::Option<super::SendSlackMessageTaskParams>,
                ::std::string::String,
            >,
            subtype_112: ::std::result::Result<
                ::std::option::Option<super::SendSmsTaskParams>,
                ::std::string::String,
            >,
            subtype_113: ::std::result::Result<
                ::std::option::Option<super::SendWhatsappMessageTaskParams>,
                ::std::string::String,
            >,
            subtype_114: ::std::result::Result<
                ::std::option::Option<super::SnapshotDatadogGraphTaskParams>,
                ::std::string::String,
            >,
            subtype_115: ::std::result::Result<
                ::std::option::Option<super::SnapshotGrafanaDashboardTaskParams>,
                ::std::string::String,
            >,
            subtype_116: ::std::result::Result<
                ::std::option::Option<super::SnapshotLookerLookTaskParams>,
                ::std::string::String,
            >,
            subtype_117: ::std::result::Result<
                ::std::option::Option<super::SnapshotNewRelicGraphTaskParams>,
                ::std::string::String,
            >,
            subtype_118: ::std::result::Result<
                ::std::option::Option<super::TweetTwitterMessageTaskParams>,
                ::std::string::String,
            >,
            subtype_119: ::std::result::Result<
                ::std::option::Option<super::UpdateAirtableTableRecordTaskParams>,
                ::std::string::String,
            >,
            subtype_120: ::std::result::Result<
                ::std::option::Option<super::UpdateAsanaTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_121: ::std::result::Result<
                ::std::option::Option<super::UpdateGithubIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_122: ::std::result::Result<
                ::std::option::Option<super::UpdateGitlabIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_123: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_124: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentPostmortemTaskParams>,
                ::std::string::String,
            >,
            subtype_125: ::std::result::Result<
                ::std::option::Option<super::UpdateJiraIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_126: ::std::result::Result<
                ::std::option::Option<super::UpdateLinearIssueTaskParams>,
                ::std::string::String,
            >,
            subtype_127: ::std::result::Result<
                ::std::option::Option<super::UpdateServiceNowIncidentTaskParams>,
                ::std::string::String,
            >,
            subtype_128: ::std::result::Result<
                ::std::option::Option<super::UpdateShortcutStoryTaskParams>,
                ::std::string::String,
            >,
            subtype_129: ::std::result::Result<
                ::std::option::Option<super::UpdateShortcutTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_130: ::std::result::Result<
                ::std::option::Option<super::UpdateSlackChannelTopicTaskParams>,
                ::std::string::String,
            >,
            subtype_131: ::std::result::Result<
                ::std::option::Option<super::UpdateStatusTaskParams>,
                ::std::string::String,
            >,
            subtype_132: ::std::result::Result<
                ::std::option::Option<super::UpdateIncidentStatusTimestampTaskParams>,
                ::std::string::String,
            >,
            subtype_133: ::std::result::Result<
                ::std::option::Option<super::UpdateTrelloCardTaskParams>,
                ::std::string::String,
            >,
            subtype_134: ::std::result::Result<
                ::std::option::Option<super::UpdateClickupTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_135: ::std::result::Result<
                ::std::option::Option<super::UpdateMotionTaskTaskParams>,
                ::std::string::String,
            >,
            subtype_136: ::std::result::Result<
                ::std::option::Option<super::UpdateZendeskTicketTaskParams>,
                ::std::string::String,
            >,
            subtype_137: ::std::result::Result<
                ::std::option::Option<super::UpdateAttachedAlertsTaskParams>,
                ::std::string::String,
            >,
            subtype_138: ::std::result::Result<
                ::std::option::Option<super::TriggerWorkflowTaskParams>,
                ::std::string::String,
            >,
            subtype_139: ::std::result::Result<
                ::std::option::Option<super::SendSlackBlocksTaskParams>,
                ::std::string::String,
            >,
            subtype_140: ::std::result::Result<
                ::std::option::Option<super::CreateOpenaiChatCompletionTaskParams>,
                ::std::string::String,
            >,
            subtype_141: ::std::result::Result<
                ::std::option::Option<super::CreateWatsonxChatCompletionTaskParams>,
                ::std::string::String,
            >,
            subtype_142: ::std::result::Result<
                ::std::option::Option<super::CreateGoogleGeminiChatCompletionTaskParams>,
                ::std::string::String,
            >,
            subtype_143: ::std::result::Result<
                ::std::option::Option<super::CreateMistralChatCompletionTaskParams>,
                ::std::string::String,
            >,
            subtype_144: ::std::result::Result<
                ::std::option::Option<super::CreateAnthropicChatCompletionTaskParams>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateWorkflowTaskDataAttributesTaskParams {
            fn default() -> Self {
                Self {
                    subtype_0: Ok(Default::default()),
                    subtype_1: Ok(Default::default()),
                    subtype_2: Ok(Default::default()),
                    subtype_3: Ok(Default::default()),
                    subtype_4: Ok(Default::default()),
                    subtype_5: Ok(Default::default()),
                    subtype_6: Ok(Default::default()),
                    subtype_7: Ok(Default::default()),
                    subtype_8: Ok(Default::default()),
                    subtype_9: Ok(Default::default()),
                    subtype_10: Ok(Default::default()),
                    subtype_11: Ok(Default::default()),
                    subtype_12: Ok(Default::default()),
                    subtype_13: Ok(Default::default()),
                    subtype_14: Ok(Default::default()),
                    subtype_15: Ok(Default::default()),
                    subtype_16: Ok(Default::default()),
                    subtype_17: Ok(Default::default()),
                    subtype_18: Ok(Default::default()),
                    subtype_19: Ok(Default::default()),
                    subtype_20: Ok(Default::default()),
                    subtype_21: Ok(Default::default()),
                    subtype_22: Ok(Default::default()),
                    subtype_23: Ok(Default::default()),
                    subtype_24: Ok(Default::default()),
                    subtype_25: Ok(Default::default()),
                    subtype_26: Ok(Default::default()),
                    subtype_27: Ok(Default::default()),
                    subtype_28: Ok(Default::default()),
                    subtype_29: Ok(Default::default()),
                    subtype_30: Ok(Default::default()),
                    subtype_31: Ok(Default::default()),
                    subtype_32: Ok(Default::default()),
                    subtype_33: Ok(Default::default()),
                    subtype_34: Ok(Default::default()),
                    subtype_35: Ok(Default::default()),
                    subtype_36: Ok(Default::default()),
                    subtype_37: Ok(Default::default()),
                    subtype_38: Ok(Default::default()),
                    subtype_39: Ok(Default::default()),
                    subtype_40: Ok(Default::default()),
                    subtype_41: Ok(Default::default()),
                    subtype_42: Ok(Default::default()),
                    subtype_43: Ok(Default::default()),
                    subtype_44: Ok(Default::default()),
                    subtype_45: Ok(Default::default()),
                    subtype_46: Ok(Default::default()),
                    subtype_47: Ok(Default::default()),
                    subtype_48: Ok(Default::default()),
                    subtype_49: Ok(Default::default()),
                    subtype_50: Ok(Default::default()),
                    subtype_51: Ok(Default::default()),
                    subtype_52: Ok(Default::default()),
                    subtype_53: Ok(Default::default()),
                    subtype_54: Ok(Default::default()),
                    subtype_55: Ok(Default::default()),
                    subtype_56: Ok(Default::default()),
                    subtype_57: Ok(Default::default()),
                    subtype_58: Ok(Default::default()),
                    subtype_59: Ok(Default::default()),
                    subtype_60: Ok(Default::default()),
                    subtype_61: Ok(Default::default()),
                    subtype_62: Ok(Default::default()),
                    subtype_63: Ok(Default::default()),
                    subtype_64: Ok(Default::default()),
                    subtype_65: Ok(Default::default()),
                    subtype_66: Ok(Default::default()),
                    subtype_67: Ok(Default::default()),
                    subtype_68: Ok(Default::default()),
                    subtype_69: Ok(Default::default()),
                    subtype_70: Ok(Default::default()),
                    subtype_71: Ok(Default::default()),
                    subtype_72: Ok(Default::default()),
                    subtype_73: Ok(Default::default()),
                    subtype_74: Ok(Default::default()),
                    subtype_75: Ok(Default::default()),
                    subtype_76: Ok(Default::default()),
                    subtype_77: Ok(Default::default()),
                    subtype_78: Ok(Default::default()),
                    subtype_79: Ok(Default::default()),
                    subtype_80: Ok(Default::default()),
                    subtype_81: Ok(Default::default()),
                    subtype_82: Ok(Default::default()),
                    subtype_83: Ok(Default::default()),
                    subtype_84: Ok(Default::default()),
                    subtype_85: Ok(Default::default()),
                    subtype_86: Ok(Default::default()),
                    subtype_87: Ok(Default::default()),
                    subtype_88: Ok(Default::default()),
                    subtype_89: Ok(Default::default()),
                    subtype_90: Ok(Default::default()),
                    subtype_91: Ok(Default::default()),
                    subtype_92: Ok(Default::default()),
                    subtype_93: Ok(Default::default()),
                    subtype_94: Ok(Default::default()),
                    subtype_95: Ok(Default::default()),
                    subtype_96: Ok(Default::default()),
                    subtype_97: Ok(Default::default()),
                    subtype_98: Ok(Default::default()),
                    subtype_99: Ok(Default::default()),
                    subtype_100: Ok(Default::default()),
                    subtype_101: Ok(Default::default()),
                    subtype_102: Ok(Default::default()),
                    subtype_103: Ok(Default::default()),
                    subtype_104: Ok(Default::default()),
                    subtype_105: Ok(Default::default()),
                    subtype_106: Ok(Default::default()),
                    subtype_107: Ok(Default::default()),
                    subtype_108: Ok(Default::default()),
                    subtype_109: Ok(Default::default()),
                    subtype_110: Ok(Default::default()),
                    subtype_111: Ok(Default::default()),
                    subtype_112: Ok(Default::default()),
                    subtype_113: Ok(Default::default()),
                    subtype_114: Ok(Default::default()),
                    subtype_115: Ok(Default::default()),
                    subtype_116: Ok(Default::default()),
                    subtype_117: Ok(Default::default()),
                    subtype_118: Ok(Default::default()),
                    subtype_119: Ok(Default::default()),
                    subtype_120: Ok(Default::default()),
                    subtype_121: Ok(Default::default()),
                    subtype_122: Ok(Default::default()),
                    subtype_123: Ok(Default::default()),
                    subtype_124: Ok(Default::default()),
                    subtype_125: Ok(Default::default()),
                    subtype_126: Ok(Default::default()),
                    subtype_127: Ok(Default::default()),
                    subtype_128: Ok(Default::default()),
                    subtype_129: Ok(Default::default()),
                    subtype_130: Ok(Default::default()),
                    subtype_131: Ok(Default::default()),
                    subtype_132: Ok(Default::default()),
                    subtype_133: Ok(Default::default()),
                    subtype_134: Ok(Default::default()),
                    subtype_135: Ok(Default::default()),
                    subtype_136: Ok(Default::default()),
                    subtype_137: Ok(Default::default()),
                    subtype_138: Ok(Default::default()),
                    subtype_139: Ok(Default::default()),
                    subtype_140: Ok(Default::default()),
                    subtype_141: Ok(Default::default()),
                    subtype_142: Ok(Default::default()),
                    subtype_143: Ok(Default::default()),
                    subtype_144: Ok(Default::default()),
                }
            }
        }
        impl UpdateWorkflowTaskDataAttributesTaskParams {
            pub fn subtype_0<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddActionItemTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_0 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_0: {e}")
                    });
                self
            }
            pub fn subtype_1<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateActionItemTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_1 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_1: {e}")
                    });
                self
            }
            pub fn subtype_2<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddRoleTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_2 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_2: {e}")
                    });
                self
            }
            pub fn subtype_3<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddSlackBookmarkTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_3 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_3: {e}")
                    });
                self
            }
            pub fn subtype_4<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddTeamTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_4 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_4: {e}")
                    });
                self
            }
            pub fn subtype_5<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddToTimelineTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_5 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_5: {e}")
                    });
                self
            }
            pub fn subtype_6<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ArchiveSlackChannelsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_6 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_6: {e}")
                    });
                self
            }
            pub fn subtype_7<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AttachDatadogDashboardsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_7 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_7: {e}")
                    });
                self
            }
            pub fn subtype_8<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AutoAssignRoleOpsgenieTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_8 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_8: {e}")
                    });
                self
            }
            pub fn subtype_9<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AutoAssignRoleRootlyTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_9 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_9: {e}")
                    });
                self
            }
            pub fn subtype_10<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AutoAssignRolePagerdutyTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_10 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_10: {e}")
                    });
                self
            }
            pub fn subtype_11<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdatePagerdutyIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_11 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_11: {e}")
                    });
                self
            }
            pub fn subtype_12<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreatePagerdutyStatusUpdateTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_12 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_12: {e}")
                    });
                self
            }
            pub fn subtype_13<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreatePagertreeAlertTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_13 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_13: {e}")
                    });
                self
            }
            pub fn subtype_14<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdatePagertreeAlertTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_14 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_14: {e}")
                    });
                self
            }
            pub fn subtype_15<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AutoAssignRoleVictorOpsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_15 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_15: {e}")
                    });
                self
            }
            pub fn subtype_16<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CallPeopleTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_16 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_16: {e}")
                    });
                self
            }
            pub fn subtype_17<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateAirtableTableRecordTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_17 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_17: {e}")
                    });
                self
            }
            pub fn subtype_18<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateAsanaSubtaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_18 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_18: {e}")
                    });
                self
            }
            pub fn subtype_19<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateAsanaTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_19 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_19: {e}")
                    });
                self
            }
            pub fn subtype_20<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateConfluencePageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_20 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_20: {e}")
                    });
                self
            }
            pub fn subtype_21<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateDatadogNotebookTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_21 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_21: {e}")
                    });
                self
            }
            pub fn subtype_22<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateCodaPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_22 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_22: {e}")
                    });
                self
            }
            pub fn subtype_23<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateDropboxPaperPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_23 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_23: {e}")
                    });
                self
            }
            pub fn subtype_24<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGithubIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_24 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_24: {e}")
                    });
                self
            }
            pub fn subtype_25<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGitlabIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_25 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_25: {e}")
                    });
                self
            }
            pub fn subtype_26<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateOutlookEventTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_26 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_26: {e}")
                    });
                self
            }
            pub fn subtype_27<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleCalendarEventTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_27 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_27: {e}")
                    });
                self
            }
            pub fn subtype_28<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGoogleDocsPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_28 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_28: {e}")
                    });
                self
            }
            pub fn subtype_29<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateCodaPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_29 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_29: {e}")
                    });
                self
            }
            pub fn subtype_30<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGoogleCalendarEventTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_30 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_30: {e}")
                    });
                self
            }
            pub fn subtype_31<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateSharepointPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_31 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_31: {e}")
                    });
                self
            }
            pub fn subtype_32<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleDocsPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_32 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_32: {e}")
                    });
                self
            }
            pub fn subtype_33<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleDocsPermissionsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_33 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_33: {e}")
                    });
                self
            }
            pub fn subtype_34<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RemoveGoogleDocsPermissionsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_34 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_34: {e}")
                    });
                self
            }
            pub fn subtype_35<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateQuipPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_35 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_35: {e}")
                    });
                self
            }
            pub fn subtype_36<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleMeetingTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_36 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_36: {e}")
                    });
                self
            }
            pub fn subtype_37<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoToMeetingTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_37 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_37: {e}")
                    });
                self
            }
            pub fn subtype_38<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_38 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_38: {e}")
                    });
                self
            }
            pub fn subtype_39<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateSubIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_39 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_39: {e}")
                    });
                self
            }
            pub fn subtype_40<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateIncidentPostmortemTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_40 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_40: {e}")
                    });
                self
            }
            pub fn subtype_41<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_41 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_41: {e}")
                    });
                self
            }
            pub fn subtype_42<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJiraSubtaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_42 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_42: {e}")
                    });
                self
            }
            pub fn subtype_43<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateLinearIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_43 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_43: {e}")
                    });
                self
            }
            pub fn subtype_44<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateLinearSubtaskIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_44 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_44: {e}")
                    });
                self
            }
            pub fn subtype_45<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateLinearIssueCommentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_45 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_45: {e}")
                    });
                self
            }
            pub fn subtype_46<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMicrosoftTeamsMeetingTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_46 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_46: {e}")
                    });
                self
            }
            pub fn subtype_47<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMicrosoftTeamsChannelTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_47 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_47: {e}")
                    });
                self
            }
            pub fn subtype_48<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMicrosoftTeamsChatTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_48 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_48: {e}")
                    });
                self
            }
            pub fn subtype_49<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddMicrosoftTeamsTabTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_49 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_49: {e}")
                    });
                self
            }
            pub fn subtype_50<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::AddMicrosoftTeamsChatTabTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_50 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_50: {e}")
                    });
                self
            }
            pub fn subtype_51<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateGoogleChatSpaceTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_51 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_51: {e}")
                    });
                self
            }
            pub fn subtype_52<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendGoogleChatMessageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_52 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_52: {e}")
                    });
                self
            }
            pub fn subtype_53<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendGoogleChatAttachmentsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_53 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_53: {e}")
                    });
                self
            }
            pub fn subtype_54<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToGoogleChatSpaceTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_54 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_54: {e}")
                    });
                self
            }
            pub fn subtype_55<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ArchiveGoogleChatSpacesTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_55 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_55: {e}")
                    });
                self
            }
            pub fn subtype_56<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RenameGoogleChatSpaceTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_56 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_56: {e}")
                    });
                self
            }
            pub fn subtype_57<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::UpdateGoogleChatSpaceDescriptionTaskParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_57 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_57: {e}")
                    });
                self
            }
            pub fn subtype_58<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ChangeGoogleChatSpacePrivacyTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_58 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_58: {e}")
                    });
                self
            }
            pub fn subtype_59<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ArchiveMicrosoftTeamsChannelsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_59 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_59: {e}")
                    });
                self
            }
            pub fn subtype_60<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RenameMicrosoftTeamsChannelTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_60 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_60: {e}")
                    });
                self
            }
            pub fn subtype_61<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToMicrosoftTeamsChannelTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_61 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_61: {e}")
                    });
                self
            }
            pub fn subtype_62<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateNotionPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_62 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_62: {e}")
                    });
                self
            }
            pub fn subtype_63<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendMicrosoftTeamsMessageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_63 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_63: {e}")
                    });
                self
            }
            pub fn subtype_64<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendMicrosoftTeamsChatMessageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_64 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_64: {e}")
                    });
                self
            }
            pub fn subtype_65<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendMicrosoftTeamsBlocksTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_65 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_65: {e}")
                    });
                self
            }
            pub fn subtype_66<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateNotionPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_66 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_66: {e}")
                    });
                self
            }
            pub fn subtype_67<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateQuipPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_67 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_67: {e}")
                    });
                self
            }
            pub fn subtype_68<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateConfluencePageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_68 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_68: {e}")
                    });
                self
            }
            pub fn subtype_69<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateSharepointPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_69 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_69: {e}")
                    });
                self
            }
            pub fn subtype_70<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDropboxPaperPageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_70 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_70: {e}")
                    });
                self
            }
            pub fn subtype_71<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateDatadogNotebookTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_71 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_71: {e}")
                    });
                self
            }
            pub fn subtype_72<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateServiceNowIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_72 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_72: {e}")
                    });
                self
            }
            pub fn subtype_73<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateShortcutStoryTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_73 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_73: {e}")
                    });
                self
            }
            pub fn subtype_74<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateShortcutTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_74 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_74: {e}")
                    });
                self
            }
            pub fn subtype_75<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateTrelloCardTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_75 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_75: {e}")
                    });
                self
            }
            pub fn subtype_76<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateWebexMeetingTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_76 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_76: {e}")
                    });
                self
            }
            pub fn subtype_77<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZendeskTicketTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_77 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_77: {e}")
                    });
                self
            }
            pub fn subtype_78<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZendeskJiraLinkTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_78 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_78: {e}")
                    });
                self
            }
            pub fn subtype_79<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateClickupTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_79 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_79: {e}")
                    });
                self
            }
            pub fn subtype_80<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMotionTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_80 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_80: {e}")
                    });
                self
            }
            pub fn subtype_81<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateZoomMeetingTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_81 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_81: {e}")
                    });
                self
            }
            pub fn subtype_82<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::GetGithubCommitsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_82 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_82: {e}")
                    });
                self
            }
            pub fn subtype_83<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::GetGitlabCommitsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_83 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_83: {e}")
                    });
                self
            }
            pub fn subtype_84<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::GetPulsesTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_84 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_84: {e}")
                    });
                self
            }
            pub fn subtype_85<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::GetAlertsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_85 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_85: {e}")
                    });
                self
            }
            pub fn subtype_86<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::HttpClientTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_86 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_86: {e}")
                    });
                self
            }
            pub fn subtype_87<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToSlackChannelOpsgenieTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_87 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_87: {e}")
                    });
                self
            }
            pub fn subtype_88<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToSlackChannelRootlyTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_88 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_88: {e}")
                    });
                self
            }
            pub fn subtype_89<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToSlackChannelPagerdutyTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_89 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_89: {e}")
                    });
                self
            }
            pub fn subtype_90<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToSlackChannelTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_90 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_90: {e}")
                    });
                self
            }
            pub fn subtype_91<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::InviteToSlackChannelVictorOpsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_91 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_91: {e}")
                    });
                self
            }
            pub fn subtype_92<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PageOpsgenieOnCallRespondersTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_92 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_92: {e}")
                    });
                self
            }
            pub fn subtype_93<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateOpsgenieAlertTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_93 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_93: {e}")
                    });
                self
            }
            pub fn subtype_94<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateJsmopsAlertTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_94 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_94: {e}")
                    });
                self
            }
            pub fn subtype_95<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PageJsmopsOnCallRespondersTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_95 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_95: {e}")
                    });
                self
            }
            pub fn subtype_96<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateOpsgenieAlertTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_96 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_96: {e}")
                    });
                self
            }
            pub fn subtype_97<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateOpsgenieIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_97 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_97: {e}")
                    });
                self
            }
            pub fn subtype_98<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PageRootlyOnCallRespondersTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_98 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_98: {e}")
                    });
                self
            }
            pub fn subtype_99<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PagePagerdutyOnCallRespondersTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_99 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_99: {e}")
                    });
                self
            }
            pub fn subtype_100<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PageVictorOpsOnCallRespondersTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_100 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_100: {e}")
                    });
                self
            }
            pub fn subtype_101<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateVictorOpsIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_101 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_101: {e}")
                    });
                self
            }
            pub fn subtype_102<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PrintTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_102 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_102: {e}")
                    });
                self
            }
            pub fn subtype_103<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::PublishIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_103 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_103: {e}")
                    });
                self
            }
            pub fn subtype_104<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RedisClientTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_104 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_104: {e}")
                    });
                self
            }
            pub fn subtype_105<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RenameSlackChannelTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_105 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_105: {e}")
                    });
                self
            }
            pub fn subtype_106<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::ChangeSlackChannelPrivacyTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_106 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_106: {e}")
                    });
                self
            }
            pub fn subtype_107<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RunCommandHerokuTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_107 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_107: {e}")
                    });
                self
            }
            pub fn subtype_108<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendEmailTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_108 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_108: {e}")
                    });
                self
            }
            pub fn subtype_109<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendDashboardReportTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_109 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_109: {e}")
                    });
                self
            }
            pub fn subtype_110<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateSlackChannelTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_110 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_110: {e}")
                    });
                self
            }
            pub fn subtype_111<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendSlackMessageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_111 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_111: {e}")
                    });
                self
            }
            pub fn subtype_112<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendSmsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_112 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_112: {e}")
                    });
                self
            }
            pub fn subtype_113<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendWhatsappMessageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_113 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_113: {e}")
                    });
                self
            }
            pub fn subtype_114<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotDatadogGraphTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_114 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_114: {e}")
                    });
                self
            }
            pub fn subtype_115<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotGrafanaDashboardTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_115 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_115: {e}")
                    });
                self
            }
            pub fn subtype_116<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotLookerLookTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_116 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_116: {e}")
                    });
                self
            }
            pub fn subtype_117<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SnapshotNewRelicGraphTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_117 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_117: {e}")
                    });
                self
            }
            pub fn subtype_118<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TweetTwitterMessageTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_118 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_118: {e}")
                    });
                self
            }
            pub fn subtype_119<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateAirtableTableRecordTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_119 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_119: {e}")
                    });
                self
            }
            pub fn subtype_120<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateAsanaTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_120 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_120: {e}")
                    });
                self
            }
            pub fn subtype_121<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGithubIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_121 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_121: {e}")
                    });
                self
            }
            pub fn subtype_122<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateGitlabIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_122 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_122: {e}")
                    });
                self
            }
            pub fn subtype_123<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_123 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_123: {e}")
                    });
                self
            }
            pub fn subtype_124<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateIncidentPostmortemTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_124 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_124: {e}")
                    });
                self
            }
            pub fn subtype_125<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateJiraIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_125 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_125: {e}")
                    });
                self
            }
            pub fn subtype_126<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateLinearIssueTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_126 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_126: {e}")
                    });
                self
            }
            pub fn subtype_127<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateServiceNowIncidentTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_127 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_127: {e}")
                    });
                self
            }
            pub fn subtype_128<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateShortcutStoryTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_128 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_128: {e}")
                    });
                self
            }
            pub fn subtype_129<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateShortcutTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_129 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_129: {e}")
                    });
                self
            }
            pub fn subtype_130<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateSlackChannelTopicTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_130 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_130: {e}")
                    });
                self
            }
            pub fn subtype_131<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateStatusTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_131 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_131: {e}")
                    });
                self
            }
            pub fn subtype_132<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateIncidentStatusTimestampTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_132 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_132: {e}")
                    });
                self
            }
            pub fn subtype_133<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateTrelloCardTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_133 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_133: {e}")
                    });
                self
            }
            pub fn subtype_134<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateClickupTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_134 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_134: {e}")
                    });
                self
            }
            pub fn subtype_135<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateMotionTaskTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_135 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_135: {e}")
                    });
                self
            }
            pub fn subtype_136<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateZendeskTicketTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_136 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_136: {e}")
                    });
                self
            }
            pub fn subtype_137<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateAttachedAlertsTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_137 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_137: {e}")
                    });
                self
            }
            pub fn subtype_138<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::TriggerWorkflowTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_138 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_138: {e}")
                    });
                self
            }
            pub fn subtype_139<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::SendSlackBlocksTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_139 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_139: {e}")
                    });
                self
            }
            pub fn subtype_140<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateOpenaiChatCompletionTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_140 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_140: {e}")
                    });
                self
            }
            pub fn subtype_141<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateWatsonxChatCompletionTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_141 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_141: {e}")
                    });
                self
            }
            pub fn subtype_142<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<
                        super::CreateGoogleGeminiChatCompletionTaskParams,
                    >,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_142 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_142: {e}")
                    });
                self
            }
            pub fn subtype_143<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateMistralChatCompletionTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_143 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_143: {e}")
                    });
                self
            }
            pub fn subtype_144<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::CreateAnthropicChatCompletionTaskParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.subtype_144 = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subtype_144: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateWorkflowTaskDataAttributesTaskParams>
        for super::UpdateWorkflowTaskDataAttributesTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateWorkflowTaskDataAttributesTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    subtype_0: value.subtype_0?,
                    subtype_1: value.subtype_1?,
                    subtype_2: value.subtype_2?,
                    subtype_3: value.subtype_3?,
                    subtype_4: value.subtype_4?,
                    subtype_5: value.subtype_5?,
                    subtype_6: value.subtype_6?,
                    subtype_7: value.subtype_7?,
                    subtype_8: value.subtype_8?,
                    subtype_9: value.subtype_9?,
                    subtype_10: value.subtype_10?,
                    subtype_11: value.subtype_11?,
                    subtype_12: value.subtype_12?,
                    subtype_13: value.subtype_13?,
                    subtype_14: value.subtype_14?,
                    subtype_15: value.subtype_15?,
                    subtype_16: value.subtype_16?,
                    subtype_17: value.subtype_17?,
                    subtype_18: value.subtype_18?,
                    subtype_19: value.subtype_19?,
                    subtype_20: value.subtype_20?,
                    subtype_21: value.subtype_21?,
                    subtype_22: value.subtype_22?,
                    subtype_23: value.subtype_23?,
                    subtype_24: value.subtype_24?,
                    subtype_25: value.subtype_25?,
                    subtype_26: value.subtype_26?,
                    subtype_27: value.subtype_27?,
                    subtype_28: value.subtype_28?,
                    subtype_29: value.subtype_29?,
                    subtype_30: value.subtype_30?,
                    subtype_31: value.subtype_31?,
                    subtype_32: value.subtype_32?,
                    subtype_33: value.subtype_33?,
                    subtype_34: value.subtype_34?,
                    subtype_35: value.subtype_35?,
                    subtype_36: value.subtype_36?,
                    subtype_37: value.subtype_37?,
                    subtype_38: value.subtype_38?,
                    subtype_39: value.subtype_39?,
                    subtype_40: value.subtype_40?,
                    subtype_41: value.subtype_41?,
                    subtype_42: value.subtype_42?,
                    subtype_43: value.subtype_43?,
                    subtype_44: value.subtype_44?,
                    subtype_45: value.subtype_45?,
                    subtype_46: value.subtype_46?,
                    subtype_47: value.subtype_47?,
                    subtype_48: value.subtype_48?,
                    subtype_49: value.subtype_49?,
                    subtype_50: value.subtype_50?,
                    subtype_51: value.subtype_51?,
                    subtype_52: value.subtype_52?,
                    subtype_53: value.subtype_53?,
                    subtype_54: value.subtype_54?,
                    subtype_55: value.subtype_55?,
                    subtype_56: value.subtype_56?,
                    subtype_57: value.subtype_57?,
                    subtype_58: value.subtype_58?,
                    subtype_59: value.subtype_59?,
                    subtype_60: value.subtype_60?,
                    subtype_61: value.subtype_61?,
                    subtype_62: value.subtype_62?,
                    subtype_63: value.subtype_63?,
                    subtype_64: value.subtype_64?,
                    subtype_65: value.subtype_65?,
                    subtype_66: value.subtype_66?,
                    subtype_67: value.subtype_67?,
                    subtype_68: value.subtype_68?,
                    subtype_69: value.subtype_69?,
                    subtype_70: value.subtype_70?,
                    subtype_71: value.subtype_71?,
                    subtype_72: value.subtype_72?,
                    subtype_73: value.subtype_73?,
                    subtype_74: value.subtype_74?,
                    subtype_75: value.subtype_75?,
                    subtype_76: value.subtype_76?,
                    subtype_77: value.subtype_77?,
                    subtype_78: value.subtype_78?,
                    subtype_79: value.subtype_79?,
                    subtype_80: value.subtype_80?,
                    subtype_81: value.subtype_81?,
                    subtype_82: value.subtype_82?,
                    subtype_83: value.subtype_83?,
                    subtype_84: value.subtype_84?,
                    subtype_85: value.subtype_85?,
                    subtype_86: value.subtype_86?,
                    subtype_87: value.subtype_87?,
                    subtype_88: value.subtype_88?,
                    subtype_89: value.subtype_89?,
                    subtype_90: value.subtype_90?,
                    subtype_91: value.subtype_91?,
                    subtype_92: value.subtype_92?,
                    subtype_93: value.subtype_93?,
                    subtype_94: value.subtype_94?,
                    subtype_95: value.subtype_95?,
                    subtype_96: value.subtype_96?,
                    subtype_97: value.subtype_97?,
                    subtype_98: value.subtype_98?,
                    subtype_99: value.subtype_99?,
                    subtype_100: value.subtype_100?,
                    subtype_101: value.subtype_101?,
                    subtype_102: value.subtype_102?,
                    subtype_103: value.subtype_103?,
                    subtype_104: value.subtype_104?,
                    subtype_105: value.subtype_105?,
                    subtype_106: value.subtype_106?,
                    subtype_107: value.subtype_107?,
                    subtype_108: value.subtype_108?,
                    subtype_109: value.subtype_109?,
                    subtype_110: value.subtype_110?,
                    subtype_111: value.subtype_111?,
                    subtype_112: value.subtype_112?,
                    subtype_113: value.subtype_113?,
                    subtype_114: value.subtype_114?,
                    subtype_115: value.subtype_115?,
                    subtype_116: value.subtype_116?,
                    subtype_117: value.subtype_117?,
                    subtype_118: value.subtype_118?,
                    subtype_119: value.subtype_119?,
                    subtype_120: value.subtype_120?,
                    subtype_121: value.subtype_121?,
                    subtype_122: value.subtype_122?,
                    subtype_123: value.subtype_123?,
                    subtype_124: value.subtype_124?,
                    subtype_125: value.subtype_125?,
                    subtype_126: value.subtype_126?,
                    subtype_127: value.subtype_127?,
                    subtype_128: value.subtype_128?,
                    subtype_129: value.subtype_129?,
                    subtype_130: value.subtype_130?,
                    subtype_131: value.subtype_131?,
                    subtype_132: value.subtype_132?,
                    subtype_133: value.subtype_133?,
                    subtype_134: value.subtype_134?,
                    subtype_135: value.subtype_135?,
                    subtype_136: value.subtype_136?,
                    subtype_137: value.subtype_137?,
                    subtype_138: value.subtype_138?,
                    subtype_139: value.subtype_139?,
                    subtype_140: value.subtype_140?,
                    subtype_141: value.subtype_141?,
                    subtype_142: value.subtype_142?,
                    subtype_143: value.subtype_143?,
                    subtype_144: value.subtype_144?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateWorkflowTaskDataAttributesTaskParams>
        for UpdateWorkflowTaskDataAttributesTaskParams {
            fn from(value: super::UpdateWorkflowTaskDataAttributesTaskParams) -> Self {
                Self {
                    subtype_0: Ok(value.subtype_0),
                    subtype_1: Ok(value.subtype_1),
                    subtype_2: Ok(value.subtype_2),
                    subtype_3: Ok(value.subtype_3),
                    subtype_4: Ok(value.subtype_4),
                    subtype_5: Ok(value.subtype_5),
                    subtype_6: Ok(value.subtype_6),
                    subtype_7: Ok(value.subtype_7),
                    subtype_8: Ok(value.subtype_8),
                    subtype_9: Ok(value.subtype_9),
                    subtype_10: Ok(value.subtype_10),
                    subtype_11: Ok(value.subtype_11),
                    subtype_12: Ok(value.subtype_12),
                    subtype_13: Ok(value.subtype_13),
                    subtype_14: Ok(value.subtype_14),
                    subtype_15: Ok(value.subtype_15),
                    subtype_16: Ok(value.subtype_16),
                    subtype_17: Ok(value.subtype_17),
                    subtype_18: Ok(value.subtype_18),
                    subtype_19: Ok(value.subtype_19),
                    subtype_20: Ok(value.subtype_20),
                    subtype_21: Ok(value.subtype_21),
                    subtype_22: Ok(value.subtype_22),
                    subtype_23: Ok(value.subtype_23),
                    subtype_24: Ok(value.subtype_24),
                    subtype_25: Ok(value.subtype_25),
                    subtype_26: Ok(value.subtype_26),
                    subtype_27: Ok(value.subtype_27),
                    subtype_28: Ok(value.subtype_28),
                    subtype_29: Ok(value.subtype_29),
                    subtype_30: Ok(value.subtype_30),
                    subtype_31: Ok(value.subtype_31),
                    subtype_32: Ok(value.subtype_32),
                    subtype_33: Ok(value.subtype_33),
                    subtype_34: Ok(value.subtype_34),
                    subtype_35: Ok(value.subtype_35),
                    subtype_36: Ok(value.subtype_36),
                    subtype_37: Ok(value.subtype_37),
                    subtype_38: Ok(value.subtype_38),
                    subtype_39: Ok(value.subtype_39),
                    subtype_40: Ok(value.subtype_40),
                    subtype_41: Ok(value.subtype_41),
                    subtype_42: Ok(value.subtype_42),
                    subtype_43: Ok(value.subtype_43),
                    subtype_44: Ok(value.subtype_44),
                    subtype_45: Ok(value.subtype_45),
                    subtype_46: Ok(value.subtype_46),
                    subtype_47: Ok(value.subtype_47),
                    subtype_48: Ok(value.subtype_48),
                    subtype_49: Ok(value.subtype_49),
                    subtype_50: Ok(value.subtype_50),
                    subtype_51: Ok(value.subtype_51),
                    subtype_52: Ok(value.subtype_52),
                    subtype_53: Ok(value.subtype_53),
                    subtype_54: Ok(value.subtype_54),
                    subtype_55: Ok(value.subtype_55),
                    subtype_56: Ok(value.subtype_56),
                    subtype_57: Ok(value.subtype_57),
                    subtype_58: Ok(value.subtype_58),
                    subtype_59: Ok(value.subtype_59),
                    subtype_60: Ok(value.subtype_60),
                    subtype_61: Ok(value.subtype_61),
                    subtype_62: Ok(value.subtype_62),
                    subtype_63: Ok(value.subtype_63),
                    subtype_64: Ok(value.subtype_64),
                    subtype_65: Ok(value.subtype_65),
                    subtype_66: Ok(value.subtype_66),
                    subtype_67: Ok(value.subtype_67),
                    subtype_68: Ok(value.subtype_68),
                    subtype_69: Ok(value.subtype_69),
                    subtype_70: Ok(value.subtype_70),
                    subtype_71: Ok(value.subtype_71),
                    subtype_72: Ok(value.subtype_72),
                    subtype_73: Ok(value.subtype_73),
                    subtype_74: Ok(value.subtype_74),
                    subtype_75: Ok(value.subtype_75),
                    subtype_76: Ok(value.subtype_76),
                    subtype_77: Ok(value.subtype_77),
                    subtype_78: Ok(value.subtype_78),
                    subtype_79: Ok(value.subtype_79),
                    subtype_80: Ok(value.subtype_80),
                    subtype_81: Ok(value.subtype_81),
                    subtype_82: Ok(value.subtype_82),
                    subtype_83: Ok(value.subtype_83),
                    subtype_84: Ok(value.subtype_84),
                    subtype_85: Ok(value.subtype_85),
                    subtype_86: Ok(value.subtype_86),
                    subtype_87: Ok(value.subtype_87),
                    subtype_88: Ok(value.subtype_88),
                    subtype_89: Ok(value.subtype_89),
                    subtype_90: Ok(value.subtype_90),
                    subtype_91: Ok(value.subtype_91),
                    subtype_92: Ok(value.subtype_92),
                    subtype_93: Ok(value.subtype_93),
                    subtype_94: Ok(value.subtype_94),
                    subtype_95: Ok(value.subtype_95),
                    subtype_96: Ok(value.subtype_96),
                    subtype_97: Ok(value.subtype_97),
                    subtype_98: Ok(value.subtype_98),
                    subtype_99: Ok(value.subtype_99),
                    subtype_100: Ok(value.subtype_100),
                    subtype_101: Ok(value.subtype_101),
                    subtype_102: Ok(value.subtype_102),
                    subtype_103: Ok(value.subtype_103),
                    subtype_104: Ok(value.subtype_104),
                    subtype_105: Ok(value.subtype_105),
                    subtype_106: Ok(value.subtype_106),
                    subtype_107: Ok(value.subtype_107),
                    subtype_108: Ok(value.subtype_108),
                    subtype_109: Ok(value.subtype_109),
                    subtype_110: Ok(value.subtype_110),
                    subtype_111: Ok(value.subtype_111),
                    subtype_112: Ok(value.subtype_112),
                    subtype_113: Ok(value.subtype_113),
                    subtype_114: Ok(value.subtype_114),
                    subtype_115: Ok(value.subtype_115),
                    subtype_116: Ok(value.subtype_116),
                    subtype_117: Ok(value.subtype_117),
                    subtype_118: Ok(value.subtype_118),
                    subtype_119: Ok(value.subtype_119),
                    subtype_120: Ok(value.subtype_120),
                    subtype_121: Ok(value.subtype_121),
                    subtype_122: Ok(value.subtype_122),
                    subtype_123: Ok(value.subtype_123),
                    subtype_124: Ok(value.subtype_124),
                    subtype_125: Ok(value.subtype_125),
                    subtype_126: Ok(value.subtype_126),
                    subtype_127: Ok(value.subtype_127),
                    subtype_128: Ok(value.subtype_128),
                    subtype_129: Ok(value.subtype_129),
                    subtype_130: Ok(value.subtype_130),
                    subtype_131: Ok(value.subtype_131),
                    subtype_132: Ok(value.subtype_132),
                    subtype_133: Ok(value.subtype_133),
                    subtype_134: Ok(value.subtype_134),
                    subtype_135: Ok(value.subtype_135),
                    subtype_136: Ok(value.subtype_136),
                    subtype_137: Ok(value.subtype_137),
                    subtype_138: Ok(value.subtype_138),
                    subtype_139: Ok(value.subtype_139),
                    subtype_140: Ok(value.subtype_140),
                    subtype_141: Ok(value.subtype_141),
                    subtype_142: Ok(value.subtype_142),
                    subtype_143: Ok(value.subtype_143),
                    subtype_144: Ok(value.subtype_144),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateZendeskTicketTaskParams {
            completion: ::std::result::Result<
                ::std::option::Option<super::UpdateZendeskTicketTaskParamsCompletion>,
                ::std::string::String,
            >,
            custom_fields_mapping: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            priority: ::std::result::Result<
                ::std::option::Option<super::UpdateZendeskTicketTaskParamsPriority>,
                ::std::string::String,
            >,
            subject: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            tags: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            task_type: ::std::result::Result<
                ::std::option::Option<super::UpdateZendeskTicketTaskParamsTaskType>,
                ::std::string::String,
            >,
            ticket_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            ticket_payload: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateZendeskTicketTaskParams {
            fn default() -> Self {
                Self {
                    completion: Ok(Default::default()),
                    custom_fields_mapping: Ok(Default::default()),
                    priority: Ok(Default::default()),
                    subject: Ok(Default::default()),
                    tags: Ok(Default::default()),
                    task_type: Ok(Default::default()),
                    ticket_id: Err("no value supplied for ticket_id".to_string()),
                    ticket_payload: Ok(Default::default()),
                }
            }
        }
        impl UpdateZendeskTicketTaskParams {
            pub fn completion<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateZendeskTicketTaskParamsCompletion>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.completion = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completion: {e}")
                    });
                self
            }
            pub fn custom_fields_mapping<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_fields_mapping = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_fields_mapping: {e}"
                        )
                    });
                self
            }
            pub fn priority<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateZendeskTicketTaskParamsPriority>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.priority = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for priority: {e}")
                    });
                self
            }
            pub fn subject<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.subject = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for subject: {e}")
                    });
                self
            }
            pub fn tags<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.tags = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for tags: {e}")
                    });
                self
            }
            pub fn task_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UpdateZendeskTicketTaskParamsTaskType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.task_type = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_type: {e}")
                    });
                self
            }
            pub fn ticket_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.ticket_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for ticket_id: {e}")
                    });
                self
            }
            pub fn ticket_payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.ticket_payload = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for ticket_payload: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateZendeskTicketTaskParams>
        for super::UpdateZendeskTicketTaskParams {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateZendeskTicketTaskParams,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    completion: value.completion?,
                    custom_fields_mapping: value.custom_fields_mapping?,
                    priority: value.priority?,
                    subject: value.subject?,
                    tags: value.tags?,
                    task_type: value.task_type?,
                    ticket_id: value.ticket_id?,
                    ticket_payload: value.ticket_payload?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateZendeskTicketTaskParams>
        for UpdateZendeskTicketTaskParams {
            fn from(value: super::UpdateZendeskTicketTaskParams) -> Self {
                Self {
                    completion: Ok(value.completion),
                    custom_fields_mapping: Ok(value.custom_fields_mapping),
                    priority: Ok(value.priority),
                    subject: Ok(value.subject),
                    tags: Ok(value.tags),
                    task_type: Ok(value.task_type),
                    ticket_id: Ok(value.ticket_id),
                    ticket_payload: Ok(value.ticket_payload),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateZendeskTicketTaskParamsCompletion {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateZendeskTicketTaskParamsCompletion {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateZendeskTicketTaskParamsCompletion {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateZendeskTicketTaskParamsCompletion>
        for super::UpdateZendeskTicketTaskParamsCompletion {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateZendeskTicketTaskParamsCompletion,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateZendeskTicketTaskParamsCompletion>
        for UpdateZendeskTicketTaskParamsCompletion {
            fn from(value: super::UpdateZendeskTicketTaskParamsCompletion) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UpdateZendeskTicketTaskParamsPriority {
            id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UpdateZendeskTicketTaskParamsPriority {
            fn default() -> Self {
                Self {
                    id: Ok(Default::default()),
                    name: Ok(Default::default()),
                }
            }
        }
        impl UpdateZendeskTicketTaskParamsPriority {
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UpdateZendeskTicketTaskParamsPriority>
        for super::UpdateZendeskTicketTaskParamsPriority {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UpdateZendeskTicketTaskParamsPriority,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    id: value.id?,
                    name: value.name?,
                })
            }
        }
        impl ::std::convert::From<super::UpdateZendeskTicketTaskParamsPriority>
        for UpdateZendeskTicketTaskParamsPriority {
            fn from(value: super::UpdateZendeskTicketTaskParamsPriority) -> Self {
                Self {
                    id: Ok(value.id),
                    name: Ok(value.name),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UptimeChartResponse {
            data: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UptimeChartResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                }
            }
        }
        impl UptimeChartResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UptimeChartResponse>
        for super::UptimeChartResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UptimeChartResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { data: value.data? })
            }
        }
        impl ::std::convert::From<super::UptimeChartResponse> for UptimeChartResponse {
            fn from(value: super::UptimeChartResponse) -> Self {
                Self { data: Ok(value.data) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct User {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            email: ::std::result::Result<::std::string::String, ::std::string::String>,
            first_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            full_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            full_name_with_team: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            last_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for User {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    email: Err("no value supplied for email".to_string()),
                    first_name: Ok(Default::default()),
                    full_name: Ok(Default::default()),
                    full_name_with_team: Ok(Default::default()),
                    last_name: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl User {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn first_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.first_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for first_name: {e}")
                    });
                self
            }
            pub fn full_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.full_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for full_name: {e}")
                    });
                self
            }
            pub fn full_name_with_team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.full_name_with_team = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for full_name_with_team: {e}"
                        )
                    });
                self
            }
            pub fn last_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last_name: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<User> for super::User {
            type Error = super::error::ConversionError;
            fn try_from(
                value: User,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    email: value.email?,
                    first_name: value.first_name?,
                    full_name: value.full_name?,
                    full_name_with_team: value.full_name_with_team?,
                    last_name: value.last_name?,
                    time_zone: value.time_zone?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::User> for User {
            fn from(value: super::User) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    email: Ok(value.email),
                    first_name: Ok(value.first_name),
                    full_name: Ok(value.full_name),
                    full_name_with_team: Ok(value.full_name_with_team),
                    last_name: Ok(value.last_name),
                    time_zone: Ok(value.time_zone),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserEmailAddress {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            email: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            primary: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserEmailAddress {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    email: Ok(Default::default()),
                    primary: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                }
            }
        }
        impl UserEmailAddress {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn primary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.primary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for primary: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserEmailAddress> for super::UserEmailAddress {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserEmailAddress,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    email: value.email?,
                    primary: value.primary?,
                    updated_at: value.updated_at?,
                    user_id: value.user_id?,
                })
            }
        }
        impl ::std::convert::From<super::UserEmailAddress> for UserEmailAddress {
            fn from(value: super::UserEmailAddress) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    email: Ok(value.email),
                    primary: Ok(value.primary),
                    updated_at: Ok(value.updated_at),
                    user_id: Ok(value.user_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserEmailAddressList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::UserEmailAddressListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for UserEmailAddressList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl UserEmailAddressList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UserEmailAddressListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserEmailAddressList>
        for super::UserEmailAddressList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserEmailAddressList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::UserEmailAddressList> for UserEmailAddressList {
            fn from(value: super::UserEmailAddressList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserEmailAddressListDataItem {
            attributes: ::std::result::Result<
                super::UserEmailAddress,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UserEmailAddressListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserEmailAddressListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserEmailAddressListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserEmailAddress>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserEmailAddressListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserEmailAddressListDataItem>
        for super::UserEmailAddressListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserEmailAddressListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserEmailAddressListDataItem>
        for UserEmailAddressListDataItem {
            fn from(value: super::UserEmailAddressListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserEmailAddressResponse {
            data: ::std::result::Result<
                super::UserEmailAddressResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserEmailAddressResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl UserEmailAddressResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserEmailAddressResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserEmailAddressResponse>
        for super::UserEmailAddressResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserEmailAddressResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::UserEmailAddressResponse>
        for UserEmailAddressResponse {
            fn from(value: super::UserEmailAddressResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserEmailAddressResponseData {
            attributes: ::std::result::Result<
                super::UserEmailAddress,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UserEmailAddressResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserEmailAddressResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserEmailAddressResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserEmailAddress>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserEmailAddressResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserEmailAddressResponseData>
        for super::UserEmailAddressResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserEmailAddressResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserEmailAddressResponseData>
        for UserEmailAddressResponseData {
            fn from(value: super::UserEmailAddressResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserFlatResponse {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            email: ::std::result::Result<::std::string::String, ::std::string::String>,
            first_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            full_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            full_name_with_team: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            id: ::std::result::Result<i64, ::std::string::String>,
            last_name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            time_zone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserFlatResponse {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    email: Err("no value supplied for email".to_string()),
                    first_name: Ok(Default::default()),
                    full_name: Ok(Default::default()),
                    full_name_with_team: Ok(Default::default()),
                    id: Err("no value supplied for id".to_string()),
                    last_name: Ok(Default::default()),
                    time_zone: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl UserFlatResponse {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn email<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.email = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for email: {e}")
                    });
                self
            }
            pub fn first_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.first_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for first_name: {e}")
                    });
                self
            }
            pub fn full_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.full_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for full_name: {e}")
                    });
                self
            }
            pub fn full_name_with_team<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.full_name_with_team = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for full_name_with_team: {e}"
                        )
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn last_name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.last_name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for last_name: {e}")
                    });
                self
            }
            pub fn time_zone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.time_zone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for time_zone: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserFlatResponse> for super::UserFlatResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserFlatResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    email: value.email?,
                    first_name: value.first_name?,
                    full_name: value.full_name?,
                    full_name_with_team: value.full_name_with_team?,
                    id: value.id?,
                    last_name: value.last_name?,
                    time_zone: value.time_zone?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::UserFlatResponse> for UserFlatResponse {
            fn from(value: super::UserFlatResponse) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    email: Ok(value.email),
                    first_name: Ok(value.first_name),
                    full_name: Ok(value.full_name),
                    full_name_with_team: Ok(value.full_name_with_team),
                    id: Ok(value.id),
                    last_name: Ok(value.last_name),
                    time_zone: Ok(value.time_zone),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::UserListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for UserList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl UserList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::UserListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserList> for super::UserList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::UserList> for UserList {
            fn from(value: super::UserList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserListDataItem {
            attributes: ::std::result::Result<super::User, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            relationships: ::std::result::Result<
                ::std::option::Option<super::UserRelationships>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UserListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    relationships: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::User>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn relationships<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UserRelationships>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.relationships = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for relationships: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserListDataItem> for super::UserListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    relationships: value.relationships?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserListDataItem> for UserListDataItem {
            fn from(value: super::UserListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    relationships: Ok(value.relationships),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserNotificationRule {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            delay: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            enabled_contact_types: ::std::result::Result<
                ::std::vec::Vec<super::UserNotificationRuleEnabledContactTypesItem>,
                ::std::string::String,
            >,
            notification_type: ::std::result::Result<
                ::std::option::Option<super::UserNotificationRuleNotificationType>,
                ::std::string::String,
            >,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_call_number_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_device_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_email_address_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            user_sms_number_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserNotificationRule {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    delay: Ok(Default::default()),
                    enabled_contact_types: Ok(Default::default()),
                    notification_type: Ok(Default::default()),
                    position: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                    user_call_number_id: Ok(Default::default()),
                    user_device_id: Ok(Default::default()),
                    user_email_address_id: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                    user_sms_number_id: Ok(Default::default()),
                }
            }
        }
        impl UserNotificationRule {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn delay<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.delay = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delay: {e}")
                    });
                self
            }
            pub fn enabled_contact_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UserNotificationRuleEnabledContactTypesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.enabled_contact_types = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for enabled_contact_types: {e}"
                        )
                    });
                self
            }
            pub fn notification_type<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UserNotificationRuleNotificationType>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.notification_type = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for notification_type: {e}"
                        )
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_call_number_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_call_number_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_call_number_id: {e}"
                        )
                    });
                self
            }
            pub fn user_device_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_device_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_device_id: {e}"
                        )
                    });
                self
            }
            pub fn user_email_address_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_email_address_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_email_address_id: {e}"
                        )
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
            pub fn user_sms_number_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_sms_number_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for user_sms_number_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserNotificationRule>
        for super::UserNotificationRule {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserNotificationRule,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    delay: value.delay?,
                    enabled_contact_types: value.enabled_contact_types?,
                    notification_type: value.notification_type?,
                    position: value.position?,
                    updated_at: value.updated_at?,
                    user_call_number_id: value.user_call_number_id?,
                    user_device_id: value.user_device_id?,
                    user_email_address_id: value.user_email_address_id?,
                    user_id: value.user_id?,
                    user_sms_number_id: value.user_sms_number_id?,
                })
            }
        }
        impl ::std::convert::From<super::UserNotificationRule> for UserNotificationRule {
            fn from(value: super::UserNotificationRule) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    delay: Ok(value.delay),
                    enabled_contact_types: Ok(value.enabled_contact_types),
                    notification_type: Ok(value.notification_type),
                    position: Ok(value.position),
                    updated_at: Ok(value.updated_at),
                    user_call_number_id: Ok(value.user_call_number_id),
                    user_device_id: Ok(value.user_device_id),
                    user_email_address_id: Ok(value.user_email_address_id),
                    user_id: Ok(value.user_id),
                    user_sms_number_id: Ok(value.user_sms_number_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserNotificationRuleList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::UserNotificationRuleListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for UserNotificationRuleList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl UserNotificationRuleList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UserNotificationRuleListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserNotificationRuleList>
        for super::UserNotificationRuleList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserNotificationRuleList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::UserNotificationRuleList>
        for UserNotificationRuleList {
            fn from(value: super::UserNotificationRuleList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserNotificationRuleListDataItem {
            attributes: ::std::result::Result<
                super::UserNotificationRule,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UserNotificationRuleListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserNotificationRuleListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserNotificationRuleListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserNotificationRule>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserNotificationRuleListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserNotificationRuleListDataItem>
        for super::UserNotificationRuleListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserNotificationRuleListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserNotificationRuleListDataItem>
        for UserNotificationRuleListDataItem {
            fn from(value: super::UserNotificationRuleListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserNotificationRuleResponse {
            data: ::std::result::Result<
                super::UserNotificationRuleResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserNotificationRuleResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl UserNotificationRuleResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserNotificationRuleResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserNotificationRuleResponse>
        for super::UserNotificationRuleResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserNotificationRuleResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::UserNotificationRuleResponse>
        for UserNotificationRuleResponse {
            fn from(value: super::UserNotificationRuleResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserNotificationRuleResponseData {
            attributes: ::std::result::Result<
                super::UserNotificationRule,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UserNotificationRuleResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserNotificationRuleResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserNotificationRuleResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserNotificationRule>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserNotificationRuleResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserNotificationRuleResponseData>
        for super::UserNotificationRuleResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserNotificationRuleResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserNotificationRuleResponseData>
        for UserNotificationRuleResponseData {
            fn from(value: super::UserNotificationRuleResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserPhoneNumber {
            created_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            phone: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            primary: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            user_id: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            verification_attempts_today: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            verified_at: ::std::result::Result<
                ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserPhoneNumber {
            fn default() -> Self {
                Self {
                    created_at: Ok(Default::default()),
                    phone: Ok(Default::default()),
                    primary: Ok(Default::default()),
                    updated_at: Ok(Default::default()),
                    user_id: Ok(Default::default()),
                    verification_attempts_today: Ok(Default::default()),
                    verified_at: Ok(Default::default()),
                }
            }
        }
        impl UserPhoneNumber {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn phone<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.phone = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for phone: {e}")
                    });
                self
            }
            pub fn primary<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.primary = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for primary: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn user_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.user_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for user_id: {e}")
                    });
                self
            }
            pub fn verification_attempts_today<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.verification_attempts_today = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for verification_attempts_today: {e}"
                        )
                    });
                self
            }
            pub fn verified_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::chrono::DateTime<::chrono::offset::Utc>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.verified_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for verified_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserPhoneNumber> for super::UserPhoneNumber {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserPhoneNumber,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    phone: value.phone?,
                    primary: value.primary?,
                    updated_at: value.updated_at?,
                    user_id: value.user_id?,
                    verification_attempts_today: value.verification_attempts_today?,
                    verified_at: value.verified_at?,
                })
            }
        }
        impl ::std::convert::From<super::UserPhoneNumber> for UserPhoneNumber {
            fn from(value: super::UserPhoneNumber) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    phone: Ok(value.phone),
                    primary: Ok(value.primary),
                    updated_at: Ok(value.updated_at),
                    user_id: Ok(value.user_id),
                    verification_attempts_today: Ok(value.verification_attempts_today),
                    verified_at: Ok(value.verified_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserPhoneNumberList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::UserPhoneNumberListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for UserPhoneNumberList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl UserPhoneNumberList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::UserPhoneNumberListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserPhoneNumberList>
        for super::UserPhoneNumberList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserPhoneNumberList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::UserPhoneNumberList> for UserPhoneNumberList {
            fn from(value: super::UserPhoneNumberList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserPhoneNumberListDataItem {
            attributes: ::std::result::Result<
                super::UserPhoneNumber,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UserPhoneNumberListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserPhoneNumberListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserPhoneNumberListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserPhoneNumber>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserPhoneNumberListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserPhoneNumberListDataItem>
        for super::UserPhoneNumberListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserPhoneNumberListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserPhoneNumberListDataItem>
        for UserPhoneNumberListDataItem {
            fn from(value: super::UserPhoneNumberListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserPhoneNumberResponse {
            data: ::std::result::Result<
                super::UserPhoneNumberResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserPhoneNumberResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl UserPhoneNumberResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserPhoneNumberResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserPhoneNumberResponse>
        for super::UserPhoneNumberResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserPhoneNumberResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::UserPhoneNumberResponse>
        for UserPhoneNumberResponse {
            fn from(value: super::UserPhoneNumberResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserPhoneNumberResponseData {
            attributes: ::std::result::Result<
                super::UserPhoneNumber,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::UserPhoneNumberResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserPhoneNumberResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserPhoneNumberResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserPhoneNumber>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserPhoneNumberResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserPhoneNumberResponseData>
        for super::UserPhoneNumberResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserPhoneNumberResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserPhoneNumberResponseData>
        for UserPhoneNumberResponseData {
            fn from(value: super::UserPhoneNumberResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserRelationships {
            on_call_role: ::std::result::Result<
                ::std::option::Option<super::OnCallRoleRelationship>,
                ::std::string::String,
            >,
            role: ::std::result::Result<
                ::std::option::Option<super::RoleRelationship>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserRelationships {
            fn default() -> Self {
                Self {
                    on_call_role: Ok(Default::default()),
                    role: Ok(Default::default()),
                }
            }
        }
        impl UserRelationships {
            pub fn on_call_role<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::OnCallRoleRelationship>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.on_call_role = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for on_call_role: {e}")
                    });
                self
            }
            pub fn role<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::RoleRelationship>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.role = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for role: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserRelationships> for super::UserRelationships {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserRelationships,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    on_call_role: value.on_call_role?,
                    role: value.role?,
                })
            }
        }
        impl ::std::convert::From<super::UserRelationships> for UserRelationships {
            fn from(value: super::UserRelationships) -> Self {
                Self {
                    on_call_role: Ok(value.on_call_role),
                    role: Ok(value.role),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserResponse {
            data: ::std::result::Result<super::UserResponseData, ::std::string::String>,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl UserResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserResponse> for super::UserResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::UserResponse> for UserResponse {
            fn from(value: super::UserResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct UserResponseData {
            attributes: ::std::result::Result<super::User, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            relationships: ::std::result::Result<
                ::std::option::Option<super::UserRelationships>,
                ::std::string::String,
            >,
            type_: ::std::result::Result<
                super::UserResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for UserResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    relationships: Ok(Default::default()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl UserResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::User>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn relationships<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::UserRelationships>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.relationships = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for relationships: {e}")
                    });
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::UserResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<UserResponseData> for super::UserResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: UserResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    relationships: value.relationships?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::UserResponseData> for UserResponseData {
            fn from(value: super::UserResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    relationships: Ok(value.relationships),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct VerifyPhoneNumberRequest {
            code: ::std::result::Result<
                super::VerifyPhoneNumberRequestCode,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for VerifyPhoneNumberRequest {
            fn default() -> Self {
                Self {
                    code: Err("no value supplied for code".to_string()),
                }
            }
        }
        impl VerifyPhoneNumberRequest {
            pub fn code<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::VerifyPhoneNumberRequestCode>,
                T::Error: ::std::fmt::Display,
            {
                self.code = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for code: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<VerifyPhoneNumberRequest>
        for super::VerifyPhoneNumberRequest {
            type Error = super::error::ConversionError;
            fn try_from(
                value: VerifyPhoneNumberRequest,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self { code: value.code? })
            }
        }
        impl ::std::convert::From<super::VerifyPhoneNumberRequest>
        for VerifyPhoneNumberRequest {
            fn from(value: super::VerifyPhoneNumberRequest) -> Self {
                Self { code: Ok(value.code) }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksDelivery {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            delivered_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            endpoint_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            payload: ::std::result::Result<::std::string::String, ::std::string::String>,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksDelivery {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    delivered_at: Err("no value supplied for delivered_at".to_string()),
                    endpoint_id: Err("no value supplied for endpoint_id".to_string()),
                    payload: Err("no value supplied for payload".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                }
            }
        }
        impl WebhooksDelivery {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn delivered_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.delivered_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for delivered_at: {e}")
                    });
                self
            }
            pub fn endpoint_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.endpoint_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for endpoint_id: {e}")
                    });
                self
            }
            pub fn payload<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.payload = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for payload: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksDelivery> for super::WebhooksDelivery {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksDelivery,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    delivered_at: value.delivered_at?,
                    endpoint_id: value.endpoint_id?,
                    payload: value.payload?,
                    updated_at: value.updated_at?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksDelivery> for WebhooksDelivery {
            fn from(value: super::WebhooksDelivery) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    delivered_at: Ok(value.delivered_at),
                    endpoint_id: Ok(value.endpoint_id),
                    payload: Ok(value.payload),
                    updated_at: Ok(value.updated_at),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksDeliveryList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WebhooksDeliveryListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksDeliveryList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl WebhooksDeliveryList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WebhooksDeliveryListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksDeliveryList>
        for super::WebhooksDeliveryList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksDeliveryList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksDeliveryList> for WebhooksDeliveryList {
            fn from(value: super::WebhooksDeliveryList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksDeliveryListDataItem {
            attributes: ::std::result::Result<
                super::WebhooksDelivery,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WebhooksDeliveryListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksDeliveryListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WebhooksDeliveryListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksDelivery>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksDeliveryListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksDeliveryListDataItem>
        for super::WebhooksDeliveryListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksDeliveryListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksDeliveryListDataItem>
        for WebhooksDeliveryListDataItem {
            fn from(value: super::WebhooksDeliveryListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksDeliveryResponse {
            data: ::std::result::Result<
                super::WebhooksDeliveryResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksDeliveryResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WebhooksDeliveryResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksDeliveryResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksDeliveryResponse>
        for super::WebhooksDeliveryResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksDeliveryResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksDeliveryResponse>
        for WebhooksDeliveryResponse {
            fn from(value: super::WebhooksDeliveryResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksDeliveryResponseData {
            attributes: ::std::result::Result<
                super::WebhooksDelivery,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WebhooksDeliveryResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksDeliveryResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WebhooksDeliveryResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksDelivery>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksDeliveryResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksDeliveryResponseData>
        for super::WebhooksDeliveryResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksDeliveryResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksDeliveryResponseData>
        for WebhooksDeliveryResponseData {
            fn from(value: super::WebhooksDeliveryResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksEndpoint {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<bool, ::std::string::String>,
            event_types: ::std::result::Result<
                ::std::vec::Vec<super::WebhooksEndpointEventTypesItem>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            secret: ::std::result::Result<::std::string::String, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            url: ::std::result::Result<::std::string::String, ::std::string::String>,
        }
        impl ::std::default::Default for WebhooksEndpoint {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    enabled: Err("no value supplied for enabled".to_string()),
                    event_types: Err("no value supplied for event_types".to_string()),
                    name: Err("no value supplied for name".to_string()),
                    secret: Err("no value supplied for secret".to_string()),
                    slug: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    url: Err("no value supplied for url".to_string()),
                }
            }
        }
        impl WebhooksEndpoint {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn event_types<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WebhooksEndpointEventTypesItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.event_types = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for event_types: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn secret<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.secret = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for secret: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn url<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.url = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for url: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksEndpoint> for super::WebhooksEndpoint {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksEndpoint,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    enabled: value.enabled?,
                    event_types: value.event_types?,
                    name: value.name?,
                    secret: value.secret?,
                    slug: value.slug?,
                    updated_at: value.updated_at?,
                    url: value.url?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksEndpoint> for WebhooksEndpoint {
            fn from(value: super::WebhooksEndpoint) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    enabled: Ok(value.enabled),
                    event_types: Ok(value.event_types),
                    name: Ok(value.name),
                    secret: Ok(value.secret),
                    slug: Ok(value.slug),
                    updated_at: Ok(value.updated_at),
                    url: Ok(value.url),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksEndpointList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WebhooksEndpointListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<
                ::std::option::Option<super::Links>,
                ::std::string::String,
            >,
            meta: ::std::result::Result<
                ::std::option::Option<super::Meta>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksEndpointList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Ok(Default::default()),
                    meta: Ok(Default::default()),
                }
            }
        }
        impl WebhooksEndpointList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WebhooksEndpointListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Links>>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<super::Meta>>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksEndpointList>
        for super::WebhooksEndpointList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksEndpointList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksEndpointList> for WebhooksEndpointList {
            fn from(value: super::WebhooksEndpointList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksEndpointListDataItem {
            attributes: ::std::result::Result<
                super::WebhooksEndpoint,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WebhooksEndpointListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksEndpointListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WebhooksEndpointListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksEndpoint>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksEndpointListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksEndpointListDataItem>
        for super::WebhooksEndpointListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksEndpointListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksEndpointListDataItem>
        for WebhooksEndpointListDataItem {
            fn from(value: super::WebhooksEndpointListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksEndpointResponse {
            data: ::std::result::Result<
                super::WebhooksEndpointResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksEndpointResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WebhooksEndpointResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksEndpointResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksEndpointResponse>
        for super::WebhooksEndpointResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksEndpointResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksEndpointResponse>
        for WebhooksEndpointResponse {
            fn from(value: super::WebhooksEndpointResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WebhooksEndpointResponseData {
            attributes: ::std::result::Result<
                super::WebhooksEndpoint,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WebhooksEndpointResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WebhooksEndpointResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WebhooksEndpointResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksEndpoint>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WebhooksEndpointResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WebhooksEndpointResponseData>
        for super::WebhooksEndpointResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WebhooksEndpointResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WebhooksEndpointResponseData>
        for WebhooksEndpointResponseData {
            fn from(value: super::WebhooksEndpointResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct Workflow {
            cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            command: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            command_feedback_enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            continuously_repeat: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_role_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            locked: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat_condition_duration_since_first_run: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repeat_condition_number_of_repeats: ::std::result::Result<
                ::std::option::Option<i64>,
                ::std::string::String,
            >,
            repeat_every_duration: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            repeat_on: ::std::result::Result<
                ::std::option::Option<::std::vec::Vec<super::WorkflowRepeatOnItem>>,
                ::std::string::String,
            >,
            service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            severity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            sub_status_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            trigger_params: ::std::result::Result<
                ::std::option::Option<super::WorkflowTriggerParams>,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            wait: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            workflow_group_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for Workflow {
            fn default() -> Self {
                Self {
                    cause_ids: Ok(Default::default()),
                    command: Ok(Default::default()),
                    command_feedback_enabled: Ok(Default::default()),
                    continuously_repeat: Ok(Default::default()),
                    created_at: Err("no value supplied for created_at".to_string()),
                    description: Ok(Default::default()),
                    enabled: Ok(Default::default()),
                    environment_ids: Ok(Default::default()),
                    functionality_ids: Ok(Default::default()),
                    group_ids: Ok(Default::default()),
                    incident_role_ids: Ok(Default::default()),
                    incident_type_ids: Ok(Default::default()),
                    locked: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Ok(Default::default()),
                    repeat_condition_duration_since_first_run: Ok(Default::default()),
                    repeat_condition_number_of_repeats: Ok(Default::default()),
                    repeat_every_duration: Ok(Default::default()),
                    repeat_on: Ok(Default::default()),
                    service_ids: Ok(Default::default()),
                    severity_ids: Ok(Default::default()),
                    slug: Ok(Default::default()),
                    sub_status_ids: Ok(Default::default()),
                    trigger_params: Ok(Default::default()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    wait: Ok(Default::default()),
                    workflow_group_id: Ok(Default::default()),
                }
            }
        }
        impl Workflow {
            pub fn cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for cause_ids: {e}")
                    });
                self
            }
            pub fn command<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.command = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for command: {e}")
                    });
                self
            }
            pub fn command_feedback_enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.command_feedback_enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for command_feedback_enabled: {e}"
                        )
                    });
                self
            }
            pub fn continuously_repeat<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.continuously_repeat = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for continuously_repeat: {e}"
                        )
                    });
                self
            }
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for group_ids: {e}")
                    });
                self
            }
            pub fn incident_role_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_role_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_role_ids: {e}"
                        )
                    });
                self
            }
            pub fn incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn locked<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.locked = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for locked: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn repeat_condition_duration_since_first_run<T>(
                mut self,
                value: T,
            ) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_condition_duration_since_first_run = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_condition_duration_since_first_run: {e}"
                        )
                    });
                self
            }
            pub fn repeat_condition_number_of_repeats<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_condition_number_of_repeats = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_condition_number_of_repeats: {e}"
                        )
                    });
                self
            }
            pub fn repeat_every_duration<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_every_duration = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for repeat_every_duration: {e}"
                        )
                    });
                self
            }
            pub fn repeat_on<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<::std::vec::Vec<super::WorkflowRepeatOnItem>>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.repeat_on = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for repeat_on: {e}")
                    });
                self
            }
            pub fn service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for service_ids: {e}")
                    });
                self
            }
            pub fn severity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.severity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for severity_ids: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
            pub fn sub_status_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.sub_status_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for sub_status_ids: {e}"
                        )
                    });
                self
            }
            pub fn trigger_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::WorkflowTriggerParams>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.trigger_params = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for trigger_params: {e}"
                        )
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn wait<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.wait = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for wait: {e}")
                    });
                self
            }
            pub fn workflow_group_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_group_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for workflow_group_id: {e}"
                        )
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<Workflow> for super::Workflow {
            type Error = super::error::ConversionError;
            fn try_from(
                value: Workflow,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    cause_ids: value.cause_ids?,
                    command: value.command?,
                    command_feedback_enabled: value.command_feedback_enabled?,
                    continuously_repeat: value.continuously_repeat?,
                    created_at: value.created_at?,
                    description: value.description?,
                    enabled: value.enabled?,
                    environment_ids: value.environment_ids?,
                    functionality_ids: value.functionality_ids?,
                    group_ids: value.group_ids?,
                    incident_role_ids: value.incident_role_ids?,
                    incident_type_ids: value.incident_type_ids?,
                    locked: value.locked?,
                    name: value.name?,
                    position: value.position?,
                    repeat_condition_duration_since_first_run: value
                        .repeat_condition_duration_since_first_run?,
                    repeat_condition_number_of_repeats: value
                        .repeat_condition_number_of_repeats?,
                    repeat_every_duration: value.repeat_every_duration?,
                    repeat_on: value.repeat_on?,
                    service_ids: value.service_ids?,
                    severity_ids: value.severity_ids?,
                    slug: value.slug?,
                    sub_status_ids: value.sub_status_ids?,
                    trigger_params: value.trigger_params?,
                    updated_at: value.updated_at?,
                    wait: value.wait?,
                    workflow_group_id: value.workflow_group_id?,
                })
            }
        }
        impl ::std::convert::From<super::Workflow> for Workflow {
            fn from(value: super::Workflow) -> Self {
                Self {
                    cause_ids: Ok(value.cause_ids),
                    command: Ok(value.command),
                    command_feedback_enabled: Ok(value.command_feedback_enabled),
                    continuously_repeat: Ok(value.continuously_repeat),
                    created_at: Ok(value.created_at),
                    description: Ok(value.description),
                    enabled: Ok(value.enabled),
                    environment_ids: Ok(value.environment_ids),
                    functionality_ids: Ok(value.functionality_ids),
                    group_ids: Ok(value.group_ids),
                    incident_role_ids: Ok(value.incident_role_ids),
                    incident_type_ids: Ok(value.incident_type_ids),
                    locked: Ok(value.locked),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    repeat_condition_duration_since_first_run: Ok(
                        value.repeat_condition_duration_since_first_run,
                    ),
                    repeat_condition_number_of_repeats: Ok(
                        value.repeat_condition_number_of_repeats,
                    ),
                    repeat_every_duration: Ok(value.repeat_every_duration),
                    repeat_on: Ok(value.repeat_on),
                    service_ids: Ok(value.service_ids),
                    severity_ids: Ok(value.severity_ids),
                    slug: Ok(value.slug),
                    sub_status_ids: Ok(value.sub_status_ids),
                    trigger_params: Ok(value.trigger_params),
                    updated_at: Ok(value.updated_at),
                    wait: Ok(value.wait),
                    workflow_group_id: Ok(value.workflow_group_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowCustomFieldSelection {
            custom_field_id: ::std::result::Result<i64, ::std::string::String>,
            incident_condition: ::std::result::Result<
                super::WorkflowCustomFieldSelectionIncidentCondition,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            workflow_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowCustomFieldSelection {
            fn default() -> Self {
                Self {
                    custom_field_id: Err(
                        "no value supplied for custom_field_id".to_string(),
                    ),
                    incident_condition: Err(
                        "no value supplied for incident_condition".to_string(),
                    ),
                    selected_option_ids: Err(
                        "no value supplied for selected_option_ids".to_string(),
                    ),
                    values: Ok(Default::default()),
                    workflow_id: Err("no value supplied for workflow_id".to_string()),
                }
            }
        }
        impl WorkflowCustomFieldSelection {
            pub fn custom_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.custom_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for custom_field_id: {e}"
                        )
                    });
                self
            }
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowCustomFieldSelectionIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
            pub fn workflow_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowCustomFieldSelection>
        for super::WorkflowCustomFieldSelection {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowCustomFieldSelection,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    custom_field_id: value.custom_field_id?,
                    incident_condition: value.incident_condition?,
                    selected_option_ids: value.selected_option_ids?,
                    values: value.values?,
                    workflow_id: value.workflow_id?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowCustomFieldSelection>
        for WorkflowCustomFieldSelection {
            fn from(value: super::WorkflowCustomFieldSelection) -> Self {
                Self {
                    custom_field_id: Ok(value.custom_field_id),
                    incident_condition: Ok(value.incident_condition),
                    selected_option_ids: Ok(value.selected_option_ids),
                    values: Ok(value.values),
                    workflow_id: Ok(value.workflow_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowCustomFieldSelectionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WorkflowCustomFieldSelectionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for WorkflowCustomFieldSelectionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl WorkflowCustomFieldSelectionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WorkflowCustomFieldSelectionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowCustomFieldSelectionList>
        for super::WorkflowCustomFieldSelectionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowCustomFieldSelectionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowCustomFieldSelectionList>
        for WorkflowCustomFieldSelectionList {
            fn from(value: super::WorkflowCustomFieldSelectionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowCustomFieldSelectionListDataItem {
            attributes: ::std::result::Result<
                super::WorkflowCustomFieldSelection,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowCustomFieldSelectionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowCustomFieldSelectionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowCustomFieldSelectionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowCustomFieldSelection>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowCustomFieldSelectionListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowCustomFieldSelectionListDataItem>
        for super::WorkflowCustomFieldSelectionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowCustomFieldSelectionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowCustomFieldSelectionListDataItem>
        for WorkflowCustomFieldSelectionListDataItem {
            fn from(value: super::WorkflowCustomFieldSelectionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowCustomFieldSelectionResponse {
            data: ::std::result::Result<
                super::WorkflowCustomFieldSelectionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowCustomFieldSelectionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WorkflowCustomFieldSelectionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowCustomFieldSelectionResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowCustomFieldSelectionResponse>
        for super::WorkflowCustomFieldSelectionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowCustomFieldSelectionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowCustomFieldSelectionResponse>
        for WorkflowCustomFieldSelectionResponse {
            fn from(value: super::WorkflowCustomFieldSelectionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowCustomFieldSelectionResponseData {
            attributes: ::std::result::Result<
                super::WorkflowCustomFieldSelection,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowCustomFieldSelectionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowCustomFieldSelectionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowCustomFieldSelectionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowCustomFieldSelection>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowCustomFieldSelectionResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowCustomFieldSelectionResponseData>
        for super::WorkflowCustomFieldSelectionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowCustomFieldSelectionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowCustomFieldSelectionResponseData>
        for WorkflowCustomFieldSelectionResponseData {
            fn from(value: super::WorkflowCustomFieldSelectionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowFormFieldCondition {
            form_field_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            incident_condition: ::std::result::Result<
                super::WorkflowFormFieldConditionIncidentCondition,
                ::std::string::String,
            >,
            selected_catalog_entity_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_cause_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_environment_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_functionality_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_group_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_incident_type_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_option_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_service_ids: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            selected_user_ids: ::std::result::Result<
                ::std::vec::Vec<i64>,
                ::std::string::String,
            >,
            values: ::std::result::Result<
                ::std::vec::Vec<::std::string::String>,
                ::std::string::String,
            >,
            workflow_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowFormFieldCondition {
            fn default() -> Self {
                Self {
                    form_field_id: Err(
                        "no value supplied for form_field_id".to_string(),
                    ),
                    incident_condition: Err(
                        "no value supplied for incident_condition".to_string(),
                    ),
                    selected_catalog_entity_ids: Err(
                        "no value supplied for selected_catalog_entity_ids".to_string(),
                    ),
                    selected_cause_ids: Ok(Default::default()),
                    selected_environment_ids: Ok(Default::default()),
                    selected_functionality_ids: Ok(Default::default()),
                    selected_group_ids: Ok(Default::default()),
                    selected_incident_type_ids: Ok(Default::default()),
                    selected_option_ids: Err(
                        "no value supplied for selected_option_ids".to_string(),
                    ),
                    selected_service_ids: Ok(Default::default()),
                    selected_user_ids: Err(
                        "no value supplied for selected_user_ids".to_string(),
                    ),
                    values: Ok(Default::default()),
                    workflow_id: Err("no value supplied for workflow_id".to_string()),
                }
            }
        }
        impl WorkflowFormFieldCondition {
            pub fn form_field_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.form_field_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for form_field_id: {e}")
                    });
                self
            }
            pub fn incident_condition<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowFormFieldConditionIncidentCondition,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.incident_condition = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for incident_condition: {e}"
                        )
                    });
                self
            }
            pub fn selected_catalog_entity_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_catalog_entity_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_catalog_entity_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_cause_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_cause_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_cause_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_environment_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_environment_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_environment_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_functionality_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_functionality_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_functionality_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_group_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_group_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_group_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_incident_type_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_incident_type_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_incident_type_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_option_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_option_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_option_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_service_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_service_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_service_ids: {e}"
                        )
                    });
                self
            }
            pub fn selected_user_ids<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<i64>>,
                T::Error: ::std::fmt::Display,
            {
                self.selected_user_ids = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for selected_user_ids: {e}"
                        )
                    });
                self
            }
            pub fn values<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.values = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for values: {e}")
                    });
                self
            }
            pub fn workflow_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowFormFieldCondition>
        for super::WorkflowFormFieldCondition {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowFormFieldCondition,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    form_field_id: value.form_field_id?,
                    incident_condition: value.incident_condition?,
                    selected_catalog_entity_ids: value.selected_catalog_entity_ids?,
                    selected_cause_ids: value.selected_cause_ids?,
                    selected_environment_ids: value.selected_environment_ids?,
                    selected_functionality_ids: value.selected_functionality_ids?,
                    selected_group_ids: value.selected_group_ids?,
                    selected_incident_type_ids: value.selected_incident_type_ids?,
                    selected_option_ids: value.selected_option_ids?,
                    selected_service_ids: value.selected_service_ids?,
                    selected_user_ids: value.selected_user_ids?,
                    values: value.values?,
                    workflow_id: value.workflow_id?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowFormFieldCondition>
        for WorkflowFormFieldCondition {
            fn from(value: super::WorkflowFormFieldCondition) -> Self {
                Self {
                    form_field_id: Ok(value.form_field_id),
                    incident_condition: Ok(value.incident_condition),
                    selected_catalog_entity_ids: Ok(value.selected_catalog_entity_ids),
                    selected_cause_ids: Ok(value.selected_cause_ids),
                    selected_environment_ids: Ok(value.selected_environment_ids),
                    selected_functionality_ids: Ok(value.selected_functionality_ids),
                    selected_group_ids: Ok(value.selected_group_ids),
                    selected_incident_type_ids: Ok(value.selected_incident_type_ids),
                    selected_option_ids: Ok(value.selected_option_ids),
                    selected_service_ids: Ok(value.selected_service_ids),
                    selected_user_ids: Ok(value.selected_user_ids),
                    values: Ok(value.values),
                    workflow_id: Ok(value.workflow_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowFormFieldConditionList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WorkflowFormFieldConditionListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for WorkflowFormFieldConditionList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl WorkflowFormFieldConditionList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WorkflowFormFieldConditionListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowFormFieldConditionList>
        for super::WorkflowFormFieldConditionList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowFormFieldConditionList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowFormFieldConditionList>
        for WorkflowFormFieldConditionList {
            fn from(value: super::WorkflowFormFieldConditionList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowFormFieldConditionListDataItem {
            attributes: ::std::result::Result<
                super::WorkflowFormFieldCondition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowFormFieldConditionListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowFormFieldConditionListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowFormFieldConditionListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowFormFieldCondition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowFormFieldConditionListDataItemType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowFormFieldConditionListDataItem>
        for super::WorkflowFormFieldConditionListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowFormFieldConditionListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowFormFieldConditionListDataItem>
        for WorkflowFormFieldConditionListDataItem {
            fn from(value: super::WorkflowFormFieldConditionListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowFormFieldConditionResponse {
            data: ::std::result::Result<
                super::WorkflowFormFieldConditionResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowFormFieldConditionResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WorkflowFormFieldConditionResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowFormFieldConditionResponseData,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowFormFieldConditionResponse>
        for super::WorkflowFormFieldConditionResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowFormFieldConditionResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowFormFieldConditionResponse>
        for WorkflowFormFieldConditionResponse {
            fn from(value: super::WorkflowFormFieldConditionResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowFormFieldConditionResponseData {
            attributes: ::std::result::Result<
                super::WorkflowFormFieldCondition,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowFormFieldConditionResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowFormFieldConditionResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowFormFieldConditionResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowFormFieldCondition>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    super::WorkflowFormFieldConditionResponseDataType,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowFormFieldConditionResponseData>
        for super::WorkflowFormFieldConditionResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowFormFieldConditionResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowFormFieldConditionResponseData>
        for WorkflowFormFieldConditionResponseData {
            fn from(value: super::WorkflowFormFieldConditionResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowGroup {
            description: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            expanded: ::std::result::Result<
                ::std::option::Option<bool>,
                ::std::string::String,
            >,
            icon: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            kind: ::std::result::Result<
                ::std::option::Option<super::WorkflowGroupKind>,
                ::std::string::String,
            >,
            name: ::std::result::Result<::std::string::String, ::std::string::String>,
            position: ::std::result::Result<i64, ::std::string::String>,
            slug: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowGroup {
            fn default() -> Self {
                Self {
                    description: Ok(Default::default()),
                    expanded: Ok(Default::default()),
                    icon: Ok(Default::default()),
                    kind: Ok(Default::default()),
                    name: Err("no value supplied for name".to_string()),
                    position: Err("no value supplied for position".to_string()),
                    slug: Ok(Default::default()),
                }
            }
        }
        impl WorkflowGroup {
            pub fn description<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.description = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for description: {e}")
                    });
                self
            }
            pub fn expanded<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<bool>>,
                T::Error: ::std::fmt::Display,
            {
                self.expanded = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for expanded: {e}")
                    });
                self
            }
            pub fn icon<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.icon = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for icon: {e}")
                    });
                self
            }
            pub fn kind<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::option::Option<super::WorkflowGroupKind>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.kind = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for kind: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn slug<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.slug = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for slug: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowGroup> for super::WorkflowGroup {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowGroup,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    description: value.description?,
                    expanded: value.expanded?,
                    icon: value.icon?,
                    kind: value.kind?,
                    name: value.name?,
                    position: value.position?,
                    slug: value.slug?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowGroup> for WorkflowGroup {
            fn from(value: super::WorkflowGroup) -> Self {
                Self {
                    description: Ok(value.description),
                    expanded: Ok(value.expanded),
                    icon: Ok(value.icon),
                    kind: Ok(value.kind),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    slug: Ok(value.slug),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowGroupList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WorkflowGroupListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for WorkflowGroupList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl WorkflowGroupList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WorkflowGroupListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowGroupList> for super::WorkflowGroupList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowGroupList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowGroupList> for WorkflowGroupList {
            fn from(value: super::WorkflowGroupList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowGroupListDataItem {
            attributes: ::std::result::Result<
                super::WorkflowGroup,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowGroupListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowGroupListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowGroupListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowGroupListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowGroupListDataItem>
        for super::WorkflowGroupListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowGroupListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowGroupListDataItem>
        for WorkflowGroupListDataItem {
            fn from(value: super::WorkflowGroupListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowGroupResponse {
            data: ::std::result::Result<
                super::WorkflowGroupResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowGroupResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WorkflowGroupResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowGroupResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowGroupResponse>
        for super::WorkflowGroupResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowGroupResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowGroupResponse>
        for WorkflowGroupResponse {
            fn from(value: super::WorkflowGroupResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowGroupResponseData {
            attributes: ::std::result::Result<
                super::WorkflowGroup,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowGroupResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowGroupResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowGroupResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowGroup>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowGroupResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowGroupResponseData>
        for super::WorkflowGroupResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowGroupResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowGroupResponseData>
        for WorkflowGroupResponseData {
            fn from(value: super::WorkflowGroupResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WorkflowListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for WorkflowList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl WorkflowList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::vec::Vec<super::WorkflowListDataItem>>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowList> for super::WorkflowList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowList> for WorkflowList {
            fn from(value: super::WorkflowList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowListDataItem {
            attributes: ::std::result::Result<super::Workflow, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Workflow>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowListDataItem>
        for super::WorkflowListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowListDataItem> for WorkflowListDataItem {
            fn from(value: super::WorkflowListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowResponse {
            data: ::std::result::Result<
                super::WorkflowResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WorkflowResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowResponse> for super::WorkflowResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowResponse> for WorkflowResponse {
            fn from(value: super::WorkflowResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowResponseData {
            attributes: ::std::result::Result<super::Workflow, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Workflow>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowResponseData>
        for super::WorkflowResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowResponseData> for WorkflowResponseData {
            fn from(value: super::WorkflowResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowRun {
            action_item_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            alert_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            canceled_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            completed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            context: ::std::result::Result<
                ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                ::std::string::String,
            >,
            failed_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            incident_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            post_mortem_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            pulse_id: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            started_at: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            status: ::std::result::Result<
                super::WorkflowRunStatus,
                ::std::string::String,
            >,
            status_message: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            triggered_by: ::std::result::Result<
                super::WorkflowRunTriggeredBy,
                ::std::string::String,
            >,
            workflow_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowRun {
            fn default() -> Self {
                Self {
                    action_item_id: Ok(Default::default()),
                    alert_id: Ok(Default::default()),
                    canceled_at: Ok(Default::default()),
                    completed_at: Ok(Default::default()),
                    context: Ok(Default::default()),
                    failed_at: Ok(Default::default()),
                    incident_id: Ok(Default::default()),
                    post_mortem_id: Ok(Default::default()),
                    pulse_id: Ok(Default::default()),
                    started_at: Ok(Default::default()),
                    status: Err("no value supplied for status".to_string()),
                    status_message: Ok(Default::default()),
                    triggered_by: Err("no value supplied for triggered_by".to_string()),
                    workflow_id: Err("no value supplied for workflow_id".to_string()),
                }
            }
        }
        impl WorkflowRun {
            pub fn action_item_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.action_item_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for action_item_id: {e}"
                        )
                    });
                self
            }
            pub fn alert_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.alert_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for alert_id: {e}")
                    });
                self
            }
            pub fn canceled_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.canceled_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for canceled_at: {e}")
                    });
                self
            }
            pub fn completed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.completed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for completed_at: {e}")
                    });
                self
            }
            pub fn context<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::serde_json::Map<::std::string::String, ::serde_json::Value>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.context = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for context: {e}")
                    });
                self
            }
            pub fn failed_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.failed_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for failed_at: {e}")
                    });
                self
            }
            pub fn incident_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.incident_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for incident_id: {e}")
                    });
                self
            }
            pub fn post_mortem_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.post_mortem_id = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for post_mortem_id: {e}"
                        )
                    });
                self
            }
            pub fn pulse_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.pulse_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for pulse_id: {e}")
                    });
                self
            }
            pub fn started_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.started_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for started_at: {e}")
                    });
                self
            }
            pub fn status<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRunStatus>,
                T::Error: ::std::fmt::Display,
            {
                self.status = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for status: {e}")
                    });
                self
            }
            pub fn status_message<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.status_message = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for status_message: {e}"
                        )
                    });
                self
            }
            pub fn triggered_by<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRunTriggeredBy>,
                T::Error: ::std::fmt::Display,
            {
                self.triggered_by = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for triggered_by: {e}")
                    });
                self
            }
            pub fn workflow_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowRun> for super::WorkflowRun {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowRun,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    action_item_id: value.action_item_id?,
                    alert_id: value.alert_id?,
                    canceled_at: value.canceled_at?,
                    completed_at: value.completed_at?,
                    context: value.context?,
                    failed_at: value.failed_at?,
                    incident_id: value.incident_id?,
                    post_mortem_id: value.post_mortem_id?,
                    pulse_id: value.pulse_id?,
                    started_at: value.started_at?,
                    status: value.status?,
                    status_message: value.status_message?,
                    triggered_by: value.triggered_by?,
                    workflow_id: value.workflow_id?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowRun> for WorkflowRun {
            fn from(value: super::WorkflowRun) -> Self {
                Self {
                    action_item_id: Ok(value.action_item_id),
                    alert_id: Ok(value.alert_id),
                    canceled_at: Ok(value.canceled_at),
                    completed_at: Ok(value.completed_at),
                    context: Ok(value.context),
                    failed_at: Ok(value.failed_at),
                    incident_id: Ok(value.incident_id),
                    post_mortem_id: Ok(value.post_mortem_id),
                    pulse_id: Ok(value.pulse_id),
                    started_at: Ok(value.started_at),
                    status: Ok(value.status),
                    status_message: Ok(value.status_message),
                    triggered_by: Ok(value.triggered_by),
                    workflow_id: Ok(value.workflow_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowRunResponse {
            data: ::std::result::Result<
                super::WorkflowRunResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowRunResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WorkflowRunResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRunResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowRunResponse>
        for super::WorkflowRunResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowRunResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowRunResponse> for WorkflowRunResponse {
            fn from(value: super::WorkflowRunResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowRunResponseData {
            attributes: ::std::result::Result<super::WorkflowRun, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowRunResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowRunResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowRunResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRun>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRunResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowRunResponseData>
        for super::WorkflowRunResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowRunResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowRunResponseData>
        for WorkflowRunResponseData {
            fn from(value: super::WorkflowRunResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowRunsList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WorkflowRunsListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for WorkflowRunsList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl WorkflowRunsList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WorkflowRunsListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowRunsList> for super::WorkflowRunsList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowRunsList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowRunsList> for WorkflowRunsList {
            fn from(value: super::WorkflowRunsList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowRunsListDataItem {
            attributes: ::std::result::Result<super::WorkflowRun, ::std::string::String>,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowRunsListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowRunsListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowRunsListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRun>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowRunsListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowRunsListDataItem>
        for super::WorkflowRunsListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowRunsListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowRunsListDataItem>
        for WorkflowRunsListDataItem {
            fn from(value: super::WorkflowRunsListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowTask {
            created_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            enabled: ::std::result::Result<bool, ::std::string::String>,
            name: ::std::result::Result<
                ::std::option::Option<::std::string::String>,
                ::std::string::String,
            >,
            position: ::std::result::Result<i64, ::std::string::String>,
            skip_on_failure: ::std::result::Result<bool, ::std::string::String>,
            task_params: ::std::result::Result<
                super::WorkflowTaskTaskParams,
                ::std::string::String,
            >,
            updated_at: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
            workflow_id: ::std::result::Result<
                ::std::string::String,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowTask {
            fn default() -> Self {
                Self {
                    created_at: Err("no value supplied for created_at".to_string()),
                    enabled: Err("no value supplied for enabled".to_string()),
                    name: Ok(Default::default()),
                    position: Err("no value supplied for position".to_string()),
                    skip_on_failure: Err(
                        "no value supplied for skip_on_failure".to_string(),
                    ),
                    task_params: Err("no value supplied for task_params".to_string()),
                    updated_at: Err("no value supplied for updated_at".to_string()),
                    workflow_id: Err("no value supplied for workflow_id".to_string()),
                }
            }
        }
        impl WorkflowTask {
            pub fn created_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.created_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for created_at: {e}")
                    });
                self
            }
            pub fn enabled<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.enabled = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for enabled: {e}")
                    });
                self
            }
            pub fn name<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>,
                T::Error: ::std::fmt::Display,
            {
                self.name = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for name: {e}")
                    });
                self
            }
            pub fn position<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<i64>,
                T::Error: ::std::fmt::Display,
            {
                self.position = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for position: {e}")
                    });
                self
            }
            pub fn skip_on_failure<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<bool>,
                T::Error: ::std::fmt::Display,
            {
                self.skip_on_failure = value
                    .try_into()
                    .map_err(|e| {
                        format!(
                            "error converting supplied value for skip_on_failure: {e}"
                        )
                    });
                self
            }
            pub fn task_params<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowTaskTaskParams>,
                T::Error: ::std::fmt::Display,
            {
                self.task_params = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for task_params: {e}")
                    });
                self
            }
            pub fn updated_at<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.updated_at = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for updated_at: {e}")
                    });
                self
            }
            pub fn workflow_id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.workflow_id = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for workflow_id: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowTask> for super::WorkflowTask {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowTask,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    created_at: value.created_at?,
                    enabled: value.enabled?,
                    name: value.name?,
                    position: value.position?,
                    skip_on_failure: value.skip_on_failure?,
                    task_params: value.task_params?,
                    updated_at: value.updated_at?,
                    workflow_id: value.workflow_id?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowTask> for WorkflowTask {
            fn from(value: super::WorkflowTask) -> Self {
                Self {
                    created_at: Ok(value.created_at),
                    enabled: Ok(value.enabled),
                    name: Ok(value.name),
                    position: Ok(value.position),
                    skip_on_failure: Ok(value.skip_on_failure),
                    task_params: Ok(value.task_params),
                    updated_at: Ok(value.updated_at),
                    workflow_id: Ok(value.workflow_id),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowTaskList {
            data: ::std::result::Result<
                ::std::vec::Vec<super::WorkflowTaskListDataItem>,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
            links: ::std::result::Result<super::Links, ::std::string::String>,
            meta: ::std::result::Result<super::Meta, ::std::string::String>,
        }
        impl ::std::default::Default for WorkflowTaskList {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                    links: Err("no value supplied for links".to_string()),
                    meta: Err("no value supplied for meta".to_string()),
                }
            }
        }
        impl WorkflowTaskList {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::WorkflowTaskListDataItem>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
            pub fn links<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Links>,
                T::Error: ::std::fmt::Display,
            {
                self.links = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for links: {e}")
                    });
                self
            }
            pub fn meta<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::Meta>,
                T::Error: ::std::fmt::Display,
            {
                self.meta = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for meta: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowTaskList> for super::WorkflowTaskList {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowTaskList,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                    links: value.links?,
                    meta: value.meta?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowTaskList> for WorkflowTaskList {
            fn from(value: super::WorkflowTaskList) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                    links: Ok(value.links),
                    meta: Ok(value.meta),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowTaskListDataItem {
            attributes: ::std::result::Result<
                super::WorkflowTask,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowTaskListDataItemType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowTaskListDataItem {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowTaskListDataItem {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowTask>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowTaskListDataItemType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowTaskListDataItem>
        for super::WorkflowTaskListDataItem {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowTaskListDataItem,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowTaskListDataItem>
        for WorkflowTaskListDataItem {
            fn from(value: super::WorkflowTaskListDataItem) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowTaskResponse {
            data: ::std::result::Result<
                super::WorkflowTaskResponseData,
                ::std::string::String,
            >,
            included: ::std::result::Result<
                ::std::vec::Vec<super::JsonapiIncludedResource>,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowTaskResponse {
            fn default() -> Self {
                Self {
                    data: Err("no value supplied for data".to_string()),
                    included: Ok(Default::default()),
                }
            }
        }
        impl WorkflowTaskResponse {
            pub fn data<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowTaskResponseData>,
                T::Error: ::std::fmt::Display,
            {
                self.data = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for data: {e}")
                    });
                self
            }
            pub fn included<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<
                    ::std::vec::Vec<super::JsonapiIncludedResource>,
                >,
                T::Error: ::std::fmt::Display,
            {
                self.included = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for included: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowTaskResponse>
        for super::WorkflowTaskResponse {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowTaskResponse,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    data: value.data?,
                    included: value.included?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowTaskResponse> for WorkflowTaskResponse {
            fn from(value: super::WorkflowTaskResponse) -> Self {
                Self {
                    data: Ok(value.data),
                    included: Ok(value.included),
                }
            }
        }
        #[derive(Clone, Debug)]
        pub struct WorkflowTaskResponseData {
            attributes: ::std::result::Result<
                super::WorkflowTask,
                ::std::string::String,
            >,
            id: ::std::result::Result<::std::string::String, ::std::string::String>,
            type_: ::std::result::Result<
                super::WorkflowTaskResponseDataType,
                ::std::string::String,
            >,
        }
        impl ::std::default::Default for WorkflowTaskResponseData {
            fn default() -> Self {
                Self {
                    attributes: Err("no value supplied for attributes".to_string()),
                    id: Err("no value supplied for id".to_string()),
                    type_: Err("no value supplied for type_".to_string()),
                }
            }
        }
        impl WorkflowTaskResponseData {
            pub fn attributes<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowTask>,
                T::Error: ::std::fmt::Display,
            {
                self.attributes = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for attributes: {e}")
                    });
                self
            }
            pub fn id<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<::std::string::String>,
                T::Error: ::std::fmt::Display,
            {
                self.id = value
                    .try_into()
                    .map_err(|e| format!("error converting supplied value for id: {e}"));
                self
            }
            pub fn type_<T>(mut self, value: T) -> Self
            where
                T: ::std::convert::TryInto<super::WorkflowTaskResponseDataType>,
                T::Error: ::std::fmt::Display,
            {
                self.type_ = value
                    .try_into()
                    .map_err(|e| {
                        format!("error converting supplied value for type_: {e}")
                    });
                self
            }
        }
        impl ::std::convert::TryFrom<WorkflowTaskResponseData>
        for super::WorkflowTaskResponseData {
            type Error = super::error::ConversionError;
            fn try_from(
                value: WorkflowTaskResponseData,
            ) -> ::std::result::Result<Self, super::error::ConversionError> {
                Ok(Self {
                    attributes: value.attributes?,
                    id: value.id?,
                    type_: value.type_?,
                })
            }
        }
        impl ::std::convert::From<super::WorkflowTaskResponseData>
        for WorkflowTaskResponseData {
            fn from(value: super::WorkflowTaskResponseData) -> Self {
                Self {
                    attributes: Ok(value.attributes),
                    id: Ok(value.id),
                    type_: Ok(value.type_),
                }
            }
        }
    }
    /// Generation of default values for serde.
    pub mod defaults {
        pub(super) fn default_bool<const V: bool>() -> bool {
            V
        }
        pub(super) fn default_u64<T, const V: u64>() -> T
        where
            T: ::std::convert::TryFrom<u64>,
            <T as ::std::convert::TryFrom<u64>>::Error: ::std::fmt::Debug,
        {
            T::try_from(V).unwrap()
        }
        pub(super) fn action_item_trigger_params_incident_action_item_condition_group() -> super::ActionItemTriggerParamsIncidentActionItemConditionGroup {
            super::ActionItemTriggerParamsIncidentActionItemConditionGroup::Any
        }
        pub(super) fn action_item_trigger_params_incident_action_item_condition_kind() -> super::ActionItemTriggerParamsIncidentActionItemConditionKind {
            super::ActionItemTriggerParamsIncidentActionItemConditionKind::Any
        }
        pub(super) fn action_item_trigger_params_incident_action_item_condition_priority() -> super::ActionItemTriggerParamsIncidentActionItemConditionPriority {
            super::ActionItemTriggerParamsIncidentActionItemConditionPriority::Any
        }
        pub(super) fn action_item_trigger_params_incident_action_item_condition_status() -> super::ActionItemTriggerParamsIncidentActionItemConditionStatus {
            super::ActionItemTriggerParamsIncidentActionItemConditionStatus::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition() -> super::ActionItemTriggerParamsIncidentCondition {
            super::ActionItemTriggerParamsIncidentCondition::All
        }
        pub(super) fn action_item_trigger_params_incident_condition_environment() -> super::ActionItemTriggerParamsIncidentConditionEnvironment {
            super::ActionItemTriggerParamsIncidentConditionEnvironment::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_functionality() -> super::ActionItemTriggerParamsIncidentConditionFunctionality {
            super::ActionItemTriggerParamsIncidentConditionFunctionality::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_group() -> super::ActionItemTriggerParamsIncidentConditionGroup {
            super::ActionItemTriggerParamsIncidentConditionGroup::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_incident_roles() -> super::ActionItemTriggerParamsIncidentConditionIncidentRoles {
            super::ActionItemTriggerParamsIncidentConditionIncidentRoles::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_incident_type() -> super::ActionItemTriggerParamsIncidentConditionIncidentType {
            super::ActionItemTriggerParamsIncidentConditionIncidentType::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_kind() -> super::ActionItemTriggerParamsIncidentConditionKind {
            super::ActionItemTriggerParamsIncidentConditionKind::Is
        }
        pub(super) fn action_item_trigger_params_incident_condition_service() -> super::ActionItemTriggerParamsIncidentConditionService {
            super::ActionItemTriggerParamsIncidentConditionService::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_severity() -> super::ActionItemTriggerParamsIncidentConditionSeverity {
            super::ActionItemTriggerParamsIncidentConditionSeverity::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_status() -> super::ActionItemTriggerParamsIncidentConditionStatus {
            super::ActionItemTriggerParamsIncidentConditionStatus::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_sub_status() -> super::ActionItemTriggerParamsIncidentConditionSubStatus {
            super::ActionItemTriggerParamsIncidentConditionSubStatus::Any
        }
        pub(super) fn action_item_trigger_params_incident_condition_visibility() -> super::ActionItemTriggerParamsIncidentConditionVisibility {
            super::ActionItemTriggerParamsIncidentConditionVisibility::Any
        }
        pub(super) fn alert_trigger_params_alert_condition_label() -> super::AlertTriggerParamsAlertConditionLabel {
            super::AlertTriggerParamsAlertConditionLabel::Any
        }
        pub(super) fn alert_trigger_params_alert_condition_payload() -> super::AlertTriggerParamsAlertConditionPayload {
            super::AlertTriggerParamsAlertConditionPayload::Any
        }
        pub(super) fn alert_trigger_params_alert_condition_source() -> super::AlertTriggerParamsAlertConditionSource {
            super::AlertTriggerParamsAlertConditionSource::Any
        }
        pub(super) fn alert_trigger_params_alert_condition_status() -> super::AlertTriggerParamsAlertConditionStatus {
            super::AlertTriggerParamsAlertConditionStatus::Any
        }
        pub(super) fn alert_trigger_params_alert_condition_urgency() -> super::AlertTriggerParamsAlertConditionUrgency {
            super::AlertTriggerParamsAlertConditionUrgency::Any
        }
        pub(super) fn create_asana_subtask_task_params_dependency_direction() -> super::CreateAsanaSubtaskTaskParamsDependencyDirection {
            super::CreateAsanaSubtaskTaskParamsDependencyDirection::Blocking
        }
        pub(super) fn create_asana_task_task_params_dependency_direction() -> super::CreateAsanaTaskTaskParamsDependencyDirection {
            super::CreateAsanaTaskTaskParamsDependencyDirection::Blocking
        }
        pub(super) fn create_jsmops_alert_task_params_priority() -> super::CreateJsmopsAlertTaskParamsPriority {
            super::CreateJsmopsAlertTaskParamsPriority::P3
        }
        pub(super) fn create_microsoft_teams_channel_task_params_private() -> super::CreateMicrosoftTeamsChannelTaskParamsPrivate {
            super::CreateMicrosoftTeamsChannelTaskParamsPrivate::Auto
        }
        pub(super) fn create_microsoft_teams_chat_task_params_chat_type() -> super::CreateMicrosoftTeamsChatTaskParamsChatType {
            super::CreateMicrosoftTeamsChatTaskParamsChatType::Group
        }
        pub(super) fn create_opsgenie_alert_task_params_priority() -> super::CreateOpsgenieAlertTaskParamsPriority {
            super::CreateOpsgenieAlertTaskParamsPriority::P1
        }
        pub(super) fn create_slack_channel_task_params_private() -> super::CreateSlackChannelTaskParamsPrivate {
            super::CreateSlackChannelTaskParamsPrivate::Auto
        }
        pub(super) fn create_zoom_meeting_task_params_auto_recording() -> super::CreateZoomMeetingTaskParamsAutoRecording {
            super::CreateZoomMeetingTaskParamsAutoRecording::None
        }
        pub(super) fn dashboard_panel_params_legend_groups() -> super::DashboardPanelParamsLegendGroups {
            super::DashboardPanelParamsLegendGroups::All
        }
        pub(super) fn http_client_task_params_method() -> super::HttpClientTaskParamsMethod {
            super::HttpClientTaskParamsMethod::Get
        }
        pub(super) fn incident_post_mortem_show_timeline_order() -> super::IncidentPostMortemShowTimelineOrder {
            super::IncidentPostMortemShowTimelineOrder::Desc
        }
        pub(super) fn incident_trigger_params_incident_condition() -> super::IncidentTriggerParamsIncidentCondition {
            super::IncidentTriggerParamsIncidentCondition::All
        }
        pub(super) fn incident_trigger_params_incident_condition_cause() -> super::IncidentTriggerParamsIncidentConditionCause {
            super::IncidentTriggerParamsIncidentConditionCause::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_environment() -> super::IncidentTriggerParamsIncidentConditionEnvironment {
            super::IncidentTriggerParamsIncidentConditionEnvironment::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_functionality() -> super::IncidentTriggerParamsIncidentConditionFunctionality {
            super::IncidentTriggerParamsIncidentConditionFunctionality::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_group() -> super::IncidentTriggerParamsIncidentConditionGroup {
            super::IncidentTriggerParamsIncidentConditionGroup::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_incident_roles() -> super::IncidentTriggerParamsIncidentConditionIncidentRoles {
            super::IncidentTriggerParamsIncidentConditionIncidentRoles::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_incident_type() -> super::IncidentTriggerParamsIncidentConditionIncidentType {
            super::IncidentTriggerParamsIncidentConditionIncidentType::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_kind() -> super::IncidentTriggerParamsIncidentConditionKind {
            super::IncidentTriggerParamsIncidentConditionKind::Is
        }
        pub(super) fn incident_trigger_params_incident_condition_service() -> super::IncidentTriggerParamsIncidentConditionService {
            super::IncidentTriggerParamsIncidentConditionService::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_severity() -> super::IncidentTriggerParamsIncidentConditionSeverity {
            super::IncidentTriggerParamsIncidentConditionSeverity::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_status() -> super::IncidentTriggerParamsIncidentConditionStatus {
            super::IncidentTriggerParamsIncidentConditionStatus::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_sub_status() -> super::IncidentTriggerParamsIncidentConditionSubStatus {
            super::IncidentTriggerParamsIncidentConditionSubStatus::Any
        }
        pub(super) fn incident_trigger_params_incident_condition_visibility() -> super::IncidentTriggerParamsIncidentConditionVisibility {
            super::IncidentTriggerParamsIncidentConditionVisibility::Any
        }
        pub(super) fn incident_trigger_params_incident_post_mortem_condition_cause() -> super::IncidentTriggerParamsIncidentPostMortemConditionCause {
            super::IncidentTriggerParamsIncidentPostMortemConditionCause::Any
        }
        pub(super) fn new_dashboard_panel_data_attributes_params_legend_groups() -> super::NewDashboardPanelDataAttributesParamsLegendGroups {
            super::NewDashboardPanelDataAttributesParamsLegendGroups::All
        }
        pub(super) fn new_escalation_policy_path_data_attributes_match_mode() -> super::NewEscalationPolicyPathDataAttributesMatchMode {
            super::NewEscalationPolicyPathDataAttributesMatchMode::MatchAllRules
        }
        pub(super) fn new_escalation_policy_path_data_attributes_notification_type() -> super::NewEscalationPolicyPathDataAttributesNotificationType {
            super::NewEscalationPolicyPathDataAttributesNotificationType::Audible
        }
        pub(super) fn new_escalation_policy_path_data_attributes_path_type() -> super::NewEscalationPolicyPathDataAttributesPathType {
            super::NewEscalationPolicyPathDataAttributesPathType::Escalation
        }
        pub(super) fn new_on_call_role_data_attributes_system_role() -> ::std::string::String {
            "custom".to_string()
        }
        pub(super) fn new_schedule_rotation_data_attributes_time_zone() -> ::std::string::String {
            "Etc/UTC".to_string()
        }
        pub(super) fn on_call_role_system_role() -> ::std::string::String {
            "custom".to_string()
        }
        pub(super) fn page_jsmops_on_call_responders_task_params_priority() -> super::PageJsmopsOnCallRespondersTaskParamsPriority {
            super::PageJsmopsOnCallRespondersTaskParamsPriority::P3
        }
        pub(super) fn page_opsgenie_on_call_responders_task_params_priority() -> super::PageOpsgenieOnCallRespondersTaskParamsPriority {
            super::PageOpsgenieOnCallRespondersTaskParamsPriority::P1
        }
        pub(super) fn page_pagerduty_on_call_responders_task_params_urgency() -> super::PagePagerdutyOnCallRespondersTaskParamsUrgency {
            super::PagePagerdutyOnCallRespondersTaskParamsUrgency::High
        }
        pub(super) fn post_mortem_trigger_params_incident_condition() -> super::PostMortemTriggerParamsIncidentCondition {
            super::PostMortemTriggerParamsIncidentCondition::All
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_cause() -> super::PostMortemTriggerParamsIncidentConditionCause {
            super::PostMortemTriggerParamsIncidentConditionCause::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_environment() -> super::PostMortemTriggerParamsIncidentConditionEnvironment {
            super::PostMortemTriggerParamsIncidentConditionEnvironment::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_functionality() -> super::PostMortemTriggerParamsIncidentConditionFunctionality {
            super::PostMortemTriggerParamsIncidentConditionFunctionality::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_group() -> super::PostMortemTriggerParamsIncidentConditionGroup {
            super::PostMortemTriggerParamsIncidentConditionGroup::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_incident_roles() -> super::PostMortemTriggerParamsIncidentConditionIncidentRoles {
            super::PostMortemTriggerParamsIncidentConditionIncidentRoles::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_incident_type() -> super::PostMortemTriggerParamsIncidentConditionIncidentType {
            super::PostMortemTriggerParamsIncidentConditionIncidentType::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_kind() -> super::PostMortemTriggerParamsIncidentConditionKind {
            super::PostMortemTriggerParamsIncidentConditionKind::Is
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_service() -> super::PostMortemTriggerParamsIncidentConditionService {
            super::PostMortemTriggerParamsIncidentConditionService::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_severity() -> super::PostMortemTriggerParamsIncidentConditionSeverity {
            super::PostMortemTriggerParamsIncidentConditionSeverity::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_status() -> super::PostMortemTriggerParamsIncidentConditionStatus {
            super::PostMortemTriggerParamsIncidentConditionStatus::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_sub_status() -> super::PostMortemTriggerParamsIncidentConditionSubStatus {
            super::PostMortemTriggerParamsIncidentConditionSubStatus::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_condition_visibility() -> super::PostMortemTriggerParamsIncidentConditionVisibility {
            super::PostMortemTriggerParamsIncidentConditionVisibility::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_post_mortem_condition_cause() -> super::PostMortemTriggerParamsIncidentPostMortemConditionCause {
            super::PostMortemTriggerParamsIncidentPostMortemConditionCause::Any
        }
        pub(super) fn post_mortem_trigger_params_incident_post_mortem_condition_status() -> super::PostMortemTriggerParamsIncidentPostMortemConditionStatus {
            super::PostMortemTriggerParamsIncidentPostMortemConditionStatus::Any
        }
        pub(super) fn pulse_trigger_params_pulse_condition_label() -> super::PulseTriggerParamsPulseConditionLabel {
            super::PulseTriggerParamsPulseConditionLabel::Any
        }
        pub(super) fn pulse_trigger_params_pulse_condition_payload() -> super::PulseTriggerParamsPulseConditionPayload {
            super::PulseTriggerParamsPulseConditionPayload::Any
        }
        pub(super) fn pulse_trigger_params_pulse_condition_source() -> super::PulseTriggerParamsPulseConditionSource {
            super::PulseTriggerParamsPulseConditionSource::Any
        }
        pub(super) fn schedule_rotation_time_zone() -> ::std::string::String {
            "Etc/UTC".to_string()
        }
        pub(super) fn send_dashboard_report_task_params_from() -> ::std::string::String {
            "Rootly <workflows@rootly.com>".to_string()
        }
        pub(super) fn send_email_task_params_from() -> ::std::string::String {
            "Rootly <workflows@rootly.com>".to_string()
        }
        pub(super) fn tiptap_block_schema_followup_component_data_sort() -> super::TiptapBlockSchemaFollowupComponentDataSort {
            super::TiptapBlockSchemaFollowupComponentDataSort::DueDate
        }
        pub(super) fn update_asana_task_task_params_dependency_direction() -> super::UpdateAsanaTaskTaskParamsDependencyDirection {
            super::UpdateAsanaTaskTaskParamsDependencyDirection::Blocking
        }
        pub(super) fn update_dashboard_panel_data_attributes_params_legend_groups() -> super::UpdateDashboardPanelDataAttributesParamsLegendGroups {
            super::UpdateDashboardPanelDataAttributesParamsLegendGroups::All
        }
        pub(super) fn update_escalation_policy_path_data_attributes_match_mode() -> super::UpdateEscalationPolicyPathDataAttributesMatchMode {
            super::UpdateEscalationPolicyPathDataAttributesMatchMode::MatchAllRules
        }
        pub(super) fn update_escalation_policy_path_data_attributes_notification_type() -> super::UpdateEscalationPolicyPathDataAttributesNotificationType {
            super::UpdateEscalationPolicyPathDataAttributesNotificationType::Audible
        }
        pub(super) fn update_github_issue_task_params_labels_mode() -> super::UpdateGithubIssueTaskParamsLabelsMode {
            super::UpdateGithubIssueTaskParamsLabelsMode::Replace
        }
        pub(super) fn update_incident_task_params_attribute_to_query_by() -> super::UpdateIncidentTaskParamsAttributeToQueryBy {
            super::UpdateIncidentTaskParamsAttributeToQueryBy::Id
        }
        pub(super) fn update_on_call_role_data_attributes_system_role() -> ::std::string::String {
            "custom".to_string()
        }
        pub(super) fn update_schedule_rotation_data_attributes_time_zone() -> ::std::string::String {
            "Etc/UTC".to_string()
        }
        pub(super) fn update_workflow_custom_field_selection_data_attributes_incident_condition() -> super::UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition {
            super::UpdateWorkflowCustomFieldSelectionDataAttributesIncidentCondition::Any
        }
        pub(super) fn update_workflow_form_field_condition_data_attributes_incident_condition() -> super::UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition {
            super::UpdateWorkflowFormFieldConditionDataAttributesIncidentCondition::Any
        }
    }
}
#[derive(Clone, Debug)]
/**Client for Rootly API v1

# How to generate an API Key?
- **Organization dropdown** > **Organization Settings** > **API Keys**

# JSON:API Specification
Rootly is using **JSON:API** (https://jsonapi.org) specification:
- JSON:API is a specification for how a client should request that resources be fetched or modified, and how a server should respond to those requests.
- JSON:API is designed to minimize both the number of requests and the amount of data transmitted between clients and servers. This efficiency is achieved without compromising readability, flexibility, or discoverability.
- JSON:API requires use of the JSON:API media type (**application/json**) for exchanging data.

# Authentication and Requests
We use standard HTTP Authentication over HTTPS to authorize your requests.
```
  curl --request GET \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN' \
--url https://api.rootly.com/v1/incidents
```

<br/>

# Rate limiting
- There is a default limit of **5** **GET**, **HEAD**, and **OPTIONS** calls **per API key** every **60 seconds** (0 hours). The limit is calculated over a **0-hour sliding window** looking back from the current time. While the limit can be configured to support higher thresholds, you must first contact your **Rootly Customer Success Manager** to make any adjustments.
- There is a default limit of **3** **POST**, **PUT**, **PATCH** or **DELETE** calls **per API key** every **60 seconds** (0 hours). The limit is calculated over a **0-hour sliding window** looking back from the current time. While the limit can be configured to support higher thresholds, you must first contact your **Rootly Customer Success Manager** to make any adjustments.
- When rate limits are exceeded, the API will return a **429 Too Many Requests** HTTP status code with the response: `{"error": "Rate limit exceeded. Try again later."}`
- **X-RateLimit headers** are included in every API response, providing real-time rate limit information:
  - **X-RateLimit-Limit** - The maximum number of requests permitted and the time window (e.g., "1000, 1000;window=3600" for 1000 requests per hour)
  - **X-RateLimit-Remaining** - The number of requests remaining in the current rate limit window
  - **X-RateLimit-Used** - The number of requests already made in the current window
  - **X-RateLimit-Reset** - The time at which the current rate limit window resets, in UTC epoch seconds

# Pagination
- Pagination is supported for all endpoints that return a collection of items.
- Pagination is controlled by the **page** query parameter

## Example
```
  curl --request GET \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN' \
--url https://api.rootly.com/v1/incidents?page[number]=1&page[size]=10
```



Version: v1*/
pub struct Client {
    pub(crate) baseurl: String,
    pub(crate) client: reqwest::Client,
}
impl Client {
    /// Create a new client.
    ///
    /// `baseurl` is the base URL provided to the internal
    /// `reqwest::Client`, and should include a scheme and hostname,
    /// as well as port and a path stem if applicable.
    pub fn new(baseurl: &str) -> Self {
        #[cfg(not(target_arch = "wasm32"))]
        let client = {
            let dur = ::std::time::Duration::from_secs(15u64);
            reqwest::ClientBuilder::new().connect_timeout(dur).timeout(dur)
        };
        #[cfg(target_arch = "wasm32")]
        let client = reqwest::ClientBuilder::new();
        Self::new_with_client(baseurl, client.build().unwrap())
    }
    /// Construct a new client with an existing `reqwest::Client`,
    /// allowing more control over its configuration.
    ///
    /// `baseurl` is the base URL provided to the internal
    /// `reqwest::Client`, and should include a scheme and hostname,
    /// as well as port and a path stem if applicable.
    pub fn new_with_client(baseurl: &str, client: reqwest::Client) -> Self {
        Self {
            baseurl: baseurl.to_string(),
            client,
        }
    }
}
impl ClientInfo<()> for Client {
    fn api_version() -> &'static str {
        "v1"
    }
    fn baseurl(&self) -> &str {
        self.baseurl.as_str()
    }
    fn client(&self) -> &reqwest::Client {
        &self.client
    }
    fn inner(&self) -> &() {
        &()
    }
}
impl ClientHooks<()> for &Client {}
impl Client {
    /**List all action items for an organization

List all action items for an organization

Sends a `GET` request to `/v1/action_items`

```ignore
let response = client.list_all_incident_action_items()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_due_date_gt(filter_due_date_gt)
    .filter_due_date_gte(filter_due_date_gte)
    .filter_due_date_lt(filter_due_date_lt)
    .filter_due_date_lte(filter_due_date_lte)
    .filter_incident_created_at_gt(filter_incident_created_at_gt)
    .filter_incident_created_at_gte(filter_incident_created_at_gte)
    .filter_incident_created_at_lt(filter_incident_created_at_lt)
    .filter_incident_created_at_lte(filter_incident_created_at_lte)
    .filter_incident_status(filter_incident_status)
    .filter_kind(filter_kind)
    .filter_priority(filter_priority)
    .filter_status(filter_status)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_all_incident_action_items(
        &self,
    ) -> builder::ListAllIncidentActionItems<'_> {
        builder::ListAllIncidentActionItems::new(self)
    }
    /**Retrieves an incident action item

Retrieves a specific incident_action_item by id

Sends a `GET` request to `/v1/action_items/{id}`

```ignore
let response = client.get_incident_action_items()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_action_items(&self) -> builder::GetIncidentActionItems<'_> {
        builder::GetIncidentActionItems::new(self)
    }
    /**Update an incident action item

Update a specific incident action item by id

Sends a `PUT` request to `/v1/action_items/{id}`

```ignore
let response = client.update_incident_action_item()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_action_item(&self) -> builder::UpdateIncidentActionItem<'_> {
        builder::UpdateIncidentActionItem::new(self)
    }
    /**Delete an incident action item

Delete a specific incident action item by id

Sends a `DELETE` request to `/v1/action_items/{id}`

```ignore
let response = client.delete_incident_action_item()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_action_item(&self) -> builder::DeleteIncidentActionItem<'_> {
        builder::DeleteIncidentActionItem::new(self)
    }
    /**List alert events across alerts

Returns a flat list of alert events across all alerts the requester can access. Designed for periodic polling: use `page[after]` with the `next_cursor` returned in the previous response to stream forward.

Sends a `GET` request to `/v1/alert_events`

Arguments:
- `filter_action`
- `filter_alert_id`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `include`
- `page_after`: Cursor token from the previous response's `meta.next_cursor`. Pass the same `sort` value used to obtain the cursor.
- `page_size`: Page size (max 50).
- `sort`: Sort by `created_at`. Defaults to `created_at` (oldest-first). Use `-created_at` for newest-first.
```ignore
let response = client.list_alert_events_feed()
    .filter_action(filter_action)
    .filter_alert_id(filter_alert_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .include(include)
    .page_after(page_after)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_alert_events_feed(&self) -> builder::ListAlertEventsFeed<'_> {
        builder::ListAlertEventsFeed::new(self)
    }
    /**Retrieve alert event

Retrieves a specific alert_event by id

Sends a `GET` request to `/v1/alert_events/{id}`

```ignore
let response = client.get_alert_event()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alert_event(&self) -> builder::GetAlertEvent<'_> {
        builder::GetAlertEvent::new(self)
    }
    /**Delete alert event

Deletes a specific alert event. Only alert events with kind 'note' (user-created notes) can be deleted. System-generated events are immutable to maintain audit trail integrity.

Sends a `DELETE` request to `/v1/alert_events/{id}`

```ignore
let response = client.delete_alert_event()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alert_event(&self) -> builder::DeleteAlertEvent<'_> {
        builder::DeleteAlertEvent::new(self)
    }
    /**Update alert event

Updates a specific alert event. Only alert events with kind 'note' (user-created notes) can be updated. System-generated events are immutable to maintain audit trail integrity.

Sends a `PATCH` request to `/v1/alert_events/{id}`

```ignore
let response = client.update_alert_event()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert_event(&self) -> builder::UpdateAlertEvent<'_> {
        builder::UpdateAlertEvent::new(self)
    }
    /**List alert fields

List alert fields

Sends a `GET` request to `/v1/alert_fields`

```ignore
let response = client.list_alert_fields()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_alert_fields(&self) -> builder::ListAlertFields<'_> {
        builder::ListAlertFields::new(self)
    }
    /**Creates an alert field

Creates a new alert field from provided data

Sends a `POST` request to `/v1/alert_fields`

```ignore
let response = client.create_alert_field()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert_field(&self) -> builder::CreateAlertField<'_> {
        builder::CreateAlertField::new(self)
    }
    /**Retrieves an alert field

Retrieves a specific alert field by id

Sends a `GET` request to `/v1/alert_fields/{id}`

```ignore
let response = client.get_alert_field()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alert_field(&self) -> builder::GetAlertField<'_> {
        builder::GetAlertField::new(self)
    }
    /**Update an alert field

Update a specific alert field by id

Sends a `PUT` request to `/v1/alert_fields/{id}`

```ignore
let response = client.update_alert_field()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert_field(&self) -> builder::UpdateAlertField<'_> {
        builder::UpdateAlertField::new(self)
    }
    /**Delete an alert field

Delete a specific alert field by id

Sends a `DELETE` request to `/v1/alert_fields/{id}`

```ignore
let response = client.delete_alert_field()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alert_field(&self) -> builder::DeleteAlertField<'_> {
        builder::DeleteAlertField::new(self)
    }
    /**List alert groups

List alert groups

Sends a `GET` request to `/v1/alert_groups`

```ignore
let response = client.list_alert_groups()
    .include(include)
    .send()
    .await;
```*/
    pub fn list_alert_groups(&self) -> builder::ListAlertGroups<'_> {
        builder::ListAlertGroups::new(self)
    }
    /**Creates an alert group

Creates a new alert group. **Note**: For enhanced functionality and future compatibility, consider using the advanced alert grouping with `conditions` field instead of the legacy `group_by_alert_title`, `group_by_alert_urgency`, and `attributes` fields.

Sends a `POST` request to `/v1/alert_groups`

```ignore
let response = client.create_alert_group()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert_group(&self) -> builder::CreateAlertGroup<'_> {
        builder::CreateAlertGroup::new(self)
    }
    /**Retrieves an alert group

Retrieves a specific alert group by id

Sends a `GET` request to `/v1/alert_groups/{id}`

```ignore
let response = client.get_alert_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alert_group(&self) -> builder::GetAlertGroup<'_> {
        builder::GetAlertGroup::new(self)
    }
    /**Delete an alert group

Delete a specific alert group by id

Sends a `DELETE` request to `/v1/alert_groups/{id}`

```ignore
let response = client.delete_alert_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alert_group(&self) -> builder::DeleteAlertGroup<'_> {
        builder::DeleteAlertGroup::new(self)
    }
    /**Update an alert group

Update a specific alert group by id. **Note**: For enhanced functionality and future compatibility, consider using the advanced alert grouping with `conditions` field instead of the legacy `group_by_alert_title`, `group_by_alert_urgency`, and `attributes` fields.

Sends a `PATCH` request to `/v1/alert_groups/{id}`

```ignore
let response = client.update_alert_group()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert_group(&self) -> builder::UpdateAlertGroup<'_> {
        builder::UpdateAlertGroup::new(self)
    }
    /**List alert routes

List all alert routes for the current team with filtering and pagination. **Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.**

Sends a `GET` request to `/v1/alert_routes`

```ignore
let response = client.list_alert_routes()
    .filter_name(filter_name)
    .filter_search(filter_search)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_alert_routes(&self) -> builder::ListAlertRoutes<'_> {
        builder::ListAlertRoutes::new(self)
    }
    /**Creates an alert route

Creates a new alert route from provided data. **Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.**

## Asynchronous Rule Creation

For organizations with large numbers of routing rules, Rootly supports asynchronous rule processing to improve performance. When enabled, rule creation happens in the background.

**Important**: When async processing is enabled, the rules list in the API response will not be up-to-date immediately after creation. You should refetch the alert route after a few minutes to get the updated rules.

If you experience slow operations when managing alert routes with many rules, contact Rootly customer support to enable asynchronous rule processing for your organization.

Sends a `POST` request to `/v1/alert_routes`

```ignore
let response = client.create_alert_route()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert_route(&self) -> builder::CreateAlertRoute<'_> {
        builder::CreateAlertRoute::new(self)
    }
    /**Get an alert route

Get a specific alert route by id. **Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.**

## Optional Parameters

- **show_nested_ids** (query parameter): When set to `true`, the response will include IDs for all nested resources (destinations, condition_groups, conditions). This is useful when you need to reference these nested resources for updates or deletions via PATCH requests.

Example: `GET /v1/alert_routes/{id}?show_nested_ids=true`

Sends a `GET` request to `/v1/alert_routes/{id}`

```ignore
let response = client.get_alert_route()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alert_route(&self) -> builder::GetAlertRoute<'_> {
        builder::GetAlertRoute::new(self)
    }
    /**Update an alert route

Update a specific alert route by id. **Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.**

### Asynchronous Rule Creation

For organizations with large numbers of routing rules, Rootly supports asynchronous rule processing to improve performance. When enabled, rule updates happen in the background.

**Important**: When async processing is enabled, the rules list in the API response will not be up-to-date immediately after update. You should refetch the alert route after a few minutes to get the updated rules.

If you experience slow operations when managing alert routes with many rules, contact Rootly customer support to enable asynchronous rule processing for your organization.

Sends a `PUT` request to `/v1/alert_routes/{id}`

```ignore
let response = client.update_alert_route()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert_route(&self) -> builder::UpdateAlertRoute<'_> {
        builder::UpdateAlertRoute::new(self)
    }
    /**Delete an alert route

Delete a specific alert route by id. **Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.**

Sends a `DELETE` request to `/v1/alert_routes/{id}`

```ignore
let response = client.delete_alert_route()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alert_route(&self) -> builder::DeleteAlertRoute<'_> {
        builder::DeleteAlertRoute::new(self)
    }
    /**Update an alert route

Updates an alert route. **Note: This endpoint requires access to Advanced Alert Routing. If you're unsure whether you have access to this feature, please contact Rootly customer support.**

Sends a `PATCH` request to `/v1/alert_routes/{id}`

```ignore
let response = client.patch_alert_route()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn patch_alert_route(&self) -> builder::PatchAlertRoute<'_> {
        builder::PatchAlertRoute::new(self)
    }
    /**List alert routing rules

List alert routing rules. **Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.**

Sends a `GET` request to `/v1/alert_routing_rules`

```ignore
let response = client.list_alert_routing_rules()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_alert_routing_rules(&self) -> builder::ListAlertRoutingRules<'_> {
        builder::ListAlertRoutingRules::new(self)
    }
    /**Creates an alert routing rule

Creates a new alert routing rule from provided data. **Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.**

Sends a `POST` request to `/v1/alert_routing_rules`

```ignore
let response = client.create_alert_routing_rule()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert_routing_rule(&self) -> builder::CreateAlertRoutingRule<'_> {
        builder::CreateAlertRoutingRule::new(self)
    }
    /**Retrieves an alert routing rule

Retrieves a specific alert routing rule by id. **Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.**

Sends a `GET` request to `/v1/alert_routing_rules/{id}`

```ignore
let response = client.get_alert_routing_rule()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alert_routing_rule(&self) -> builder::GetAlertRoutingRule<'_> {
        builder::GetAlertRoutingRule::new(self)
    }
    /**Update an alert routing rule

Update a specific alert routing rule by id. **Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.**

Sends a `PUT` request to `/v1/alert_routing_rules/{id}`

```ignore
let response = client.update_alert_routing_rule()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert_routing_rule(&self) -> builder::UpdateAlertRoutingRule<'_> {
        builder::UpdateAlertRoutingRule::new(self)
    }
    /**Delete an alert routing rule

Delete a specific alert routing rule by id. **Note: If you are an advanced alert routing user, you should use the Alert Routes endpoint instead of this endpoint. If you don't know whether you are an advanced user, please contact Rootly customer support.**

Sends a `DELETE` request to `/v1/alert_routing_rules/{id}`

```ignore
let response = client.delete_alert_routing_rule()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alert_routing_rule(&self) -> builder::DeleteAlertRoutingRule<'_> {
        builder::DeleteAlertRoutingRule::new(self)
    }
    /**List alert sources

List alert sources

Sends a `GET` request to `/v1/alert_sources`

```ignore
let response = client.list_alerts_sources()
    .filter_enabled(filter_enabled)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_source_types(filter_source_types)
    .filter_statuses(filter_statuses)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_alerts_sources(&self) -> builder::ListAlertsSources<'_> {
        builder::ListAlertsSources::new(self)
    }
    /**Creates an alert source

Creates a new alert source from provided data

Sends a `POST` request to `/v1/alert_sources`

```ignore
let response = client.create_alerts_source()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alerts_source(&self) -> builder::CreateAlertsSource<'_> {
        builder::CreateAlertsSource::new(self)
    }
    /**Retrieves an alert source

Retrieves a specific alert source by id

Sends a `GET` request to `/v1/alert_sources/{id}`

```ignore
let response = client.get_alerts_source()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alerts_source(&self) -> builder::GetAlertsSource<'_> {
        builder::GetAlertsSource::new(self)
    }
    /**Update an alert source

Update a specific alert source by id

Sends a `PUT` request to `/v1/alert_sources/{id}`

```ignore
let response = client.update_alerts_source()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alerts_source(&self) -> builder::UpdateAlertsSource<'_> {
        builder::UpdateAlertsSource::new(self)
    }
    /**Delete an alert source

Delete a specific alert source by id

Sends a `DELETE` request to `/v1/alert_sources/{id}`

```ignore
let response = client.delete_alerts_source()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alerts_source(&self) -> builder::DeleteAlertsSource<'_> {
        builder::DeleteAlertsSource::new(self)
    }
    /**List alert urgencies

List alert urgencies

Sends a `GET` request to `/v1/alert_urgencies`

```ignore
let response = client.list_alert_urgencies()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_alert_urgencies(&self) -> builder::ListAlertUrgencies<'_> {
        builder::ListAlertUrgencies::new(self)
    }
    /**Creates an alert urgency

Creates a new alert urgency from provided data

Sends a `POST` request to `/v1/alert_urgencies`

```ignore
let response = client.create_alert_urgency()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert_urgency(&self) -> builder::CreateAlertUrgency<'_> {
        builder::CreateAlertUrgency::new(self)
    }
    /**Retrieves an alert urgency

Retrieves a specific alert urgency by id

Sends a `GET` request to `/v1/alert_urgencies/{id}`

```ignore
let response = client.get_alert_urgency()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_alert_urgency(&self) -> builder::GetAlertUrgency<'_> {
        builder::GetAlertUrgency::new(self)
    }
    /**Update an alert urgency

Update a specific alert urgency by id

Sends a `PUT` request to `/v1/alert_urgencies/{id}`

```ignore
let response = client.update_alert_urgency()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert_urgency(&self) -> builder::UpdateAlertUrgency<'_> {
        builder::UpdateAlertUrgency::new(self)
    }
    /**Delete an alert urgency

Delete a specific alert urgency by id

Sends a `DELETE` request to `/v1/alert_urgencies/{id}`

```ignore
let response = client.delete_alert_urgency()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_alert_urgency(&self) -> builder::DeleteAlertUrgency<'_> {
        builder::DeleteAlertUrgency::new(self)
    }
    /**List alerts

List alerts

Sends a `GET` request to `/v1/alerts`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_ended_at_gt`
- `filter_ended_at_gte`
- `filter_ended_at_lt`
- `filter_ended_at_lte`
- `filter_environments`
- `filter_groups`
- `filter_labels`
- `filter_services`
- `filter_source`
- `filter_started_at_gt`
- `filter_started_at_gte`
- `filter_started_at_lt`
- `filter_started_at_lte`
- `filter_status`
- `filter_updated_at_gt`
- `filter_updated_at_gte`
- `filter_updated_at_lt`
- `filter_updated_at_lte`
- `include`: comma separated if needed. eg: environments,services,groups
- `page_after`: The cursor to fetch results using cursor pagination. A cursor is provided in meta.next_cursor in the response.
- `page_number`
- `page_size`
```ignore
let response = client.list_alerts()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_ended_at_gt(filter_ended_at_gt)
    .filter_ended_at_gte(filter_ended_at_gte)
    .filter_ended_at_lt(filter_ended_at_lt)
    .filter_ended_at_lte(filter_ended_at_lte)
    .filter_environments(filter_environments)
    .filter_groups(filter_groups)
    .filter_labels(filter_labels)
    .filter_services(filter_services)
    .filter_source(filter_source)
    .filter_started_at_gt(filter_started_at_gt)
    .filter_started_at_gte(filter_started_at_gte)
    .filter_started_at_lt(filter_started_at_lt)
    .filter_started_at_lte(filter_started_at_lte)
    .filter_status(filter_status)
    .filter_updated_at_gt(filter_updated_at_gt)
    .filter_updated_at_gte(filter_updated_at_gte)
    .filter_updated_at_lt(filter_updated_at_lt)
    .filter_updated_at_lte(filter_updated_at_lte)
    .include(include)
    .page_after(page_after)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_alerts(&self) -> builder::ListAlerts<'_> {
        builder::ListAlerts::new(self)
    }
    /**Creates an alert

Creates a new alert from provided data

Sends a `POST` request to `/v1/alerts`

```ignore
let response = client.create_alert()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert(&self) -> builder::CreateAlert<'_> {
        builder::CreateAlert::new(self)
    }
    /**List alert events

List alert_events

Sends a `GET` request to `/v1/alerts/{alert_id}/events`

```ignore
let response = client.list_alert_events()
    .alert_id(alert_id)
    .filter_action(filter_action)
    .filter_kind(filter_kind)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_alert_events(&self) -> builder::ListAlertEvents<'_> {
        builder::ListAlertEvents::new(self)
    }
    /**Create alert event

Creates a new alert event

Sends a `POST` request to `/v1/alerts/{alert_id}/events`

```ignore
let response = client.create_alert_event()
    .alert_id(alert_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_alert_event(&self) -> builder::CreateAlertEvent<'_> {
        builder::CreateAlertEvent::new(self)
    }
    /**Retrieves an alert

Retrieves a specific alert by id

Sends a `GET` request to `/v1/alerts/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: environments,services,groups
```ignore
let response = client.get_alert()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_alert(&self) -> builder::GetAlert<'_> {
        builder::GetAlert::new(self)
    }
    /**Update alert

Updates an alert

Sends a `PATCH` request to `/v1/alerts/{id}`

```ignore
let response = client.update_alert()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_alert(&self) -> builder::UpdateAlert<'_> {
        builder::UpdateAlert::new(self)
    }
    /**Acknowledges an alert

Acknowledges a specific alert by id

Sends a `POST` request to `/v1/alerts/{id}/acknowledge`

```ignore
let response = client.acknowledge_alert()
    .id(id)
    .send()
    .await;
```*/
    pub fn acknowledge_alert(&self) -> builder::AcknowledgeAlert<'_> {
        builder::AcknowledgeAlert::new(self)
    }
    /**Escalates an alert

Escalates a specific alert to the next or specified level in its escalation policy

Sends a `POST` request to `/v1/alerts/{id}/escalate`

```ignore
let response = client.escalate_alert()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn escalate_alert(&self) -> builder::EscalateAlert<'_> {
        builder::EscalateAlert::new(self)
    }
    /**Resolves an alert

Resolves a specific alert by id

Sends a `POST` request to `/v1/alerts/{id}/resolve`

```ignore
let response = client.resolve_alert()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn resolve_alert(&self) -> builder::ResolveAlert<'_> {
        builder::ResolveAlert::new(self)
    }
    /**Snoozes an alert

Snoozes a specific alert by id, extending the acknowledgment timeout

Sends a `POST` request to `/v1/alerts/{id}/snooze`

```ignore
let response = client.snooze_alert()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn snooze_alert(&self) -> builder::SnoozeAlert<'_> {
        builder::SnoozeAlert::new(self)
    }
    /**List API keys

List API keys for the current organization. Returns key metadata including name, kind, expiration, and last usage — the secret token value is never included in the response.

**API key kinds:**
- `personal` — tied to a specific user, inherits that user's permissions.
- `team` — scoped to one or more teams (groups), creates a service account with permissions derived from group membership.
- `organization` — organization-wide, creates a service account with a configurable role and on-call role.

**Automated rotation workflow:** Use `filter[expires_at][lt]` to find keys approaching expiration, then call the rotate endpoint to issue a new token before the old one expires. Combine with `filter[active]=true` to exclude already-expired keys.

**Sorting:** Use the `sort` parameter with a field name (e.g., `sort=expires_at`). Prefix with `-` for descending order (e.g., `sort=-created_at`). Allowed fields: `name`, `kind`, `created_at`, `updated_at`, `expires_at`, `last_used_at`.


Sends a `GET` request to `/v1/api_keys`

Arguments:
- `filter_active`: When true, return only non-expired keys
- `filter_created_at_gt`: Created after (ISO 8601)
- `filter_created_at_gte`: Created at or after (ISO 8601)
- `filter_created_at_lt`: Created before (ISO 8601)
- `filter_created_at_lte`: Created at or before (ISO 8601)
- `filter_expired`: When true, return only expired keys
- `filter_expires_at_gt`: Expires after (ISO 8601)
- `filter_expires_at_gte`: Expires at or after (ISO 8601)
- `filter_expires_at_lt`: Expires before (ISO 8601). Useful for finding keys approaching expiration.
- `filter_expires_at_lte`: Expires at or before (ISO 8601)
- `filter_group_ids`: Filter team keys by group IDs (comma-separated)
- `filter_kind`: Filter by API key kind: personal, team, organization
- `filter_last_used_at_gt`: Last used after (ISO 8601)
- `filter_last_used_at_gte`: Last used at or after (ISO 8601)
- `filter_last_used_at_lt`: Last used before (ISO 8601)
- `filter_last_used_at_lte`: Last used at or before (ISO 8601)
- `filter_name`: Filter by exact name
- `filter_role_id`: Filter by role ID
- `filter_search`: Search by name (case-insensitive partial match)
- `filter_user_id`: Filter by the user ID that owns the key
- `include`: Comma-separated list of relationships to include (role, on_call_role, created_by, groups)
- `page_number`
- `page_size`
- `sort`: Sort by field. Prefix with - for descending (e.g., -created_at, expires_at)
```ignore
let response = client.list_api_keys()
    .filter_active(filter_active)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_expired(filter_expired)
    .filter_expires_at_gt(filter_expires_at_gt)
    .filter_expires_at_gte(filter_expires_at_gte)
    .filter_expires_at_lt(filter_expires_at_lt)
    .filter_expires_at_lte(filter_expires_at_lte)
    .filter_group_ids(filter_group_ids)
    .filter_kind(filter_kind)
    .filter_last_used_at_gt(filter_last_used_at_gt)
    .filter_last_used_at_gte(filter_last_used_at_gte)
    .filter_last_used_at_lt(filter_last_used_at_lt)
    .filter_last_used_at_lte(filter_last_used_at_lte)
    .filter_name(filter_name)
    .filter_role_id(filter_role_id)
    .filter_search(filter_search)
    .filter_user_id(filter_user_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_api_keys(&self) -> builder::ListApiKeys<'_> {
        builder::ListApiKeys::new(self)
    }
    /**Creates an API key

Creates a new API key and returns it with the plaintext token. **The token is only returned once** — store it securely, as it cannot be retrieved again.

**Kinds and required fields:**
- `personal` — created for the authenticated user. No additional fields required.
- `team` — scoped to a team (group). Requires `group_id`. A service account is automatically created with permissions derived from group membership.
- `organization` — organization-wide access. Requires owner or admin role. Optionally set `role_id` and `on_call_role_id` to control the service account's permissions.

**Expiration:** All keys require an `expires_at` date set in the future (maximum 5 years). Names must be unique within their kind and scope.


Sends a `POST` request to `/v1/api_keys`

```ignore
let response = client.create_api_key()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_api_key(&self) -> builder::CreateApiKey<'_> {
        builder::CreateApiKey::new(self)
    }
    /**Retrieves an API key

Retrieves a specific API key by its UUID. Returns key metadata including name, kind, expiration, last usage timestamp, and the grace period status — the secret token is never included.

Sends a `GET` request to `/v1/api_keys/{id}`

Arguments:
- `id`
- `include`: Comma-separated list of relationships to include (role, on_call_role, created_by, groups)
```ignore
let response = client.get_api_key()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_api_key(&self) -> builder::GetApiKey<'_> {
        builder::GetApiKey::new(self)
    }
    /**Update an API key

Update an API key's mutable attributes: `name`, `description`, and `expires_at`.

The key's `kind`, `role_id`, `on_call_role_id`, and token cannot be changed after creation. To issue a new token, use the rotate endpoint. To change the role or kind, revoke the key and create a new one.

The new `expires_at` must be in the future and within 5 years.


Sends a `PUT` request to `/v1/api_keys/{id}`

```ignore
let response = client.update_api_key()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_api_key(&self) -> builder::UpdateApiKey<'_> {
        builder::UpdateApiKey::new(self)
    }
    /**Revoke an API key

Revoke an API key. The key is immediately invalidated and can no longer be used for authentication. This action cannot be undone.

For `team` and `organization` keys, the associated service account is also deleted. Any active sessions using this key will fail on the next request.


Sends a `DELETE` request to `/v1/api_keys/{id}`

```ignore
let response = client.delete_api_key()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_api_key(&self) -> builder::DeleteApiKey<'_> {
        builder::DeleteApiKey::new(self)
    }
    /**Rotate an API key

Rotate an API key's token. Issues a new secret token and returns it — **the new token is only shown once**, so store it securely.

**Self-only:** You can only rotate the API key that was used to authenticate this request. Attempting to rotate a different key returns `403 Forbidden`.

**Grace period:** When enabled for your organization, the previous token remains valid after rotation, giving you time to deploy the new token without downtime. Pass `grace_period_minutes` (integer, 0–1440, default 30) to control how long the old token stays valid. Set to 0 to immediately invalidate the old token. The `grace_period_ends_at` field in the response confirms the exact time the old token will stop working.

**Expiration:** Optionally provide a new `expires_at` date (ISO 8601, up to 5 years). Defaults to 90 days from now if omitted. Dates in the past are rejected.

**Typical rotation workflow:**
1. Call this endpoint to get a new token (optionally with a custom `grace_period_minutes`).
2. Deploy the new token to your systems.
3. The old token continues working for `grace_period_minutes` (if grace period is enabled).
4. After the grace period, the old token is automatically invalidated.


Sends a `POST` request to `/v1/api_keys/{id}/rotate`

```ignore
let response = client.rotate_api_key()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn rotate_api_key(&self) -> builder::RotateApiKey<'_> {
        builder::RotateApiKey::new(self)
    }
    /**List audits

List audits

Sends a `GET` request to `/v1/audits`

```ignore
let response = client.list_audits()
    .filter_api_key_id(filter_api_key_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_item_type(filter_item_type)
    .filter_source(filter_source)
    .filter_user_id(filter_user_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_audits(&self) -> builder::ListAudits<'_> {
        builder::ListAudits::new(self)
    }
    /**List authorizations

List authorizations

Sends a `GET` request to `/v1/authorizations`

```ignore
let response = client.list_authorizations()
    .filter_authorizable_id(filter_authorizable_id)
    .filter_authorizable_type(filter_authorizable_type)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_grantee_id(filter_grantee_id)
    .filter_grantee_type(filter_grantee_type)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_authorizations(&self) -> builder::ListAuthorizations<'_> {
        builder::ListAuthorizations::new(self)
    }
    /**Creates an authorization

Creates a new authorization from provided data

Sends a `POST` request to `/v1/authorizations`

```ignore
let response = client.create_authorization()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_authorization(&self) -> builder::CreateAuthorization<'_> {
        builder::CreateAuthorization::new(self)
    }
    /**Retrieves an authorization

Retrieves a specific authorization by id

Sends a `GET` request to `/v1/authorizations/{id}`

```ignore
let response = client.get_authorization()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_authorization(&self) -> builder::GetAuthorization<'_> {
        builder::GetAuthorization::new(self)
    }
    /**Update an authorization

Update a specific authorization by id

Sends a `PUT` request to `/v1/authorizations/{id}`

```ignore
let response = client.update_authorization()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_authorization(&self) -> builder::UpdateAuthorization<'_> {
        builder::UpdateAuthorization::new(self)
    }
    /**Delete an authorization

Delete a specific authorization by id

Sends a `DELETE` request to `/v1/authorizations/{id}`

```ignore
let response = client.delete_authorization()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_authorization(&self) -> builder::DeleteAuthorization<'_> {
        builder::DeleteAuthorization::new(self)
    }
    /**List catalog checklist templates

List catalog checklist templates

Sends a `GET` request to `/v1/catalog_checklist_templates`

Arguments:
- `filter_catalog_type`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_name`
- `filter_scope_type`
- `filter_slug`
- `include`: comma separated if needed. eg: template_fields,template_owners
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_catalog_checklist_templates()
    .filter_catalog_type(filter_catalog_type)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_scope_type(filter_scope_type)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_catalog_checklist_templates(
        &self,
    ) -> builder::ListCatalogChecklistTemplates<'_> {
        builder::ListCatalogChecklistTemplates::new(self)
    }
    /**Creates a catalog checklist template

Creates a new catalog checklist template

Sends a `POST` request to `/v1/catalog_checklist_templates`

```ignore
let response = client.create_catalog_checklist_template()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_catalog_checklist_template(
        &self,
    ) -> builder::CreateCatalogChecklistTemplate<'_> {
        builder::CreateCatalogChecklistTemplate::new(self)
    }
    /**Retrieves a catalog checklist template

Retrieves a specific catalog checklist template by id

Sends a `GET` request to `/v1/catalog_checklist_templates/{id}`

```ignore
let response = client.get_catalog_checklist_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_catalog_checklist_template(
        &self,
    ) -> builder::GetCatalogChecklistTemplate<'_> {
        builder::GetCatalogChecklistTemplate::new(self)
    }
    /**Update a catalog checklist template

Update a specific catalog checklist template by id

Sends a `PUT` request to `/v1/catalog_checklist_templates/{id}`

```ignore
let response = client.update_catalog_checklist_template()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_catalog_checklist_template(
        &self,
    ) -> builder::UpdateCatalogChecklistTemplate<'_> {
        builder::UpdateCatalogChecklistTemplate::new(self)
    }
    /**Delete a catalog checklist template

Delete a specific catalog checklist template by id

Sends a `DELETE` request to `/v1/catalog_checklist_templates/{id}`

```ignore
let response = client.delete_catalog_checklist_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_catalog_checklist_template(
        &self,
    ) -> builder::DeleteCatalogChecklistTemplate<'_> {
        builder::DeleteCatalogChecklistTemplate::new(self)
    }
    /**Trigger an audit for a catalog checklist template

Triggers an audit for all applicable entities of the checklist template

Sends a `POST` request to `/v1/catalog_checklist_templates/{id}/trigger`

```ignore
let response = client.trigger_catalog_checklist_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn trigger_catalog_checklist_template(
        &self,
    ) -> builder::TriggerCatalogChecklistTemplate<'_> {
        builder::TriggerCatalogChecklistTemplate::new(self)
    }
    /**List catalog properties

**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.

List Catalog Entity Properties.

Sends a `GET` request to `/v1/catalog_entities/{catalog_entity_id}/properties`

Arguments:
- `catalog_entity_id`
- `filter_catalog_field_id`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_key`
- `include`: comma separated if needed. eg: catalog_entity,catalog_field
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_catalog_entity_properties()
    .catalog_entity_id(catalog_entity_id)
    .filter_catalog_field_id(filter_catalog_field_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_key(filter_key)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_catalog_entity_properties(
        &self,
    ) -> builder::ListCatalogEntityProperties<'_> {
        builder::ListCatalogEntityProperties::new(self)
    }
    /**Creates a Catalog Entity Property

**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.

Creates a new Catalog Entity Property from provided data.

Sends a `POST` request to `/v1/catalog_entities/{catalog_entity_id}/properties`

```ignore
let response = client.create_catalog_entity_property()
    .catalog_entity_id(catalog_entity_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_catalog_entity_property(
        &self,
    ) -> builder::CreateCatalogEntityProperty<'_> {
        builder::CreateCatalogEntityProperty::new(self)
    }
    /**Retrieves a Catalog Entity

Retrieves a specific Catalog Entity by id

Sends a `GET` request to `/v1/catalog_entities/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: catalog,properties
```ignore
let response = client.get_catalog_entity()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_catalog_entity(&self) -> builder::GetCatalogEntity<'_> {
        builder::GetCatalogEntity::new(self)
    }
    /**Update a Catalog Entity

Update a specific Catalog Entity by id

Sends a `PUT` request to `/v1/catalog_entities/{id}`

```ignore
let response = client.update_catalog_entity()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_catalog_entity(&self) -> builder::UpdateCatalogEntity<'_> {
        builder::UpdateCatalogEntity::new(self)
    }
    /**Delete a Catalog Entity

Delete a specific Catalog Entity by id

Sends a `DELETE` request to `/v1/catalog_entities/{id}`

```ignore
let response = client.delete_catalog_entity()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_catalog_entity(&self) -> builder::DeleteCatalogEntity<'_> {
        builder::DeleteCatalogEntity::new(self)
    }
    /**List catalog entity checklists

List catalog entity checklists

Sends a `GET` request to `/v1/catalog_entity_checklists`

```ignore
let response = client.list_catalog_entity_checklists()
    .filter_auditable_id(filter_auditable_id)
    .filter_auditable_type(filter_auditable_type)
    .filter_catalog_checklist_template_id(filter_catalog_checklist_template_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_status(filter_status)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_catalog_entity_checklists(
        &self,
    ) -> builder::ListCatalogEntityChecklists<'_> {
        builder::ListCatalogEntityChecklists::new(self)
    }
    /**Retrieves a catalog entity checklist

Retrieves a specific catalog entity checklist by id

Sends a `GET` request to `/v1/catalog_entity_checklists/{id}`

```ignore
let response = client.get_catalog_entity_checklist()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_catalog_entity_checklist(
        &self,
    ) -> builder::GetCatalogEntityChecklist<'_> {
        builder::GetCatalogEntityChecklist::new(self)
    }
    /**Retrieves a Catalog Entity Property

**Deprecated:** This endpoint is deprecated, please use `include=fields` on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to retrieve field values instead.

Retrieves a specific Catalog Entity Property by id.

Sends a `GET` request to `/v1/catalog_entity_properties/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: catalog_entity,catalog_field
```ignore
let response = client.get_catalog_entity_property()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_catalog_entity_property(&self) -> builder::GetCatalogEntityProperty<'_> {
        builder::GetCatalogEntityProperty::new(self)
    }
    /**Update a Catalog Entity Property

**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.

Update a specific Catalog Entity Property by id.

Sends a `PUT` request to `/v1/catalog_entity_properties/{id}`

```ignore
let response = client.update_catalog_entity_property()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_catalog_entity_property(
        &self,
    ) -> builder::UpdateCatalogEntityProperty<'_> {
        builder::UpdateCatalogEntityProperty::new(self)
    }
    /**Delete a Catalog Entity Property

**Deprecated:** This endpoint is deprecated, please use the `fields` attribute on catalog entities or native catalog endpoints (teams, services, functionalities, incident_types, causes, environments) to set field values instead.

Delete a specific Catalog Entity Property by id.

Sends a `DELETE` request to `/v1/catalog_entity_properties/{id}`

```ignore
let response = client.delete_catalog_entity_property()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_catalog_entity_property(
        &self,
    ) -> builder::DeleteCatalogEntityProperty<'_> {
        builder::DeleteCatalogEntityProperty::new(self)
    }
    /**Retrieves a Catalog Property (alias for field)

Retrieves a specific Catalog Property by id - returns catalog_properties type

Sends a `GET` request to `/v1/catalog_properties/{id}`

```ignore
let response = client.get_catalog_property()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_catalog_property(&self) -> builder::GetCatalogProperty<'_> {
        builder::GetCatalogProperty::new(self)
    }
    /**Update a catalog_property (alias for field)

Update a specific catalog_property by id - returns catalog_properties type

Sends a `PUT` request to `/v1/catalog_properties/{id}`

```ignore
let response = client.update_catalog_property()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_catalog_property(&self) -> builder::UpdateCatalogProperty<'_> {
        builder::UpdateCatalogProperty::new(self)
    }
    /**Delete a catalog_property

Delete a specific catalog_property by id - returns catalog_properties type

Sends a `DELETE` request to `/v1/catalog_properties/{id}`

```ignore
let response = client.delete_catalog_property()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_catalog_property(&self) -> builder::DeleteCatalogProperty<'_> {
        builder::DeleteCatalogProperty::new(self)
    }
    /**List catalogs

List catalogs

Sends a `GET` request to `/v1/catalogs`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_name`
- `filter_search`
- `filter_slug`
- `include`: comma separated if needed. eg: fields,entities
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_catalogs()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_catalogs(&self) -> builder::ListCatalogs<'_> {
        builder::ListCatalogs::new(self)
    }
    /**Creates a catalog

Creates a new catalog from provided data

Sends a `POST` request to `/v1/catalogs`

```ignore
let response = client.create_catalog()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_catalog(&self) -> builder::CreateCatalog<'_> {
        builder::CreateCatalog::new(self)
    }
    /**List Catalog Entities

List Catalog Entities

Sends a `GET` request to `/v1/catalogs/{catalog_id}/entities`

Arguments:
- `catalog_id`
- `filter_backstage_id`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_name`
- `filter_search`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog,properties
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_catalog_entities()
    .catalog_id(catalog_id)
    .filter_backstage_id(filter_backstage_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_catalog_entities(&self) -> builder::ListCatalogEntities<'_> {
        builder::ListCatalogEntities::new(self)
    }
    /**Creates a Catalog Entity

Creates a new Catalog Entity from provided data

Sends a `POST` request to `/v1/catalogs/{catalog_id}/entities`

```ignore
let response = client.create_catalog_entity()
    .catalog_id(catalog_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_catalog_entity(&self) -> builder::CreateCatalogEntity<'_> {
        builder::CreateCatalogEntity::new(self)
    }
    /**List Catalog Properties (alias for fields)

List Catalog Properties - returns catalog_properties type

Sends a `GET` request to `/v1/catalogs/{catalog_id}/properties`

```ignore
let response = client.list_catalog_properties()
    .catalog_id(catalog_id)
    .send()
    .await;
```*/
    pub fn list_catalog_properties(&self) -> builder::ListCatalogProperties<'_> {
        builder::ListCatalogProperties::new(self)
    }
    /**Creates a Catalog Property (alias for field)

Creates a new Catalog Property - returns catalog_properties type

Sends a `POST` request to `/v1/catalogs/{catalog_id}/properties`

```ignore
let response = client.create_catalog_property()
    .catalog_id(catalog_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_catalog_property(&self) -> builder::CreateCatalogProperty<'_> {
        builder::CreateCatalogProperty::new(self)
    }
    /**Retrieves a catalog

Retrieves a specific catalog by id

Sends a `GET` request to `/v1/catalogs/{id}`

```ignore
let response = client.get_catalog()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_catalog(&self) -> builder::GetCatalog<'_> {
        builder::GetCatalog::new(self)
    }
    /**Update a catalog

Update a specific catalog by id

Sends a `PUT` request to `/v1/catalogs/{id}`

```ignore
let response = client.update_catalog()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_catalog(&self) -> builder::UpdateCatalog<'_> {
        builder::UpdateCatalog::new(self)
    }
    /**Delete a catalog

Delete a specific catalog by id

Sends a `DELETE` request to `/v1/catalogs/{id}`

```ignore
let response = client.delete_catalog()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_catalog(&self) -> builder::DeleteCatalog<'_> {
        builder::DeleteCatalog::new(self)
    }
    /**List causes

List causes

Sends a `GET` request to `/v1/causes`

```ignore
let response = client.list_causes()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_causes(&self) -> builder::ListCauses<'_> {
        builder::ListCauses::new(self)
    }
    /**Creates a cause

Creates a new cause from provided data

Sends a `POST` request to `/v1/causes`

```ignore
let response = client.create_cause()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_cause(&self) -> builder::CreateCause<'_> {
        builder::CreateCause::new(self)
    }
    /**List Catalog Properties

List Cause Catalog Properties

Sends a `GET` request to `/v1/causes/properties`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `filter_name`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_cause_catalog_properties()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_cause_catalog_properties(
        &self,
    ) -> builder::ListCauseCatalogProperties<'_> {
        builder::ListCauseCatalogProperties::new(self)
    }
    /**Creates a Catalog Property

Creates a new Catalog Property from provided data

Sends a `POST` request to `/v1/causes/properties`

```ignore
let response = client.create_cause_catalog_property()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_cause_catalog_property(
        &self,
    ) -> builder::CreateCauseCatalogProperty<'_> {
        builder::CreateCauseCatalogProperty::new(self)
    }
    /**Retrieves a cause

Retrieves a specific cause by id

Sends a `GET` request to `/v1/causes/{id}`

```ignore
let response = client.get_cause()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_cause(&self) -> builder::GetCause<'_> {
        builder::GetCause::new(self)
    }
    /**Update a cause

Update a specific cause by id

Sends a `PUT` request to `/v1/causes/{id}`

```ignore
let response = client.update_cause()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_cause(&self) -> builder::UpdateCause<'_> {
        builder::UpdateCause::new(self)
    }
    /**Delete a cause

Delete a specific cause by id

Sends a `DELETE` request to `/v1/causes/{id}`

```ignore
let response = client.delete_cause()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_cause(&self) -> builder::DeleteCause<'_> {
        builder::DeleteCause::new(self)
    }
    /**Lists communications groups

Lists communications groups

Sends a `GET` request to `/v1/communications/groups`

```ignore
let response = client.list_communications_groups()
    .filter_communication_type_id(filter_communication_type_id)
    .filter_condition_type(filter_condition_type)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_is_private(filter_is_private)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_communications_groups(&self) -> builder::ListCommunicationsGroups<'_> {
        builder::ListCommunicationsGroups::new(self)
    }
    /**Creates a communications group

Creates a new communications group from provided data

Sends a `POST` request to `/v1/communications/groups`

```ignore
let response = client.create_communications_group()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_communications_group(&self) -> builder::CreateCommunicationsGroup<'_> {
        builder::CreateCommunicationsGroup::new(self)
    }
    /**Shows a communications group

Shows details of a communications group

Sends a `GET` request to `/v1/communications/groups/{id}`

Arguments:
- `id`: Communications Group ID
```ignore
let response = client.get_communications_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_communications_group(&self) -> builder::GetCommunicationsGroup<'_> {
        builder::GetCommunicationsGroup::new(self)
    }
    /**Deletes a communications group

Deletes a communications group

Sends a `DELETE` request to `/v1/communications/groups/{id}`

Arguments:
- `id`: Communications Group ID
```ignore
let response = client.delete_communications_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_communications_group(&self) -> builder::DeleteCommunicationsGroup<'_> {
        builder::DeleteCommunicationsGroup::new(self)
    }
    /**Updates a communications group

Updates a communications group

Sends a `PATCH` request to `/v1/communications/groups/{id}`

Arguments:
- `id`: Communications Group ID
- `body`
```ignore
let response = client.update_communications_group()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_communications_group(&self) -> builder::UpdateCommunicationsGroup<'_> {
        builder::UpdateCommunicationsGroup::new(self)
    }
    /**Lists communications stages

Lists communications stages

Sends a `GET` request to `/v1/communications/stages`

```ignore
let response = client.list_communications_stages()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_communications_stages(&self) -> builder::ListCommunicationsStages<'_> {
        builder::ListCommunicationsStages::new(self)
    }
    /**Creates a communications stage

Creates a new communications stage from provided data

Sends a `POST` request to `/v1/communications/stages`

```ignore
let response = client.create_communications_stage()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_communications_stage(&self) -> builder::CreateCommunicationsStage<'_> {
        builder::CreateCommunicationsStage::new(self)
    }
    /**Shows a communications stage

Shows details of a communications stage

Sends a `GET` request to `/v1/communications/stages/{id}`

Arguments:
- `id`: Communications Stage ID
```ignore
let response = client.get_communications_stage()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_communications_stage(&self) -> builder::GetCommunicationsStage<'_> {
        builder::GetCommunicationsStage::new(self)
    }
    /**Deletes a communications stage

Deletes a communications stage

Sends a `DELETE` request to `/v1/communications/stages/{id}`

Arguments:
- `id`: Communications Stage ID
```ignore
let response = client.delete_communications_stage()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_communications_stage(&self) -> builder::DeleteCommunicationsStage<'_> {
        builder::DeleteCommunicationsStage::new(self)
    }
    /**Updates a communications stage

Updates a communications stage

Sends a `PATCH` request to `/v1/communications/stages/{id}`

Arguments:
- `id`: Communications Stage ID
- `body`
```ignore
let response = client.update_communications_stage()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_communications_stage(&self) -> builder::UpdateCommunicationsStage<'_> {
        builder::UpdateCommunicationsStage::new(self)
    }
    /**Lists communications templates

Lists communications templates

Sends a `GET` request to `/v1/communications/templates`

```ignore
let response = client.list_communications_templates()
    .filter_communication_type_id(filter_communication_type_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_communications_templates(
        &self,
    ) -> builder::ListCommunicationsTemplates<'_> {
        builder::ListCommunicationsTemplates::new(self)
    }
    /**Creates a communications template

Creates a new communications template from provided data

Sends a `POST` request to `/v1/communications/templates`

```ignore
let response = client.create_communications_template()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_communications_template(
        &self,
    ) -> builder::CreateCommunicationsTemplate<'_> {
        builder::CreateCommunicationsTemplate::new(self)
    }
    /**Shows a communications template

Shows details of a communications template

Sends a `GET` request to `/v1/communications/templates/{id}`

Arguments:
- `id`: Communications Template ID
```ignore
let response = client.get_communications_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_communications_template(&self) -> builder::GetCommunicationsTemplate<'_> {
        builder::GetCommunicationsTemplate::new(self)
    }
    /**Deletes a communications template

Deletes a communications template

Sends a `DELETE` request to `/v1/communications/templates/{id}`

Arguments:
- `id`: Communications Template ID
```ignore
let response = client.delete_communications_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_communications_template(
        &self,
    ) -> builder::DeleteCommunicationsTemplate<'_> {
        builder::DeleteCommunicationsTemplate::new(self)
    }
    /**Updates a communications template

Updates a communications template

Sends a `PATCH` request to `/v1/communications/templates/{id}`

Arguments:
- `id`: Communications Template ID
- `body`
```ignore
let response = client.update_communications_template()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_communications_template(
        &self,
    ) -> builder::UpdateCommunicationsTemplate<'_> {
        builder::UpdateCommunicationsTemplate::new(self)
    }
    /**Lists communications types

Lists communications types

Sends a `GET` request to `/v1/communications/types`

```ignore
let response = client.list_communications_types()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_communications_types(&self) -> builder::ListCommunicationsTypes<'_> {
        builder::ListCommunicationsTypes::new(self)
    }
    /**Creates a communications type

Creates a new communications type from provided data

Sends a `POST` request to `/v1/communications/types`

```ignore
let response = client.create_communications_type()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_communications_type(&self) -> builder::CreateCommunicationsType<'_> {
        builder::CreateCommunicationsType::new(self)
    }
    /**Shows a communications type

Shows details of a communications type

Sends a `GET` request to `/v1/communications/types/{id}`

Arguments:
- `id`: Communications Type ID
```ignore
let response = client.get_communications_type()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_communications_type(&self) -> builder::GetCommunicationsType<'_> {
        builder::GetCommunicationsType::new(self)
    }
    /**Deletes a communications type

Deletes a communications type

Sends a `DELETE` request to `/v1/communications/types/{id}`

Arguments:
- `id`: Communications Type ID
```ignore
let response = client.delete_communications_type()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_communications_type(&self) -> builder::DeleteCommunicationsType<'_> {
        builder::DeleteCommunicationsType::new(self)
    }
    /**Updates a communications type

Updates a communications type

Sends a `PATCH` request to `/v1/communications/types/{id}`

Arguments:
- `id`: Communications Type ID
- `body`
```ignore
let response = client.update_communications_type()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_communications_type(&self) -> builder::UpdateCommunicationsType<'_> {
        builder::UpdateCommunicationsType::new(self)
    }
    /**[DEPRECATED] Retrieves a custom field option

[DEPRECATED] Use form field endpoints instead. Retrieves a specific custom field option by id

Sends a `GET` request to `/v1/custom_field_options/{id}`

```ignore
let response = client.get_custom_field_option()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_custom_field_option(&self) -> builder::GetCustomFieldOption<'_> {
        builder::GetCustomFieldOption::new(self)
    }
    /**[DEPRECATED] Update a custom field option

[DEPRECATED] Use form field endpoints instead. Update a specific custom field option by id

Sends a `PUT` request to `/v1/custom_field_options/{id}`

```ignore
let response = client.update_custom_field_option()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_custom_field_option(&self) -> builder::UpdateCustomFieldOption<'_> {
        builder::UpdateCustomFieldOption::new(self)
    }
    /**[DEPRECATED] Delete a custom field option

[DEPRECATED] Use form field endpoints instead. Delete a specific Custom Field Option by id

Sends a `DELETE` request to `/v1/custom_field_options/{id}`

```ignore
let response = client.delete_custom_field_option()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_custom_field_option(&self) -> builder::DeleteCustomFieldOption<'_> {
        builder::DeleteCustomFieldOption::new(self)
    }
    /**[DEPRECATED] List Custom Fields

[DEPRECATED] Use form field endpoints instead. List Custom fields

Sends a `GET` request to `/v1/custom_fields`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_enabled`
- `filter_kind`
- `filter_label`
- `filter_slug`
- `include`: comma separated if needed. eg: options
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_custom_fields()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_enabled(filter_enabled)
    .filter_kind(filter_kind)
    .filter_label(filter_label)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_custom_fields(&self) -> builder::ListCustomFields<'_> {
        builder::ListCustomFields::new(self)
    }
    /**[DEPRECATED] Creates a Custom Field

[DEPRECATED] Use form field endpoints instead. Creates a new custom field from provided data

Sends a `POST` request to `/v1/custom_fields`

```ignore
let response = client.create_custom_field()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_custom_field(&self) -> builder::CreateCustomField<'_> {
        builder::CreateCustomField::new(self)
    }
    /**[DEPRECATED] List custom field options

[DEPRECATED] Use form field endpoints instead. List custom field options

Sends a `GET` request to `/v1/custom_fields/{custom_field_id}/options`

```ignore
let response = client.list_custom_field_options()
    .custom_field_id(custom_field_id)
    .filter_color(filter_color)
    .filter_value(filter_value)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_custom_field_options(&self) -> builder::ListCustomFieldOptions<'_> {
        builder::ListCustomFieldOptions::new(self)
    }
    /**[DEPRECATED] Creates a custom field option

[DEPRECATED] Use form field endpoints instead. Creates a new custom field option from provided data

Sends a `POST` request to `/v1/custom_fields/{custom_field_id}/options`

```ignore
let response = client.create_custom_field_option()
    .custom_field_id(custom_field_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_custom_field_option(&self) -> builder::CreateCustomFieldOption<'_> {
        builder::CreateCustomFieldOption::new(self)
    }
    /**[DEPRECATED] Retrieves a Custom Field

Retrieves a specific custom_field by id

Sends a `GET` request to `/v1/custom_fields/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: options
```ignore
let response = client.get_custom_field()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_custom_field(&self) -> builder::GetCustomField<'_> {
        builder::GetCustomField::new(self)
    }
    /**[DEPRECATED] Update a Custom Field

[DEPRECATED] Use form field endpoints instead. Update a specific custom field by id

Sends a `PUT` request to `/v1/custom_fields/{id}`

```ignore
let response = client.update_custom_field()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_custom_field(&self) -> builder::UpdateCustomField<'_> {
        builder::UpdateCustomField::new(self)
    }
    /**[DEPRECATED] Delete a Custom Field

[DEPRECATED] Use form field endpoints instead. Delete a specific custom field by id

Sends a `DELETE` request to `/v1/custom_fields/{id}`

```ignore
let response = client.delete_custom_field()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_custom_field(&self) -> builder::DeleteCustomField<'_> {
        builder::DeleteCustomField::new(self)
    }
    /**List custom forms

List custom forms

Sends a `GET` request to `/v1/custom_forms`

```ignore
let response = client.list_custom_forms()
    .filter_command(filter_command)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_custom_forms(&self) -> builder::ListCustomForms<'_> {
        builder::ListCustomForms::new(self)
    }
    /**Creates a custom form

Creates a new custom form from provided data

Sends a `POST` request to `/v1/custom_forms`

```ignore
let response = client.create_custom_form()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_custom_form(&self) -> builder::CreateCustomForm<'_> {
        builder::CreateCustomForm::new(self)
    }
    /**Retrieves a custom form

Retrieves a specific custom form by id

Sends a `GET` request to `/v1/custom_forms/{id}`

```ignore
let response = client.get_custom_form()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_custom_form(&self) -> builder::GetCustomForm<'_> {
        builder::GetCustomForm::new(self)
    }
    /**Update a custom form

Update a specific custom form by id

Sends a `PUT` request to `/v1/custom_forms/{id}`

```ignore
let response = client.update_custom_form()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_custom_form(&self) -> builder::UpdateCustomForm<'_> {
        builder::UpdateCustomForm::new(self)
    }
    /**Delete a custom form

Delete a specific custom form by id

Sends a `DELETE` request to `/v1/custom_forms/{id}`

```ignore
let response = client.delete_custom_form()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_custom_form(&self) -> builder::DeleteCustomForm<'_> {
        builder::DeleteCustomForm::new(self)
    }
    /**Retrieves a dashboard panel

Retrieves a specific dashboard panel by id

Sends a `GET` request to `/v1/dashboard_panels/{id}`

Arguments:
- `id`
- `period`: The time period to group data by. Accepts 'day', 'week', and 'month'
- `range`: Date range for panel data, ISO8601 timestamps separated by the word 'to'. Ex: '2022-06-19T11:28:46.029Z to 2022-07-18T21:58:46.029Z'.
- `time_zone`: The time zone to use for period
```ignore
let response = client.get_dashboard_panel()
    .id(id)
    .period(period)
    .range(range)
    .time_zone(time_zone)
    .send()
    .await;
```*/
    pub fn get_dashboard_panel(&self) -> builder::GetDashboardPanel<'_> {
        builder::GetDashboardPanel::new(self)
    }
    /**Update a dashboard panel

Update a specific dashboard panel by id

Sends a `PUT` request to `/v1/dashboard_panels/{id}`

```ignore
let response = client.update_dashboard_panel()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_dashboard_panel(&self) -> builder::UpdateDashboardPanel<'_> {
        builder::UpdateDashboardPanel::new(self)
    }
    /**Delete a dashboard panel

Delete a specific dashboard panel by id

Sends a `DELETE` request to `/v1/dashboard_panels/{id}`

```ignore
let response = client.delete_dashboard_panel()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_dashboard_panel(&self) -> builder::DeleteDashboardPanel<'_> {
        builder::DeleteDashboardPanel::new(self)
    }
    /**Duplicates a dashboard panel

Duplicates a dashboard panel

Sends a `POST` request to `/v1/dashboard_panels/{id}/duplicate`

```ignore
let response = client.duplicate_dashboard_panel()
    .id(id)
    .send()
    .await;
```*/
    pub fn duplicate_dashboard_panel(&self) -> builder::DuplicateDashboardPanel<'_> {
        builder::DuplicateDashboardPanel::new(self)
    }
    /**List dashboards

List dashboards

Sends a `GET` request to `/v1/dashboards`

Arguments:
- `include`: comma separated if needed. eg: panels
- `page_number`
- `page_size`
```ignore
let response = client.list_dashboards()
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_dashboards(&self) -> builder::ListDashboards<'_> {
        builder::ListDashboards::new(self)
    }
    /**Creates a dashboard

Creates a new dashboard from provided data

Sends a `POST` request to `/v1/dashboards`

```ignore
let response = client.create_dashboard()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_dashboard(&self) -> builder::CreateDashboard<'_> {
        builder::CreateDashboard::new(self)
    }
    /**List dashboard panels

List dashboard panels

Sends a `GET` request to `/v1/dashboards/{dashboard_id}/panels`

```ignore
let response = client.list_dashboard_panels()
    .dashboard_id(dashboard_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_dashboard_panels(&self) -> builder::ListDashboardPanels<'_> {
        builder::ListDashboardPanels::new(self)
    }
    /**Creates a dashboard panel

Creates a new dashboard panel from provided data

Sends a `POST` request to `/v1/dashboards/{dashboard_id}/panels`

```ignore
let response = client.create_dashboard_panel()
    .dashboard_id(dashboard_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_dashboard_panel(&self) -> builder::CreateDashboardPanel<'_> {
        builder::CreateDashboardPanel::new(self)
    }
    /**Retrieves a dashboard

Retrieves a specific dashboard by id

Sends a `GET` request to `/v1/dashboards/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: panels
```ignore
let response = client.get_dashboard()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_dashboard(&self) -> builder::GetDashboard<'_> {
        builder::GetDashboard::new(self)
    }
    /**Update a dashboard

Update a specific dashboard by id

Sends a `PUT` request to `/v1/dashboards/{id}`

```ignore
let response = client.update_dashboard()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_dashboard(&self) -> builder::UpdateDashboard<'_> {
        builder::UpdateDashboard::new(self)
    }
    /**Delete a dashboard

Delete a specific dashboard by id

Sends a `DELETE` request to `/v1/dashboards/{id}`

```ignore
let response = client.delete_dashboard()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_dashboard(&self) -> builder::DeleteDashboard<'_> {
        builder::DeleteDashboard::new(self)
    }
    /**Duplicates a dashboard

Duplicates a dashboard

Sends a `POST` request to `/v1/dashboards/{id}/duplicate`

```ignore
let response = client.duplicate_dashboard()
    .id(id)
    .send()
    .await;
```*/
    pub fn duplicate_dashboard(&self) -> builder::DuplicateDashboard<'_> {
        builder::DuplicateDashboard::new(self)
    }
    /**Sets dashboard to user default

Sets dashboard to user default

Sends a `POST` request to `/v1/dashboards/{id}/set_default`

```ignore
let response = client.set_default_dashboard()
    .id(id)
    .send()
    .await;
```*/
    pub fn set_default_dashboard(&self) -> builder::SetDefaultDashboard<'_> {
        builder::SetDefaultDashboard::new(self)
    }
    /**List edge connectors

Sends a `GET` request to `/v1/edge_connectors`

Arguments:
- `name`: Filter by name (partial match)
- `page`
- `per_page`
- `status`: Filter by status (active/paused)
```ignore
let response = client.list_edge_connectors()
    .name(name)
    .page(page)
    .per_page(per_page)
    .status(status)
    .send()
    .await;
```*/
    pub fn list_edge_connectors(&self) -> builder::ListEdgeConnectors<'_> {
        builder::ListEdgeConnectors::new(self)
    }
    /**Create edge connector

Sends a `POST` request to `/v1/edge_connectors`

```ignore
let response = client.create_edge_connector()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_edge_connector(&self) -> builder::CreateEdgeConnector<'_> {
        builder::CreateEdgeConnector::new(self)
    }
    /**List edge connector actions

Sends a `GET` request to `/v1/edge_connectors/{edge_connector_id}/actions`

Arguments:
- `edge_connector_id`: Edge connector ID
```ignore
let response = client.list_edge_connector_actions()
    .edge_connector_id(edge_connector_id)
    .send()
    .await;
```*/
    pub fn list_edge_connector_actions(&self) -> builder::ListEdgeConnectorActions<'_> {
        builder::ListEdgeConnectorActions::new(self)
    }
    /**Create edge connector action

Sends a `POST` request to `/v1/edge_connectors/{edge_connector_id}/actions`

Arguments:
- `edge_connector_id`: Edge connector ID
- `body`
```ignore
let response = client.create_edge_connector_action()
    .edge_connector_id(edge_connector_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_edge_connector_action(
        &self,
    ) -> builder::CreateEdgeConnectorAction<'_> {
        builder::CreateEdgeConnectorAction::new(self)
    }
    /**Show edge connector action

Sends a `GET` request to `/v1/edge_connectors/{edge_connector_id}/actions/{id}`

Arguments:
- `edge_connector_id`: Edge connector ID
- `id`
```ignore
let response = client.get_edge_connector_action()
    .edge_connector_id(edge_connector_id)
    .id(id)
    .send()
    .await;
```*/
    pub fn get_edge_connector_action(&self) -> builder::GetEdgeConnectorAction<'_> {
        builder::GetEdgeConnectorAction::new(self)
    }
    /**Delete edge connector action

Sends a `DELETE` request to `/v1/edge_connectors/{edge_connector_id}/actions/{id}`

Arguments:
- `edge_connector_id`: Edge connector ID
- `id`
```ignore
let response = client.delete_edge_connector_action()
    .edge_connector_id(edge_connector_id)
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_edge_connector_action(
        &self,
    ) -> builder::DeleteEdgeConnectorAction<'_> {
        builder::DeleteEdgeConnectorAction::new(self)
    }
    /**Update edge connector action

Sends a `PATCH` request to `/v1/edge_connectors/{edge_connector_id}/actions/{id}`

Arguments:
- `edge_connector_id`: Edge connector ID
- `id`
- `body`
```ignore
let response = client.update_edge_connector_action()
    .edge_connector_id(edge_connector_id)
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_edge_connector_action(
        &self,
    ) -> builder::UpdateEdgeConnectorAction<'_> {
        builder::UpdateEdgeConnectorAction::new(self)
    }
    /**Show edge connector

Sends a `GET` request to `/v1/edge_connectors/{id}`

Arguments:
- `id`: Edge connector ID
```ignore
let response = client.get_edge_connector()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_edge_connector(&self) -> builder::GetEdgeConnector<'_> {
        builder::GetEdgeConnector::new(self)
    }
    /**Delete edge connector

Sends a `DELETE` request to `/v1/edge_connectors/{id}`

Arguments:
- `id`: Edge connector ID
```ignore
let response = client.delete_edge_connector()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_edge_connector(&self) -> builder::DeleteEdgeConnector<'_> {
        builder::DeleteEdgeConnector::new(self)
    }
    /**Update edge connector

Sends a `PATCH` request to `/v1/edge_connectors/{id}`

Arguments:
- `id`: Edge connector ID
- `body`
```ignore
let response = client.update_edge_connector()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_edge_connector(&self) -> builder::UpdateEdgeConnector<'_> {
        builder::UpdateEdgeConnector::new(self)
    }
    /**Show user email address

Retrieves a specific user email address

Sends a `GET` request to `/v1/email_addresses/{id}`

```ignore
let response = client.show_user_email_address()
    .id(id)
    .send()
    .await;
```*/
    pub fn show_user_email_address(&self) -> builder::ShowUserEmailAddress<'_> {
        builder::ShowUserEmailAddress::new(self)
    }
    /**Update user email address

Updates a user email address

Sends a `PUT` request to `/v1/email_addresses/{id}`

```ignore
let response = client.update_user_email_address()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_user_email_address(&self) -> builder::UpdateUserEmailAddress<'_> {
        builder::UpdateUserEmailAddress::new(self)
    }
    /**Delete user email address

Deletes a user email address

Sends a `DELETE` request to `/v1/email_addresses/{id}`

```ignore
let response = client.delete_user_email_address()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_user_email_address(&self) -> builder::DeleteUserEmailAddress<'_> {
        builder::DeleteUserEmailAddress::new(self)
    }
    /**Resends verification email

Resends verification email for an email address

Sends a `POST` request to `/v1/email_addresses/{id}/resend_verification`

```ignore
let response = client.resend_user_email_address_verification()
    .id(id)
    .send()
    .await;
```*/
    pub fn resend_user_email_address_verification(
        &self,
    ) -> builder::ResendUserEmailAddressVerification<'_> {
        builder::ResendUserEmailAddressVerification::new(self)
    }
    /**Verifies an email address with token

Verifies an email address using a verification token

Sends a `POST` request to `/v1/email_addresses/{id}/verify`

```ignore
let response = client.verify_user_email_address()
    .id(id)
    .token(token)
    .send()
    .await;
```*/
    pub fn verify_user_email_address(&self) -> builder::VerifyUserEmailAddress<'_> {
        builder::VerifyUserEmailAddress::new(self)
    }
    /**List environments

List environments

Sends a `GET` request to `/v1/environments`

```ignore
let response = client.list_environments()
    .filter_color(filter_color)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_environments(&self) -> builder::ListEnvironments<'_> {
        builder::ListEnvironments::new(self)
    }
    /**Creates an environment

Creates a new environment from provided data

Sends a `POST` request to `/v1/environments`

```ignore
let response = client.create_environment()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_environment(&self) -> builder::CreateEnvironment<'_> {
        builder::CreateEnvironment::new(self)
    }
    /**List Catalog Properties

List Environment Catalog Properties

Sends a `GET` request to `/v1/environments/properties`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `filter_name`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_environment_catalog_properties()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_environment_catalog_properties(
        &self,
    ) -> builder::ListEnvironmentCatalogProperties<'_> {
        builder::ListEnvironmentCatalogProperties::new(self)
    }
    /**Creates a Catalog Property

Creates a new Catalog Property from provided data

Sends a `POST` request to `/v1/environments/properties`

```ignore
let response = client.create_environment_catalog_property()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_environment_catalog_property(
        &self,
    ) -> builder::CreateEnvironmentCatalogProperty<'_> {
        builder::CreateEnvironmentCatalogProperty::new(self)
    }
    /**Retrieves an environment

Retrieves a specific environment by id

Sends a `GET` request to `/v1/environments/{id}`

```ignore
let response = client.get_environment()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_environment(&self) -> builder::GetEnvironment<'_> {
        builder::GetEnvironment::new(self)
    }
    /**Update an environment

Update a specific environment by id

Sends a `PUT` request to `/v1/environments/{id}`

```ignore
let response = client.update_environment()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_environment(&self) -> builder::UpdateEnvironment<'_> {
        builder::UpdateEnvironment::new(self)
    }
    /**Delete an environment

Delete a specific environment by id

Sends a `DELETE` request to `/v1/environments/{id}`

```ignore
let response = client.delete_environment()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_environment(&self) -> builder::DeleteEnvironment<'_> {
        builder::DeleteEnvironment::new(self)
    }
    /**Retrieves an escalation level

Retrieves a specific escalation level by id

Sends a `GET` request to `/v1/escalation_levels/{id}`

```ignore
let response = client.get_escalation_level()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_escalation_level(&self) -> builder::GetEscalationLevel<'_> {
        builder::GetEscalationLevel::new(self)
    }
    /**Update an escalation level

Update a specific escalation level by id

Sends a `PUT` request to `/v1/escalation_levels/{id}`

```ignore
let response = client.update_escalation_level()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_escalation_level(&self) -> builder::UpdateEscalationLevel<'_> {
        builder::UpdateEscalationLevel::new(self)
    }
    /**Delete an escalation level

Delete a specific escalation level by id

Sends a `DELETE` request to `/v1/escalation_levels/{id}`

```ignore
let response = client.delete_escalation_level()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_escalation_level(&self) -> builder::DeleteEscalationLevel<'_> {
        builder::DeleteEscalationLevel::new(self)
    }
    /**List escalation levels for an Escalation Path

List escalation levels

Sends a `GET` request to `/v1/escalation_paths/{escalation_policy_path_id}/escalation_levels`

```ignore
let response = client.list_escalation_levels_paths()
    .escalation_policy_path_id(escalation_policy_path_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_escalation_levels_paths(
        &self,
    ) -> builder::ListEscalationLevelsPaths<'_> {
        builder::ListEscalationLevelsPaths::new(self)
    }
    /**Creates an escalation level for an Escalation Path

Creates a new escalation level from provided data

Sends a `POST` request to `/v1/escalation_paths/{escalation_policy_path_id}/escalation_levels`

```ignore
let response = client.create_escalation_level_paths()
    .escalation_policy_path_id(escalation_policy_path_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_escalation_level_paths(
        &self,
    ) -> builder::CreateEscalationLevelPaths<'_> {
        builder::CreateEscalationLevelPaths::new(self)
    }
    /**Retrieves an escalation path

Retrieves a specific escalation path by id

Sends a `GET` request to `/v1/escalation_paths/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: escalation_policy_levels
```ignore
let response = client.get_escalation_path()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_escalation_path(&self) -> builder::GetEscalationPath<'_> {
        builder::GetEscalationPath::new(self)
    }
    /**Update an escalation path

Update a specific escalation path by id

Sends a `PUT` request to `/v1/escalation_paths/{id}`

```ignore
let response = client.update_escalation_path()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_escalation_path(&self) -> builder::UpdateEscalationPath<'_> {
        builder::UpdateEscalationPath::new(self)
    }
    /**Delete an escalation path

Delete a specific escalation path by id

Sends a `DELETE` request to `/v1/escalation_paths/{id}`

```ignore
let response = client.delete_escalation_path()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_escalation_path(&self) -> builder::DeleteEscalationPath<'_> {
        builder::DeleteEscalationPath::new(self)
    }
    /**List escalation policies

List escalation policies

Sends a `GET` request to `/v1/escalation_policies`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_name`
- `filter_search`
- `filter_team_ids`: Filter escalation policies by associated team IDs. Comma-separate multiple values.
- `include`: comma separated if needed. eg: escalation_policy_levels,escalation_policy_paths
- `page_number`
- `page_size`
```ignore
let response = client.list_escalation_policies()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_team_ids(filter_team_ids)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_escalation_policies(&self) -> builder::ListEscalationPolicies<'_> {
        builder::ListEscalationPolicies::new(self)
    }
    /**Creates an escalation policy

Creates a new escalation policy from provided data

Sends a `POST` request to `/v1/escalation_policies`

```ignore
let response = client.create_escalation_policy()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_escalation_policy(&self) -> builder::CreateEscalationPolicy<'_> {
        builder::CreateEscalationPolicy::new(self)
    }
    /**List escalation levels for an Escalation Policy

List escalation levels

Sends a `GET` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_levels`

```ignore
let response = client.list_escalation_levels()
    .escalation_policy_id(escalation_policy_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_escalation_levels(&self) -> builder::ListEscalationLevels<'_> {
        builder::ListEscalationLevels::new(self)
    }
    /**Creates an escalation level for an Escalation Policy

Creates a new escalation level from provided data

Sends a `POST` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_levels`

```ignore
let response = client.create_escalation_level()
    .escalation_policy_id(escalation_policy_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_escalation_level(&self) -> builder::CreateEscalationLevel<'_> {
        builder::CreateEscalationLevel::new(self)
    }
    /**List escalation paths

List escalation paths

Sends a `GET` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_paths`

Arguments:
- `escalation_policy_id`
- `filter_path_type`: Filter by path_type. Returns all path types when omitted.
- `include`: comma separated if needed. eg: escalation_policy_levels
- `page_number`
- `page_size`
```ignore
let response = client.list_escalation_paths()
    .escalation_policy_id(escalation_policy_id)
    .filter_path_type(filter_path_type)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_escalation_paths(&self) -> builder::ListEscalationPaths<'_> {
        builder::ListEscalationPaths::new(self)
    }
    /**Creates an escalation path

Creates a new escalation path from provided data

Sends a `POST` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_paths`

```ignore
let response = client.create_escalation_path()
    .escalation_policy_id(escalation_policy_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_escalation_path(&self) -> builder::CreateEscalationPath<'_> {
        builder::CreateEscalationPath::new(self)
    }
    /**Retrieves an escalation policy

Retrieves a specific escalation policy by id

Sends a `GET` request to `/v1/escalation_policies/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: escalation_policy_levels,escalation_policy_paths
```ignore
let response = client.get_escalation_policy()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_escalation_policy(&self) -> builder::GetEscalationPolicy<'_> {
        builder::GetEscalationPolicy::new(self)
    }
    /**Update an escalation policy

Update a specific escalation policy by id

Sends a `PUT` request to `/v1/escalation_policies/{id}`

```ignore
let response = client.update_escalation_policy()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_escalation_policy(&self) -> builder::UpdateEscalationPolicy<'_> {
        builder::UpdateEscalationPolicy::new(self)
    }
    /**Delete an escalation policy

Delete a specific escalation policy by id

Sends a `DELETE` request to `/v1/escalation_policies/{id}`

```ignore
let response = client.delete_escalation_policy()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_escalation_policy(&self) -> builder::DeleteEscalationPolicy<'_> {
        builder::DeleteEscalationPolicy::new(self)
    }
    /**Retrieves an incident event

Retrieves a specific incident_event by id

Sends a `GET` request to `/v1/events/{id}`

```ignore
let response = client.get_incident_events()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_events(&self) -> builder::GetIncidentEvents<'_> {
        builder::GetIncidentEvents::new(self)
    }
    /**Update an incident event

Update a specific incident event by id

Sends a `PUT` request to `/v1/events/{id}`

```ignore
let response = client.update_incident_event()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_event(&self) -> builder::UpdateIncidentEvent<'_> {
        builder::UpdateIncidentEvent::new(self)
    }
    /**Delete an incident event

Delete a specific incident event by id

Sends a `DELETE` request to `/v1/events/{id}`

```ignore
let response = client.delete_incident_event()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_event(&self) -> builder::DeleteIncidentEvent<'_> {
        builder::DeleteIncidentEvent::new(self)
    }
    /**List incident event functionalities

List incident event functionalities

Sends a `GET` request to `/v1/events/{incident_event_id}/functionalities`

```ignore
let response = client.list_incident_event_functionalities()
    .incident_event_id(incident_event_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_event_functionalities(
        &self,
    ) -> builder::ListIncidentEventFunctionalities<'_> {
        builder::ListIncidentEventFunctionalities::new(self)
    }
    /**Creates an incident event functionality

Creates a new event functionality from provided data

Sends a `POST` request to `/v1/events/{incident_event_id}/functionalities`

```ignore
let response = client.create_incident_event_functionality()
    .incident_event_id(incident_event_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_event_functionality(
        &self,
    ) -> builder::CreateIncidentEventFunctionality<'_> {
        builder::CreateIncidentEventFunctionality::new(self)
    }
    /**List incident event services

List incident event services

Sends a `GET` request to `/v1/events/{incident_event_id}/services`

```ignore
let response = client.list_incident_event_services()
    .incident_event_id(incident_event_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_event_services(
        &self,
    ) -> builder::ListIncidentEventServices<'_> {
        builder::ListIncidentEventServices::new(self)
    }
    /**Creates an incident event service

Creates a new event service from provided data

Sends a `POST` request to `/v1/events/{incident_event_id}/services`

```ignore
let response = client.create_incident_event_service()
    .incident_event_id(incident_event_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_event_service(
        &self,
    ) -> builder::CreateIncidentEventService<'_> {
        builder::CreateIncidentEventService::new(self)
    }
    /**Retrieves an incident feedback

Retrieves a specific incident_feedback by id

Sends a `GET` request to `/v1/feedbacks/{id}`

```ignore
let response = client.get_incident_feedbacks()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_feedbacks(&self) -> builder::GetIncidentFeedbacks<'_> {
        builder::GetIncidentFeedbacks::new(self)
    }
    /**Update an incident feedback

Update a specific incident feedback by id

Sends a `PUT` request to `/v1/feedbacks/{id}`

```ignore
let response = client.update_incident_feedback()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_feedback(&self) -> builder::UpdateIncidentFeedback<'_> {
        builder::UpdateIncidentFeedback::new(self)
    }
    /**Retrieves FormField Options

Retrieves a specific form_field_option by id

Sends a `GET` request to `/v1/form_field_options/{id}`

```ignore
let response = client.get_form_field_option()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_form_field_option(&self) -> builder::GetFormFieldOption<'_> {
        builder::GetFormFieldOption::new(self)
    }
    /**Update FormField Options

Update a specific form_field_option by id

Sends a `PUT` request to `/v1/form_field_options/{id}`

```ignore
let response = client.update_form_field_option()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_field_option(&self) -> builder::UpdateFormFieldOption<'_> {
        builder::UpdateFormFieldOption::new(self)
    }
    /**Delete FormField Options

Delete a specific form_field_option by id

Sends a `DELETE` request to `/v1/form_field_options/{id}`

```ignore
let response = client.delete_form_field_option()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_field_option(&self) -> builder::DeleteFormFieldOption<'_> {
        builder::DeleteFormFieldOption::new(self)
    }
    /**Retrieves a Form Set Condition

Retrieves a specific form_field_placement_condition by id

Sends a `GET` request to `/v1/form_field_placement_conditions/{id}`

```ignore
let response = client.get_form_field_placement_condition()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_form_field_placement_condition(
        &self,
    ) -> builder::GetFormFieldPlacementCondition<'_> {
        builder::GetFormFieldPlacementCondition::new(self)
    }
    /**Update a Form Set Condition

Update a specific form_field_placement_condition by id

Sends a `PUT` request to `/v1/form_field_placement_conditions/{id}`

```ignore
let response = client.update_form_field_placement_condition()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_field_placement_condition(
        &self,
    ) -> builder::UpdateFormFieldPlacementCondition<'_> {
        builder::UpdateFormFieldPlacementCondition::new(self)
    }
    /**Delete a Form Set Condition

Delete a specific form_field_placement_condition by id

Sends a `DELETE` request to `/v1/form_field_placement_conditions/{id}`

```ignore
let response = client.delete_form_field_placement_condition()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_field_placement_condition(
        &self,
    ) -> builder::DeleteFormFieldPlacementCondition<'_> {
        builder::DeleteFormFieldPlacementCondition::new(self)
    }
    /**List Form Set Conditions

List form_field_placement_conditions

Sends a `GET` request to `/v1/form_field_placements/{form_field_placement_id}/conditions`

```ignore
let response = client.list_form_field_placement_conditions()
    .form_field_placement_id(form_field_placement_id)
    .filter_form_field_id(filter_form_field_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_field_placement_conditions(
        &self,
    ) -> builder::ListFormFieldPlacementConditions<'_> {
        builder::ListFormFieldPlacementConditions::new(self)
    }
    /**Creates a Form Set Condition

Creates a new form_field_placement_condition from provided data

Sends a `POST` request to `/v1/form_field_placements/{form_field_placement_id}/conditions`

```ignore
let response = client.create_form_field_placement_condition()
    .form_field_placement_id(form_field_placement_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_field_placement_condition(
        &self,
    ) -> builder::CreateFormFieldPlacementCondition<'_> {
        builder::CreateFormFieldPlacementCondition::new(self)
    }
    /**Retrieves a Form Field Placement

Retrieves a specific form_field_placement by id

Sends a `GET` request to `/v1/form_field_placements/{id}`

```ignore
let response = client.get_form_field_placement()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_form_field_placement(&self) -> builder::GetFormFieldPlacement<'_> {
        builder::GetFormFieldPlacement::new(self)
    }
    /**Update a Form Field Placement

Update a specific form_field_placement by id

Sends a `PUT` request to `/v1/form_field_placements/{id}`

```ignore
let response = client.update_form_field_placement()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_field_placement(&self) -> builder::UpdateFormFieldPlacement<'_> {
        builder::UpdateFormFieldPlacement::new(self)
    }
    /**Delete a Form Field Placement

Delete a specific form_field_placement by id

Sends a `DELETE` request to `/v1/form_field_placements/{id}`

```ignore
let response = client.delete_form_field_placement()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_field_placement(&self) -> builder::DeleteFormFieldPlacement<'_> {
        builder::DeleteFormFieldPlacement::new(self)
    }
    /**Retrieves a FormFieldPosition

Retrieves a specific form field_position by id

Sends a `GET` request to `/v1/form_field_positions/{id}`

```ignore
let response = client.get_form_field_position()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_form_field_position(&self) -> builder::GetFormFieldPosition<'_> {
        builder::GetFormFieldPosition::new(self)
    }
    /**Update a FormFieldPosition

Update a specific form_field position by id

Sends a `PUT` request to `/v1/form_field_positions/{id}`

```ignore
let response = client.update_form_field_position()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_field_position(&self) -> builder::UpdateFormFieldPosition<'_> {
        builder::UpdateFormFieldPosition::new(self)
    }
    /**Delete a FormFieldPosition

Delete a specific form_field position by id

Sends a `DELETE` request to `/v1/form_field_positions/{id}`

```ignore
let response = client.delete_form_field_position()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_field_position(&self) -> builder::DeleteFormFieldPosition<'_> {
        builder::DeleteFormFieldPosition::new(self)
    }
    /**List Form Fields

List form_fields

Sends a `GET` request to `/v1/form_fields`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_enabled`
- `filter_kind`
- `filter_name`
- `filter_search`
- `filter_slug`
- `include`: comma separated if needed. eg: options,positions
- `page_number`
- `page_size`
```ignore
let response = client.list_form_fields()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_enabled(filter_enabled)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_fields(&self) -> builder::ListFormFields<'_> {
        builder::ListFormFields::new(self)
    }
    /**Creates a Form Field

Creates a new form_field from provided data

Sends a `POST` request to `/v1/form_fields`

```ignore
let response = client.create_form_field()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_field(&self) -> builder::CreateFormField<'_> {
        builder::CreateFormField::new(self)
    }
    /**List FormField Options

List form_field_options

Sends a `GET` request to `/v1/form_fields/{form_field_id}/options`

```ignore
let response = client.list_form_field_options()
    .form_field_id(form_field_id)
    .filter_color(filter_color)
    .filter_value(filter_value)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_field_options(&self) -> builder::ListFormFieldOptions<'_> {
        builder::ListFormFieldOptions::new(self)
    }
    /**Creates FormField Options

Creates a new form_field_option from provided data

Sends a `POST` request to `/v1/form_fields/{form_field_id}/options`

```ignore
let response = client.create_form_field_option()
    .form_field_id(form_field_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_field_option(&self) -> builder::CreateFormFieldOption<'_> {
        builder::CreateFormFieldOption::new(self)
    }
    /**List Form Field Placements

List form_field_placements

Sends a `GET` request to `/v1/form_fields/{form_field_id}/placements`

```ignore
let response = client.list_form_field_placements()
    .form_field_id(form_field_id)
    .filter_form_field_id(filter_form_field_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_field_placements(&self) -> builder::ListFormFieldPlacements<'_> {
        builder::ListFormFieldPlacements::new(self)
    }
    /**Creates a Form Field Placement

Creates a new form_field_placement from provided data

Sends a `POST` request to `/v1/form_fields/{form_field_id}/placements`

```ignore
let response = client.create_form_field_placement()
    .form_field_id(form_field_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_field_placement(&self) -> builder::CreateFormFieldPlacement<'_> {
        builder::CreateFormFieldPlacement::new(self)
    }
    /**List FormField Position

List form field positions

Sends a `GET` request to `/v1/form_fields/{form_field_id}/positions`

```ignore
let response = client.list_form_field_positions()
    .form_field_id(form_field_id)
    .filter_form(filter_form)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_field_positions(&self) -> builder::ListFormFieldPositions<'_> {
        builder::ListFormFieldPositions::new(self)
    }
    /**Creates FormField Positions

Creates a new form field_position from provided data

Sends a `POST` request to `/v1/form_fields/{form_field_id}/positions`

```ignore
let response = client.create_form_field_position()
    .form_field_id(form_field_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_field_position(&self) -> builder::CreateFormFieldPosition<'_> {
        builder::CreateFormFieldPosition::new(self)
    }
    /**Retrieves a Form Field

Retrieves a specific form_field by id

Sends a `GET` request to `/v1/form_fields/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: options,positions
```ignore
let response = client.get_form_field()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_form_field(&self) -> builder::GetFormField<'_> {
        builder::GetFormField::new(self)
    }
    /**Update a Form Field

Update a specific form_field by id

Sends a `PUT` request to `/v1/form_fields/{id}`

```ignore
let response = client.update_form_field()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_field(&self) -> builder::UpdateFormField<'_> {
        builder::UpdateFormField::new(self)
    }
    /**Delete a Form Field

Delete a specific form_field by id

Sends a `DELETE` request to `/v1/form_fields/{id}`

```ignore
let response = client.delete_form_field()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_field(&self) -> builder::DeleteFormField<'_> {
        builder::DeleteFormField::new(self)
    }
    /**Retrieves a Form Set Condition

Retrieves a specific form_set_condition by id

Sends a `GET` request to `/v1/form_set_conditions/{id}`

```ignore
let response = client.get_form_set_condition()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_form_set_condition(&self) -> builder::GetFormSetCondition<'_> {
        builder::GetFormSetCondition::new(self)
    }
    /**Update a Form Set Condition

Update a specific form_set_condition by id

Sends a `PUT` request to `/v1/form_set_conditions/{id}`

```ignore
let response = client.update_form_set_condition()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_set_condition(&self) -> builder::UpdateFormSetCondition<'_> {
        builder::UpdateFormSetCondition::new(self)
    }
    /**Delete a Form Set Condition

Delete a specific form_set_condition by id

Sends a `DELETE` request to `/v1/form_set_conditions/{id}`

```ignore
let response = client.delete_form_set_condition()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_set_condition(&self) -> builder::DeleteFormSetCondition<'_> {
        builder::DeleteFormSetCondition::new(self)
    }
    /**List Form Sets

List form_sets

Sends a `GET` request to `/v1/form_sets`

```ignore
let response = client.list_form_sets()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_is_default(filter_is_default)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_sets(&self) -> builder::ListFormSets<'_> {
        builder::ListFormSets::new(self)
    }
    /**Creates a Form Set

Creates a new form_set from provided data

Sends a `POST` request to `/v1/form_sets`

```ignore
let response = client.create_form_set()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_set(&self) -> builder::CreateFormSet<'_> {
        builder::CreateFormSet::new(self)
    }
    /**List Form Set Conditions

List form_set_conditions

Sends a `GET` request to `/v1/form_sets/{form_set_id}/conditions`

```ignore
let response = client.list_form_set_conditions()
    .form_set_id(form_set_id)
    .filter_form_field_id(filter_form_field_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_form_set_conditions(&self) -> builder::ListFormSetConditions<'_> {
        builder::ListFormSetConditions::new(self)
    }
    /**Creates a Form Set Condition

Creates a new form_set_condition from provided data

Sends a `POST` request to `/v1/form_sets/{form_set_id}/conditions`

```ignore
let response = client.create_form_set_condition()
    .form_set_id(form_set_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_form_set_condition(&self) -> builder::CreateFormSetCondition<'_> {
        builder::CreateFormSetCondition::new(self)
    }
    /**Retrieves a Form Set

Retrieves a specific form_set by id

Sends a `GET` request to `/v1/form_sets/{id}`

```ignore
let response = client.get_form_set()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_form_set(&self) -> builder::GetFormSet<'_> {
        builder::GetFormSet::new(self)
    }
    /**Update a Form Set

Update a specific form_set by id

Sends a `PUT` request to `/v1/form_sets/{id}`

```ignore
let response = client.update_form_set()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_form_set(&self) -> builder::UpdateFormSet<'_> {
        builder::UpdateFormSet::new(self)
    }
    /**Delete a Form Set

Delete a specific form_set by id

Sends a `DELETE` request to `/v1/form_sets/{id}`

```ignore
let response = client.delete_form_set()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_form_set(&self) -> builder::DeleteFormSet<'_> {
        builder::DeleteFormSet::new(self)
    }
    /**List functionalities

List functionalities

Sends a `GET` request to `/v1/functionalities`

```ignore
let response = client.list_functionalities()
    .filter_backstage_id(filter_backstage_id)
    .filter_cortex_id(filter_cortex_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_external_id(filter_external_id)
    .filter_name(filter_name)
    .filter_opslevel_id(filter_opslevel_id)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_functionalities(&self) -> builder::ListFunctionalities<'_> {
        builder::ListFunctionalities::new(self)
    }
    /**Creates a functionality

Creates a new functionality from provided data

Sends a `POST` request to `/v1/functionalities`

```ignore
let response = client.create_functionality()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_functionality(&self) -> builder::CreateFunctionality<'_> {
        builder::CreateFunctionality::new(self)
    }
    /**List Catalog Properties

List Functionality Catalog Properties

Sends a `GET` request to `/v1/functionalities/properties`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `filter_name`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_functionality_catalog_properties()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_functionality_catalog_properties(
        &self,
    ) -> builder::ListFunctionalityCatalogProperties<'_> {
        builder::ListFunctionalityCatalogProperties::new(self)
    }
    /**Creates a Catalog Property

Creates a new Catalog Property from provided data

Sends a `POST` request to `/v1/functionalities/properties`

```ignore
let response = client.create_functionality_catalog_property()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_functionality_catalog_property(
        &self,
    ) -> builder::CreateFunctionalityCatalogProperty<'_> {
        builder::CreateFunctionalityCatalogProperty::new(self)
    }
    /**Retrieves a functionality

Retrieves a specific functionality by id

Sends a `GET` request to `/v1/functionalities/{id}`

```ignore
let response = client.get_functionality()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_functionality(&self) -> builder::GetFunctionality<'_> {
        builder::GetFunctionality::new(self)
    }
    /**Update a functionality

Update a specific functionality by id

Sends a `PUT` request to `/v1/functionalities/{id}`

```ignore
let response = client.update_functionality()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_functionality(&self) -> builder::UpdateFunctionality<'_> {
        builder::UpdateFunctionality::new(self)
    }
    /**Delete a functionality

Delete a specific functionality by id

Sends a `DELETE` request to `/v1/functionalities/{id}`

```ignore
let response = client.delete_functionality()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_functionality(&self) -> builder::DeleteFunctionality<'_> {
        builder::DeleteFunctionality::new(self)
    }
    /**Get functionality incidents chart

Get functionality incidents chart

Sends a `GET` request to `/v1/functionalities/{id}/incidents_chart`

```ignore
let response = client.get_functionality_incidents_chart()
    .id(id)
    .period(period)
    .send()
    .await;
```*/
    pub fn get_functionality_incidents_chart(
        &self,
    ) -> builder::GetFunctionalityIncidentsChart<'_> {
        builder::GetFunctionalityIncidentsChart::new(self)
    }
    /**Get functionality uptime chart

Get functionality uptime chart

Sends a `GET` request to `/v1/functionalities/{id}/uptime_chart`

```ignore
let response = client.get_functionality_uptime_chart()
    .id(id)
    .period(period)
    .send()
    .await;
```*/
    pub fn get_functionality_uptime_chart(
        &self,
    ) -> builder::GetFunctionalityUptimeChart<'_> {
        builder::GetFunctionalityUptimeChart::new(self)
    }
    /**List heartbeats

List heartbeats

Sends a `GET` request to `/v1/heartbeats`

```ignore
let response = client.list_heartbeats()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_heartbeats(&self) -> builder::ListHeartbeats<'_> {
        builder::ListHeartbeats::new(self)
    }
    /**Creates a heartbeat

Creates a new heartbeat from provided data

Sends a `POST` request to `/v1/heartbeats`

```ignore
let response = client.create_heartbeat()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_heartbeat(&self) -> builder::CreateHeartbeat<'_> {
        builder::CreateHeartbeat::new(self)
    }
    /**Ping a heartbeat

Ping a specific heartbeat by id

Sends a `POST` request to `/v1/heartbeats/{heartbeat_id}/ping`

```ignore
let response = client.ping_heartbeat()
    .heartbeat_id(heartbeat_id)
    .send()
    .await;
```*/
    pub fn ping_heartbeat(&self) -> builder::PingHeartbeat<'_> {
        builder::PingHeartbeat::new(self)
    }
    /**Retrieves a heartbeat

Retrieves a specific heartbeat by id

Sends a `GET` request to `/v1/heartbeats/{id}`

```ignore
let response = client.get_heartbeat()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_heartbeat(&self) -> builder::GetHeartbeat<'_> {
        builder::GetHeartbeat::new(self)
    }
    /**Update a heartbeat

Update a specific heartbeat by id

Sends a `PUT` request to `/v1/heartbeats/{id}`

```ignore
let response = client.update_heartbeat()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_heartbeat(&self) -> builder::UpdateHeartbeat<'_> {
        builder::UpdateHeartbeat::new(self)
    }
    /**Delete a heartbeat

Delete a specific heartbeat by id

Sends a `DELETE` request to `/v1/heartbeats/{id}`

```ignore
let response = client.delete_heartbeat()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_heartbeat(&self) -> builder::DeleteHeartbeat<'_> {
        builder::DeleteHeartbeat::new(self)
    }
    /**[DEPRECATED] Retrieves an incident custom field selection

[DEPRECATED] Use form field endpoints instead. Retrieves a specific incident custom field selection by id

Sends a `GET` request to `/v1/incident_custom_field_selections/{id}`

```ignore
let response = client.get_incident_custom_field_selection()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_custom_field_selection(
        &self,
    ) -> builder::GetIncidentCustomFieldSelection<'_> {
        builder::GetIncidentCustomFieldSelection::new(self)
    }
    /**[DEPRECATED] Update an incident custom field selection

[DEPRECATED] Use form field endpoints instead. Update a specific incident custom field selection by id

Sends a `PUT` request to `/v1/incident_custom_field_selections/{id}`

```ignore
let response = client.update_incident_custom_field_selection()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_custom_field_selection(
        &self,
    ) -> builder::UpdateIncidentCustomFieldSelection<'_> {
        builder::UpdateIncidentCustomFieldSelection::new(self)
    }
    /**[DEPRECATED] Delete an incident custom field selection

[DEPRECATED] Use form field endpoints instead. Delete a specific incident custom field selection by id

Sends a `DELETE` request to `/v1/incident_custom_field_selections/{id}`

```ignore
let response = client.delete_incident_custom_field_selection()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_custom_field_selection(
        &self,
    ) -> builder::DeleteIncidentCustomFieldSelection<'_> {
        builder::DeleteIncidentCustomFieldSelection::new(self)
    }
    /**Retrieves an incident event functionality

Retrieves a specific incident_event_functionality by id

Sends a `GET` request to `/v1/incident_event_functionalities/{id}`

```ignore
let response = client.get_incident_event_functionalities()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_event_functionalities(
        &self,
    ) -> builder::GetIncidentEventFunctionalities<'_> {
        builder::GetIncidentEventFunctionalities::new(self)
    }
    /**Update an incident event

Update a specific incident event functionality by id

Sends a `PUT` request to `/v1/incident_event_functionalities/{id}`

```ignore
let response = client.update_incident_event_functionality()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_event_functionality(
        &self,
    ) -> builder::UpdateIncidentEventFunctionality<'_> {
        builder::UpdateIncidentEventFunctionality::new(self)
    }
    /**Delete an incident event functionality

Delete a specific incident event functionality by id

Sends a `DELETE` request to `/v1/incident_event_functionalities/{id}`

```ignore
let response = client.delete_incident_event_functionality()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_event_functionality(
        &self,
    ) -> builder::DeleteIncidentEventFunctionality<'_> {
        builder::DeleteIncidentEventFunctionality::new(self)
    }
    /**Retrieves an incident event service

Retrieves a specific incident_event_service by id

Sends a `GET` request to `/v1/incident_event_services/{id}`

```ignore
let response = client.get_incident_event_services()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_event_services(&self) -> builder::GetIncidentEventServices<'_> {
        builder::GetIncidentEventServices::new(self)
    }
    /**Update an incident event

Update a specific incident event service by id

Sends a `PUT` request to `/v1/incident_event_services/{id}`

```ignore
let response = client.update_incident_event_service()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_event_service(
        &self,
    ) -> builder::UpdateIncidentEventService<'_> {
        builder::UpdateIncidentEventService::new(self)
    }
    /**Delete an incident event functionalitu

Delete a specific incident event service by id

Sends a `DELETE` request to `/v1/incident_event_services/{id}`

```ignore
let response = client.delete_incident_event_service()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_event_service(
        &self,
    ) -> builder::DeleteIncidentEventService<'_> {
        builder::DeleteIncidentEventService::new(self)
    }
    /**Retrieves an incident form field selection

Retrieves a specific incident form field selection by id

Sends a `GET` request to `/v1/incident_form_field_selections/{id}`

```ignore
let response = client.get_incident_form_field_selection()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_form_field_selection(
        &self,
    ) -> builder::GetIncidentFormFieldSelection<'_> {
        builder::GetIncidentFormFieldSelection::new(self)
    }
    /**Update an incident form field selection

Update a specific incident form field selection by id

Sends a `PUT` request to `/v1/incident_form_field_selections/{id}`

```ignore
let response = client.update_incident_form_field_selection()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_form_field_selection(
        &self,
    ) -> builder::UpdateIncidentFormFieldSelection<'_> {
        builder::UpdateIncidentFormFieldSelection::new(self)
    }
    /**Delete an incident form field selection

Delete a specific incident form field selection by id

Sends a `DELETE` request to `/v1/incident_form_field_selections/{id}`

```ignore
let response = client.delete_incident_form_field_selection()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_form_field_selection(
        &self,
    ) -> builder::DeleteIncidentFormFieldSelection<'_> {
        builder::DeleteIncidentFormFieldSelection::new(self)
    }
    /**Retrieves an incident_permission_set_boolean

Retrieves a specific incident_permission_set_boolean by id

Sends a `GET` request to `/v1/incident_permission_set_booleans/{id}`

```ignore
let response = client.get_incident_permission_set_boolean()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_permission_set_boolean(
        &self,
    ) -> builder::GetIncidentPermissionSetBoolean<'_> {
        builder::GetIncidentPermissionSetBoolean::new(self)
    }
    /**Update an incident_permission_set_boolean

Update a specific incident_permission_set_boolean by id

Sends a `PUT` request to `/v1/incident_permission_set_booleans/{id}`

```ignore
let response = client.update_incident_permission_set_boolean()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_permission_set_boolean(
        &self,
    ) -> builder::UpdateIncidentPermissionSetBoolean<'_> {
        builder::UpdateIncidentPermissionSetBoolean::new(self)
    }
    /**Delete an incident_permission_set_boolean

Delete a specific incident_permission_set_boolean by id

Sends a `DELETE` request to `/v1/incident_permission_set_booleans/{id}`

```ignore
let response = client.delete_incident_permission_set_boolean()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_permission_set_boolean(
        &self,
    ) -> builder::DeleteIncidentPermissionSetBoolean<'_> {
        builder::DeleteIncidentPermissionSetBoolean::new(self)
    }
    /**Retrieves an incident_permission_set_resource

Retrieves a specific incident_permission_set_resource by id

Sends a `GET` request to `/v1/incident_permission_set_resources/{id}`

```ignore
let response = client.get_incident_permission_set_resource()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_permission_set_resource(
        &self,
    ) -> builder::GetIncidentPermissionSetResource<'_> {
        builder::GetIncidentPermissionSetResource::new(self)
    }
    /**Update an incident_permission_set_resource

Update a specific incident_permission_set_resource by id

Sends a `PUT` request to `/v1/incident_permission_set_resources/{id}`

```ignore
let response = client.update_incident_permission_set_resource()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_permission_set_resource(
        &self,
    ) -> builder::UpdateIncidentPermissionSetResource<'_> {
        builder::UpdateIncidentPermissionSetResource::new(self)
    }
    /**Delete an incident_permission_set_resource

Delete a specific incident_permission_set_resource by id

Sends a `DELETE` request to `/v1/incident_permission_set_resources/{id}`

```ignore
let response = client.delete_incident_permission_set_resource()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_permission_set_resource(
        &self,
    ) -> builder::DeleteIncidentPermissionSetResource<'_> {
        builder::DeleteIncidentPermissionSetResource::new(self)
    }
    /**List incident_permission_sets

List incident_permission_sets

Sends a `GET` request to `/v1/incident_permission_sets`

```ignore
let response = client.list_incident_permission_sets()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_permission_sets(
        &self,
    ) -> builder::ListIncidentPermissionSets<'_> {
        builder::ListIncidentPermissionSets::new(self)
    }
    /**Creates an incident_permission_set

Creates a new incident_permission_set from provided data

Sends a `POST` request to `/v1/incident_permission_sets`

```ignore
let response = client.create_incident_permission_set()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_permission_set(
        &self,
    ) -> builder::CreateIncidentPermissionSet<'_> {
        builder::CreateIncidentPermissionSet::new(self)
    }
    /**Retrieves an incident_permission_set

Retrieves a specific incident_permission_set by id

Sends a `GET` request to `/v1/incident_permission_sets/{id}`

```ignore
let response = client.get_incident_permission_set()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_permission_set(&self) -> builder::GetIncidentPermissionSet<'_> {
        builder::GetIncidentPermissionSet::new(self)
    }
    /**Update an incident_permission_set

Update a specific incident_permission_set by id

Sends a `PUT` request to `/v1/incident_permission_sets/{id}`

```ignore
let response = client.update_incident_permission_set()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_permission_set(
        &self,
    ) -> builder::UpdateIncidentPermissionSet<'_> {
        builder::UpdateIncidentPermissionSet::new(self)
    }
    /**Delete an incident_permission_set

Delete a specific incident_permission_set by id

Sends a `DELETE` request to `/v1/incident_permission_sets/{id}`

```ignore
let response = client.delete_incident_permission_set()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_permission_set(
        &self,
    ) -> builder::DeleteIncidentPermissionSet<'_> {
        builder::DeleteIncidentPermissionSet::new(self)
    }
    /**List incident_permission_set_booleans

List incident_permission_set_booleans

Sends a `GET` request to `/v1/incident_permission_sets/{incident_permission_set_id}/booleans`

```ignore
let response = client.list_incident_permission_set_booleans()
    .incident_permission_set_id(incident_permission_set_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_permission_set_booleans(
        &self,
    ) -> builder::ListIncidentPermissionSetBooleans<'_> {
        builder::ListIncidentPermissionSetBooleans::new(self)
    }
    /**Creates an incident_permission_set_boolean

Creates a new incident_permission_set_boolean from provided data

Sends a `POST` request to `/v1/incident_permission_sets/{incident_permission_set_id}/booleans`

```ignore
let response = client.create_incident_permission_set_boolean()
    .incident_permission_set_id(incident_permission_set_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_permission_set_boolean(
        &self,
    ) -> builder::CreateIncidentPermissionSetBoolean<'_> {
        builder::CreateIncidentPermissionSetBoolean::new(self)
    }
    /**List incident_permission_set_resources

List incident_permission_set_resources

Sends a `GET` request to `/v1/incident_permission_sets/{incident_permission_set_id}/resources`

```ignore
let response = client.list_incident_permission_set_resources()
    .incident_permission_set_id(incident_permission_set_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_permission_set_resources(
        &self,
    ) -> builder::ListIncidentPermissionSetResources<'_> {
        builder::ListIncidentPermissionSetResources::new(self)
    }
    /**Creates an incident_permission_set_resource

Creates a new incident_permission_set_resource from provided data

Sends a `POST` request to `/v1/incident_permission_sets/{incident_permission_set_id}/resources`

```ignore
let response = client.create_incident_permission_set_resource()
    .incident_permission_set_id(incident_permission_set_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_permission_set_resource(
        &self,
    ) -> builder::CreateIncidentPermissionSetResource<'_> {
        builder::CreateIncidentPermissionSetResource::new(self)
    }
    /**Retrieves an incident retrospective step

Retrieves a specific incident retrospective step by id

Sends a `GET` request to `/v1/incident_retrospective_steps/{id}`

```ignore
let response = client.get_incident_retrospective_step()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_retrospective_step(
        &self,
    ) -> builder::GetIncidentRetrospectiveStep<'_> {
        builder::GetIncidentRetrospectiveStep::new(self)
    }
    /**Update an incident retrospective step

Update a specific incident retrospective step by id

Sends a `PUT` request to `/v1/incident_retrospective_steps/{id}`

```ignore
let response = client.update_incident_retrospective_step()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_retrospective_step(
        &self,
    ) -> builder::UpdateIncidentRetrospectiveStep<'_> {
        builder::UpdateIncidentRetrospectiveStep::new(self)
    }
    /**Retrieves an incident role task

Retrieves a specific incident_role_task by id

Sends a `GET` request to `/v1/incident_role_tasks/{id}`

```ignore
let response = client.get_incident_role_task()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_role_task(&self) -> builder::GetIncidentRoleTask<'_> {
        builder::GetIncidentRoleTask::new(self)
    }
    /**Update an incident role task

Update a specific incident_role task by id

Sends a `PUT` request to `/v1/incident_role_tasks/{id}`

```ignore
let response = client.update_incident_role_task()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_role_task(&self) -> builder::UpdateIncidentRoleTask<'_> {
        builder::UpdateIncidentRoleTask::new(self)
    }
    /**Delete an incident role task

Delete a specific incident_role task by id

Sends a `DELETE` request to `/v1/incident_role_tasks/{id}`

```ignore
let response = client.delete_incident_role_task()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_role_task(&self) -> builder::DeleteIncidentRoleTask<'_> {
        builder::DeleteIncidentRoleTask::new(self)
    }
    /**List incident roles

List incident roles

Sends a `GET` request to `/v1/incident_roles`

```ignore
let response = client.list_incident_roles()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_enabled(filter_enabled)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_roles(&self) -> builder::ListIncidentRoles<'_> {
        builder::ListIncidentRoles::new(self)
    }
    /**Creates an incident role

Creates a new incident role from provided data

Sends a `POST` request to `/v1/incident_roles`

```ignore
let response = client.create_incident_role()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_role(&self) -> builder::CreateIncidentRole<'_> {
        builder::CreateIncidentRole::new(self)
    }
    /**Retrieves an incident role

Retrieves a specific incident_role by id

Sends a `GET` request to `/v1/incident_roles/{id}`

```ignore
let response = client.get_incident_role()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_role(&self) -> builder::GetIncidentRole<'_> {
        builder::GetIncidentRole::new(self)
    }
    /**Update an incident role

Update a specific incident_role by id

Sends a `PUT` request to `/v1/incident_roles/{id}`

```ignore
let response = client.update_incident_role()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_role(&self) -> builder::UpdateIncidentRole<'_> {
        builder::UpdateIncidentRole::new(self)
    }
    /**Delete an incident role

Delete a specific incident_role by id

Sends a `DELETE` request to `/v1/incident_roles/{id}`

```ignore
let response = client.delete_incident_role()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_role(&self) -> builder::DeleteIncidentRole<'_> {
        builder::DeleteIncidentRole::new(self)
    }
    /**List incident role tasks

List incident_role tasks

Sends a `GET` request to `/v1/incident_roles/{incident_role_id}/incident_role_tasks`

```ignore
let response = client.list_incident_role_tasks()
    .incident_role_id(incident_role_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_role_tasks(&self) -> builder::ListIncidentRoleTasks<'_> {
        builder::ListIncidentRoleTasks::new(self)
    }
    /**Creates an incident role task

Creates a new task from provided data

Sends a `POST` request to `/v1/incident_roles/{incident_role_id}/incident_role_tasks`

```ignore
let response = client.create_incident_role_task()
    .incident_role_id(incident_role_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_role_task(&self) -> builder::CreateIncidentRoleTask<'_> {
        builder::CreateIncidentRoleTask::new(self)
    }
    /**Retrieves incident_sub_status

Retrieves a specific incident_sub_status by id

Sends a `GET` request to `/v1/incident_sub_statuses/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: sub_status,assigned_by_user
```ignore
let response = client.get_incident_sub_status()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_incident_sub_status(&self) -> builder::GetIncidentSubStatus<'_> {
        builder::GetIncidentSubStatus::new(self)
    }
    /**Update incident_sub_status

Update a specific incident_sub_status by id

Sends a `PUT` request to `/v1/incident_sub_statuses/{id}`

```ignore
let response = client.update_incident_sub_status()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_sub_status(&self) -> builder::UpdateIncidentSubStatus<'_> {
        builder::UpdateIncidentSubStatus::new(self)
    }
    /**Delete an incident_sub_status

Delete a specific incident_sub_status by id

Sends a `DELETE` request to `/v1/incident_sub_statuses/{id}`

```ignore
let response = client.delete_incident_sub_status()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_sub_status(&self) -> builder::DeleteIncidentSubStatus<'_> {
        builder::DeleteIncidentSubStatus::new(self)
    }
    /**List incident types

List incident types

Sends a `GET` request to `/v1/incident_types`

```ignore
let response = client.list_incident_types()
    .filter_color(filter_color)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_types(&self) -> builder::ListIncidentTypes<'_> {
        builder::ListIncidentTypes::new(self)
    }
    /**Creates an incident type

Creates a new incident_type from provided data

Sends a `POST` request to `/v1/incident_types`

```ignore
let response = client.create_incident_type()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_type(&self) -> builder::CreateIncidentType<'_> {
        builder::CreateIncidentType::new(self)
    }
    /**List Catalog Properties

List IncidentType Catalog Properties

Sends a `GET` request to `/v1/incident_types/properties`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `filter_name`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_incident_type_catalog_properties()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_type_catalog_properties(
        &self,
    ) -> builder::ListIncidentTypeCatalogProperties<'_> {
        builder::ListIncidentTypeCatalogProperties::new(self)
    }
    /**Creates a Catalog Property

Creates a new Catalog Property from provided data

Sends a `POST` request to `/v1/incident_types/properties`

```ignore
let response = client.create_incident_type_catalog_property()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_type_catalog_property(
        &self,
    ) -> builder::CreateIncidentTypeCatalogProperty<'_> {
        builder::CreateIncidentTypeCatalogProperty::new(self)
    }
    /**Retrieves an incident type

Retrieves a specific incident_type by id

Sends a `GET` request to `/v1/incident_types/{id}`

```ignore
let response = client.get_incident_type()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_type(&self) -> builder::GetIncidentType<'_> {
        builder::GetIncidentType::new(self)
    }
    /**Update an incident type

Update a specific incident_type by id

Sends a `PUT` request to `/v1/incident_types/{id}`

```ignore
let response = client.update_incident_type()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_type(&self) -> builder::UpdateIncidentType<'_> {
        builder::UpdateIncidentType::new(self)
    }
    /**Delete an incident type

Delete a specific incident_type by id

Sends a `DELETE` request to `/v1/incident_types/{id}`

```ignore
let response = client.delete_incident_type()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_type(&self) -> builder::DeleteIncidentType<'_> {
        builder::DeleteIncidentType::new(self)
    }
    /**List incidents

List incidents

Sends a `GET` request to `/v1/incidents`

Arguments:
- `filter_acknowledged_at_gt`
- `filter_acknowledged_at_gte`
- `filter_acknowledged_at_lt`
- `filter_acknowledged_at_lte`
- `filter_cause`
- `filter_cause_ids`
- `filter_closed_at_gt`
- `filter_closed_at_gte`
- `filter_closed_at_lt`
- `filter_closed_at_lte`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_custom_field_selected_option_ids`
- `filter_detected_at_gt`
- `filter_detected_at_gte`
- `filter_detected_at_lt`
- `filter_detected_at_lte`
- `filter_environment_ids`
- `filter_environments`
- `filter_functionalities`
- `filter_functionality_ids`
- `filter_functionality_names`
- `filter_in_triage_at_gt`
- `filter_in_triage_at_gte`
- `filter_in_triage_at_lt`
- `filter_in_triage_at_lte`
- `filter_kind`
- `filter_labels`
- `filter_mitigated_at_gt`
- `filter_mitigated_at_gte`
- `filter_mitigated_at_lt`
- `filter_mitigated_at_lte`
- `filter_private`
- `filter_resolved_at_gt`
- `filter_resolved_at_gte`
- `filter_resolved_at_lt`
- `filter_resolved_at_lte`
- `filter_search`
- `filter_service_ids`
- `filter_service_names`
- `filter_services`
- `filter_severity`
- `filter_severity_id`
- `filter_slack_channel_id`
- `filter_started_at_gt`
- `filter_started_at_gte`
- `filter_started_at_lt`
- `filter_started_at_lte`
- `filter_status`
- `filter_team_ids`
- `filter_team_names`
- `filter_teams`
- `filter_type_ids`
- `filter_types`
- `filter_updated_at_gt`
- `filter_updated_at_gte`
- `filter_updated_at_lt`
- `filter_updated_at_lte`
- `filter_user_id`
- `include`: comma separated if needed. eg: sub_statuses,causes,subscribers
- `page_after`: The cursor to fetch results using cursor pagination. A cursor is provided in meta.next_cursor in the response.
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_incidents()
    .filter_acknowledged_at_gt(filter_acknowledged_at_gt)
    .filter_acknowledged_at_gte(filter_acknowledged_at_gte)
    .filter_acknowledged_at_lt(filter_acknowledged_at_lt)
    .filter_acknowledged_at_lte(filter_acknowledged_at_lte)
    .filter_cause(filter_cause)
    .filter_cause_ids(filter_cause_ids)
    .filter_closed_at_gt(filter_closed_at_gt)
    .filter_closed_at_gte(filter_closed_at_gte)
    .filter_closed_at_lt(filter_closed_at_lt)
    .filter_closed_at_lte(filter_closed_at_lte)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_custom_field_selected_option_ids(filter_custom_field_selected_option_ids)
    .filter_detected_at_gt(filter_detected_at_gt)
    .filter_detected_at_gte(filter_detected_at_gte)
    .filter_detected_at_lt(filter_detected_at_lt)
    .filter_detected_at_lte(filter_detected_at_lte)
    .filter_environment_ids(filter_environment_ids)
    .filter_environments(filter_environments)
    .filter_functionalities(filter_functionalities)
    .filter_functionality_ids(filter_functionality_ids)
    .filter_functionality_names(filter_functionality_names)
    .filter_in_triage_at_gt(filter_in_triage_at_gt)
    .filter_in_triage_at_gte(filter_in_triage_at_gte)
    .filter_in_triage_at_lt(filter_in_triage_at_lt)
    .filter_in_triage_at_lte(filter_in_triage_at_lte)
    .filter_kind(filter_kind)
    .filter_labels(filter_labels)
    .filter_mitigated_at_gt(filter_mitigated_at_gt)
    .filter_mitigated_at_gte(filter_mitigated_at_gte)
    .filter_mitigated_at_lt(filter_mitigated_at_lt)
    .filter_mitigated_at_lte(filter_mitigated_at_lte)
    .filter_private(filter_private)
    .filter_resolved_at_gt(filter_resolved_at_gt)
    .filter_resolved_at_gte(filter_resolved_at_gte)
    .filter_resolved_at_lt(filter_resolved_at_lt)
    .filter_resolved_at_lte(filter_resolved_at_lte)
    .filter_search(filter_search)
    .filter_service_ids(filter_service_ids)
    .filter_service_names(filter_service_names)
    .filter_services(filter_services)
    .filter_severity(filter_severity)
    .filter_severity_id(filter_severity_id)
    .filter_slack_channel_id(filter_slack_channel_id)
    .filter_started_at_gt(filter_started_at_gt)
    .filter_started_at_gte(filter_started_at_gte)
    .filter_started_at_lt(filter_started_at_lt)
    .filter_started_at_lte(filter_started_at_lte)
    .filter_status(filter_status)
    .filter_team_ids(filter_team_ids)
    .filter_team_names(filter_team_names)
    .filter_teams(filter_teams)
    .filter_type_ids(filter_type_ids)
    .filter_types(filter_types)
    .filter_updated_at_gt(filter_updated_at_gt)
    .filter_updated_at_gte(filter_updated_at_gte)
    .filter_updated_at_lt(filter_updated_at_lt)
    .filter_updated_at_lte(filter_updated_at_lte)
    .filter_user_id(filter_user_id)
    .include(include)
    .page_after(page_after)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incidents(&self) -> builder::ListIncidents<'_> {
        builder::ListIncidents::new(self)
    }
    /**Creates an incident

Creates a new incident from provided data

Sends a `POST` request to `/v1/incidents`

```ignore
let response = client.create_incident()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident(&self) -> builder::CreateIncident<'_> {
        builder::CreateIncident::new(self)
    }
    /**Retrieves an incident

Retrieves a specific incident by id

Sends a `GET` request to `/v1/incidents/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: sub_statuses,causes,subscribers
```ignore
let response = client.get_incident()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_incident(&self) -> builder::GetIncident<'_> {
        builder::GetIncident::new(self)
    }
    /**Update an incident

Update a specific incident by id

Sends a `PUT` request to `/v1/incidents/{id}`

```ignore
let response = client.update_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident(&self) -> builder::UpdateIncident<'_> {
        builder::UpdateIncident::new(self)
    }
    /**Delete an incident

Delete a specific incident by id

Sends a `DELETE` request to `/v1/incidents/{id}`

```ignore
let response = client.delete_incident()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident(&self) -> builder::DeleteIncident<'_> {
        builder::DeleteIncident::new(self)
    }
    /**Add subscribers to incident

Add subscribers to incident

Sends a `POST` request to `/v1/incidents/{id}/add_subscribers`

```ignore
let response = client.add_subscribers_to_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn add_subscribers_to_incident(&self) -> builder::AddSubscribersToIncident<'_> {
        builder::AddSubscribersToIncident::new(self)
    }
    /**Assign user to incident

Assign user to incident

Sends a `POST` request to `/v1/incidents/{id}/assign_role_to_user`

```ignore
let response = client.assign_user_to_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn assign_user_to_incident(&self) -> builder::AssignUserToIncident<'_> {
        builder::AssignUserToIncident::new(self)
    }
    /**Cancel an incident

Cancel a specific incident by id

Sends a `PUT` request to `/v1/incidents/{id}/cancel`

```ignore
let response = client.cancel_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn cancel_incident(&self) -> builder::CancelIncident<'_> {
        builder::CancelIncident::new(self)
    }
    /**Detach an incident from its parent

Detach a sub-incident from its parent incident

Sends a `PUT` request to `/v1/incidents/{id}/detach_from_parent`

```ignore
let response = client.detach_from_parent_incident()
    .id(id)
    .send()
    .await;
```*/
    pub fn detach_from_parent_incident(&self) -> builder::DetachFromParentIncident<'_> {
        builder::DetachFromParentIncident::new(self)
    }
    /**Mark an incident as a duplicate

Mark an incident as a duplicate

Sends a `PUT` request to `/v1/incidents/{id}/duplicate`

```ignore
let response = client.mark_as_duplicate_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn mark_as_duplicate_incident(&self) -> builder::MarkAsDuplicateIncident<'_> {
        builder::MarkAsDuplicateIncident::new(self)
    }
    /**Triage an incident

Set a specific incident by ID to triage state

Sends a `PUT` request to `/v1/incidents/{id}/in_triage`

```ignore
let response = client.triage_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn triage_incident(&self) -> builder::TriageIncident<'_> {
        builder::TriageIncident::new(self)
    }
    /**Mitigate an incident

Mitigate a specific incident by id

Sends a `PUT` request to `/v1/incidents/{id}/mitigate`

```ignore
let response = client.mitigate_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn mitigate_incident(&self) -> builder::MitigateIncident<'_> {
        builder::MitigateIncident::new(self)
    }
    /**Remove subscribers from incident

Remove subscribers to incident

Sends a `DELETE` request to `/v1/incidents/{id}/remove_subscribers`

```ignore
let response = client.remove_subscribers_to_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn remove_subscribers_to_incident(
        &self,
    ) -> builder::RemoveSubscribersToIncident<'_> {
        builder::RemoveSubscribersToIncident::new(self)
    }
    /**Resolve an incident

Resolve a specific incident by id

Sends a `PUT` request to `/v1/incidents/{id}/resolve`

```ignore
let response = client.resolve_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn resolve_incident(&self) -> builder::ResolveIncident<'_> {
        builder::ResolveIncident::new(self)
    }
    /**Restart an incident

Restart a specific incident by id

Sends a `PUT` request to `/v1/incidents/{id}/restart`

```ignore
let response = client.restart_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn restart_incident(&self) -> builder::RestartIncident<'_> {
        builder::RestartIncident::new(self)
    }
    /**Remove assigned user from incident

Remove assigned user from incident

Sends a `DELETE` request to `/v1/incidents/{id}/unassign_role_from_user`

```ignore
let response = client.remove_assigned_user_from_incident()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn remove_assigned_user_from_incident(
        &self,
    ) -> builder::RemoveAssignedUserFromIncident<'_> {
        builder::RemoveAssignedUserFromIncident::new(self)
    }
    /**Remove duplicate marking from an incident

Remove the duplicate marking from an incident

Sends a `PUT` request to `/v1/incidents/{id}/unmark_as_duplicate`

```ignore
let response = client.unmark_as_duplicate_incident()
    .id(id)
    .send()
    .await;
```*/
    pub fn unmark_as_duplicate_incident(
        &self,
    ) -> builder::UnmarkAsDuplicateIncident<'_> {
        builder::UnmarkAsDuplicateIncident::new(self)
    }
    /**List incident action items

List incident action items

Sends a `GET` request to `/v1/incidents/{incident_id}/action_items`

```ignore
let response = client.list_incident_action_items()
    .incident_id(incident_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_action_items(&self) -> builder::ListIncidentActionItems<'_> {
        builder::ListIncidentActionItems::new(self)
    }
    /**Creates an incident action item

Creates a new action item from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/action_items`

```ignore
let response = client.create_incident_action_item()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_action_item(&self) -> builder::CreateIncidentActionItem<'_> {
        builder::CreateIncidentActionItem::new(self)
    }
    /**List Incident alerts

List incident alerts

Sends a `GET` request to `/v1/incidents/{incident_id}/alerts`

Arguments:
- `incident_id`
- `include`: comma separated if needed. eg: environments,services,groups
```ignore
let response = client.list_incident_alerts()
    .incident_id(incident_id)
    .include(include)
    .send()
    .await;
```*/
    pub fn list_incident_alerts(&self) -> builder::ListIncidentAlerts<'_> {
        builder::ListIncidentAlerts::new(self)
    }
    /**Attach alerts to an incident

Attach alerts to an incident from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/alerts`

```ignore
let response = client.attach_alert()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn attach_alert(&self) -> builder::AttachAlert<'_> {
        builder::AttachAlert::new(self)
    }
    /**[DEPRECATED] List incident custom field selections

[DEPRECATED] Use form field endpoints instead. List incident custom field selections

Sends a `GET` request to `/v1/incidents/{incident_id}/custom_field_selections`

```ignore
let response = client.list_incident_custom_field_selections()
    .incident_id(incident_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_custom_field_selections(
        &self,
    ) -> builder::ListIncidentCustomFieldSelections<'_> {
        builder::ListIncidentCustomFieldSelections::new(self)
    }
    /**[DEPRECATED] Creates an incident custom field selection

[DEPRECATED] Use form field endpoints instead. Creates a new incident custom field selection from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/custom_field_selections`

```ignore
let response = client.create_incident_custom_field_selection()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_custom_field_selection(
        &self,
    ) -> builder::CreateIncidentCustomFieldSelection<'_> {
        builder::CreateIncidentCustomFieldSelection::new(self)
    }
    /**List incident events

List incident events

Sends a `GET` request to `/v1/incidents/{incident_id}/events`

```ignore
let response = client.list_incident_events()
    .incident_id(incident_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_events(&self) -> builder::ListIncidentEvents<'_> {
        builder::ListIncidentEvents::new(self)
    }
    /**Creates an incident event

Creates a new event from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/events`

```ignore
let response = client.create_incident_event()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_event(&self) -> builder::CreateIncidentEvent<'_> {
        builder::CreateIncidentEvent::new(self)
    }
    /**List incident feedbacks

List incident feedbacks

Sends a `GET` request to `/v1/incidents/{incident_id}/feedbacks`

```ignore
let response = client.list_incident_feedbacks()
    .incident_id(incident_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_feedbacks(&self) -> builder::ListIncidentFeedbacks<'_> {
        builder::ListIncidentFeedbacks::new(self)
    }
    /**Creates an incident feedback

Creates a new feedback from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/feedbacks`

```ignore
let response = client.create_incident_feedback()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_feedback(&self) -> builder::CreateIncidentFeedback<'_> {
        builder::CreateIncidentFeedback::new(self)
    }
    /**List incident form field selections

List incident form field selections

Sends a `GET` request to `/v1/incidents/{incident_id}/form_field_selections`

```ignore
let response = client.list_incident_form_field_selections()
    .incident_id(incident_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_form_field_selections(
        &self,
    ) -> builder::ListIncidentFormFieldSelections<'_> {
        builder::ListIncidentFormFieldSelections::new(self)
    }
    /**Creates an incident form field selection

Creates a new incident form field selection from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/form_field_selections`

```ignore
let response = client.create_incident_form_field_selection()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_form_field_selection(
        &self,
    ) -> builder::CreateIncidentFormFieldSelection<'_> {
        builder::CreateIncidentFormFieldSelection::new(self)
    }
    /**List meeting recordings

List all meeting recording sessions for an incident. Returns recordings sorted by session number. Each recording represents one bot session with its own transcript, status, and metadata.

Sends a `GET` request to `/v1/incidents/{incident_id}/meeting_recordings`

Arguments:
- `incident_id`: Incident UUID
- `page_number`: Page number
- `page_size`: Number of recordings per page
```ignore
let response = client.list_meeting_recordings()
    .incident_id(incident_id)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_meeting_recordings(&self) -> builder::ListMeetingRecordings<'_> {
        builder::ListMeetingRecordings::new(self)
    }
    /**Create meeting recording

Invite a recording bot to the incident's meeting. If no previous recordings exist for the platform, a new bot is invited (session 1). If previous sessions exist, a new session is created (re-invite). The bot joins the meeting, records audio/video, and generates a transcript when the session ends.

Sends a `POST` request to `/v1/incidents/{incident_id}/meeting_recordings`

Arguments:
- `incident_id`: Incident UUID
- `platform`: Meeting platform
```ignore
let response = client.create_meeting_recording()
    .incident_id(incident_id)
    .platform(platform)
    .send()
    .await;
```*/
    pub fn create_meeting_recording(&self) -> builder::CreateMeetingRecording<'_> {
        builder::CreateMeetingRecording::new(self)
    }
    /**Import a meeting recording

Import an externally captured meeting recording and attach it to an incident. Video and transcript are fetched asynchronously. The existing POST /v1/incidents/{incident_id}/meeting_recordings endpoint invites a bot — this endpoint handles recordings that were captured outside of the bot flow.

Sends a `POST` request to `/v1/incidents/{incident_id}/meeting_recordings/import`

Arguments:
- `incident_id`: Incident UUID
- `body`
```ignore
let response = client.import_meeting_recording()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn import_meeting_recording(&self) -> builder::ImportMeetingRecording<'_> {
        builder::ImportMeetingRecording::new(self)
    }
    /**List incident status page events

List incident status page events

Sends a `GET` request to `/v1/incidents/{incident_id}/status-page-events`

```ignore
let response = client.list_incident_status_pages()
    .incident_id(incident_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_incident_status_pages(&self) -> builder::ListIncidentStatusPages<'_> {
        builder::ListIncidentStatusPages::new(self)
    }
    /**Creates an incident status page event

Creates a new event from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/status-page-events`

```ignore
let response = client.create_incident_status_page()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_status_page(&self) -> builder::CreateIncidentStatusPage<'_> {
        builder::CreateIncidentStatusPage::new(self)
    }
    /**List incident_sub_statuses

List incident_sub_statuses

Sends a `GET` request to `/v1/incidents/{incident_id}/sub_statuses`

Arguments:
- `incident_id`
- `filter_assigned_at_gt`
- `filter_assigned_at_gte`
- `filter_assigned_at_lt`
- `filter_assigned_at_lte`
- `filter_sub_status_id`
- `include`: comma separated if needed. eg: sub_status,assigned_by_user
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_incident_sub_statuses()
    .incident_id(incident_id)
    .filter_assigned_at_gt(filter_assigned_at_gt)
    .filter_assigned_at_gte(filter_assigned_at_gte)
    .filter_assigned_at_lt(filter_assigned_at_lt)
    .filter_assigned_at_lte(filter_assigned_at_lte)
    .filter_sub_status_id(filter_sub_status_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_sub_statuses(&self) -> builder::ListIncidentSubStatuses<'_> {
        builder::ListIncidentSubStatuses::new(self)
    }
    /**Creates a sub-status assignment

Creates a new sub-status assignment from provided data

Sends a `POST` request to `/v1/incidents/{incident_id}/sub_statuses`

```ignore
let response = client.create_incident_sub_status()
    .incident_id(incident_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_incident_sub_status(&self) -> builder::CreateIncidentSubStatus<'_> {
        builder::CreateIncidentSubStatus::new(self)
    }
    /**Retrieves IP ranges

Retrieves the IP ranges for rootly.com services

Sends a `GET` request to `/v1/ip_ranges`

```ignore
let response = client.get_ip_ranges()
    .send()
    .await;
```*/
    pub fn get_ip_ranges(&self) -> builder::GetIpRanges<'_> {
        builder::GetIpRanges::new(self)
    }
    /**List Live Call Routers

List Live Call Routers

Sends a `GET` request to `/v1/live_call_routers`

```ignore
let response = client.list_live_call_routers()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_live_call_routers(&self) -> builder::ListLiveCallRouters<'_> {
        builder::ListLiveCallRouters::new(self)
    }
    /**Creates a Live Call Router

Creates a new Live Call Router from provided data

Sends a `POST` request to `/v1/live_call_routers`

```ignore
let response = client.create_live_call_router()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_live_call_router(&self) -> builder::CreateLiveCallRouter<'_> {
        builder::CreateLiveCallRouter::new(self)
    }
    /**Generates a phone number for Live Call Router

Generates a phone number for Live Call Router

Sends a `GET` request to `/v1/live_call_routers/generate_phone_number`

```ignore
let response = client.generate_phone_number_live_call_router()
    .country_code(country_code)
    .phone_type(phone_type)
    .send()
    .await;
```*/
    pub fn generate_phone_number_live_call_router(
        &self,
    ) -> builder::GeneratePhoneNumberLiveCallRouter<'_> {
        builder::GeneratePhoneNumberLiveCallRouter::new(self)
    }
    /**Retrieves a Live Call Router

Retrieves a specific Live Call Router by id

Sends a `GET` request to `/v1/live_call_routers/{id}`

```ignore
let response = client.get_live_call_router()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_live_call_router(&self) -> builder::GetLiveCallRouter<'_> {
        builder::GetLiveCallRouter::new(self)
    }
    /**Update a Live Call Router

Update a specific Live Call Router by id

Sends a `PUT` request to `/v1/live_call_routers/{id}`

```ignore
let response = client.update_live_call_router()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_live_call_router(&self) -> builder::UpdateLiveCallRouter<'_> {
        builder::UpdateLiveCallRouter::new(self)
    }
    /**Delete a Live Call Router

Delete a specific Live Call Router by id

Sends a `DELETE` request to `/v1/live_call_routers/{id}`

```ignore
let response = client.delete_live_call_router()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_live_call_router(&self) -> builder::DeleteLiveCallRouter<'_> {
        builder::DeleteLiveCallRouter::new(self)
    }
    /**Get a meeting recording

Retrieve a single meeting recording session including its status, duration, speaker count, word count, and transcript summary.

Sends a `GET` request to `/v1/meeting_recordings/{id}`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.get_meeting_recording()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_meeting_recording(&self) -> builder::GetMeetingRecording<'_> {
        builder::GetMeetingRecording::new(self)
    }
    /**Delete a meeting recording

Delete a meeting recording. Only completed or failed recordings can be deleted. Active recordings (pending, recording, paused) must be stopped first.

Sends a `DELETE` request to `/v1/meeting_recordings/{id}`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.delete_meeting_recording()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_meeting_recording(&self) -> builder::DeleteMeetingRecording<'_> {
        builder::DeleteMeetingRecording::new(self)
    }
    /**Delete video from a meeting recording

Delete only the video file from a meeting recording. The transcript, summary, and all metadata are preserved. Only non-active recordings with an attached video can have their video deleted.

Sends a `DELETE` request to `/v1/meeting_recordings/{id}/delete_video`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.delete_meeting_recording_video()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_meeting_recording_video(
        &self,
    ) -> builder::DeleteMeetingRecordingVideo<'_> {
        builder::DeleteMeetingRecordingVideo::new(self)
    }
    /**Leave a meeting call

Remove the recording bot from the meeting entirely. Unlike stop, this immediately disconnects the bot. The session will transition to analyzing and then completed once transcript processing finishes.

Sends a `POST` request to `/v1/meeting_recordings/{id}/leave`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.leave_meeting_recording()
    .id(id)
    .send()
    .await;
```*/
    pub fn leave_meeting_recording(&self) -> builder::LeaveMeetingRecording<'_> {
        builder::LeaveMeetingRecording::new(self)
    }
    /**Pause a meeting recording

Pause an active recording session. The bot remains in the meeting but stops capturing audio/video. Use the resume endpoint to continue recording.

Sends a `POST` request to `/v1/meeting_recordings/{id}/pause`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.pause_meeting_recording()
    .id(id)
    .send()
    .await;
```*/
    pub fn pause_meeting_recording(&self) -> builder::PauseMeetingRecording<'_> {
        builder::PauseMeetingRecording::new(self)
    }
    /**Resume a meeting recording

Resume a paused recording session. The bot continues capturing audio/video from the meeting.

Sends a `POST` request to `/v1/meeting_recordings/{id}/resume`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.resume_meeting_recording()
    .id(id)
    .send()
    .await;
```*/
    pub fn resume_meeting_recording(&self) -> builder::ResumeMeetingRecording<'_> {
        builder::ResumeMeetingRecording::new(self)
    }
    /**Stop a meeting recording

Stop an active or paused recording. The bot finishes processing, generates a transcript, and the session status transitions to completed. This is irreversible — to record again, create a new session.

Sends a `POST` request to `/v1/meeting_recordings/{id}/stop`

Arguments:
- `id`: Meeting Recording UUID
```ignore
let response = client.stop_meeting_recording()
    .id(id)
    .send()
    .await;
```*/
    pub fn stop_meeting_recording(&self) -> builder::StopMeetingRecording<'_> {
        builder::StopMeetingRecording::new(self)
    }
    /**Retrieves an user notification rule

Retrieves a specific user notification rule by id

Sends a `GET` request to `/v1/notification_rules/{id}`

```ignore
let response = client.get_user_notification_rule()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_user_notification_rule(&self) -> builder::GetUserNotificationRule<'_> {
        builder::GetUserNotificationRule::new(self)
    }
    /**Update an user notification rule

Update a specific user notification rule by id

Sends a `PUT` request to `/v1/notification_rules/{id}`

```ignore
let response = client.update_user_notification_rule()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_user_notification_rule(
        &self,
    ) -> builder::UpdateUserNotificationRule<'_> {
        builder::UpdateUserNotificationRule::new(self)
    }
    /**Delete an user notification rule

Delete a specific user notification rule by id

Sends a `DELETE` request to `/v1/notification_rules/{id}`

```ignore
let response = client.delete_user_notification_rule()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_user_notification_rule(
        &self,
    ) -> builder::DeleteUserNotificationRule<'_> {
        builder::DeleteUserNotificationRule::new(self)
    }
    /**List On-Call Pay Reports

List on-call pay reports

Sends a `GET` request to `/v1/on_call_pay_reports`

```ignore
let response = client.list_on_call_pay_reports()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_status(filter_status)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_on_call_pay_reports(&self) -> builder::ListOnCallPayReports<'_> {
        builder::ListOnCallPayReports::new(self)
    }
    /**Creates an On-Call Pay Report

Generates a new on-call pay report for the given date range. The report is generated asynchronously.

Sends a `POST` request to `/v1/on_call_pay_reports`

```ignore
let response = client.create_on_call_pay_report()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_on_call_pay_report(&self) -> builder::CreateOnCallPayReport<'_> {
        builder::CreateOnCallPayReport::new(self)
    }
    /**Retrieves an On-Call Pay Report

Retrieves a specific on-call pay report by id

Sends a `GET` request to `/v1/on_call_pay_reports/{id}`

```ignore
let response = client.get_on_call_pay_report()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_on_call_pay_report(&self) -> builder::GetOnCallPayReport<'_> {
        builder::GetOnCallPayReport::new(self)
    }
    /**Update an On-Call Pay Report

Update a specific on-call pay report by id. Triggers report regeneration.

Sends a `PUT` request to `/v1/on_call_pay_reports/{id}`

```ignore
let response = client.update_on_call_pay_report()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_on_call_pay_report(&self) -> builder::UpdateOnCallPayReport<'_> {
        builder::UpdateOnCallPayReport::new(self)
    }
    /**Regenerate an On-Call Pay Report

Triggers regeneration of an existing on-call pay report.

Sends a `POST` request to `/v1/on_call_pay_reports/{id}/regenerate`

```ignore
let response = client.regenerate_on_call_pay_report()
    .id(id)
    .send()
    .await;
```*/
    pub fn regenerate_on_call_pay_report(
        &self,
    ) -> builder::RegenerateOnCallPayReport<'_> {
        builder::RegenerateOnCallPayReport::new(self)
    }
    /**List On-Call Roles

List On-Call Roles

Sends a `GET` request to `/v1/on_call_roles`

```ignore
let response = client.list_on_call_roles()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_on_call_roles(&self) -> builder::ListOnCallRoles<'_> {
        builder::ListOnCallRoles::new(self)
    }
    /**Creates an On-Call Role

Creates a new On-Call Role from provided data

Sends a `POST` request to `/v1/on_call_roles`

```ignore
let response = client.create_on_call_role()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_on_call_role(&self) -> builder::CreateOnCallRole<'_> {
        builder::CreateOnCallRole::new(self)
    }
    /**Retrieves an On-Call Role

Retrieves a specific On-Call Role by id

Sends a `GET` request to `/v1/on_call_roles/{id}`

```ignore
let response = client.get_on_call_role()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_on_call_role(&self) -> builder::GetOnCallRole<'_> {
        builder::GetOnCallRole::new(self)
    }
    /**Update an On-Call Role

Update a specific On-Call Role by id

Sends a `PUT` request to `/v1/on_call_roles/{id}`

```ignore
let response = client.update_on_call_role()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_on_call_role(&self) -> builder::UpdateOnCallRole<'_> {
        builder::UpdateOnCallRole::new(self)
    }
    /**Delete an On-Call Role

Delete a specific On-Call Role by id

Sends a `DELETE` request to `/v1/on_call_roles/{id}`

```ignore
let response = client.delete_on_call_role()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_on_call_role(&self) -> builder::DeleteOnCallRole<'_> {
        builder::DeleteOnCallRole::new(self)
    }
    /**Retrieves an On Call Shadow configuration by ID

Retrieves a specific On Call Shadow configuration by ID

Sends a `GET` request to `/v1/on_call_shadows/{id}`

```ignore
let response = client.get_on_call_shadow()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_on_call_shadow(&self) -> builder::GetOnCallShadow<'_> {
        builder::GetOnCallShadow::new(self)
    }
    /**Update an On Call Shadow configuration

Update a specific on call shadow configuration by id

Sends a `PUT` request to `/v1/on_call_shadows/{id}`

```ignore
let response = client.update_on_call_shadow()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_on_call_shadow(&self) -> builder::UpdateOnCallShadow<'_> {
        builder::UpdateOnCallShadow::new(self)
    }
    /**Delete an on call shadow configuration

Delete a specific on call shadow configuration by id. Future shadows are hard-deleted. Active shadows (started in the past) have their end time truncated to preserve historical data.

Sends a `DELETE` request to `/v1/on_call_shadows/{id}`

```ignore
let response = client.delete_on_call_shadow()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_on_call_shadow(&self) -> builder::DeleteOnCallShadow<'_> {
        builder::DeleteOnCallShadow::new(self)
    }
    /**List on-calls

List who is currently on-call, with support for filtering by escalation policy, schedule, and user. Returns on-call entries grouped by escalation policy level.

Sends a `GET` request to `/v1/oncalls`

Arguments:
- `earliest`: When true, returns only the first on-call entry per escalation policy path and level
- `filter_escalation_policy_ids`: Comma-separated escalation policy IDs
- `filter_group_ids`: Comma-separated group IDs (teams)
- `filter_notification_types`: Comma-separated notification types to include. One or both of: audible, quiet. When omitted, returns oncalls from all non-deferral escalation paths. When provided, limits results to matching notification types and sorts audible-first.
- `filter_schedule_ids`: Comma-separated schedule IDs
- `filter_service_ids`: Comma-separated service IDs
- `filter_user_ids`: Comma-separated user IDs
- `include`: comma separated if needed. eg: user,schedule
- `since`: Start of time range in ISO-8601 format (e.g., 2025-01-01T00:00:00Z). Defaults to current time.
- `time_zone`: Timezone for response times (e.g., America/New_York). Defaults to UTC.
- `until`: End of time range in ISO-8601 format (e.g., 2025-01-01T00:00:00Z). Defaults to 'since' time.
```ignore
let response = client.list_oncalls()
    .earliest(earliest)
    .filter_escalation_policy_ids(filter_escalation_policy_ids)
    .filter_group_ids(filter_group_ids)
    .filter_notification_types(filter_notification_types)
    .filter_schedule_ids(filter_schedule_ids)
    .filter_service_ids(filter_service_ids)
    .filter_user_ids(filter_user_ids)
    .include(include)
    .since(since)
    .time_zone(time_zone)
    .until(until)
    .send()
    .await;
```*/
    pub fn list_oncalls(&self) -> builder::ListOncalls<'_> {
        builder::ListOncalls::new(self)
    }
    /**Retrieves an override shift

Retrieves a specific override shift by id

Sends a `GET` request to `/v1/override_shifts/{id}`

```ignore
let response = client.get_override_shift()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_override_shift(&self) -> builder::GetOverrideShift<'_> {
        builder::GetOverrideShift::new(self)
    }
    /**Update an override shift

Update a specific override shift by id

Sends a `PUT` request to `/v1/override_shifts/{id}`

```ignore
let response = client.update_override_shift()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_override_shift(&self) -> builder::UpdateOverrideShift<'_> {
        builder::UpdateOverrideShift::new(self)
    }
    /**Delete an override shift

Delete a specific override shift by id

Sends a `DELETE` request to `/v1/override_shifts/{id}`

```ignore
let response = client.delete_override_shift()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_override_shift(&self) -> builder::DeleteOverrideShift<'_> {
        builder::DeleteOverrideShift::new(self)
    }
    /**Show user phone number

Retrieves a specific user phone number

Sends a `GET` request to `/v1/phone_numbers/{id}`

```ignore
let response = client.show_user_phone_number()
    .id(id)
    .send()
    .await;
```*/
    pub fn show_user_phone_number(&self) -> builder::ShowUserPhoneNumber<'_> {
        builder::ShowUserPhoneNumber::new(self)
    }
    /**Update user phone number

Updates a user phone number

Sends a `PUT` request to `/v1/phone_numbers/{id}`

```ignore
let response = client.update_user_phone_number()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_user_phone_number(&self) -> builder::UpdateUserPhoneNumber<'_> {
        builder::UpdateUserPhoneNumber::new(self)
    }
    /**Delete user phone number

Deletes a user phone number

Sends a `DELETE` request to `/v1/phone_numbers/{id}`

```ignore
let response = client.delete_user_phone_number()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_user_phone_number(&self) -> builder::DeleteUserPhoneNumber<'_> {
        builder::DeleteUserPhoneNumber::new(self)
    }
    /**Retrieves a playbook task

Retrieves a specific playbook_task by id

Sends a `GET` request to `/v1/playbook_tasks/{id}`

```ignore
let response = client.get_playbook_task()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_playbook_task(&self) -> builder::GetPlaybookTask<'_> {
        builder::GetPlaybookTask::new(self)
    }
    /**Update a playbook task

Update a specific playbook task by id

Sends a `PUT` request to `/v1/playbook_tasks/{id}`

```ignore
let response = client.update_playbook_task()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_playbook_task(&self) -> builder::UpdatePlaybookTask<'_> {
        builder::UpdatePlaybookTask::new(self)
    }
    /**Delete a playbook task

Delete a specific playbook task by id

Sends a `DELETE` request to `/v1/playbook_tasks/{id}`

```ignore
let response = client.delete_playbook_task()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_playbook_task(&self) -> builder::DeletePlaybookTask<'_> {
        builder::DeletePlaybookTask::new(self)
    }
    /**List playbooks

List playbooks

Sends a `GET` request to `/v1/playbooks`

Arguments:
- `include`: comma separated if needed. eg: severities,environments,services
- `page_number`
- `page_size`
```ignore
let response = client.list_playbooks()
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_playbooks(&self) -> builder::ListPlaybooks<'_> {
        builder::ListPlaybooks::new(self)
    }
    /**Creates a playbook

Creates a new playbook from provided data

Sends a `POST` request to `/v1/playbooks`

```ignore
let response = client.create_playbook()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_playbook(&self) -> builder::CreatePlaybook<'_> {
        builder::CreatePlaybook::new(self)
    }
    /**Retrieves a playbook

Retrieves a specific playbook by id

Sends a `GET` request to `/v1/playbooks/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: severities,environments,services
```ignore
let response = client.get_playbook()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_playbook(&self) -> builder::GetPlaybook<'_> {
        builder::GetPlaybook::new(self)
    }
    /**Update a playbook

Update a specific playbook by id

Sends a `PUT` request to `/v1/playbooks/{id}`

```ignore
let response = client.update_playbook()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_playbook(&self) -> builder::UpdatePlaybook<'_> {
        builder::UpdatePlaybook::new(self)
    }
    /**Delete a playbook

Delete a specific playbook by id

Sends a `DELETE` request to `/v1/playbooks/{id}`

```ignore
let response = client.delete_playbook()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_playbook(&self) -> builder::DeletePlaybook<'_> {
        builder::DeletePlaybook::new(self)
    }
    /**List playbook tasks

List playbook tasks

Sends a `GET` request to `/v1/playbooks/{playbook_id}/playbook_tasks`

```ignore
let response = client.list_playbook_tasks()
    .playbook_id(playbook_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_playbook_tasks(&self) -> builder::ListPlaybookTasks<'_> {
        builder::ListPlaybookTasks::new(self)
    }
    /**Creates a playbook task

Creates a new task from provided data

Sends a `POST` request to `/v1/playbooks/{playbook_id}/playbook_tasks`

```ignore
let response = client.create_playbook_task()
    .playbook_id(playbook_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_playbook_task(&self) -> builder::CreatePlaybookTask<'_> {
        builder::CreatePlaybookTask::new(self)
    }
    /**List Retrospective Templates

List Retrospective Templates

Sends a `GET` request to `/v1/post_mortem_templates`

```ignore
let response = client.list_postmortem_templates()
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_postmortem_templates(&self) -> builder::ListPostmortemTemplates<'_> {
        builder::ListPostmortemTemplates::new(self)
    }
    /**Creates a retrospective template

Creates a new Retrospective Template from provided data

Sends a `POST` request to `/v1/post_mortem_templates`

```ignore
let response = client.create_postmortem_template()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_postmortem_template(&self) -> builder::CreatePostmortemTemplate<'_> {
        builder::CreatePostmortemTemplate::new(self)
    }
    /**Retrieves a Retrospective Template

Retrieves a specific Retrospective Template by id

Sends a `GET` request to `/v1/post_mortem_templates/{id}`

```ignore
let response = client.get_postmortem_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_postmortem_template(&self) -> builder::GetPostmortemTemplate<'_> {
        builder::GetPostmortemTemplate::new(self)
    }
    /**Update a Retrospective Template

Update a specific Retrospective Template by id

Sends a `PUT` request to `/v1/post_mortem_templates/{id}`

```ignore
let response = client.update_postmortem_template()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_postmortem_template(&self) -> builder::UpdatePostmortemTemplate<'_> {
        builder::UpdatePostmortemTemplate::new(self)
    }
    /**Delete a Retrospective Template

Delete a specific Retrospective Template by id

Sends a `DELETE` request to `/v1/post_mortem_templates/{id}`

```ignore
let response = client.delete_postmortem_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_postmortem_template(&self) -> builder::DeletePostmortemTemplate<'_> {
        builder::DeletePostmortemTemplate::new(self)
    }
    /**List incident retrospectives

List incident retrospectives

Sends a `GET` request to `/v1/post_mortems`

Arguments:
- `filter_cause_ids`: Filter by cause IDs (UUIDs)
- `filter_causes`: Filter by cause slugs
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_environment_ids`: Filter by environment IDs (UUIDs)
- `filter_environments`: Filter by environment slugs
- `filter_functionalities`: Filter by functionality slugs
- `filter_functionality_ids`: Filter by functionality IDs (UUIDs)
- `filter_mitigated_at_gt`
- `filter_mitigated_at_gte`
- `filter_mitigated_at_lt`
- `filter_mitigated_at_lte`
- `filter_resolved_at_gt`
- `filter_resolved_at_gte`
- `filter_resolved_at_lt`
- `filter_resolved_at_lte`
- `filter_search`
- `filter_service_ids`: Filter by service IDs (UUIDs)
- `filter_services`: Filter by service slugs
- `filter_severity`
- `filter_started_at_gt`
- `filter_started_at_gte`
- `filter_started_at_lt`
- `filter_started_at_lte`
- `filter_status`
- `filter_team_ids`: Filter by team/group IDs (UUIDs)
- `filter_teams`: Filter by team/group slugs
- `filter_type`
- `filter_type_ids`: Filter by incident type IDs (UUIDs)
- `filter_types`: Filter by incident type slugs
- `filter_user_id`
- `include`
- `page_number`
- `page_size`
- `sort`
```ignore
let response = client.list_incident_post_mortems()
    .filter_cause_ids(filter_cause_ids)
    .filter_causes(filter_causes)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_environment_ids(filter_environment_ids)
    .filter_environments(filter_environments)
    .filter_functionalities(filter_functionalities)
    .filter_functionality_ids(filter_functionality_ids)
    .filter_mitigated_at_gt(filter_mitigated_at_gt)
    .filter_mitigated_at_gte(filter_mitigated_at_gte)
    .filter_mitigated_at_lt(filter_mitigated_at_lt)
    .filter_mitigated_at_lte(filter_mitigated_at_lte)
    .filter_resolved_at_gt(filter_resolved_at_gt)
    .filter_resolved_at_gte(filter_resolved_at_gte)
    .filter_resolved_at_lt(filter_resolved_at_lt)
    .filter_resolved_at_lte(filter_resolved_at_lte)
    .filter_search(filter_search)
    .filter_service_ids(filter_service_ids)
    .filter_services(filter_services)
    .filter_severity(filter_severity)
    .filter_started_at_gt(filter_started_at_gt)
    .filter_started_at_gte(filter_started_at_gte)
    .filter_started_at_lt(filter_started_at_lt)
    .filter_started_at_lte(filter_started_at_lte)
    .filter_status(filter_status)
    .filter_team_ids(filter_team_ids)
    .filter_teams(filter_teams)
    .filter_type(filter_type)
    .filter_type_ids(filter_type_ids)
    .filter_types(filter_types)
    .filter_user_id(filter_user_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_incident_post_mortems(&self) -> builder::ListIncidentPostMortems<'_> {
        builder::ListIncidentPostMortems::new(self)
    }
    /**Retrieves an incident retrospective

List incidents retrospectives

Sends a `GET` request to `/v1/post_mortems/{id}`

```ignore
let response = client.list_incident_postmortem()
    .id(id)
    .send()
    .await;
```*/
    pub fn list_incident_postmortem(&self) -> builder::ListIncidentPostmortem<'_> {
        builder::ListIncidentPostmortem::new(self)
    }
    /**Update an incident retrospective

Update a specific incident retrospective by id

Sends a `PUT` request to `/v1/post_mortems/{id}`

```ignore
let response = client.update_incident_postmortem()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_postmortem(&self) -> builder::UpdateIncidentPostmortem<'_> {
        builder::UpdateIncidentPostmortem::new(self)
    }
    /**List pulses

List pulses

Sends a `GET` request to `/v1/pulses`

```ignore
let response = client.list_pulses()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_ended_at_gt(filter_ended_at_gt)
    .filter_ended_at_gte(filter_ended_at_gte)
    .filter_ended_at_lt(filter_ended_at_lt)
    .filter_ended_at_lte(filter_ended_at_lte)
    .filter_environments(filter_environments)
    .filter_labels(filter_labels)
    .filter_refs(filter_refs)
    .filter_services(filter_services)
    .filter_source(filter_source)
    .filter_started_at_gt(filter_started_at_gt)
    .filter_started_at_gte(filter_started_at_gte)
    .filter_started_at_lt(filter_started_at_lt)
    .filter_started_at_lte(filter_started_at_lte)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_pulses(&self) -> builder::ListPulses<'_> {
        builder::ListPulses::new(self)
    }
    /**Creates a pulse

Creates a new pulse from provided data

Sends a `POST` request to `/v1/pulses`

```ignore
let response = client.create_pulse()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_pulse(&self) -> builder::CreatePulse<'_> {
        builder::CreatePulse::new(self)
    }
    /**Retrieves a pulse

Retrieves a specific pulse by id

Sends a `GET` request to `/v1/pulses/{id}`

```ignore
let response = client.get_pulse()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_pulse(&self) -> builder::GetPulse<'_> {
        builder::GetPulse::new(self)
    }
    /**Update a pulse

Update a specific pulse by id

Sends a `PUT` request to `/v1/pulses/{id}`

```ignore
let response = client.update_pulse()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_pulse(&self) -> builder::UpdatePulse<'_> {
        builder::UpdatePulse::new(self)
    }
    /**List retrospective configurations

List retrospective configurations

Sends a `GET` request to `/v1/retrospective_configurations`

Arguments:
- `filter_kind`
- `include`: comma separated if needed. eg: severities,groups
- `page_number`
- `page_size`
```ignore
let response = client.list_retrospective_configurations()
    .filter_kind(filter_kind)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_retrospective_configurations(
        &self,
    ) -> builder::ListRetrospectiveConfigurations<'_> {
        builder::ListRetrospectiveConfigurations::new(self)
    }
    /**Retrieves a Retrospective Configuration

Retrieves a specific retrospective_configuration by id

Sends a `GET` request to `/v1/retrospective_configurations/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: severities,groups
```ignore
let response = client.get_retrospective_configuration()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_retrospective_configuration(
        &self,
    ) -> builder::GetRetrospectiveConfiguration<'_> {
        builder::GetRetrospectiveConfiguration::new(self)
    }
    /**Update a retrospective configuration

Update a specific retrospective configuration by id

Sends a `PUT` request to `/v1/retrospective_configurations/{id}`

```ignore
let response = client.update_retrospective_configuration()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_retrospective_configuration(
        &self,
    ) -> builder::UpdateRetrospectiveConfiguration<'_> {
        builder::UpdateRetrospectiveConfiguration::new(self)
    }
    /**Retrieves a RetrospectiveProcessGroup Step

Retrieves a specific RetrospectiveProcessGroup Step by id

Sends a `GET` request to `/v1/retrospective_process_group_steps/{id}`

```ignore
let response = client.get_retrospective_process_group_step()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_retrospective_process_group_step(
        &self,
    ) -> builder::GetRetrospectiveProcessGroupStep<'_> {
        builder::GetRetrospectiveProcessGroupStep::new(self)
    }
    /**Update RetrospectiveProcessGroup Step

Update a specific RetrospectiveProcessGroup Step by id

Sends a `PUT` request to `/v1/retrospective_process_group_steps/{id}`

```ignore
let response = client.update_retrospective_process_group_step()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_retrospective_process_group_step(
        &self,
    ) -> builder::UpdateRetrospectiveProcessGroupStep<'_> {
        builder::UpdateRetrospectiveProcessGroupStep::new(self)
    }
    /**Delete a RetrospectiveProcessGroup Step

Delete a specific RetrospectiveProcessGroup Step by id

Sends a `DELETE` request to `/v1/retrospective_process_group_steps/{id}`

```ignore
let response = client.delete_retrospective_process_group_step()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_retrospective_process_group_step(
        &self,
    ) -> builder::DeleteRetrospectiveProcessGroupStep<'_> {
        builder::DeleteRetrospectiveProcessGroupStep::new(self)
    }
    /**Retrieves a Retrospective Process Group

Retrieves a specific Retrospective Process Group by id

Sends a `GET` request to `/v1/retrospective_process_groups/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: retrospective_process_group_steps
```ignore
let response = client.get_retrospective_process_group()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_retrospective_process_group(
        &self,
    ) -> builder::GetRetrospectiveProcessGroup<'_> {
        builder::GetRetrospectiveProcessGroup::new(self)
    }
    /**Update a Retrospective Process Group

Update a specific Retrospective Process Group by id

Sends a `PUT` request to `/v1/retrospective_process_groups/{id}`

```ignore
let response = client.update_retrospective_process_group()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_retrospective_process_group(
        &self,
    ) -> builder::UpdateRetrospectiveProcessGroup<'_> {
        builder::UpdateRetrospectiveProcessGroup::new(self)
    }
    /**Delete a Retrospective Process Group

Delete a specific Retrospective Process Group by id

Sends a `DELETE` request to `/v1/retrospective_process_groups/{id}`

```ignore
let response = client.delete_retrospective_process_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_retrospective_process_group(
        &self,
    ) -> builder::DeleteRetrospectiveProcessGroup<'_> {
        builder::DeleteRetrospectiveProcessGroup::new(self)
    }
    /**List RetrospectiveProcessGroup Steps

List RetrospectiveProcessGroup Steps

Sends a `GET` request to `/v1/retrospective_process_groups/{retrospective_process_group_id}/steps`

```ignore
let response = client.list_retrospective_process_group_steps()
    .retrospective_process_group_id(retrospective_process_group_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_retrospective_step_id(filter_retrospective_step_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_retrospective_process_group_steps(
        &self,
    ) -> builder::ListRetrospectiveProcessGroupSteps<'_> {
        builder::ListRetrospectiveProcessGroupSteps::new(self)
    }
    /**Creates a retrospective process group step

Creates a new retrospective process group step from provided data

Sends a `POST` request to `/v1/retrospective_process_groups/{retrospective_process_group_id}/steps`

```ignore
let response = client.create_retrospective_process_group_step()
    .retrospective_process_group_id(retrospective_process_group_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_retrospective_process_group_step(
        &self,
    ) -> builder::CreateRetrospectiveProcessGroupStep<'_> {
        builder::CreateRetrospectiveProcessGroupStep::new(self)
    }
    /**List retrospective processes

List retrospective processes

Sends a `GET` request to `/v1/retrospective_processes`

Arguments:
- `include`: comma separated if needed. eg: retrospective_steps,severities
- `page_number`
- `page_size`
```ignore
let response = client.list_retrospective_processes()
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_retrospective_processes(
        &self,
    ) -> builder::ListRetrospectiveProcesses<'_> {
        builder::ListRetrospectiveProcesses::new(self)
    }
    /**Creates a retrospective process

Creates a new retrospective process from provided data

Sends a `POST` request to `/v1/retrospective_processes`

```ignore
let response = client.create_retrospective_process()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_retrospective_process(
        &self,
    ) -> builder::CreateRetrospectiveProcess<'_> {
        builder::CreateRetrospectiveProcess::new(self)
    }
    /**Retrieves a retrospective process

Retrieves a specific retrospective process by id

Sends a `GET` request to `/v1/retrospective_processes/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: retrospective_steps,severities
```ignore
let response = client.get_retrospective_process()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_retrospective_process(&self) -> builder::GetRetrospectiveProcess<'_> {
        builder::GetRetrospectiveProcess::new(self)
    }
    /**Update a retrospective process

Updates a specific retrospective process by id

Sends a `PUT` request to `/v1/retrospective_processes/{id}`

```ignore
let response = client.update_retrospective_process()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_retrospective_process(
        &self,
    ) -> builder::UpdateRetrospectiveProcess<'_> {
        builder::UpdateRetrospectiveProcess::new(self)
    }
    /**Delete a retrospective process

Delete a specific retrospective process by id

Sends a `DELETE` request to `/v1/retrospective_processes/{id}`

```ignore
let response = client.delete_retrospective_process()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_retrospective_process(
        &self,
    ) -> builder::DeleteRetrospectiveProcess<'_> {
        builder::DeleteRetrospectiveProcess::new(self)
    }
    /**List Retrospective Process Groups

List Retrospective Process Groups

Sends a `GET` request to `/v1/retrospective_processes/{retrospective_process_id}/groups`

Arguments:
- `retrospective_process_id`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_sub_status_id`
- `include`: comma separated if needed. eg: retrospective_process_group_steps
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_retrospective_process_groups()
    .retrospective_process_id(retrospective_process_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_sub_status_id(filter_sub_status_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_retrospective_process_groups(
        &self,
    ) -> builder::ListRetrospectiveProcessGroups<'_> {
        builder::ListRetrospectiveProcessGroups::new(self)
    }
    /**Creates a retrospective process group

Creates a new retrospective process group from provided data

Sends a `POST` request to `/v1/retrospective_processes/{retrospective_process_id}/groups`

```ignore
let response = client.create_retrospective_process_group()
    .retrospective_process_id(retrospective_process_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_retrospective_process_group(
        &self,
    ) -> builder::CreateRetrospectiveProcessGroup<'_> {
        builder::CreateRetrospectiveProcessGroup::new(self)
    }
    /**List retrospective steps

List retrospective steps

Sends a `GET` request to `/v1/retrospective_processes/{retrospective_process_id}/retrospective_steps`

```ignore
let response = client.list_retrospective_steps()
    .retrospective_process_id(retrospective_process_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_retrospective_steps(&self) -> builder::ListRetrospectiveSteps<'_> {
        builder::ListRetrospectiveSteps::new(self)
    }
    /**Creates a retrospective step

Creates a new retrospective step from provided data

Sends a `POST` request to `/v1/retrospective_processes/{retrospective_process_id}/retrospective_steps`

```ignore
let response = client.create_retrospective_step()
    .retrospective_process_id(retrospective_process_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_retrospective_step(&self) -> builder::CreateRetrospectiveStep<'_> {
        builder::CreateRetrospectiveStep::new(self)
    }
    /**Retrieves a retrospective step

Retrieves a specific retrospective step by id

Sends a `GET` request to `/v1/retrospective_steps/{id}`

```ignore
let response = client.get_retrospective_step()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_retrospective_step(&self) -> builder::GetRetrospectiveStep<'_> {
        builder::GetRetrospectiveStep::new(self)
    }
    /**Update a retrospective step

Update a specific retrospective step by id

Sends a `PUT` request to `/v1/retrospective_steps/{id}`

```ignore
let response = client.update_retrospective_step()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_retrospective_step(&self) -> builder::UpdateRetrospectiveStep<'_> {
        builder::UpdateRetrospectiveStep::new(self)
    }
    /**Delete a retrospective step

Delete a specific retrospective step by id

Sends a `DELETE` request to `/v1/retrospective_steps/{id}`

```ignore
let response = client.delete_retrospective_step()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_retrospective_step(&self) -> builder::DeleteRetrospectiveStep<'_> {
        builder::DeleteRetrospectiveStep::new(self)
    }
    /**List roles

List roles

Sends a `GET` request to `/v1/roles`

```ignore
let response = client.list_roles()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_roles(&self) -> builder::ListRoles<'_> {
        builder::ListRoles::new(self)
    }
    /**Creates a role

Creates a new role from provided data

Sends a `POST` request to `/v1/roles`

```ignore
let response = client.create_role()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_role(&self) -> builder::CreateRole<'_> {
        builder::CreateRole::new(self)
    }
    /**Retrieves a role

Retrieves a specific role by id

Sends a `GET` request to `/v1/roles/{id}`

```ignore
let response = client.get_role()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_role(&self) -> builder::GetRole<'_> {
        builder::GetRole::new(self)
    }
    /**Update a role

Update a specific role by id

Sends a `PUT` request to `/v1/roles/{id}`

```ignore
let response = client.update_role()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_role(&self) -> builder::UpdateRole<'_> {
        builder::UpdateRole::new(self)
    }
    /**Delete a role

Delete a specific role by id

Sends a `DELETE` request to `/v1/roles/{id}`

```ignore
let response = client.delete_role()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_role(&self) -> builder::DeleteRole<'_> {
        builder::DeleteRole::new(self)
    }
    /**Retrieves a schedule rotation active day

Retrieves a specific schedule rotation active day by id

Sends a `GET` request to `/v1/schedule_rotation_active_days/{id}`

```ignore
let response = client.get_schedule_rotation_active_day()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_schedule_rotation_active_day(
        &self,
    ) -> builder::GetScheduleRotationActiveDay<'_> {
        builder::GetScheduleRotationActiveDay::new(self)
    }
    /**Update a schedule rotation active day

Update a specific schedule rotation active day by id

Sends a `PUT` request to `/v1/schedule_rotation_active_days/{id}`

```ignore
let response = client.update_schedule_rotation_active_day()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_schedule_rotation_active_day(
        &self,
    ) -> builder::UpdateScheduleRotationActiveDay<'_> {
        builder::UpdateScheduleRotationActiveDay::new(self)
    }
    /**Delete a schedule rotation active day

Delete a specific schedule rotation active day

Sends a `DELETE` request to `/v1/schedule_rotation_active_days/{id}`

```ignore
let response = client.delete_schedule_rotation_active_day()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_schedule_rotation_active_day(
        &self,
    ) -> builder::DeleteScheduleRotationActiveDay<'_> {
        builder::DeleteScheduleRotationActiveDay::new(self)
    }
    /**Retrieves a schedule rotation user

Retrieves a specific schedule rotation user by id

Sends a `GET` request to `/v1/schedule_rotation_users/{id}`

```ignore
let response = client.get_schedule_rotation_user()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_schedule_rotation_user(&self) -> builder::GetScheduleRotationUser<'_> {
        builder::GetScheduleRotationUser::new(self)
    }
    /**Update schedule rotation user

Update a specific schedule rotation user by id

Sends a `PUT` request to `/v1/schedule_rotation_users/{id}`

```ignore
let response = client.update_schedule_rotation_user()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_schedule_rotation_user(
        &self,
    ) -> builder::UpdateScheduleRotationUser<'_> {
        builder::UpdateScheduleRotationUser::new(self)
    }
    /**Delete a schedule rotation user

Delete a specific schedule rotation user by id

Sends a `DELETE` request to `/v1/schedule_rotation_users/{id}`

```ignore
let response = client.delete_schedule_rotation_user()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_schedule_rotation_user(
        &self,
    ) -> builder::DeleteScheduleRotationUser<'_> {
        builder::DeleteScheduleRotationUser::new(self)
    }
    /**Retrieves a schedule rotation

Retrieves a specific schedule rotation by id

Sends a `GET` request to `/v1/schedule_rotations/{id}`

```ignore
let response = client.get_schedule_rotation()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_schedule_rotation(&self) -> builder::GetScheduleRotation<'_> {
        builder::GetScheduleRotation::new(self)
    }
    /**Update a schedule rotation

Update a specific schedule rotation by id

Sends a `PUT` request to `/v1/schedule_rotations/{id}`

```ignore
let response = client.update_schedule_rotation()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_schedule_rotation(&self) -> builder::UpdateScheduleRotation<'_> {
        builder::UpdateScheduleRotation::new(self)
    }
    /**Delete a schedule rotation

Delete a specific schedule rotation by id

Sends a `DELETE` request to `/v1/schedule_rotations/{id}`

```ignore
let response = client.delete_schedule_rotation()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_schedule_rotation(&self) -> builder::DeleteScheduleRotation<'_> {
        builder::DeleteScheduleRotation::new(self)
    }
    /**List schedule rotation active days

List schedule rotation active days

Sends a `GET` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days`

```ignore
let response = client.list_schedule_rotation_active_days()
    .schedule_rotation_id(schedule_rotation_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_schedule_rotation_active_days(
        &self,
    ) -> builder::ListScheduleRotationActiveDays<'_> {
        builder::ListScheduleRotationActiveDays::new(self)
    }
    /**Creates a schedule rotation active day

Creates a new schedule rotation active day from provided data

Sends a `POST` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days`

```ignore
let response = client.create_schedule_rotation_active_day()
    .schedule_rotation_id(schedule_rotation_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_schedule_rotation_active_day(
        &self,
    ) -> builder::CreateScheduleRotationActiveDay<'_> {
        builder::CreateScheduleRotationActiveDay::new(self)
    }
    /**List schedule rotation users

Sends a `GET` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users`

```ignore
let response = client.list_schedule_rotation_users()
    .schedule_rotation_id(schedule_rotation_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_schedule_rotation_users(
        &self,
    ) -> builder::ListScheduleRotationUsers<'_> {
        builder::ListScheduleRotationUsers::new(self)
    }
    /**Creates a schedule rotation user

Creates a new schedule rotation user from provided data

Sends a `POST` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users`

```ignore
let response = client.create_schedule_rotation_user()
    .schedule_rotation_id(schedule_rotation_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_schedule_rotation_user(
        &self,
    ) -> builder::CreateScheduleRotationUser<'_> {
        builder::CreateScheduleRotationUser::new(self)
    }
    /**List schedules

List schedules

Sends a `GET` request to `/v1/schedules`

```ignore
let response = client.list_schedules()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_schedules(&self) -> builder::ListSchedules<'_> {
        builder::ListSchedules::new(self)
    }
    /**Creates a schedule

Creates a new schedule from provided data

Sends a `POST` request to `/v1/schedules`

```ignore
let response = client.create_schedule()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_schedule(&self) -> builder::CreateSchedule<'_> {
        builder::CreateSchedule::new(self)
    }
    /**Retrieves a schedule

Retrieves a specific schedule by id

Sends a `GET` request to `/v1/schedules/{id}`

```ignore
let response = client.get_schedule()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_schedule(&self) -> builder::GetSchedule<'_> {
        builder::GetSchedule::new(self)
    }
    /**Update a schedule

Updates a specific schedule by id

Sends a `PUT` request to `/v1/schedules/{id}`

```ignore
let response = client.update_schedule()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_schedule(&self) -> builder::UpdateSchedule<'_> {
        builder::UpdateSchedule::new(self)
    }
    /**Delete a schedule

Delete a specific schedule by id

Sends a `DELETE` request to `/v1/schedules/{id}`

```ignore
let response = client.delete_schedule()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_schedule(&self) -> builder::DeleteSchedule<'_> {
        builder::DeleteSchedule::new(self)
    }
    /**Retrieves a schedule shifts

Retrieves schedule shifts

Sends a `GET` request to `/v1/schedules/{id}/shifts`

```ignore
let response = client.get_schedule_shifts()
    .id(id)
    .from(from)
    .to(to)
    .send()
    .await;
```*/
    pub fn get_schedule_shifts(&self) -> builder::GetScheduleShifts<'_> {
        builder::GetScheduleShifts::new(self)
    }
    /**List On Call Shadows for Shift

List shadow shifts for schedule

Sends a `GET` request to `/v1/schedules/{schedule_id}/on_call_shadows`

```ignore
let response = client.list_on_call_shadows()
    .schedule_id(schedule_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_on_call_shadows(&self) -> builder::ListOnCallShadows<'_> {
        builder::ListOnCallShadows::new(self)
    }
    /**creates an shadow configuration

Creates a new on call shadow configuration from provided data

Sends a `POST` request to `/v1/schedules/{schedule_id}/on_call_shadows`

```ignore
let response = client.create_on_call_shadow()
    .schedule_id(schedule_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_on_call_shadow(&self) -> builder::CreateOnCallShadow<'_> {
        builder::CreateOnCallShadow::new(self)
    }
    /**List override shifts

List override shifts

Sends a `GET` request to `/v1/schedules/{schedule_id}/override_shifts`

```ignore
let response = client.list_override_shifts()
    .schedule_id(schedule_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_override_shifts(&self) -> builder::ListOverrideShifts<'_> {
        builder::ListOverrideShifts::new(self)
    }
    /**creates an override shift

Creates a new override shift from provided data. If any existing override shifts overlap with the specified time range, they will be automatically deleted and replaced by the new override.

Sends a `POST` request to `/v1/schedules/{schedule_id}/override_shifts`

```ignore
let response = client.create_override_shift()
    .schedule_id(schedule_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_override_shift(&self) -> builder::CreateOverrideShift<'_> {
        builder::CreateOverrideShift::new(self)
    }
    /**List schedule rotations

List schedule rotations

Sends a `GET` request to `/v1/schedules/{schedule_id}/schedule_rotations`

```ignore
let response = client.list_schedule_rotations()
    .schedule_id(schedule_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_schedule_rotations(&self) -> builder::ListScheduleRotations<'_> {
        builder::ListScheduleRotations::new(self)
    }
    /**Creates a schedule rotation

Creates a new schedule rotation from provided data

Sends a `POST` request to `/v1/schedules/{schedule_id}/schedule_rotations`

```ignore
let response = client.create_schedule_rotation()
    .schedule_id(schedule_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_schedule_rotation(&self) -> builder::CreateScheduleRotation<'_> {
        builder::CreateScheduleRotation::new(self)
    }
    /**List secrets

List secrets

Sends a `GET` request to `/v1/secrets`

```ignore
let response = client.list_secrets()
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_secrets(&self) -> builder::ListSecrets<'_> {
        builder::ListSecrets::new(self)
    }
    /**Creates a secret

Creates a new secret from provided data

Sends a `POST` request to `/v1/secrets`

```ignore
let response = client.create_secret()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_secret(&self) -> builder::CreateSecret<'_> {
        builder::CreateSecret::new(self)
    }
    /**Retrieves a secret

Retrieve a specific secret by id

Sends a `GET` request to `/v1/secrets/{id}`

```ignore
let response = client.get_secret()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_secret(&self) -> builder::GetSecret<'_> {
        builder::GetSecret::new(self)
    }
    /**Update a secret

Update a specific secret by id

Sends a `PUT` request to `/v1/secrets/{id}`

```ignore
let response = client.update_secret()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_secret(&self) -> builder::UpdateSecret<'_> {
        builder::UpdateSecret::new(self)
    }
    /**Delete a secret

Delete a specific secret by id

Sends a `DELETE` request to `/v1/secrets/{id}`

```ignore
let response = client.delete_secret()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_secret(&self) -> builder::DeleteSecret<'_> {
        builder::DeleteSecret::new(self)
    }
    /**List services

List services

Sends a `GET` request to `/v1/services`

```ignore
let response = client.list_services()
    .filter_alert_broadcast_enabled(filter_alert_broadcast_enabled)
    .filter_backstage_id(filter_backstage_id)
    .filter_cortex_id(filter_cortex_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_external_id(filter_external_id)
    .filter_incident_broadcast_enabled(filter_incident_broadcast_enabled)
    .filter_name(filter_name)
    .filter_opslevel_id(filter_opslevel_id)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_services(&self) -> builder::ListServices<'_> {
        builder::ListServices::new(self)
    }
    /**Creates a service

Creates a new service from provided data

Sends a `POST` request to `/v1/services`

```ignore
let response = client.create_service()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_service(&self) -> builder::CreateService<'_> {
        builder::CreateService::new(self)
    }
    /**List Catalog Properties

List Service Catalog Properties

Sends a `GET` request to `/v1/services/properties`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `filter_name`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_service_catalog_properties()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_service_catalog_properties(
        &self,
    ) -> builder::ListServiceCatalogProperties<'_> {
        builder::ListServiceCatalogProperties::new(self)
    }
    /**Creates a Catalog Property

Creates a new Catalog Property from provided data

Sends a `POST` request to `/v1/services/properties`

```ignore
let response = client.create_service_catalog_property()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_service_catalog_property(
        &self,
    ) -> builder::CreateServiceCatalogProperty<'_> {
        builder::CreateServiceCatalogProperty::new(self)
    }
    /**Retrieves a service

Retrieves a specific service by id

Sends a `GET` request to `/v1/services/{id}`

```ignore
let response = client.get_service()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_service(&self) -> builder::GetService<'_> {
        builder::GetService::new(self)
    }
    /**Update a service

Update a specific service by id

Sends a `PUT` request to `/v1/services/{id}`

```ignore
let response = client.update_service()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_service(&self) -> builder::UpdateService<'_> {
        builder::UpdateService::new(self)
    }
    /**Delete a service

Delete a specific service by id

Sends a `DELETE` request to `/v1/services/{id}`

```ignore
let response = client.delete_service()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_service(&self) -> builder::DeleteService<'_> {
        builder::DeleteService::new(self)
    }
    /**Get service incidents chart

Get service incidents chart

Sends a `GET` request to `/v1/services/{id}/incidents_chart`

```ignore
let response = client.get_service_incidents_chart()
    .id(id)
    .period(period)
    .send()
    .await;
```*/
    pub fn get_service_incidents_chart(&self) -> builder::GetServiceIncidentsChart<'_> {
        builder::GetServiceIncidentsChart::new(self)
    }
    /**Get service uptime chart

Get service uptime chart

Sends a `GET` request to `/v1/services/{id}/uptime_chart`

```ignore
let response = client.get_service_uptime_chart()
    .id(id)
    .period(period)
    .send()
    .await;
```*/
    pub fn get_service_uptime_chart(&self) -> builder::GetServiceUptimeChart<'_> {
        builder::GetServiceUptimeChart::new(self)
    }
    /**List severities

List severities

Sends a `GET` request to `/v1/severities`

```ignore
let response = client.list_severities()
    .filter_color(filter_color)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_severity(filter_severity)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_severities(&self) -> builder::ListSeverities<'_> {
        builder::ListSeverities::new(self)
    }
    /**Creates a severity

Creates a new severity from provided data

Sends a `POST` request to `/v1/severities`

```ignore
let response = client.create_severity()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_severity(&self) -> builder::CreateSeverity<'_> {
        builder::CreateSeverity::new(self)
    }
    /**Retrieves a severity

Retrieves a specific severity by id

Sends a `GET` request to `/v1/severities/{id}`

```ignore
let response = client.get_severity()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_severity(&self) -> builder::GetSeverity<'_> {
        builder::GetSeverity::new(self)
    }
    /**Update a severity

Update a specific severity by id

Sends a `PUT` request to `/v1/severities/{id}`

```ignore
let response = client.update_severity()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_severity(&self) -> builder::UpdateSeverity<'_> {
        builder::UpdateSeverity::new(self)
    }
    /**Delete a severity

Delete a specific severity by id

Sends a `DELETE` request to `/v1/severities/{id}`

```ignore
let response = client.delete_severity()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_severity(&self) -> builder::DeleteSeverity<'_> {
        builder::DeleteSeverity::new(self)
    }
    /**List shifts

List shifts

Sends a `GET` request to `/v1/shifts`

Arguments:
- `from`: Start range for shifts in ISO-8601 format (e.g., 2025-01-01T00:00:00Z or 2025-01-01T00:00:00+00:00)
- `include`: comma separated if needed. eg: shift_override,user. Note: `user` is deprecated, use `assignee` instead.
- `page_number`: Page number (defaults to 1)
- `page_size`: Number of shifts per page (defaults to 50, max 1000)
- `schedule_ids`
- `to`: End range for shifts in ISO-8601 format (e.g., 2025-01-01T00:00:00Z or 2025-01-01T00:00:00+00:00)
- `user_ids`
```ignore
let response = client.list_shifts()
    .from(from)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .schedule_ids(schedule_ids)
    .to(to)
    .user_ids(user_ids)
    .send()
    .await;
```*/
    pub fn list_shifts(&self) -> builder::ListShifts<'_> {
        builder::ListShifts::new(self)
    }
    /**List SLAs

List SLAs

Sends a `GET` request to `/v1/slas`

```ignore
let response = client.list_sl_as()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_sl_as(&self) -> builder::ListSlAs<'_> {
        builder::ListSlAs::new(self)
    }
    /**Creates an SLA

Creates a new SLA from provided data

Sends a `POST` request to `/v1/slas`

```ignore
let response = client.create_sla()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_sla(&self) -> builder::CreateSla<'_> {
        builder::CreateSla::new(self)
    }
    /**Retrieves an SLA

Retrieves a specific SLA by id

Sends a `GET` request to `/v1/slas/{id}`

```ignore
let response = client.get_sla()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_sla(&self) -> builder::GetSla<'_> {
        builder::GetSla::new(self)
    }
    /**Update an SLA

Update a specific SLA by id

Sends a `PUT` request to `/v1/slas/{id}`

```ignore
let response = client.update_sla()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_sla(&self) -> builder::UpdateSla<'_> {
        builder::UpdateSla::new(self)
    }
    /**Delete an SLA

Delete a specific SLA by id

Sends a `DELETE` request to `/v1/slas/{id}`

```ignore
let response = client.delete_sla()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_sla(&self) -> builder::DeleteSla<'_> {
        builder::DeleteSla::new(self)
    }
    /**Retrieves an incident status page event

Retrieves a specific incident_status_page_event by id

Sends a `GET` request to `/v1/status-page-events/{id}`

```ignore
let response = client.get_incident_status_pages()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_incident_status_pages(&self) -> builder::GetIncidentStatusPages<'_> {
        builder::GetIncidentStatusPages::new(self)
    }
    /**Update an incident status page event

Update a specific incident status page event by id

Sends a `PUT` request to `/v1/status-page-events/{id}`

```ignore
let response = client.update_incident_status_page()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_incident_status_page(&self) -> builder::UpdateIncidentStatusPage<'_> {
        builder::UpdateIncidentStatusPage::new(self)
    }
    /**Delete an incident status page event

Delete a specific incident status page event by id

Sends a `DELETE` request to `/v1/status-page-events/{id}`

```ignore
let response = client.delete_incident_status_page()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_incident_status_page(&self) -> builder::DeleteIncidentStatusPage<'_> {
        builder::DeleteIncidentStatusPage::new(self)
    }
    /**List status pages

List status pages

Sends a `GET` request to `/v1/status-pages`

```ignore
let response = client.list_status_pages()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_status_pages(&self) -> builder::ListStatusPages<'_> {
        builder::ListStatusPages::new(self)
    }
    /**Creates a status page

Creates a new status page from provided data

Sends a `POST` request to `/v1/status-pages`

```ignore
let response = client.create_status_page()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_status_page(&self) -> builder::CreateStatusPage<'_> {
        builder::CreateStatusPage::new(self)
    }
    /**Retrieves a status page

Retrieves a specific status page by id

Sends a `GET` request to `/v1/status-pages/{id}`

```ignore
let response = client.get_status_page()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_status_page(&self) -> builder::GetStatusPage<'_> {
        builder::GetStatusPage::new(self)
    }
    /**Update a status page

Update a specific status page by id

Sends a `PUT` request to `/v1/status-pages/{id}`

```ignore
let response = client.update_status_page()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_status_page(&self) -> builder::UpdateStatusPage<'_> {
        builder::UpdateStatusPage::new(self)
    }
    /**Delete a status page

Delete a specific status page by id

Sends a `DELETE` request to `/v1/status-pages/{id}`

```ignore
let response = client.delete_status_page()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_status_page(&self) -> builder::DeleteStatusPage<'_> {
        builder::DeleteStatusPage::new(self)
    }
    /**List status page templates

List status page templates

Sends a `GET` request to `/v1/status-pages/{status_page_id}/templates`

```ignore
let response = client.list_status_page_templates()
    .status_page_id(status_page_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_status_page_templates(&self) -> builder::ListStatusPageTemplates<'_> {
        builder::ListStatusPageTemplates::new(self)
    }
    /**Creates a status page template

Creates a new template from provided data

Sends a `POST` request to `/v1/status-pages/{status_page_id}/templates`

```ignore
let response = client.create_status_page_template()
    .status_page_id(status_page_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_status_page_template(&self) -> builder::CreateStatusPageTemplate<'_> {
        builder::CreateStatusPageTemplate::new(self)
    }
    /**List Statuses

List Statuses

Sends a `GET` request to `/v1/statuses`

```ignore
let response = client.list_statuses()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_enabled(filter_enabled)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_statuses(&self) -> builder::ListStatuses<'_> {
        builder::ListStatuses::new(self)
    }
    /**Retrieves a Status

Retrieves a specific Status by id

Sends a `GET` request to `/v1/statuses/{id}`

```ignore
let response = client.get_status()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_status(&self) -> builder::GetStatus<'_> {
        builder::GetStatus::new(self)
    }
    /**List Sub-Statuses

List Sub-Statuses

Sends a `GET` request to `/v1/sub_statuses`

```ignore
let response = client.list_sub_statuses()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_parent_status(filter_parent_status)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_sub_statuses(&self) -> builder::ListSubStatuses<'_> {
        builder::ListSubStatuses::new(self)
    }
    /**Creates a Sub-Status

Creates a new Sub-Status from provided data

Sends a `POST` request to `/v1/sub_statuses`

```ignore
let response = client.create_sub_status()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_sub_status(&self) -> builder::CreateSubStatus<'_> {
        builder::CreateSubStatus::new(self)
    }
    /**Retrieves a Sub-Status

Retrieves a specific Sub-Status by id

Sends a `GET` request to `/v1/sub_statuses/{id}`

```ignore
let response = client.get_sub_status()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_sub_status(&self) -> builder::GetSubStatus<'_> {
        builder::GetSubStatus::new(self)
    }
    /**Update a Sub-Status

Update a specific Sub-Status by id

Sends a `PUT` request to `/v1/sub_statuses/{id}`

```ignore
let response = client.update_sub_status()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_sub_status(&self) -> builder::UpdateSubStatus<'_> {
        builder::UpdateSubStatus::new(self)
    }
    /**Delete a Sub-Status

Delete a specific Sub-Status by id

Sends a `DELETE` request to `/v1/sub_statuses/{id}`

```ignore
let response = client.delete_sub_status()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_sub_status(&self) -> builder::DeleteSubStatus<'_> {
        builder::DeleteSubStatus::new(self)
    }
    /**List teams

List teams

Sends a `GET` request to `/v1/teams`

Arguments:
- `filter_alert_broadcast_enabled`
- `filter_backstage_id`
- `filter_color`
- `filter_cortex_id`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_external_id`
- `filter_incident_broadcast_enabled`
- `filter_name`
- `filter_opslevel_id`
- `filter_search`
- `filter_slug`
- `include`: comma separated if needed. eg: users
- `page_number`
- `page_size`
- `sort`
```ignore
let response = client.list_teams()
    .filter_alert_broadcast_enabled(filter_alert_broadcast_enabled)
    .filter_backstage_id(filter_backstage_id)
    .filter_color(filter_color)
    .filter_cortex_id(filter_cortex_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_external_id(filter_external_id)
    .filter_incident_broadcast_enabled(filter_incident_broadcast_enabled)
    .filter_name(filter_name)
    .filter_opslevel_id(filter_opslevel_id)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_teams(&self) -> builder::ListTeams<'_> {
        builder::ListTeams::new(self)
    }
    /**Creates a team

Creates a new team from provided data

Sends a `POST` request to `/v1/teams`

```ignore
let response = client.create_team()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_team(&self) -> builder::CreateTeam<'_> {
        builder::CreateTeam::new(self)
    }
    /**List Catalog Properties

List Group Catalog Properties

Sends a `GET` request to `/v1/teams/properties`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_kind`
- `filter_name`
- `filter_slug`
- `include`: comma separated if needed. eg: catalog
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_group_catalog_properties()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_group_catalog_properties(
        &self,
    ) -> builder::ListGroupCatalogProperties<'_> {
        builder::ListGroupCatalogProperties::new(self)
    }
    /**Creates a Catalog Property

Creates a new Catalog Property from provided data

Sends a `POST` request to `/v1/teams/properties`

```ignore
let response = client.create_group_catalog_property()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_group_catalog_property(
        &self,
    ) -> builder::CreateGroupCatalogProperty<'_> {
        builder::CreateGroupCatalogProperty::new(self)
    }
    /**Retrieves a team

Retrieves a specific team by id

Sends a `GET` request to `/v1/teams/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: users
```ignore
let response = client.get_team()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_team(&self) -> builder::GetTeam<'_> {
        builder::GetTeam::new(self)
    }
    /**Update a team

Update a specific team by id

Sends a `PUT` request to `/v1/teams/{id}`

```ignore
let response = client.update_team()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_team(&self) -> builder::UpdateTeam<'_> {
        builder::UpdateTeam::new(self)
    }
    /**Delete a team

Delete a specific team by id

Sends a `DELETE` request to `/v1/teams/{id}`

```ignore
let response = client.delete_team()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_team(&self) -> builder::DeleteTeam<'_> {
        builder::DeleteTeam::new(self)
    }
    /**Get team incidents chart

Get team incidents chart

Sends a `GET` request to `/v1/teams/{id}/incidents_chart`

```ignore
let response = client.get_team_incidents_chart()
    .id(id)
    .period(period)
    .send()
    .await;
```*/
    pub fn get_team_incidents_chart(&self) -> builder::GetTeamIncidentsChart<'_> {
        builder::GetTeamIncidentsChart::new(self)
    }
    /**Retrieves a status page template

Retrieves a specific status_page_template by id

Sends a `GET` request to `/v1/templates/{id}`

```ignore
let response = client.get_status_page_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_status_page_template(&self) -> builder::GetStatusPageTemplate<'_> {
        builder::GetStatusPageTemplate::new(self)
    }
    /**Update status page template

Update a specific template event by id

Sends a `PUT` request to `/v1/templates/{id}`

```ignore
let response = client.update_status_page_template()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_status_page_template(&self) -> builder::UpdateStatusPageTemplate<'_> {
        builder::UpdateStatusPageTemplate::new(self)
    }
    /**Delete a incident event

Delete a specific template event by id

Sends a `DELETE` request to `/v1/templates/{id}`

```ignore
let response = client.delete_status_page_template()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_status_page_template(&self) -> builder::DeleteStatusPageTemplate<'_> {
        builder::DeleteStatusPageTemplate::new(self)
    }
    /**List users

List users

Sends a `GET` request to `/v1/users`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_email`
- `filter_search`
- `include`: comma separated if needed. eg: email_addresses,phone_numbers
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_users()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_email(filter_email)
    .filter_search(filter_search)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_users(&self) -> builder::ListUsers<'_> {
        builder::ListUsers::new(self)
    }
    /**Get current user

Get current user

Sends a `GET` request to `/v1/users/me`

```ignore
let response = client.get_current_user()
    .send()
    .await;
```*/
    pub fn get_current_user(&self) -> builder::GetCurrentUser<'_> {
        builder::GetCurrentUser::new(self)
    }
    /**Retrieves an user

Retrieves a specific user by id

Sends a `GET` request to `/v1/users/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: email_addresses,phone_numbers
```ignore
let response = client.get_user()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_user(&self) -> builder::GetUser<'_> {
        builder::GetUser::new(self)
    }
    /**Update a user

Update a specific user by id

Sends a `PUT` request to `/v1/users/{id}`

```ignore
let response = client.update_user()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_user(&self) -> builder::UpdateUser<'_> {
        builder::UpdateUser::new(self)
    }
    /**Delete an user

Delete a specific user by id

Sends a `DELETE` request to `/v1/users/{id}`

```ignore
let response = client.delete_user()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_user(&self) -> builder::DeleteUser<'_> {
        builder::DeleteUser::new(self)
    }
    /**Retrieves user email addresses

Retrieves all email addresses for the specified user

Sends a `GET` request to `/v1/users/{user_id}/email_addresses`

```ignore
let response = client.get_user_email_addresses()
    .user_id(user_id)
    .send()
    .await;
```*/
    pub fn get_user_email_addresses(&self) -> builder::GetUserEmailAddresses<'_> {
        builder::GetUserEmailAddresses::new(self)
    }
    /**Creates a user email address

Creates a new user email address from provided data

Sends a `POST` request to `/v1/users/{user_id}/email_addresses`

```ignore
let response = client.create_user_email_address()
    .user_id(user_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_user_email_address(&self) -> builder::CreateUserEmailAddress<'_> {
        builder::CreateUserEmailAddress::new(self)
    }
    /**List user notification rules

List user notification rules

Sends a `GET` request to `/v1/users/{user_id}/notification_rules`

```ignore
let response = client.list_user_notification_rules()
    .user_id(user_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_user_notification_rules(
        &self,
    ) -> builder::ListUserNotificationRules<'_> {
        builder::ListUserNotificationRules::new(self)
    }
    /**Creates an user notification rule

Creates a new user notification rule from provided data

Sends a `POST` request to `/v1/users/{user_id}/notification_rules`

```ignore
let response = client.create_user_notification_rule()
    .user_id(user_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_user_notification_rule(
        &self,
    ) -> builder::CreateUserNotificationRule<'_> {
        builder::CreateUserNotificationRule::new(self)
    }
    /**Retrieves user phone numbers

Retrieves all phone numbers for the specified user

Sends a `GET` request to `/v1/users/{user_id}/phone_numbers`

```ignore
let response = client.get_user_phone_numbers()
    .user_id(user_id)
    .send()
    .await;
```*/
    pub fn get_user_phone_numbers(&self) -> builder::GetUserPhoneNumbers<'_> {
        builder::GetUserPhoneNumbers::new(self)
    }
    /**Creates a user phone number

Creates a new user phone number from provided data

Sends a `POST` request to `/v1/users/{user_id}/phone_numbers`

```ignore
let response = client.create_user_phone_number()
    .user_id(user_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_user_phone_number(&self) -> builder::CreateUserPhoneNumber<'_> {
        builder::CreateUserPhoneNumber::new(self)
    }
    /**Retrieves a webhook delivery

Retrieves a specific webhook delivery by id

Sends a `GET` request to `/v1/webhooks/deliveries/{id}`

```ignore
let response = client.get_webhooks_delivery()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_webhooks_delivery(&self) -> builder::GetWebhooksDelivery<'_> {
        builder::GetWebhooksDelivery::new(self)
    }
    /**Retries a webhook delivery

Retries a webhook delivery

Sends a `POST` request to `/v1/webhooks/deliveries/{id}/deliver`

```ignore
let response = client.deliver_webhooks_delivery()
    .id(id)
    .send()
    .await;
```*/
    pub fn deliver_webhooks_delivery(&self) -> builder::DeliverWebhooksDelivery<'_> {
        builder::DeliverWebhooksDelivery::new(self)
    }
    /**List webhook endpoints

List webhook endpoints

Sends a `GET` request to `/v1/webhooks/endpoints`

```ignore
let response = client.list_webhooks_endpoints()
    .filter_name(filter_name)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_webhooks_endpoints(&self) -> builder::ListWebhooksEndpoints<'_> {
        builder::ListWebhooksEndpoints::new(self)
    }
    /**Creates a webhook endpoint

Creates a new webhook endpoint from provided data

Sends a `POST` request to `/v1/webhooks/endpoints`

```ignore
let response = client.create_webhooks_endpoint()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_webhooks_endpoint(&self) -> builder::CreateWebhooksEndpoint<'_> {
        builder::CreateWebhooksEndpoint::new(self)
    }
    /**List webhook deliveries

List webhook deliveries for given endpoint

Sends a `GET` request to `/v1/webhooks/endpoints/{endpoint_id}/deliveries`

```ignore
let response = client.list_webhooks_deliveries()
    .endpoint_id(endpoint_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_webhooks_deliveries(&self) -> builder::ListWebhooksDeliveries<'_> {
        builder::ListWebhooksDeliveries::new(self)
    }
    /**Retrieves a webhook endpoint

Retrieves a specific webhook endpoint by id

Sends a `GET` request to `/v1/webhooks/endpoints/{id}`

```ignore
let response = client.get_webhooks_endpoint()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_webhooks_endpoint(&self) -> builder::GetWebhooksEndpoint<'_> {
        builder::GetWebhooksEndpoint::new(self)
    }
    /**Update a webhook endpoint

Update a specific webhook endpoint by id

Sends a `PUT` request to `/v1/webhooks/endpoints/{id}`

```ignore
let response = client.update_webhooks_endpoint()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_webhooks_endpoint(&self) -> builder::UpdateWebhooksEndpoint<'_> {
        builder::UpdateWebhooksEndpoint::new(self)
    }
    /**Delete a webhook endpoint

Delete a specific webhook endpoint by id

Sends a `DELETE` request to `/v1/webhooks/endpoints/{id}`

```ignore
let response = client.delete_webhooks_endpoint()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_webhooks_endpoint(&self) -> builder::DeleteWebhooksEndpoint<'_> {
        builder::DeleteWebhooksEndpoint::new(self)
    }
    /**[DEPRECATED] Retrieves a workflow custom field selection

[DEPRECATED] Use form field endpoints instead. Retrieves a specific workflow custom field selection by id

Sends a `GET` request to `/v1/workflow_custom_field_selections/{id}`

```ignore
let response = client.get_workflow_custom_field_selection()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_workflow_custom_field_selection(
        &self,
    ) -> builder::GetWorkflowCustomFieldSelection<'_> {
        builder::GetWorkflowCustomFieldSelection::new(self)
    }
    /**[DEPRECATED] Update a workflow custom field selection

[DEPRECATED] Use form field endpoints instead. Update a specific workflow custom field selection by id

Sends a `PUT` request to `/v1/workflow_custom_field_selections/{id}`

```ignore
let response = client.update_workflow_custom_field_selection()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_workflow_custom_field_selection(
        &self,
    ) -> builder::UpdateWorkflowCustomFieldSelection<'_> {
        builder::UpdateWorkflowCustomFieldSelection::new(self)
    }
    /**[DEPRECATED] Delete a workflow custom field selection

[DEPRECATED] Use form field endpoints instead. Delete a specific workflow custom field selection by id

Sends a `DELETE` request to `/v1/workflow_custom_field_selections/{id}`

```ignore
let response = client.delete_workflow_custom_field_selection()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_workflow_custom_field_selection(
        &self,
    ) -> builder::DeleteWorkflowCustomFieldSelection<'_> {
        builder::DeleteWorkflowCustomFieldSelection::new(self)
    }
    /**Retrieves a workflow form field condition

Retrieves a specific workflow form field condition by id

Sends a `GET` request to `/v1/workflow_form_field_conditions/{id}`

```ignore
let response = client.get_workflow_form_field_condition()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_workflow_form_field_condition(
        &self,
    ) -> builder::GetWorkflowFormFieldCondition<'_> {
        builder::GetWorkflowFormFieldCondition::new(self)
    }
    /**Update a workflow form field condition

Update a specific workflow form field condition by id

Sends a `PUT` request to `/v1/workflow_form_field_conditions/{id}`

```ignore
let response = client.update_workflow_form_field_condition()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_workflow_form_field_condition(
        &self,
    ) -> builder::UpdateWorkflowFormFieldCondition<'_> {
        builder::UpdateWorkflowFormFieldCondition::new(self)
    }
    /**Delete a workflow_form field condition

Delete a specific workflow form field condition by id

Sends a `DELETE` request to `/v1/workflow_form_field_conditions/{id}`

```ignore
let response = client.delete_workflow_form_field_condition()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_workflow_form_field_condition(
        &self,
    ) -> builder::DeleteWorkflowFormFieldCondition<'_> {
        builder::DeleteWorkflowFormFieldCondition::new(self)
    }
    /**List workflow groups

List workflow groups

Sends a `GET` request to `/v1/workflow_groups`

```ignore
let response = client.list_workflow_groups()
    .filter_expanded(filter_expanded)
    .filter_kind(filter_kind)
    .filter_name(filter_name)
    .filter_position(filter_position)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_workflow_groups(&self) -> builder::ListWorkflowGroups<'_> {
        builder::ListWorkflowGroups::new(self)
    }
    /**Creates a workflow group

Creates a new workflow group from provided data

Sends a `POST` request to `/v1/workflow_groups`

```ignore
let response = client.create_workflow_group()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_workflow_group(&self) -> builder::CreateWorkflowGroup<'_> {
        builder::CreateWorkflowGroup::new(self)
    }
    /**Retrieves a workflow group

Retrieves a specific workflow group by id

Sends a `GET` request to `/v1/workflow_groups/{id}`

```ignore
let response = client.get_workflow_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_workflow_group(&self) -> builder::GetWorkflowGroup<'_> {
        builder::GetWorkflowGroup::new(self)
    }
    /**Update a workflow group

Update a specific workflow group by id

Sends a `PUT` request to `/v1/workflow_groups/{id}`

```ignore
let response = client.update_workflow_group()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_workflow_group(&self) -> builder::UpdateWorkflowGroup<'_> {
        builder::UpdateWorkflowGroup::new(self)
    }
    /**Delete a workflow_group

Delete a specific workflow group by id

Sends a `DELETE` request to `/v1/workflow_groups/{id}`

```ignore
let response = client.delete_workflow_group()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_workflow_group(&self) -> builder::DeleteWorkflowGroup<'_> {
        builder::DeleteWorkflowGroup::new(self)
    }
    /**Retrieves a workflow task

Retrieves a specific workflow_task by id

Sends a `GET` request to `/v1/workflow_tasks/{id}`

```ignore
let response = client.get_workflow_task()
    .id(id)
    .send()
    .await;
```*/
    pub fn get_workflow_task(&self) -> builder::GetWorkflowTask<'_> {
        builder::GetWorkflowTask::new(self)
    }
    /**Update a workflow task

Update a specific workflow task by id

Sends a `PUT` request to `/v1/workflow_tasks/{id}`

```ignore
let response = client.update_workflow_task()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_workflow_task(&self) -> builder::UpdateWorkflowTask<'_> {
        builder::UpdateWorkflowTask::new(self)
    }
    /**Delete a workflow task

Delete a specific workflow task by id

Sends a `DELETE` request to `/v1/workflow_tasks/{id}`

```ignore
let response = client.delete_workflow_task()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_workflow_task(&self) -> builder::DeleteWorkflowTask<'_> {
        builder::DeleteWorkflowTask::new(self)
    }
    /**List workflows

List workflows

Sends a `GET` request to `/v1/workflows`

Arguments:
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `filter_name`
- `filter_search`
- `filter_slug`
- `include`: comma separated if needed. eg: form_field_conditions,alert_field_conditions
- `page_number`
- `page_size`
- `sort`: comma separated if needed. eg: created_at,updated_at
```ignore
let response = client.list_workflows()
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .sort(sort)
    .send()
    .await;
```*/
    pub fn list_workflows(&self) -> builder::ListWorkflows<'_> {
        builder::ListWorkflows::new(self)
    }
    /**Creates a workflow

Creates a new workflow from provided data

Sends a `POST` request to `/v1/workflows`

```ignore
let response = client.create_workflow()
    .body(body)
    .send()
    .await;
```*/
    pub fn create_workflow(&self) -> builder::CreateWorkflow<'_> {
        builder::CreateWorkflow::new(self)
    }
    /**Retrieves a workflow

Retrieves a specific workflow by id

Sends a `GET` request to `/v1/workflows/{id}`

Arguments:
- `id`
- `include`: comma separated if needed. eg: form_field_conditions,alert_field_conditions
```ignore
let response = client.get_workflow()
    .id(id)
    .include(include)
    .send()
    .await;
```*/
    pub fn get_workflow(&self) -> builder::GetWorkflow<'_> {
        builder::GetWorkflow::new(self)
    }
    /**Update a workflow

Update a specific workflow by id

Sends a `PUT` request to `/v1/workflows/{id}`

```ignore
let response = client.update_workflow()
    .id(id)
    .body(body)
    .send()
    .await;
```*/
    pub fn update_workflow(&self) -> builder::UpdateWorkflow<'_> {
        builder::UpdateWorkflow::new(self)
    }
    /**Delete a workflow

Delete a specific workflow by id

Sends a `DELETE` request to `/v1/workflows/{id}`

```ignore
let response = client.delete_workflow()
    .id(id)
    .send()
    .await;
```*/
    pub fn delete_workflow(&self) -> builder::DeleteWorkflow<'_> {
        builder::DeleteWorkflow::new(self)
    }
    /**[DEPRECATED] List workflow custom field selections

[DEPRECATED] Use form field endpoints instead. List workflow custom field selections

Sends a `GET` request to `/v1/workflows/{workflow_id}/custom_field_selections`

```ignore
let response = client.list_workflow_custom_field_selections()
    .workflow_id(workflow_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_workflow_custom_field_selections(
        &self,
    ) -> builder::ListWorkflowCustomFieldSelections<'_> {
        builder::ListWorkflowCustomFieldSelections::new(self)
    }
    /**[DEPRECATED] Creates a workflow custom field selection

[DEPRECATED] Use form field endpoints instead. Creates a new workflow custom field selection from provided data

Sends a `POST` request to `/v1/workflows/{workflow_id}/custom_field_selections`

```ignore
let response = client.create_workflow_custom_field_selection()
    .workflow_id(workflow_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_workflow_custom_field_selection(
        &self,
    ) -> builder::CreateWorkflowCustomFieldSelection<'_> {
        builder::CreateWorkflowCustomFieldSelection::new(self)
    }
    /**List workflow form field conditions

List workflow form field conditions

Sends a `GET` request to `/v1/workflows/{workflow_id}/form_field_conditions`

```ignore
let response = client.list_workflow_form_field_conditions()
    .workflow_id(workflow_id)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_workflow_form_field_conditions(
        &self,
    ) -> builder::ListWorkflowFormFieldConditions<'_> {
        builder::ListWorkflowFormFieldConditions::new(self)
    }
    /**Creates a workflow form field condition

Creates a new workflow form field condition from provided data

Sends a `POST` request to `/v1/workflows/{workflow_id}/form_field_conditions`

```ignore
let response = client.create_workflow_form_field_condition()
    .workflow_id(workflow_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_workflow_form_field_condition(
        &self,
    ) -> builder::CreateWorkflowFormFieldCondition<'_> {
        builder::CreateWorkflowFormFieldCondition::new(self)
    }
    /**List workflow runs

List workflow runs

Sends a `GET` request to `/v1/workflows/{workflow_id}/workflow_runs`

Arguments:
- `workflow_id`
- `filter_created_at_gt`
- `filter_created_at_gte`
- `filter_created_at_lt`
- `filter_created_at_lte`
- `include`: comma separated if needed. eg: genius_task_runs
- `page_number`
- `page_size`
```ignore
let response = client.list_workflow_runs()
    .workflow_id(workflow_id)
    .filter_created_at_gt(filter_created_at_gt)
    .filter_created_at_gte(filter_created_at_gte)
    .filter_created_at_lt(filter_created_at_lt)
    .filter_created_at_lte(filter_created_at_lte)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_workflow_runs(&self) -> builder::ListWorkflowRuns<'_> {
        builder::ListWorkflowRuns::new(self)
    }
    /**Creates a workflow run

Creates a new workflow run from provided data

Sends a `POST` request to `/v1/workflows/{workflow_id}/workflow_runs`

```ignore
let response = client.create_workflow_run()
    .workflow_id(workflow_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_workflow_run(&self) -> builder::CreateWorkflowRun<'_> {
        builder::CreateWorkflowRun::new(self)
    }
    /**List workflow tasks

List workflow tasks

Sends a `GET` request to `/v1/workflows/{workflow_id}/workflow_tasks`

```ignore
let response = client.list_workflow_tasks()
    .workflow_id(workflow_id)
    .filter_name(filter_name)
    .filter_search(filter_search)
    .filter_slug(filter_slug)
    .include(include)
    .page_number(page_number)
    .page_size(page_size)
    .send()
    .await;
```*/
    pub fn list_workflow_tasks(&self) -> builder::ListWorkflowTasks<'_> {
        builder::ListWorkflowTasks::new(self)
    }
    /**Creates a workflow task

Creates a new workflow task from provided data

Sends a `POST` request to `/v1/workflows/{workflow_id}/workflow_tasks`

```ignore
let response = client.create_workflow_task()
    .workflow_id(workflow_id)
    .body(body)
    .send()
    .await;
```*/
    pub fn create_workflow_task(&self) -> builder::CreateWorkflowTask<'_> {
        builder::CreateWorkflowTask::new(self)
    }
}
/// Types for composing operation parameters.
#[allow(clippy::all)]
pub mod builder {
    use super::types;
    #[allow(unused_imports)]
    use super::{
        encode_path, ByteStream, ClientInfo, ClientHooks, Error, OperationInfo,
        RequestBuilderExt, ResponseValue,
    };
    /**Builder for [`Client::list_all_incident_action_items`]

[`Client::list_all_incident_action_items`]: super::Client::list_all_incident_action_items*/
    #[derive(Debug, Clone)]
    pub struct ListAllIncidentActionItems<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_due_date_gt: Result<Option<::std::string::String>, String>,
        filter_due_date_gte: Result<Option<::std::string::String>, String>,
        filter_due_date_lt: Result<Option<::std::string::String>, String>,
        filter_due_date_lte: Result<Option<::std::string::String>, String>,
        filter_incident_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_incident_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_incident_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_incident_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_incident_status: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_priority: Result<Option<::std::string::String>, String>,
        filter_status: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAllIncidentActionItems<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_due_date_gt: Ok(None),
                filter_due_date_gte: Ok(None),
                filter_due_date_lt: Ok(None),
                filter_due_date_lte: Ok(None),
                filter_incident_created_at_gt: Ok(None),
                filter_incident_created_at_gte: Ok(None),
                filter_incident_created_at_lt: Ok(None),
                filter_incident_created_at_lte: Ok(None),
                filter_incident_status: Ok(None),
                filter_kind: Ok(None),
                filter_priority: Ok(None),
                filter_status: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_due_date_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_due_date_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_due_date_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_due_date_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_due_date_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_due_date_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_due_date_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_due_date_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_due_date_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_due_date_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_due_date_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_due_date_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_incident_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_incident_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_incident_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_incident_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_incident_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_incident_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_incident_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_incident_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_incident_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_incident_status failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_priority<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_priority = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_priority failed"
                        .to_string()
                });
            self
        }
        pub fn filter_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_status failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/action_items`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentActionItemList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_due_date_gt,
                filter_due_date_gte,
                filter_due_date_lt,
                filter_due_date_lte,
                filter_incident_created_at_gt,
                filter_incident_created_at_gte,
                filter_incident_created_at_lt,
                filter_incident_created_at_lte,
                filter_incident_status,
                filter_kind,
                filter_priority,
                filter_status,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_due_date_gt = filter_due_date_gt.map_err(Error::InvalidRequest)?;
            let filter_due_date_gte = filter_due_date_gte
                .map_err(Error::InvalidRequest)?;
            let filter_due_date_lt = filter_due_date_lt.map_err(Error::InvalidRequest)?;
            let filter_due_date_lte = filter_due_date_lte
                .map_err(Error::InvalidRequest)?;
            let filter_incident_created_at_gt = filter_incident_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_incident_created_at_gte = filter_incident_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_incident_created_at_lt = filter_incident_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_incident_created_at_lte = filter_incident_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_incident_status = filter_incident_status
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_priority = filter_priority.map_err(Error::InvalidRequest)?;
            let filter_status = filter_status.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/action_items", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[due_date][gt]",
                        &filter_due_date_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[due_date][gte]",
                        &filter_due_date_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[due_date][lt]",
                        &filter_due_date_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[due_date][lte]",
                        &filter_due_date_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_created_at][gt]",
                        &filter_incident_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_created_at][gte]",
                        &filter_incident_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_created_at][lt]",
                        &filter_incident_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_created_at][lte]",
                        &filter_incident_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_status]",
                        &filter_incident_status,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[priority]",
                        &filter_priority,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[status]", &filter_status),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_all_incident_action_items",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_action_items`]

[`Client::get_incident_action_items`]: super::Client::get_incident_action_items*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentActionItems<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentActionItems<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/action_items/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentActionItemResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/action_items/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_action_items",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_action_item`]

[`Client::update_incident_action_item`]: super::Client::update_incident_action_item*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentActionItem<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentActionItem, String>,
    }
    impl<'a> UpdateIncidentActionItem<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentActionItem>,
            <V as std::convert::TryInto<
                types::UpdateIncidentActionItem,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentActionItem` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentActionItem,
            ) -> types::builder::UpdateIncidentActionItem,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/action_items/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentActionItemResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentActionItem::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/action_items/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_action_item",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_action_item`]

[`Client::delete_incident_action_item`]: super::Client::delete_incident_action_item*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentActionItem<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentActionItem<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/action_items/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentActionItemResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/action_items/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_action_item",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_events_feed`]

[`Client::list_alert_events_feed`]: super::Client::list_alert_events_feed*/
    #[derive(Debug, Clone)]
    pub struct ListAlertEventsFeed<'a> {
        client: &'a super::Client,
        filter_action: Result<Option<types::ListAlertEventsFeedFilterAction>, String>,
        filter_alert_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<types::ListAlertEventsFeedFilterKind>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_after: Result<Option<::std::string::String>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListAlertEventsFeedSort>, String>,
    }
    impl<'a> ListAlertEventsFeed<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_action: Ok(None),
                filter_alert_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                include: Ok(None),
                page_after: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_action<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListAlertEventsFeedFilterAction>,
        {
            self.filter_action = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListAlertEventsFeedFilterAction` for filter_action failed"
                        .to_string()
                });
            self
        }
        pub fn filter_alert_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_alert_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_alert_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListAlertEventsFeedFilterKind>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListAlertEventsFeedFilterKind` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_after<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.page_after = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for page_after failed"
                        .to_string()
                });
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListAlertEventsFeedSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListAlertEventsFeedSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertEventFeedList>, Error<()>> {
            let Self {
                client,
                filter_action,
                filter_alert_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                include,
                page_after,
                page_size,
                sort,
            } = self;
            let filter_action = filter_action.map_err(Error::InvalidRequest)?;
            let filter_alert_id = filter_alert_id.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_after = page_after.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_events", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[action]", &filter_action),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[alert_id]",
                        &filter_alert_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[after]", &page_after))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_events_feed",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert_event`]

[`Client::get_alert_event`]: super::Client::get_alert_event*/
    #[derive(Debug, Clone)]
    pub struct GetAlertEvent<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertEventResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_events/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alert_event`]

[`Client::delete_alert_event`]: super::Client::delete_alert_event*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertEvent<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_events/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_events/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_alert_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert_event`]

[`Client::update_alert_event`]: super::Client::update_alert_event*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertEvent<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertEvent, String>,
    }
    impl<'a> UpdateAlertEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertEvent>,
            <V as std::convert::TryInto<
                types::UpdateAlertEvent,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlertEvent` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertEvent,
            ) -> types::builder::UpdateAlertEvent,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/alert_events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertEventResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertEvent::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_events/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_fields`]

[`Client::list_alert_fields`]: super::Client::list_alert_fields*/
    #[derive(Debug, Clone)]
    pub struct ListAlertFields<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAlertFields<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_fields`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertFieldList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_search,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_fields", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_fields",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert_field`]

[`Client::create_alert_field`]: super::Client::create_alert_field*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertField<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlertField, String>,
    }
    impl<'a> CreateAlertField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertField>,
            <V as std::convert::TryInto<types::NewAlertField>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertField,
            ) -> types::builder::NewAlertField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alert_fields`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertFieldResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAlertField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_fields", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert_field`]

[`Client::get_alert_field`]: super::Client::get_alert_field*/
    #[derive(Debug, Clone)]
    pub struct GetAlertField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertFieldResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert_field`]

[`Client::update_alert_field`]: super::Client::update_alert_field*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertField, String>,
    }
    impl<'a> UpdateAlertField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertField>,
            <V as std::convert::TryInto<
                types::UpdateAlertField,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlertField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertField,
            ) -> types::builder::UpdateAlertField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/alert_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertFieldResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alert_field`]

[`Client::delete_alert_field`]: super::Client::delete_alert_field*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertFieldResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_alert_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_groups`]

[`Client::list_alert_groups`]: super::Client::list_alert_groups*/
    #[derive(Debug, Clone)]
    pub struct ListAlertGroups<'a> {
        client: &'a super::Client,
        include: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAlertGroups<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                include: Ok(None),
            }
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertGroupList>, Error<()>> {
            let Self { client, include } = self;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_groups", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_groups",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert_group`]

[`Client::create_alert_group`]: super::Client::create_alert_group*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertGroup<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlertGroup, String>,
    }
    impl<'a> CreateAlertGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertGroup>,
            <V as std::convert::TryInto<types::NewAlertGroup>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertGroup` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertGroup,
            ) -> types::builder::NewAlertGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alert_groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertGroupResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAlertGroup::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_groups", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert_group`]

[`Client::get_alert_group`]: super::Client::get_alert_group*/
    #[derive(Debug, Clone)]
    pub struct GetAlertGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertGroupResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_groups/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alert_group`]

[`Client::delete_alert_group`]: super::Client::delete_alert_group*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertGroupResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_groups/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_alert_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert_group`]

[`Client::update_alert_group`]: super::Client::update_alert_group*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertGroup, String>,
    }
    impl<'a> UpdateAlertGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertGroup>,
            <V as std::convert::TryInto<
                types::UpdateAlertGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlertGroup` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertGroup,
            ) -> types::builder::UpdateAlertGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/alert_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertGroupResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertGroup::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_groups/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_routes`]

[`Client::list_alert_routes`]: super::Client::list_alert_routes*/
    #[derive(Debug, Clone)]
    pub struct ListAlertRoutes<'a> {
        client: &'a super::Client,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAlertRoutes<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_name: Ok(None),
                filter_search: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_routes`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRouteList>, Error<()>> {
            let Self {
                client,
                filter_name,
                filter_search,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_routes", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_routes",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert_route`]

[`Client::create_alert_route`]: super::Client::create_alert_route*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertRoute<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlertRoute, String>,
    }
    impl<'a> CreateAlertRoute<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertRoute>,
            <V as std::convert::TryInto<types::NewAlertRoute>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertRoute` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertRoute,
            ) -> types::builder::NewAlertRoute,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alert_routes`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRouteResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAlertRoute::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_routes", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert_route",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert_route`]

[`Client::get_alert_route`]: super::Client::get_alert_route*/
    #[derive(Debug, Clone)]
    pub struct GetAlertRoute<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertRoute<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_routes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRouteResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert_route",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert_route`]

[`Client::update_alert_route`]: super::Client::update_alert_route*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertRoute<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertRoute, String>,
    }
    impl<'a> UpdateAlertRoute<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertRoute>,
            <V as std::convert::TryInto<
                types::UpdateAlertRoute,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlertRoute` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertRoute,
            ) -> types::builder::UpdateAlertRoute,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/alert_routes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRouteResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertRoute::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert_route",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alert_route`]

[`Client::delete_alert_route`]: super::Client::delete_alert_route*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertRoute<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertRoute<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_routes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DeleteAlertRouteResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_alert_route",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::patch_alert_route`]

[`Client::patch_alert_route`]: super::Client::patch_alert_route*/
    #[derive(Debug, Clone)]
    pub struct PatchAlertRoute<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::PatchAlertRoute, String>,
    }
    impl<'a> PatchAlertRoute<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::PatchAlertRoute>,
            <V as std::convert::TryInto<
                types::PatchAlertRoute,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `PatchAlertRoute` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::PatchAlertRoute,
            ) -> types::builder::PatchAlertRoute,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/alert_routes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRouteResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::PatchAlertRoute::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "patch_alert_route",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_routing_rules`]

[`Client::list_alert_routing_rules`]: super::Client::list_alert_routing_rules*/
    #[derive(Debug, Clone)]
    pub struct ListAlertRoutingRules<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAlertRoutingRules<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_routing_rules`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRoutingRuleList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_routing_rules", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_routing_rules",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert_routing_rule`]

[`Client::create_alert_routing_rule`]: super::Client::create_alert_routing_rule*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertRoutingRule<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlertRoutingRule, String>,
    }
    impl<'a> CreateAlertRoutingRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertRoutingRule>,
            <V as std::convert::TryInto<
                types::NewAlertRoutingRule,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertRoutingRule` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertRoutingRule,
            ) -> types::builder::NewAlertRoutingRule,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alert_routing_rules`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRoutingRuleResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAlertRoutingRule::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_routing_rules", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert_routing_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert_routing_rule`]

[`Client::get_alert_routing_rule`]: super::Client::get_alert_routing_rule*/
    #[derive(Debug, Clone)]
    pub struct GetAlertRoutingRule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertRoutingRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_routing_rules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRoutingRuleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routing_rules/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert_routing_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert_routing_rule`]

[`Client::update_alert_routing_rule`]: super::Client::update_alert_routing_rule*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertRoutingRule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertRoutingRule, String>,
    }
    impl<'a> UpdateAlertRoutingRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertRoutingRule>,
            <V as std::convert::TryInto<
                types::UpdateAlertRoutingRule,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateAlertRoutingRule` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertRoutingRule,
            ) -> types::builder::UpdateAlertRoutingRule,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/alert_routing_rules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRoutingRuleResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertRoutingRule::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routing_rules/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert_routing_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alert_routing_rule`]

[`Client::delete_alert_routing_rule`]: super::Client::delete_alert_routing_rule*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertRoutingRule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertRoutingRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_routing_rules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertRoutingRuleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_routing_rules/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_alert_routing_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alerts_sources`]

[`Client::list_alerts_sources`]: super::Client::list_alerts_sources*/
    #[derive(Debug, Clone)]
    pub struct ListAlertsSources<'a> {
        client: &'a super::Client,
        filter_enabled: Result<Option<bool>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_source_types: Result<Option<::std::string::String>, String>,
        filter_statuses: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAlertsSources<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_enabled: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_source_types: Ok(None),
                filter_statuses: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_enabled failed".to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_source_types<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_source_types = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_source_types failed"
                        .to_string()
                });
            self
        }
        pub fn filter_statuses<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_statuses = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_statuses failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_sources`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertsSourceList>, Error<()>> {
            let Self {
                client,
                filter_enabled,
                filter_name,
                filter_search,
                filter_source_types,
                filter_statuses,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_enabled = filter_enabled.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_source_types = filter_source_types
                .map_err(Error::InvalidRequest)?;
            let filter_statuses = filter_statuses.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_sources", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[enabled]",
                        &filter_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[source_types]",
                        &filter_source_types,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[statuses]",
                        &filter_statuses,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alerts_sources",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alerts_source`]

[`Client::create_alerts_source`]: super::Client::create_alerts_source*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertsSource<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlertsSource, String>,
    }
    impl<'a> CreateAlertsSource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertsSource>,
            <V as std::convert::TryInto<
                types::NewAlertsSource,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertsSource` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertsSource,
            ) -> types::builder::NewAlertsSource,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alert_sources`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertsSourceResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAlertsSource::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_sources", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alerts_source",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alerts_source`]

[`Client::get_alerts_source`]: super::Client::get_alerts_source*/
    #[derive(Debug, Clone)]
    pub struct GetAlertsSource<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertsSource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_sources/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertsSourceResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_sources/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alerts_source",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alerts_source`]

[`Client::update_alerts_source`]: super::Client::update_alerts_source*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertsSource<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertsSource, String>,
    }
    impl<'a> UpdateAlertsSource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertsSource>,
            <V as std::convert::TryInto<
                types::UpdateAlertsSource,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlertsSource` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertsSource,
            ) -> types::builder::UpdateAlertsSource,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/alert_sources/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertsSourceResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertsSource::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_sources/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alerts_source",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alerts_source`]

[`Client::delete_alerts_source`]: super::Client::delete_alerts_source*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertsSource<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertsSource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_sources/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertsSourceResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_sources/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_alerts_source",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_urgencies`]

[`Client::list_alert_urgencies`]: super::Client::list_alert_urgencies*/
    #[derive(Debug, Clone)]
    pub struct ListAlertUrgencies<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAlertUrgencies<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_urgencies`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertUrgencyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_urgencies", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_urgencies",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert_urgency`]

[`Client::create_alert_urgency`]: super::Client::create_alert_urgency*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertUrgency<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlertUrgency, String>,
    }
    impl<'a> CreateAlertUrgency<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertUrgency>,
            <V as std::convert::TryInto<
                types::NewAlertUrgency,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertUrgency` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertUrgency,
            ) -> types::builder::NewAlertUrgency,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alert_urgencies`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertUrgencyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAlertUrgency::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alert_urgencies", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert_urgency",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert_urgency`]

[`Client::get_alert_urgency`]: super::Client::get_alert_urgency*/
    #[derive(Debug, Clone)]
    pub struct GetAlertUrgency<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAlertUrgency<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alert_urgencies/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertUrgencyResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_urgencies/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert_urgency",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert_urgency`]

[`Client::update_alert_urgency`]: super::Client::update_alert_urgency*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlertUrgency<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlertUrgency, String>,
    }
    impl<'a> UpdateAlertUrgency<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlertUrgency>,
            <V as std::convert::TryInto<
                types::UpdateAlertUrgency,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlertUrgency` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlertUrgency,
            ) -> types::builder::UpdateAlertUrgency,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/alert_urgencies/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertUrgencyResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAlertUrgency::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_urgencies/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert_urgency",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_alert_urgency`]

[`Client::delete_alert_urgency`]: super::Client::delete_alert_urgency*/
    #[derive(Debug, Clone)]
    pub struct DeleteAlertUrgency<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAlertUrgency<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/alert_urgencies/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertUrgencyResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alert_urgencies/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_alert_urgency",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alerts`]

[`Client::list_alerts`]: super::Client::list_alerts*/
    #[derive(Debug, Clone)]
    pub struct ListAlerts<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_ended_at_gt: Result<Option<::std::string::String>, String>,
        filter_ended_at_gte: Result<Option<::std::string::String>, String>,
        filter_ended_at_lt: Result<Option<::std::string::String>, String>,
        filter_ended_at_lte: Result<Option<::std::string::String>, String>,
        filter_environments: Result<Option<::std::string::String>, String>,
        filter_groups: Result<Option<::std::string::String>, String>,
        filter_labels: Result<Option<::std::string::String>, String>,
        filter_services: Result<Option<::std::string::String>, String>,
        filter_source: Result<Option<::std::string::String>, String>,
        filter_started_at_gt: Result<Option<::std::string::String>, String>,
        filter_started_at_gte: Result<Option<::std::string::String>, String>,
        filter_started_at_lt: Result<Option<::std::string::String>, String>,
        filter_started_at_lte: Result<Option<::std::string::String>, String>,
        filter_status: Result<Option<::std::string::String>, String>,
        filter_updated_at_gt: Result<Option<::std::string::String>, String>,
        filter_updated_at_gte: Result<Option<::std::string::String>, String>,
        filter_updated_at_lt: Result<Option<::std::string::String>, String>,
        filter_updated_at_lte: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListAlertsInclude>, String>,
        page_after: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListAlerts<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_ended_at_gt: Ok(None),
                filter_ended_at_gte: Ok(None),
                filter_ended_at_lt: Ok(None),
                filter_ended_at_lte: Ok(None),
                filter_environments: Ok(None),
                filter_groups: Ok(None),
                filter_labels: Ok(None),
                filter_services: Ok(None),
                filter_source: Ok(None),
                filter_started_at_gt: Ok(None),
                filter_started_at_gte: Ok(None),
                filter_started_at_lt: Ok(None),
                filter_started_at_lte: Ok(None),
                filter_status: Ok(None),
                filter_updated_at_gt: Ok(None),
                filter_updated_at_gte: Ok(None),
                filter_updated_at_lt: Ok(None),
                filter_updated_at_lte: Ok(None),
                include: Ok(None),
                page_after: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_environments<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_environments = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_environments failed"
                        .to_string()
                });
            self
        }
        pub fn filter_groups<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_groups = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_groups failed"
                        .to_string()
                });
            self
        }
        pub fn filter_labels<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_labels = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_labels failed"
                        .to_string()
                });
            self
        }
        pub fn filter_services<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_services = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_services failed"
                        .to_string()
                });
            self
        }
        pub fn filter_source<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_source = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_source failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_status failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListAlertsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListAlertsInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_after<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.page_after = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for page_after failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/alerts`
        pub async fn send(self) -> Result<ResponseValue<types::AlertList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_ended_at_gt,
                filter_ended_at_gte,
                filter_ended_at_lt,
                filter_ended_at_lte,
                filter_environments,
                filter_groups,
                filter_labels,
                filter_services,
                filter_source,
                filter_started_at_gt,
                filter_started_at_gte,
                filter_started_at_lt,
                filter_started_at_lte,
                filter_status,
                filter_updated_at_gt,
                filter_updated_at_gte,
                filter_updated_at_lt,
                filter_updated_at_lte,
                include,
                page_after,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_ended_at_gt = filter_ended_at_gt.map_err(Error::InvalidRequest)?;
            let filter_ended_at_gte = filter_ended_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_ended_at_lt = filter_ended_at_lt.map_err(Error::InvalidRequest)?;
            let filter_ended_at_lte = filter_ended_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_environments = filter_environments
                .map_err(Error::InvalidRequest)?;
            let filter_groups = filter_groups.map_err(Error::InvalidRequest)?;
            let filter_labels = filter_labels.map_err(Error::InvalidRequest)?;
            let filter_services = filter_services.map_err(Error::InvalidRequest)?;
            let filter_source = filter_source.map_err(Error::InvalidRequest)?;
            let filter_started_at_gt = filter_started_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_gte = filter_started_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lt = filter_started_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lte = filter_started_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_status = filter_status.map_err(Error::InvalidRequest)?;
            let filter_updated_at_gt = filter_updated_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_updated_at_gte = filter_updated_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_updated_at_lt = filter_updated_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_updated_at_lte = filter_updated_at_lte
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_after = page_after.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alerts", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][gt]",
                        &filter_ended_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][gte]",
                        &filter_ended_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][lt]",
                        &filter_ended_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][lte]",
                        &filter_ended_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[environments]",
                        &filter_environments,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[groups]", &filter_groups),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[labels]", &filter_labels),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[services]",
                        &filter_services,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[source]", &filter_source),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gt]",
                        &filter_started_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gte]",
                        &filter_started_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lt]",
                        &filter_started_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lte]",
                        &filter_started_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[status]", &filter_status),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][gt]",
                        &filter_updated_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][gte]",
                        &filter_updated_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][lt]",
                        &filter_updated_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][lte]",
                        &filter_updated_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[after]", &page_after))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alerts",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert`]

[`Client::create_alert`]: super::Client::create_alert*/
    #[derive(Debug, Clone)]
    pub struct CreateAlert<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAlert, String>,
    }
    impl<'a> CreateAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlert>,
            <V as std::convert::TryInto<types::NewAlert>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| format!("conversion to `NewAlert` for body failed: {}", s));
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewAlert) -> types::builder::NewAlert,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alerts`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewAlert::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/alerts", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_alert_events`]

[`Client::list_alert_events`]: super::Client::list_alert_events*/
    #[derive(Debug, Clone)]
    pub struct ListAlertEvents<'a> {
        client: &'a super::Client,
        alert_id: Result<::std::string::String, String>,
        filter_action: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListAlertEvents<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                alert_id: Err("alert_id was not initialized".to_string()),
                filter_action: Ok(None),
                filter_kind: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn alert_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.alert_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for alert_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_action<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_action = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_action failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/alerts/{alert_id}/events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertEventList>, Error<()>> {
            let Self {
                client,
                alert_id,
                filter_action,
                filter_kind,
                include,
                page_number,
                page_size,
            } = self;
            let alert_id = alert_id.map_err(Error::InvalidRequest)?;
            let filter_action = filter_action.map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}/events", client.baseurl, encode_path(& alert_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[action]", &filter_action),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_alert_events",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_alert_event`]

[`Client::create_alert_event`]: super::Client::create_alert_event*/
    #[derive(Debug, Clone)]
    pub struct CreateAlertEvent<'a> {
        client: &'a super::Client,
        alert_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewAlertEvent, String>,
    }
    impl<'a> CreateAlertEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                alert_id: Err("alert_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn alert_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.alert_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for alert_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAlertEvent>,
            <V as std::convert::TryInto<types::NewAlertEvent>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAlertEvent` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAlertEvent,
            ) -> types::builder::NewAlertEvent,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alerts/{alert_id}/events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertEventResponse>, Error<()>> {
            let Self { client, alert_id, body } = self;
            let alert_id = alert_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewAlertEvent::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}/events", client.baseurl, encode_path(& alert_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_alert_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_alert`]

[`Client::get_alert`]: super::Client::get_alert*/
    #[derive(Debug, Clone)]
    pub struct GetAlert<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetAlertInclude>, String>,
    }
    impl<'a> GetAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetAlertInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetAlertInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/alerts/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_alert`]

[`Client::update_alert`]: super::Client::update_alert*/
    #[derive(Debug, Clone)]
    pub struct UpdateAlert<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAlert, String>,
    }
    impl<'a> UpdateAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAlert>,
            <V as std::convert::TryInto<types::UpdateAlert>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAlert` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAlert,
            ) -> types::builder::UpdateAlert,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/alerts/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdateAlert::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::acknowledge_alert`]

[`Client::acknowledge_alert`]: super::Client::acknowledge_alert*/
    #[derive(Debug, Clone)]
    pub struct AcknowledgeAlert<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> AcknowledgeAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/alerts/{id}/acknowledge`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}/acknowledge", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "acknowledge_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::escalate_alert`]

[`Client::escalate_alert`]: super::Client::escalate_alert*/
    #[derive(Debug, Clone)]
    pub struct EscalateAlert<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::EscalateAlert, String>,
    }
    impl<'a> EscalateAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::EscalateAlert>,
            <V as std::convert::TryInto<types::EscalateAlert>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `EscalateAlert` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::EscalateAlert,
            ) -> types::builder::EscalateAlert,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alerts/{id}/escalate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::EscalateAlert::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}/escalate", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "escalate_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::resolve_alert`]

[`Client::resolve_alert`]: super::Client::resolve_alert*/
    #[derive(Debug, Clone)]
    pub struct ResolveAlert<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::ResolveAlert, String>,
    }
    impl<'a> ResolveAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ResolveAlert>,
            <V as std::convert::TryInto<types::ResolveAlert>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `ResolveAlert` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::ResolveAlert,
            ) -> types::builder::ResolveAlert,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alerts/{id}/resolve`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::ResolveAlert::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}/resolve", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "resolve_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::snooze_alert`]

[`Client::snooze_alert`]: super::Client::snooze_alert*/
    #[derive(Debug, Clone)]
    pub struct SnoozeAlert<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::SnoozeAlert, String>,
    }
    impl<'a> SnoozeAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::SnoozeAlert>,
            <V as std::convert::TryInto<types::SnoozeAlert>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `SnoozeAlert` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::SnoozeAlert,
            ) -> types::builder::SnoozeAlert,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/alerts/{id}/snooze`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AlertResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::SnoozeAlert::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/alerts/{}/snooze", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "snooze_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_api_keys`]

[`Client::list_api_keys`]: super::Client::list_api_keys*/
    #[derive(Debug, Clone)]
    pub struct ListApiKeys<'a> {
        client: &'a super::Client,
        filter_active: Result<Option<bool>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_expired: Result<Option<bool>, String>,
        filter_expires_at_gt: Result<Option<::std::string::String>, String>,
        filter_expires_at_gte: Result<Option<::std::string::String>, String>,
        filter_expires_at_lt: Result<Option<::std::string::String>, String>,
        filter_expires_at_lte: Result<Option<::std::string::String>, String>,
        filter_group_ids: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_last_used_at_gt: Result<Option<::std::string::String>, String>,
        filter_last_used_at_gte: Result<Option<::std::string::String>, String>,
        filter_last_used_at_lt: Result<Option<::std::string::String>, String>,
        filter_last_used_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_role_id: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_user_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListApiKeys<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_active: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_expired: Ok(None),
                filter_expires_at_gt: Ok(None),
                filter_expires_at_gte: Ok(None),
                filter_expires_at_lt: Ok(None),
                filter_expires_at_lte: Ok(None),
                filter_group_ids: Ok(None),
                filter_kind: Ok(None),
                filter_last_used_at_gt: Ok(None),
                filter_last_used_at_gte: Ok(None),
                filter_last_used_at_lt: Ok(None),
                filter_last_used_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_role_id: Ok(None),
                filter_search: Ok(None),
                filter_user_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_active<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_active = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_active failed".to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_expired<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_expired = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_expired failed".to_string()
                });
            self
        }
        pub fn filter_expires_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_expires_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_expires_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_expires_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_expires_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_expires_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_expires_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_expires_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_expires_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_expires_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_expires_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_expires_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_group_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_group_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_group_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_last_used_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_last_used_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_last_used_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_last_used_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_last_used_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_last_used_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_last_used_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_last_used_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_last_used_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_last_used_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_last_used_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_last_used_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_role_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_role_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_role_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_user_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_user_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/api_keys`
        pub async fn send(self) -> Result<ResponseValue<types::ApiKeyList>, Error<()>> {
            let Self {
                client,
                filter_active,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_expired,
                filter_expires_at_gt,
                filter_expires_at_gte,
                filter_expires_at_lt,
                filter_expires_at_lte,
                filter_group_ids,
                filter_kind,
                filter_last_used_at_gt,
                filter_last_used_at_gte,
                filter_last_used_at_lt,
                filter_last_used_at_lte,
                filter_name,
                filter_role_id,
                filter_search,
                filter_user_id,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_active = filter_active.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_expired = filter_expired.map_err(Error::InvalidRequest)?;
            let filter_expires_at_gt = filter_expires_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_expires_at_gte = filter_expires_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_expires_at_lt = filter_expires_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_expires_at_lte = filter_expires_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_group_ids = filter_group_ids.map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_last_used_at_gt = filter_last_used_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_last_used_at_gte = filter_last_used_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_last_used_at_lt = filter_last_used_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_last_used_at_lte = filter_last_used_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_role_id = filter_role_id.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_user_id = filter_user_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/api_keys", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[active]", &filter_active),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[expired]",
                        &filter_expired,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[expires_at][gt]",
                        &filter_expires_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[expires_at][gte]",
                        &filter_expires_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[expires_at][lt]",
                        &filter_expires_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[expires_at][lte]",
                        &filter_expires_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[group_ids]",
                        &filter_group_ids,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[last_used_at][gt]",
                        &filter_last_used_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[last_used_at][gte]",
                        &filter_last_used_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[last_used_at][lt]",
                        &filter_last_used_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[last_used_at][lte]",
                        &filter_last_used_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[role_id]",
                        &filter_role_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[user_id]",
                        &filter_user_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_api_keys",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_api_key`]

[`Client::create_api_key`]: super::Client::create_api_key*/
    #[derive(Debug, Clone)]
    pub struct CreateApiKey<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewApiKey, String>,
    }
    impl<'a> CreateApiKey<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewApiKey>,
            <V as std::convert::TryInto<types::NewApiKey>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewApiKey` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewApiKey) -> types::builder::NewApiKey,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/api_keys`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ApiKeyWithTokenResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewApiKey::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/api_keys", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_api_key",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_api_key`]

[`Client::get_api_key`]: super::Client::get_api_key*/
    #[derive(Debug, Clone)]
    pub struct GetApiKey<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
    }
    impl<'a> GetApiKey<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/api_keys/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ApiKeyResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/api_keys/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_api_key",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_api_key`]

[`Client::update_api_key`]: super::Client::update_api_key*/
    #[derive(Debug, Clone)]
    pub struct UpdateApiKey<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateApiKey, String>,
    }
    impl<'a> UpdateApiKey<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateApiKey>,
            <V as std::convert::TryInto<types::UpdateApiKey>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateApiKey` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateApiKey,
            ) -> types::builder::UpdateApiKey,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/api_keys/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ApiKeyResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateApiKey::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/api_keys/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_api_key",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_api_key`]

[`Client::delete_api_key`]: super::Client::delete_api_key*/
    #[derive(Debug, Clone)]
    pub struct DeleteApiKey<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteApiKey<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/api_keys/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ApiKeyResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/api_keys/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_api_key",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::rotate_api_key`]

[`Client::rotate_api_key`]: super::Client::rotate_api_key*/
    #[derive(Debug, Clone)]
    pub struct RotateApiKey<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::RotateApiKey, String>,
    }
    impl<'a> RotateApiKey<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::RotateApiKey>,
            <V as std::convert::TryInto<types::RotateApiKey>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `RotateApiKey` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::RotateApiKey,
            ) -> types::builder::RotateApiKey,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/api_keys/{id}/rotate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ApiKeyWithTokenResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::RotateApiKey::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/api_keys/{}/rotate", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "rotate_api_key",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_audits`]

[`Client::list_audits`]: super::Client::list_audits*/
    #[derive(Debug, Clone)]
    pub struct ListAudits<'a> {
        client: &'a super::Client,
        filter_api_key_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_item_type: Result<Option<::std::string::String>, String>,
        filter_source: Result<Option<::std::string::String>, String>,
        filter_user_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAudits<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_api_key_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_item_type: Ok(None),
                filter_source: Ok(None),
                filter_user_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_api_key_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_api_key_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_api_key_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_item_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_item_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_item_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_source<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_source = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_source failed"
                        .to_string()
                });
            self
        }
        pub fn filter_user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_user_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_user_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/audits`
        pub async fn send(self) -> Result<ResponseValue<types::AuditsList>, Error<()>> {
            let Self {
                client,
                filter_api_key_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_item_type,
                filter_source,
                filter_user_id,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_api_key_id = filter_api_key_id.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_item_type = filter_item_type.map_err(Error::InvalidRequest)?;
            let filter_source = filter_source.map_err(Error::InvalidRequest)?;
            let filter_user_id = filter_user_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/audits", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[api_key_id]",
                        &filter_api_key_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[item_type]",
                        &filter_item_type,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[source]", &filter_source),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[user_id]",
                        &filter_user_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_audits",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_authorizations`]

[`Client::list_authorizations`]: super::Client::list_authorizations*/
    #[derive(Debug, Clone)]
    pub struct ListAuthorizations<'a> {
        client: &'a super::Client,
        filter_authorizable_id: Result<Option<::std::string::String>, String>,
        filter_authorizable_type: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_grantee_id: Result<Option<::std::string::String>, String>,
        filter_grantee_type: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListAuthorizations<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_authorizable_id: Ok(None),
                filter_authorizable_type: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_grantee_id: Ok(None),
                filter_grantee_type: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_authorizable_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_authorizable_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_authorizable_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_authorizable_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_authorizable_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_authorizable_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_grantee_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_grantee_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_grantee_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_grantee_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_grantee_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_grantee_type failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/authorizations`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AuthorizationList>, Error<()>> {
            let Self {
                client,
                filter_authorizable_id,
                filter_authorizable_type,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_grantee_id,
                filter_grantee_type,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_authorizable_id = filter_authorizable_id
                .map_err(Error::InvalidRequest)?;
            let filter_authorizable_type = filter_authorizable_type
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_grantee_id = filter_grantee_id.map_err(Error::InvalidRequest)?;
            let filter_grantee_type = filter_grantee_type
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/authorizations", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[authorizable_id]",
                        &filter_authorizable_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[authorizable_type]",
                        &filter_authorizable_type,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[grantee_id]",
                        &filter_grantee_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[grantee_type]",
                        &filter_grantee_type,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_authorizations",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_authorization`]

[`Client::create_authorization`]: super::Client::create_authorization*/
    #[derive(Debug, Clone)]
    pub struct CreateAuthorization<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewAuthorization, String>,
    }
    impl<'a> CreateAuthorization<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewAuthorization>,
            <V as std::convert::TryInto<
                types::NewAuthorization,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewAuthorization` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewAuthorization,
            ) -> types::builder::NewAuthorization,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/authorizations`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AuthorizationResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewAuthorization::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/authorizations", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_authorization",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_authorization`]

[`Client::get_authorization`]: super::Client::get_authorization*/
    #[derive(Debug, Clone)]
    pub struct GetAuthorization<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetAuthorization<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/authorizations/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AuthorizationResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/authorizations/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_authorization",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_authorization`]

[`Client::update_authorization`]: super::Client::update_authorization*/
    #[derive(Debug, Clone)]
    pub struct UpdateAuthorization<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateAuthorization, String>,
    }
    impl<'a> UpdateAuthorization<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateAuthorization>,
            <V as std::convert::TryInto<
                types::UpdateAuthorization,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateAuthorization` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateAuthorization,
            ) -> types::builder::UpdateAuthorization,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/authorizations/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AuthorizationResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateAuthorization::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/authorizations/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_authorization",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_authorization`]

[`Client::delete_authorization`]: super::Client::delete_authorization*/
    #[derive(Debug, Clone)]
    pub struct DeleteAuthorization<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteAuthorization<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/authorizations/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::AuthorizationResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/authorizations/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_authorization",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_catalog_checklist_templates`]

[`Client::list_catalog_checklist_templates`]: super::Client::list_catalog_checklist_templates*/
    #[derive(Debug, Clone)]
    pub struct ListCatalogChecklistTemplates<'a> {
        client: &'a super::Client,
        filter_catalog_type: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_scope_type: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListCatalogChecklistTemplatesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListCatalogChecklistTemplatesSort>, String>,
    }
    impl<'a> ListCatalogChecklistTemplates<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_catalog_type: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_scope_type: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_catalog_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_catalog_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_catalog_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_scope_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_scope_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_scope_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogChecklistTemplatesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogChecklistTemplatesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogChecklistTemplatesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogChecklistTemplatesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_checklist_templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogChecklistTemplateList>, Error<()>> {
            let Self {
                client,
                filter_catalog_type,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_scope_type,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_catalog_type = filter_catalog_type
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_scope_type = filter_scope_type.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/catalog_checklist_templates", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[catalog_type]",
                        &filter_catalog_type,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[scope_type]",
                        &filter_scope_type,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_catalog_checklist_templates",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_catalog_checklist_template`]

[`Client::create_catalog_checklist_template`]: super::Client::create_catalog_checklist_template*/
    #[derive(Debug, Clone)]
    pub struct CreateCatalogChecklistTemplate<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogChecklistTemplate, String>,
    }
    impl<'a> CreateCatalogChecklistTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogChecklistTemplate>,
            <V as std::convert::TryInto<
                types::NewCatalogChecklistTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCatalogChecklistTemplate` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogChecklistTemplate,
            ) -> types::builder::NewCatalogChecklistTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/catalog_checklist_templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogChecklistTemplateResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogChecklistTemplate::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/catalog_checklist_templates", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_catalog_checklist_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_catalog_checklist_template`]

[`Client::get_catalog_checklist_template`]: super::Client::get_catalog_checklist_template*/
    #[derive(Debug, Clone)]
    pub struct GetCatalogChecklistTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCatalogChecklistTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_checklist_templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogChecklistTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_checklist_templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_catalog_checklist_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_catalog_checklist_template`]

[`Client::update_catalog_checklist_template`]: super::Client::update_catalog_checklist_template*/
    #[derive(Debug, Clone)]
    pub struct UpdateCatalogChecklistTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCatalogChecklistTemplate, String>,
    }
    impl<'a> UpdateCatalogChecklistTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCatalogChecklistTemplate>,
            <V as std::convert::TryInto<
                types::UpdateCatalogChecklistTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCatalogChecklistTemplate` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCatalogChecklistTemplate,
            ) -> types::builder::UpdateCatalogChecklistTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/catalog_checklist_templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogChecklistTemplateResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCatalogChecklistTemplate::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_checklist_templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_catalog_checklist_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_catalog_checklist_template`]

[`Client::delete_catalog_checklist_template`]: super::Client::delete_catalog_checklist_template*/
    #[derive(Debug, Clone)]
    pub struct DeleteCatalogChecklistTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCatalogChecklistTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/catalog_checklist_templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogChecklistTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_checklist_templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_catalog_checklist_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::trigger_catalog_checklist_template`]

[`Client::trigger_catalog_checklist_template`]: super::Client::trigger_catalog_checklist_template*/
    #[derive(Debug, Clone)]
    pub struct TriggerCatalogChecklistTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> TriggerCatalogChecklistTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/catalog_checklist_templates/{id}/trigger`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_checklist_templates/{}/trigger", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.post(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "trigger_catalog_checklist_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                202u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_catalog_entity_properties`]

[`Client::list_catalog_entity_properties`]: super::Client::list_catalog_entity_properties*/
    #[derive(Debug, Clone)]
    pub struct ListCatalogEntityProperties<'a> {
        client: &'a super::Client,
        catalog_entity_id: Result<::std::string::String, String>,
        filter_catalog_field_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_key: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListCatalogEntityPropertiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListCatalogEntityPropertiesSort>, String>,
    }
    impl<'a> ListCatalogEntityProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                catalog_entity_id: Err(
                    "catalog_entity_id was not initialized".to_string(),
                ),
                filter_catalog_field_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_key: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn catalog_entity_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.catalog_entity_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for catalog_entity_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_catalog_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_catalog_field_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_catalog_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_key<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_key = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_key failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogEntityPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogEntityPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogEntityPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogEntityPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_entities/{catalog_entity_id}/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityPropertyList>, Error<()>> {
            let Self {
                client,
                catalog_entity_id,
                filter_catalog_field_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_key,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let catalog_entity_id = catalog_entity_id.map_err(Error::InvalidRequest)?;
            let filter_catalog_field_id = filter_catalog_field_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_key = filter_key.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entities/{}/properties", client.baseurl, encode_path(&
                catalog_entity_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[catalog_field_id]",
                        &filter_catalog_field_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[key]", &filter_key))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_catalog_entity_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_catalog_entity_property`]

[`Client::create_catalog_entity_property`]: super::Client::create_catalog_entity_property*/
    #[derive(Debug, Clone)]
    pub struct CreateCatalogEntityProperty<'a> {
        client: &'a super::Client,
        catalog_entity_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewCatalogEntityProperty, String>,
    }
    impl<'a> CreateCatalogEntityProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                catalog_entity_id: Err(
                    "catalog_entity_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn catalog_entity_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.catalog_entity_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for catalog_entity_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogEntityProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogEntityProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCatalogEntityProperty` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogEntityProperty,
            ) -> types::builder::NewCatalogEntityProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/catalog_entities/{catalog_entity_id}/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityPropertyResponse>, Error<()>> {
            let Self { client, catalog_entity_id, body } = self;
            let catalog_entity_id = catalog_entity_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewCatalogEntityProperty::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entities/{}/properties", client.baseurl, encode_path(&
                catalog_entity_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_catalog_entity_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_catalog_entity`]

[`Client::get_catalog_entity`]: super::Client::get_catalog_entity*/
    #[derive(Debug, Clone)]
    pub struct GetCatalogEntity<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetCatalogEntityInclude>, String>,
    }
    impl<'a> GetCatalogEntity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetCatalogEntityInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetCatalogEntityInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_entities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entities/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_catalog_entity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_catalog_entity`]

[`Client::update_catalog_entity`]: super::Client::update_catalog_entity*/
    #[derive(Debug, Clone)]
    pub struct UpdateCatalogEntity<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCatalogEntity, String>,
    }
    impl<'a> UpdateCatalogEntity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCatalogEntity>,
            <V as std::convert::TryInto<
                types::UpdateCatalogEntity,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateCatalogEntity` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCatalogEntity,
            ) -> types::builder::UpdateCatalogEntity,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/catalog_entities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCatalogEntity::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entities/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_catalog_entity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_catalog_entity`]

[`Client::delete_catalog_entity`]: super::Client::delete_catalog_entity*/
    #[derive(Debug, Clone)]
    pub struct DeleteCatalogEntity<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCatalogEntity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/catalog_entities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entities/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_catalog_entity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_catalog_entity_checklists`]

[`Client::list_catalog_entity_checklists`]: super::Client::list_catalog_entity_checklists*/
    #[derive(Debug, Clone)]
    pub struct ListCatalogEntityChecklists<'a> {
        client: &'a super::Client,
        filter_auditable_id: Result<Option<::std::string::String>, String>,
        filter_auditable_type: Result<Option<::std::string::String>, String>,
        filter_catalog_checklist_template_id: Result<
            Option<::std::string::String>,
            String,
        >,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_status: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListCatalogEntityChecklists<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_auditable_id: Ok(None),
                filter_auditable_type: Ok(None),
                filter_catalog_checklist_template_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_status: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_auditable_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_auditable_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_auditable_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_auditable_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_auditable_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_auditable_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_catalog_checklist_template_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_catalog_checklist_template_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_catalog_checklist_template_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_status failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/catalog_entity_checklists`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityChecklistList>, Error<()>> {
            let Self {
                client,
                filter_auditable_id,
                filter_auditable_type,
                filter_catalog_checklist_template_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_status,
                page_number,
                page_size,
            } = self;
            let filter_auditable_id = filter_auditable_id
                .map_err(Error::InvalidRequest)?;
            let filter_auditable_type = filter_auditable_type
                .map_err(Error::InvalidRequest)?;
            let filter_catalog_checklist_template_id = filter_catalog_checklist_template_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_status = filter_status.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/catalog_entity_checklists", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[auditable_id]",
                        &filter_auditable_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[auditable_type]",
                        &filter_auditable_type,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[catalog_checklist_template_id]",
                        &filter_catalog_checklist_template_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[status]", &filter_status),
                )
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_catalog_entity_checklists",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_catalog_entity_checklist`]

[`Client::get_catalog_entity_checklist`]: super::Client::get_catalog_entity_checklist*/
    #[derive(Debug, Clone)]
    pub struct GetCatalogEntityChecklist<'a> {
        client: &'a super::Client,
        id: Result<::uuid::Uuid, String>,
    }
    impl<'a> GetCatalogEntityChecklist<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::uuid::Uuid>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: uuid :: Uuid` for id failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_entity_checklists/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityChecklistResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entity_checklists/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_catalog_entity_checklist",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_catalog_entity_property`]

[`Client::get_catalog_entity_property`]: super::Client::get_catalog_entity_property*/
    #[derive(Debug, Clone)]
    pub struct GetCatalogEntityProperty<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetCatalogEntityPropertyInclude>, String>,
    }
    impl<'a> GetCatalogEntityProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetCatalogEntityPropertyInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetCatalogEntityPropertyInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_entity_properties/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityPropertyResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entity_properties/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_catalog_entity_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_catalog_entity_property`]

[`Client::update_catalog_entity_property`]: super::Client::update_catalog_entity_property*/
    #[derive(Debug, Clone)]
    pub struct UpdateCatalogEntityProperty<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCatalogEntityProperty, String>,
    }
    impl<'a> UpdateCatalogEntityProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCatalogEntityProperty>,
            <V as std::convert::TryInto<
                types::UpdateCatalogEntityProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCatalogEntityProperty` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCatalogEntityProperty,
            ) -> types::builder::UpdateCatalogEntityProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/catalog_entity_properties/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityPropertyResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCatalogEntityProperty::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entity_properties/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_catalog_entity_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_catalog_entity_property`]

[`Client::delete_catalog_entity_property`]: super::Client::delete_catalog_entity_property*/
    #[derive(Debug, Clone)]
    pub struct DeleteCatalogEntityProperty<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCatalogEntityProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/catalog_entity_properties/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityPropertyResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_entity_properties/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_catalog_entity_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_catalog_property`]

[`Client::get_catalog_property`]: super::Client::get_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct GetCatalogProperty<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalog_properties/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_properties/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.get(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "get_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_catalog_property`]

[`Client::update_catalog_property`]: super::Client::update_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct UpdateCatalogProperty<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCatalogField, String>,
    }
    impl<'a> UpdateCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCatalogField>,
            <V as std::convert::TryInto<
                types::UpdateCatalogField,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateCatalogField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCatalogField,
            ) -> types::builder::UpdateCatalogField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/catalog_properties/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCatalogField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_properties/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_catalog_property`]

[`Client::delete_catalog_property`]: super::Client::delete_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct DeleteCatalogProperty<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/catalog_properties/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalog_properties/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_catalogs`]

[`Client::list_catalogs`]: super::Client::list_catalogs*/
    #[derive(Debug, Clone)]
    pub struct ListCatalogs<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListCatalogsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListCatalogsSort>, String>,
    }
    impl<'a> ListCatalogs<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogsInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogsSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogsSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalogs`
        pub async fn send(self) -> Result<ResponseValue<types::CatalogList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/catalogs", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_catalogs",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_catalog`]

[`Client::create_catalog`]: super::Client::create_catalog*/
    #[derive(Debug, Clone)]
    pub struct CreateCatalog<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalog, String>,
    }
    impl<'a> CreateCatalog<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalog>,
            <V as std::convert::TryInto<types::NewCatalog>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalog` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalog,
            ) -> types::builder::NewCatalog,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/catalogs`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewCatalog::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/catalogs", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_catalog",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_catalog_entities`]

[`Client::list_catalog_entities`]: super::Client::list_catalog_entities*/
    #[derive(Debug, Clone)]
    pub struct ListCatalogEntities<'a> {
        client: &'a super::Client,
        catalog_id: Result<::std::string::String, String>,
        filter_backstage_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListCatalogEntitiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListCatalogEntitiesSort>, String>,
    }
    impl<'a> ListCatalogEntities<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                catalog_id: Err("catalog_id was not initialized".to_string()),
                filter_backstage_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn catalog_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.catalog_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for catalog_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_backstage_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_backstage_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_backstage_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogEntitiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogEntitiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCatalogEntitiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCatalogEntitiesSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalogs/{catalog_id}/entities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityList>, Error<()>> {
            let Self {
                client,
                catalog_id,
                filter_backstage_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let catalog_id = catalog_id.map_err(Error::InvalidRequest)?;
            let filter_backstage_id = filter_backstage_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}/entities", client.baseurl, encode_path(& catalog_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[backstage_id]",
                        &filter_backstage_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_catalog_entities",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_catalog_entity`]

[`Client::create_catalog_entity`]: super::Client::create_catalog_entity*/
    #[derive(Debug, Clone)]
    pub struct CreateCatalogEntity<'a> {
        client: &'a super::Client,
        catalog_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewCatalogEntity, String>,
    }
    impl<'a> CreateCatalogEntity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                catalog_id: Err("catalog_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn catalog_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.catalog_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for catalog_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogEntity>,
            <V as std::convert::TryInto<
                types::NewCatalogEntity,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogEntity` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogEntity,
            ) -> types::builder::NewCatalogEntity,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/catalogs/{catalog_id}/entities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogEntityResponse>, Error<()>> {
            let Self { client, catalog_id, body } = self;
            let catalog_id = catalog_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewCatalogEntity::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}/entities", client.baseurl, encode_path(& catalog_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_catalog_entity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_catalog_properties`]

[`Client::list_catalog_properties`]: super::Client::list_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListCatalogProperties<'a> {
        client: &'a super::Client,
        catalog_id: Result<::std::string::String, String>,
    }
    impl<'a> ListCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                catalog_id: Err("catalog_id was not initialized".to_string()),
            }
        }
        pub fn catalog_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.catalog_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for catalog_id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalogs/{catalog_id}/properties`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, catalog_id } = self;
            let catalog_id = catalog_id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}/properties", client.baseurl, encode_path(& catalog_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.get(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "list_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_catalog_property`]

[`Client::create_catalog_property`]: super::Client::create_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateCatalogProperty<'a> {
        client: &'a super::Client,
        catalog_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewCatalogField, String>,
    }
    impl<'a> CreateCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                catalog_id: Err("catalog_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn catalog_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.catalog_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for catalog_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogField>,
            <V as std::convert::TryInto<
                types::NewCatalogField,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogField,
            ) -> types::builder::NewCatalogField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/catalogs/{catalog_id}/properties`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, catalog_id, body } = self;
            let catalog_id = catalog_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewCatalogField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}/properties", client.baseurl, encode_path(& catalog_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_catalog`]

[`Client::get_catalog`]: super::Client::get_catalog*/
    #[derive(Debug, Clone)]
    pub struct GetCatalog<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCatalog<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/catalogs/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_catalog",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_catalog`]

[`Client::update_catalog`]: super::Client::update_catalog*/
    #[derive(Debug, Clone)]
    pub struct UpdateCatalog<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCatalog, String>,
    }
    impl<'a> UpdateCatalog<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCatalog>,
            <V as std::convert::TryInto<types::UpdateCatalog>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateCatalog` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCatalog,
            ) -> types::builder::UpdateCatalog,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/catalogs/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCatalog::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_catalog",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_catalog`]

[`Client::delete_catalog`]: super::Client::delete_catalog*/
    #[derive(Debug, Clone)]
    pub struct DeleteCatalog<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCatalog<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/catalogs/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/catalogs/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_catalog",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_causes`]

[`Client::list_causes`]: super::Client::list_causes*/
    #[derive(Debug, Clone)]
    pub struct ListCauses<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListCauses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/causes`
        pub async fn send(self) -> Result<ResponseValue<types::CauseList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/causes", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_causes",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_cause`]

[`Client::create_cause`]: super::Client::create_cause*/
    #[derive(Debug, Clone)]
    pub struct CreateCause<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCause, String>,
    }
    impl<'a> CreateCause<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCause>,
            <V as std::convert::TryInto<types::NewCause>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| format!("conversion to `NewCause` for body failed: {}", s));
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewCause) -> types::builder::NewCause,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/causes`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CauseResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewCause::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/causes", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_cause",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_cause_catalog_properties`]

[`Client::list_cause_catalog_properties`]: super::Client::list_cause_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListCauseCatalogProperties<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListCauseCatalogPropertiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListCauseCatalogPropertiesSort>, String>,
    }
    impl<'a> ListCauseCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCauseCatalogPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCauseCatalogPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCauseCatalogPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCauseCatalogPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/causes/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/causes/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_cause_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_cause_catalog_property`]

[`Client::create_cause_catalog_property`]: super::Client::create_cause_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateCauseCatalogProperty<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogProperty, String>,
    }
    impl<'a> CreateCauseCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogProperty` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogProperty,
            ) -> types::builder::NewCatalogProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/causes/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogProperty::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/causes/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_cause_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_cause`]

[`Client::get_cause`]: super::Client::get_cause*/
    #[derive(Debug, Clone)]
    pub struct GetCause<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCause<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/causes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CauseResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/causes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_cause",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_cause`]

[`Client::update_cause`]: super::Client::update_cause*/
    #[derive(Debug, Clone)]
    pub struct UpdateCause<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCause, String>,
    }
    impl<'a> UpdateCause<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCause>,
            <V as std::convert::TryInto<types::UpdateCause>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateCause` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCause,
            ) -> types::builder::UpdateCause,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/causes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CauseResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdateCause::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/causes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_cause",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_cause`]

[`Client::delete_cause`]: super::Client::delete_cause*/
    #[derive(Debug, Clone)]
    pub struct DeleteCause<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCause<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/causes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CauseResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/causes/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_cause",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_communications_groups`]

[`Client::list_communications_groups`]: super::Client::list_communications_groups*/
    #[derive(Debug, Clone)]
    pub struct ListCommunicationsGroups<'a> {
        client: &'a super::Client,
        filter_communication_type_id: Result<Option<::std::string::String>, String>,
        filter_condition_type: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_is_private: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListCommunicationsGroups<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_communication_type_id: Ok(None),
                filter_condition_type: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_is_private: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_communication_type_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_communication_type_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_communication_type_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_condition_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_condition_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_condition_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_is_private<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_is_private = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_is_private failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsGroupsResponse>, Error<()>> {
            let Self {
                client,
                filter_communication_type_id,
                filter_condition_type,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_is_private,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_communication_type_id = filter_communication_type_id
                .map_err(Error::InvalidRequest)?;
            let filter_condition_type = filter_condition_type
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_is_private = filter_is_private.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/groups", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[communication_type_id]",
                        &filter_communication_type_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[condition_type]",
                        &filter_condition_type,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[is_private]",
                        &filter_is_private,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_communications_groups",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_communications_group`]

[`Client::create_communications_group`]: super::Client::create_communications_group*/
    #[derive(Debug, Clone)]
    pub struct CreateCommunicationsGroup<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCommunicationsGroup, String>,
    }
    impl<'a> CreateCommunicationsGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCommunicationsGroup>,
            <V as std::convert::TryInto<
                types::NewCommunicationsGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCommunicationsGroup` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCommunicationsGroup,
            ) -> types::builder::NewCommunicationsGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/communications/groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsGroupResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCommunicationsGroup::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/groups", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_communications_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_communications_group`]

[`Client::get_communications_group`]: super::Client::get_communications_group*/
    #[derive(Debug, Clone)]
    pub struct GetCommunicationsGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCommunicationsGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsGroupResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_communications_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_communications_group`]

[`Client::delete_communications_group`]: super::Client::delete_communications_group*/
    #[derive(Debug, Clone)]
    pub struct DeleteCommunicationsGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCommunicationsGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/communications/groups/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_communications_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_communications_group`]

[`Client::update_communications_group`]: super::Client::update_communications_group*/
    #[derive(Debug, Clone)]
    pub struct UpdateCommunicationsGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCommunicationsGroup, String>,
    }
    impl<'a> UpdateCommunicationsGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCommunicationsGroup>,
            <V as std::convert::TryInto<
                types::UpdateCommunicationsGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCommunicationsGroup` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCommunicationsGroup,
            ) -> types::builder::UpdateCommunicationsGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/communications/groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsGroupResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCommunicationsGroup::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_communications_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_communications_stages`]

[`Client::list_communications_stages`]: super::Client::list_communications_stages*/
    #[derive(Debug, Clone)]
    pub struct ListCommunicationsStages<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListCommunicationsStages<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/stages`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsStagesResponse>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/stages", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_communications_stages",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_communications_stage`]

[`Client::create_communications_stage`]: super::Client::create_communications_stage*/
    #[derive(Debug, Clone)]
    pub struct CreateCommunicationsStage<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCommunicationsStage, String>,
    }
    impl<'a> CreateCommunicationsStage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCommunicationsStage>,
            <V as std::convert::TryInto<
                types::NewCommunicationsStage,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCommunicationsStage` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCommunicationsStage,
            ) -> types::builder::NewCommunicationsStage,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/communications/stages`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsStageResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCommunicationsStage::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/stages", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_communications_stage",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_communications_stage`]

[`Client::get_communications_stage`]: super::Client::get_communications_stage*/
    #[derive(Debug, Clone)]
    pub struct GetCommunicationsStage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCommunicationsStage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/stages/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsStageResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/stages/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_communications_stage",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_communications_stage`]

[`Client::delete_communications_stage`]: super::Client::delete_communications_stage*/
    #[derive(Debug, Clone)]
    pub struct DeleteCommunicationsStage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCommunicationsStage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/communications/stages/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/stages/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_communications_stage",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_communications_stage`]

[`Client::update_communications_stage`]: super::Client::update_communications_stage*/
    #[derive(Debug, Clone)]
    pub struct UpdateCommunicationsStage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCommunicationsStage, String>,
    }
    impl<'a> UpdateCommunicationsStage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCommunicationsStage>,
            <V as std::convert::TryInto<
                types::UpdateCommunicationsStage,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCommunicationsStage` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCommunicationsStage,
            ) -> types::builder::UpdateCommunicationsStage,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/communications/stages/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsStageResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCommunicationsStage::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/stages/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_communications_stage",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_communications_templates`]

[`Client::list_communications_templates`]: super::Client::list_communications_templates*/
    #[derive(Debug, Clone)]
    pub struct ListCommunicationsTemplates<'a> {
        client: &'a super::Client,
        filter_communication_type_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListCommunicationsTemplates<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_communication_type_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_communication_type_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_communication_type_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_communication_type_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTemplatesResponse>, Error<()>> {
            let Self {
                client,
                filter_communication_type_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_communication_type_id = filter_communication_type_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/templates", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[communication_type_id]",
                        &filter_communication_type_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_communications_templates",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_communications_template`]

[`Client::create_communications_template`]: super::Client::create_communications_template*/
    #[derive(Debug, Clone)]
    pub struct CreateCommunicationsTemplate<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCommunicationsTemplate, String>,
    }
    impl<'a> CreateCommunicationsTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCommunicationsTemplate>,
            <V as std::convert::TryInto<
                types::NewCommunicationsTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCommunicationsTemplate` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCommunicationsTemplate,
            ) -> types::builder::NewCommunicationsTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/communications/templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTemplateResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCommunicationsTemplate::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/templates", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_communications_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_communications_template`]

[`Client::get_communications_template`]: super::Client::get_communications_template*/
    #[derive(Debug, Clone)]
    pub struct GetCommunicationsTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCommunicationsTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_communications_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_communications_template`]

[`Client::delete_communications_template`]: super::Client::delete_communications_template*/
    #[derive(Debug, Clone)]
    pub struct DeleteCommunicationsTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCommunicationsTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/communications/templates/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_communications_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_communications_template`]

[`Client::update_communications_template`]: super::Client::update_communications_template*/
    #[derive(Debug, Clone)]
    pub struct UpdateCommunicationsTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCommunicationsTemplate, String>,
    }
    impl<'a> UpdateCommunicationsTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCommunicationsTemplate>,
            <V as std::convert::TryInto<
                types::UpdateCommunicationsTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCommunicationsTemplate` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCommunicationsTemplate,
            ) -> types::builder::UpdateCommunicationsTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/communications/templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTemplateResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCommunicationsTemplate::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_communications_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_communications_types`]

[`Client::list_communications_types`]: super::Client::list_communications_types*/
    #[derive(Debug, Clone)]
    pub struct ListCommunicationsTypes<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListCommunicationsTypes<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/types`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTypesResponse>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/types", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_communications_types",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_communications_type`]

[`Client::create_communications_type`]: super::Client::create_communications_type*/
    #[derive(Debug, Clone)]
    pub struct CreateCommunicationsType<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCommunicationsType, String>,
    }
    impl<'a> CreateCommunicationsType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCommunicationsType>,
            <V as std::convert::TryInto<
                types::NewCommunicationsType,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCommunicationsType` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCommunicationsType,
            ) -> types::builder::NewCommunicationsType,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/communications/types`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTypeResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCommunicationsType::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/communications/types", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_communications_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_communications_type`]

[`Client::get_communications_type`]: super::Client::get_communications_type*/
    #[derive(Debug, Clone)]
    pub struct GetCommunicationsType<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCommunicationsType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/communications/types/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTypeResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/types/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_communications_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_communications_type`]

[`Client::delete_communications_type`]: super::Client::delete_communications_type*/
    #[derive(Debug, Clone)]
    pub struct DeleteCommunicationsType<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCommunicationsType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/communications/types/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/types/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_communications_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_communications_type`]

[`Client::update_communications_type`]: super::Client::update_communications_type*/
    #[derive(Debug, Clone)]
    pub struct UpdateCommunicationsType<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCommunicationsType, String>,
    }
    impl<'a> UpdateCommunicationsType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCommunicationsType>,
            <V as std::convert::TryInto<
                types::UpdateCommunicationsType,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCommunicationsType` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCommunicationsType,
            ) -> types::builder::UpdateCommunicationsType,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/communications/types/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CommunicationsTypeResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCommunicationsType::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/communications/types/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_communications_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_custom_field_option`]

[`Client::get_custom_field_option`]: super::Client::get_custom_field_option*/
    #[derive(Debug, Clone)]
    pub struct GetCustomFieldOption<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCustomFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/custom_field_options/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldOptionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_field_options/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_custom_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_custom_field_option`]

[`Client::update_custom_field_option`]: super::Client::update_custom_field_option*/
    #[derive(Debug, Clone)]
    pub struct UpdateCustomFieldOption<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCustomFieldOption, String>,
    }
    impl<'a> UpdateCustomFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCustomFieldOption>,
            <V as std::convert::TryInto<
                types::UpdateCustomFieldOption,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateCustomFieldOption` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCustomFieldOption,
            ) -> types::builder::UpdateCustomFieldOption,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/custom_field_options/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldOptionResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCustomFieldOption::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_field_options/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_custom_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_custom_field_option`]

[`Client::delete_custom_field_option`]: super::Client::delete_custom_field_option*/
    #[derive(Debug, Clone)]
    pub struct DeleteCustomFieldOption<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCustomFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/custom_field_options/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldOptionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_field_options/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_custom_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_custom_fields`]

[`Client::list_custom_fields`]: super::Client::list_custom_fields*/
    #[derive(Debug, Clone)]
    pub struct ListCustomFields<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_enabled: Result<Option<bool>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_label: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListCustomFieldsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListCustomFieldsSort>, String>,
    }
    impl<'a> ListCustomFields<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_enabled: Ok(None),
                filter_kind: Ok(None),
                filter_label: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_enabled failed".to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_label<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_label = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_label failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCustomFieldsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCustomFieldsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListCustomFieldsSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListCustomFieldsSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/custom_fields`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_enabled,
                filter_kind,
                filter_label,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_enabled = filter_enabled.map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_label = filter_label.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/custom_fields", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[enabled]",
                        &filter_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(
                    &progenitor_client::QueryParam::new("filter[label]", &filter_label),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_custom_fields",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_custom_field`]

[`Client::create_custom_field`]: super::Client::create_custom_field*/
    #[derive(Debug, Clone)]
    pub struct CreateCustomField<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCustomField, String>,
    }
    impl<'a> CreateCustomField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCustomField>,
            <V as std::convert::TryInto<
                types::NewCustomField,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCustomField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCustomField,
            ) -> types::builder::NewCustomField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/custom_fields`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCustomField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/custom_fields", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_custom_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_custom_field_options`]

[`Client::list_custom_field_options`]: super::Client::list_custom_field_options*/
    #[derive(Debug, Clone)]
    pub struct ListCustomFieldOptions<'a> {
        client: &'a super::Client,
        custom_field_id: Result<::std::string::String, String>,
        filter_color: Result<Option<::std::string::String>, String>,
        filter_value: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListCustomFieldOptions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                custom_field_id: Err("custom_field_id was not initialized".to_string()),
                filter_color: Ok(None),
                filter_value: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn custom_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.custom_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for custom_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_color<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_color = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_color failed"
                        .to_string()
                });
            self
        }
        pub fn filter_value<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_value = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_value failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/custom_fields/{custom_field_id}/options`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldOptionList>, Error<()>> {
            let Self {
                client,
                custom_field_id,
                filter_color,
                filter_value,
                include,
                page_number,
                page_size,
            } = self;
            let custom_field_id = custom_field_id.map_err(Error::InvalidRequest)?;
            let filter_color = filter_color.map_err(Error::InvalidRequest)?;
            let filter_value = filter_value.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_fields/{}/options", client.baseurl, encode_path(&
                custom_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[color]", &filter_color),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[value]", &filter_value),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_custom_field_options",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_custom_field_option`]

[`Client::create_custom_field_option`]: super::Client::create_custom_field_option*/
    #[derive(Debug, Clone)]
    pub struct CreateCustomFieldOption<'a> {
        client: &'a super::Client,
        custom_field_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewCustomFieldOption, String>,
    }
    impl<'a> CreateCustomFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                custom_field_id: Err("custom_field_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn custom_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.custom_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for custom_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCustomFieldOption>,
            <V as std::convert::TryInto<
                types::NewCustomFieldOption,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewCustomFieldOption` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCustomFieldOption,
            ) -> types::builder::NewCustomFieldOption,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/custom_fields/{custom_field_id}/options`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldOptionResponse>, Error<()>> {
            let Self { client, custom_field_id, body } = self;
            let custom_field_id = custom_field_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewCustomFieldOption::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_fields/{}/options", client.baseurl, encode_path(&
                custom_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_custom_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_custom_field`]

[`Client::get_custom_field`]: super::Client::get_custom_field*/
    #[derive(Debug, Clone)]
    pub struct GetCustomField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetCustomFieldInclude>, String>,
    }
    impl<'a> GetCustomField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetCustomFieldInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetCustomFieldInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/custom_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_custom_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_custom_field`]

[`Client::update_custom_field`]: super::Client::update_custom_field*/
    #[derive(Debug, Clone)]
    pub struct UpdateCustomField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCustomField, String>,
    }
    impl<'a> UpdateCustomField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCustomField>,
            <V as std::convert::TryInto<
                types::UpdateCustomField,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateCustomField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCustomField,
            ) -> types::builder::UpdateCustomField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/custom_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCustomField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_custom_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_custom_field`]

[`Client::delete_custom_field`]: super::Client::delete_custom_field*/
    #[derive(Debug, Clone)]
    pub struct DeleteCustomField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCustomField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/custom_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFieldResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_custom_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_custom_forms`]

[`Client::list_custom_forms`]: super::Client::list_custom_forms*/
    #[derive(Debug, Clone)]
    pub struct ListCustomForms<'a> {
        client: &'a super::Client,
        filter_command: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListCustomForms<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_command: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_command<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_command = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_command failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/custom_forms`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFormList>, Error<()>> {
            let Self {
                client,
                filter_command,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_command = filter_command.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/custom_forms", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[command]",
                        &filter_command,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_custom_forms",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_custom_form`]

[`Client::create_custom_form`]: super::Client::create_custom_form*/
    #[derive(Debug, Clone)]
    pub struct CreateCustomForm<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCustomForm, String>,
    }
    impl<'a> CreateCustomForm<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCustomForm>,
            <V as std::convert::TryInto<types::NewCustomForm>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCustomForm` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCustomForm,
            ) -> types::builder::NewCustomForm,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/custom_forms`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFormResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCustomForm::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/custom_forms", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_custom_form",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_custom_form`]

[`Client::get_custom_form`]: super::Client::get_custom_form*/
    #[derive(Debug, Clone)]
    pub struct GetCustomForm<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetCustomForm<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/custom_forms/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFormResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_forms/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_custom_form",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_custom_form`]

[`Client::update_custom_form`]: super::Client::update_custom_form*/
    #[derive(Debug, Clone)]
    pub struct UpdateCustomForm<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateCustomForm, String>,
    }
    impl<'a> UpdateCustomForm<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateCustomForm>,
            <V as std::convert::TryInto<
                types::UpdateCustomForm,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateCustomForm` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateCustomForm,
            ) -> types::builder::UpdateCustomForm,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/custom_forms/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFormResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateCustomForm::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_forms/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_custom_form",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_custom_form`]

[`Client::delete_custom_form`]: super::Client::delete_custom_form*/
    #[derive(Debug, Clone)]
    pub struct DeleteCustomForm<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteCustomForm<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/custom_forms/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CustomFormResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/custom_forms/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_custom_form",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_dashboard_panel`]

[`Client::get_dashboard_panel`]: super::Client::get_dashboard_panel*/
    #[derive(Debug, Clone)]
    pub struct GetDashboardPanel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        period: Result<Option<::std::string::String>, String>,
        range: Result<Option<::std::string::String>, String>,
        time_zone: Result<Option<::std::string::String>, String>,
    }
    impl<'a> GetDashboardPanel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                period: Ok(None),
                range: Ok(None),
                time_zone: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn period<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.period = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for period failed"
                        .to_string()
                });
            self
        }
        pub fn range<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.range = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for range failed"
                        .to_string()
                });
            self
        }
        pub fn time_zone<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.time_zone = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for time_zone failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/dashboard_panels/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardPanelResponse>, Error<()>> {
            let Self { client, id, period, range, time_zone } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let period = period.map_err(Error::InvalidRequest)?;
            let range = range.map_err(Error::InvalidRequest)?;
            let time_zone = time_zone.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboard_panels/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("period", &period))
                .query(&progenitor_client::QueryParam::new("range", &range))
                .query(&progenitor_client::QueryParam::new("time_zone", &time_zone))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_dashboard_panel",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_dashboard_panel`]

[`Client::update_dashboard_panel`]: super::Client::update_dashboard_panel*/
    #[derive(Debug, Clone)]
    pub struct UpdateDashboardPanel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateDashboardPanel, String>,
    }
    impl<'a> UpdateDashboardPanel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateDashboardPanel>,
            <V as std::convert::TryInto<
                types::UpdateDashboardPanel,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateDashboardPanel` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateDashboardPanel,
            ) -> types::builder::UpdateDashboardPanel,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/dashboard_panels/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardPanelResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateDashboardPanel::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboard_panels/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_dashboard_panel",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_dashboard_panel`]

[`Client::delete_dashboard_panel`]: super::Client::delete_dashboard_panel*/
    #[derive(Debug, Clone)]
    pub struct DeleteDashboardPanel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteDashboardPanel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/dashboard_panels/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardPanelResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboard_panels/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_dashboard_panel",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::duplicate_dashboard_panel`]

[`Client::duplicate_dashboard_panel`]: super::Client::duplicate_dashboard_panel*/
    #[derive(Debug, Clone)]
    pub struct DuplicateDashboardPanel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DuplicateDashboardPanel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/dashboard_panels/{id}/duplicate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardPanelResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboard_panels/{}/duplicate", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "duplicate_dashboard_panel",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_dashboards`]

[`Client::list_dashboards`]: super::Client::list_dashboards*/
    #[derive(Debug, Clone)]
    pub struct ListDashboards<'a> {
        client: &'a super::Client,
        include: Result<Option<types::ListDashboardsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListDashboards<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListDashboardsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListDashboardsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/dashboards`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardList>, Error<()>> {
            let Self { client, include, page_number, page_size } = self;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/dashboards", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_dashboards",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_dashboard`]

[`Client::create_dashboard`]: super::Client::create_dashboard*/
    #[derive(Debug, Clone)]
    pub struct CreateDashboard<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewDashboard, String>,
    }
    impl<'a> CreateDashboard<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewDashboard>,
            <V as std::convert::TryInto<types::NewDashboard>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewDashboard` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewDashboard,
            ) -> types::builder::NewDashboard,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/dashboards`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewDashboard::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/dashboards", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_dashboard",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_dashboard_panels`]

[`Client::list_dashboard_panels`]: super::Client::list_dashboard_panels*/
    #[derive(Debug, Clone)]
    pub struct ListDashboardPanels<'a> {
        client: &'a super::Client,
        dashboard_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListDashboardPanels<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                dashboard_id: Err("dashboard_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn dashboard_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.dashboard_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for dashboard_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/dashboards/{dashboard_id}/panels`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardPanelList>, Error<()>> {
            let Self { client, dashboard_id, include, page_number, page_size } = self;
            let dashboard_id = dashboard_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}/panels", client.baseurl, encode_path(& dashboard_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_dashboard_panels",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_dashboard_panel`]

[`Client::create_dashboard_panel`]: super::Client::create_dashboard_panel*/
    #[derive(Debug, Clone)]
    pub struct CreateDashboardPanel<'a> {
        client: &'a super::Client,
        dashboard_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewDashboardPanel, String>,
    }
    impl<'a> CreateDashboardPanel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                dashboard_id: Err("dashboard_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn dashboard_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.dashboard_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for dashboard_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewDashboardPanel>,
            <V as std::convert::TryInto<
                types::NewDashboardPanel,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewDashboardPanel` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewDashboardPanel,
            ) -> types::builder::NewDashboardPanel,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/dashboards/{dashboard_id}/panels`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardPanelResponse>, Error<()>> {
            let Self { client, dashboard_id, body } = self;
            let dashboard_id = dashboard_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewDashboardPanel::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}/panels", client.baseurl, encode_path(& dashboard_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_dashboard_panel",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_dashboard`]

[`Client::get_dashboard`]: super::Client::get_dashboard*/
    #[derive(Debug, Clone)]
    pub struct GetDashboard<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetDashboardInclude>, String>,
    }
    impl<'a> GetDashboard<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetDashboardInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetDashboardInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/dashboards/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_dashboard",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_dashboard`]

[`Client::update_dashboard`]: super::Client::update_dashboard*/
    #[derive(Debug, Clone)]
    pub struct UpdateDashboard<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateDashboard, String>,
    }
    impl<'a> UpdateDashboard<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateDashboard>,
            <V as std::convert::TryInto<
                types::UpdateDashboard,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateDashboard` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateDashboard,
            ) -> types::builder::UpdateDashboard,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/dashboards/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateDashboard::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_dashboard",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_dashboard`]

[`Client::delete_dashboard`]: super::Client::delete_dashboard*/
    #[derive(Debug, Clone)]
    pub struct DeleteDashboard<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteDashboard<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/dashboards/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_dashboard",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::duplicate_dashboard`]

[`Client::duplicate_dashboard`]: super::Client::duplicate_dashboard*/
    #[derive(Debug, Clone)]
    pub struct DuplicateDashboard<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DuplicateDashboard<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/dashboards/{id}/duplicate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}/duplicate", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "duplicate_dashboard",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::set_default_dashboard`]

[`Client::set_default_dashboard`]: super::Client::set_default_dashboard*/
    #[derive(Debug, Clone)]
    pub struct SetDefaultDashboard<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> SetDefaultDashboard<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/dashboards/{id}/set_default`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::DashboardResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/dashboards/{}/set_default", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "set_default_dashboard",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_edge_connectors`]

[`Client::list_edge_connectors`]: super::Client::list_edge_connectors*/
    #[derive(Debug, Clone)]
    pub struct ListEdgeConnectors<'a> {
        client: &'a super::Client,
        name: Result<Option<::std::string::String>, String>,
        page: Result<Option<i64>, String>,
        per_page: Result<Option<i64>, String>,
        status: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListEdgeConnectors<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                name: Ok(None),
                page: Ok(None),
                per_page: Ok(None),
                status: Ok(None),
            }
        }
        pub fn name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for name failed"
                        .to_string()
                });
            self
        }
        pub fn page<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page failed".to_string());
            self
        }
        pub fn per_page<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.per_page = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for per_page failed".to_string());
            self
        }
        pub fn status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for status failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/edge_connectors`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, name, page, per_page, status } = self;
            let name = name.map_err(Error::InvalidRequest)?;
            let page = page.map_err(Error::InvalidRequest)?;
            let per_page = per_page.map_err(Error::InvalidRequest)?;
            let status = status.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/edge_connectors", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .query(&progenitor_client::QueryParam::new("name", &name))
                .query(&progenitor_client::QueryParam::new("page", &page))
                .query(&progenitor_client::QueryParam::new("per_page", &per_page))
                .query(&progenitor_client::QueryParam::new("status", &status))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_edge_connectors",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_edge_connector`]

[`Client::create_edge_connector`]: super::Client::create_edge_connector*/
    #[derive(Debug, Clone)]
    pub struct CreateEdgeConnector<'a> {
        client: &'a super::Client,
        body: Result<types::builder::CreateEdgeConnectorBody, String>,
    }
    impl<'a> CreateEdgeConnector<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::CreateEdgeConnectorBody>,
            <V as std::convert::TryInto<
                types::CreateEdgeConnectorBody,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `CreateEdgeConnectorBody` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::CreateEdgeConnectorBody,
            ) -> types::builder::CreateEdgeConnectorBody,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/edge_connectors`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::CreateEdgeConnectorBody::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/edge_connectors", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_edge_connector",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_edge_connector_actions`]

[`Client::list_edge_connector_actions`]: super::Client::list_edge_connector_actions*/
    #[derive(Debug, Clone)]
    pub struct ListEdgeConnectorActions<'a> {
        client: &'a super::Client,
        edge_connector_id: Result<::std::string::String, String>,
    }
    impl<'a> ListEdgeConnectorActions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                edge_connector_id: Err(
                    "edge_connector_id was not initialized".to_string(),
                ),
            }
        }
        pub fn edge_connector_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.edge_connector_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for edge_connector_id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/edge_connectors/{edge_connector_id}/actions`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, edge_connector_id } = self;
            let edge_connector_id = edge_connector_id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}/actions", client.baseurl, encode_path(&
                edge_connector_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.get(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "list_edge_connector_actions",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_edge_connector_action`]

[`Client::create_edge_connector_action`]: super::Client::create_edge_connector_action*/
    #[derive(Debug, Clone)]
    pub struct CreateEdgeConnectorAction<'a> {
        client: &'a super::Client,
        edge_connector_id: Result<::std::string::String, String>,
        body: Result<types::builder::CreateEdgeConnectorActionBody, String>,
    }
    impl<'a> CreateEdgeConnectorAction<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                edge_connector_id: Err(
                    "edge_connector_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn edge_connector_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.edge_connector_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for edge_connector_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::CreateEdgeConnectorActionBody>,
            <V as std::convert::TryInto<
                types::CreateEdgeConnectorActionBody,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `CreateEdgeConnectorActionBody` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::CreateEdgeConnectorActionBody,
            ) -> types::builder::CreateEdgeConnectorActionBody,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/edge_connectors/{edge_connector_id}/actions`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, edge_connector_id, body } = self;
            let edge_connector_id = edge_connector_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::CreateEdgeConnectorActionBody::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}/actions", client.baseurl, encode_path(&
                edge_connector_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_edge_connector_action",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_edge_connector_action`]

[`Client::get_edge_connector_action`]: super::Client::get_edge_connector_action*/
    #[derive(Debug, Clone)]
    pub struct GetEdgeConnectorAction<'a> {
        client: &'a super::Client,
        edge_connector_id: Result<::std::string::String, String>,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetEdgeConnectorAction<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                edge_connector_id: Err(
                    "edge_connector_id was not initialized".to_string(),
                ),
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn edge_connector_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.edge_connector_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for edge_connector_id failed"
                        .to_string()
                });
            self
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/edge_connectors/{edge_connector_id}/actions/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, edge_connector_id, id } = self;
            let edge_connector_id = edge_connector_id.map_err(Error::InvalidRequest)?;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}/actions/{}", client.baseurl, encode_path(&
                edge_connector_id.to_string()), encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.get(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "get_edge_connector_action",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_edge_connector_action`]

[`Client::delete_edge_connector_action`]: super::Client::delete_edge_connector_action*/
    #[derive(Debug, Clone)]
    pub struct DeleteEdgeConnectorAction<'a> {
        client: &'a super::Client,
        edge_connector_id: Result<::std::string::String, String>,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteEdgeConnectorAction<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                edge_connector_id: Err(
                    "edge_connector_id was not initialized".to_string(),
                ),
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn edge_connector_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.edge_connector_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for edge_connector_id failed"
                        .to_string()
                });
            self
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/edge_connectors/{edge_connector_id}/actions/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, edge_connector_id, id } = self;
            let edge_connector_id = edge_connector_id.map_err(Error::InvalidRequest)?;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}/actions/{}", client.baseurl, encode_path(&
                edge_connector_id.to_string()), encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_edge_connector_action",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_edge_connector_action`]

[`Client::update_edge_connector_action`]: super::Client::update_edge_connector_action*/
    #[derive(Debug, Clone)]
    pub struct UpdateEdgeConnectorAction<'a> {
        client: &'a super::Client,
        edge_connector_id: Result<::std::string::String, String>,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateEdgeConnectorActionBody, String>,
    }
    impl<'a> UpdateEdgeConnectorAction<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                edge_connector_id: Err(
                    "edge_connector_id was not initialized".to_string(),
                ),
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn edge_connector_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.edge_connector_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for edge_connector_id failed"
                        .to_string()
                });
            self
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateEdgeConnectorActionBody>,
            <V as std::convert::TryInto<
                types::UpdateEdgeConnectorActionBody,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateEdgeConnectorActionBody` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateEdgeConnectorActionBody,
            ) -> types::builder::UpdateEdgeConnectorActionBody,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/edge_connectors/{edge_connector_id}/actions/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, edge_connector_id, id, body } = self;
            let edge_connector_id = edge_connector_id.map_err(Error::InvalidRequest)?;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateEdgeConnectorActionBody::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}/actions/{}", client.baseurl, encode_path(&
                edge_connector_id.to_string()), encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_edge_connector_action",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_edge_connector`]

[`Client::get_edge_connector`]: super::Client::get_edge_connector*/
    #[derive(Debug, Clone)]
    pub struct GetEdgeConnector<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetEdgeConnector<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/edge_connectors/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.get(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "get_edge_connector",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_edge_connector`]

[`Client::delete_edge_connector`]: super::Client::delete_edge_connector*/
    #[derive(Debug, Clone)]
    pub struct DeleteEdgeConnector<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteEdgeConnector<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/edge_connectors/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_edge_connector",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_edge_connector`]

[`Client::update_edge_connector`]: super::Client::update_edge_connector*/
    #[derive(Debug, Clone)]
    pub struct UpdateEdgeConnector<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateEdgeConnectorBody, String>,
    }
    impl<'a> UpdateEdgeConnector<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateEdgeConnectorBody>,
            <V as std::convert::TryInto<
                types::UpdateEdgeConnectorBody,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateEdgeConnectorBody` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateEdgeConnectorBody,
            ) -> types::builder::UpdateEdgeConnectorBody,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PATCH` request to `/v1/edge_connectors/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateEdgeConnectorBody::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/edge_connectors/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .patch(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_edge_connector",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::show_user_email_address`]

[`Client::show_user_email_address`]: super::Client::show_user_email_address*/
    #[derive(Debug, Clone)]
    pub struct ShowUserEmailAddress<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> ShowUserEmailAddress<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/email_addresses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/email_addresses/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "show_user_email_address",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_user_email_address`]

[`Client::update_user_email_address`]: super::Client::update_user_email_address*/
    #[derive(Debug, Clone)]
    pub struct UpdateUserEmailAddress<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateUserEmailAddress, String>,
    }
    impl<'a> UpdateUserEmailAddress<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateUserEmailAddress>,
            <V as std::convert::TryInto<
                types::UpdateUserEmailAddress,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateUserEmailAddress` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateUserEmailAddress,
            ) -> types::builder::UpdateUserEmailAddress,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/email_addresses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateUserEmailAddress::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/email_addresses/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_user_email_address",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_user_email_address`]

[`Client::delete_user_email_address`]: super::Client::delete_user_email_address*/
    #[derive(Debug, Clone)]
    pub struct DeleteUserEmailAddress<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteUserEmailAddress<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/email_addresses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/email_addresses/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_user_email_address",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::resend_user_email_address_verification`]

[`Client::resend_user_email_address_verification`]: super::Client::resend_user_email_address_verification*/
    #[derive(Debug, Clone)]
    pub struct ResendUserEmailAddressVerification<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> ResendUserEmailAddressVerification<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/email_addresses/{id}/resend_verification`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/email_addresses/{}/resend_verification", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "resend_user_email_address_verification",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::verify_user_email_address`]

[`Client::verify_user_email_address`]: super::Client::verify_user_email_address*/
    #[derive(Debug, Clone)]
    pub struct VerifyUserEmailAddress<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        token: Result<::std::string::String, String>,
    }
    impl<'a> VerifyUserEmailAddress<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                token: Err("token was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn token<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.token = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for token failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/email_addresses/{id}/verify`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressResponse>, Error<()>> {
            let Self { client, id, token } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let token = token.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/email_addresses/{}/verify", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("token", &token))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "verify_user_email_address",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_environments`]

[`Client::list_environments`]: super::Client::list_environments*/
    #[derive(Debug, Clone)]
    pub struct ListEnvironments<'a> {
        client: &'a super::Client,
        filter_color: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListEnvironments<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_color: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_color<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_color = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_color failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/environments`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EnvironmentList>, Error<()>> {
            let Self {
                client,
                filter_color,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_color = filter_color.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/environments", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[color]", &filter_color),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_environments",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_environment`]

[`Client::create_environment`]: super::Client::create_environment*/
    #[derive(Debug, Clone)]
    pub struct CreateEnvironment<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewEnvironment, String>,
    }
    impl<'a> CreateEnvironment<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewEnvironment>,
            <V as std::convert::TryInto<
                types::NewEnvironment,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewEnvironment` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewEnvironment,
            ) -> types::builder::NewEnvironment,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/environments`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EnvironmentResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewEnvironment::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/environments", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_environment",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_environment_catalog_properties`]

[`Client::list_environment_catalog_properties`]: super::Client::list_environment_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListEnvironmentCatalogProperties<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListEnvironmentCatalogPropertiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListEnvironmentCatalogPropertiesSort>, String>,
    }
    impl<'a> ListEnvironmentCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListEnvironmentCatalogPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListEnvironmentCatalogPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListEnvironmentCatalogPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListEnvironmentCatalogPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/environments/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/environments/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_environment_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_environment_catalog_property`]

[`Client::create_environment_catalog_property`]: super::Client::create_environment_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateEnvironmentCatalogProperty<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogProperty, String>,
    }
    impl<'a> CreateEnvironmentCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogProperty` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogProperty,
            ) -> types::builder::NewCatalogProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/environments/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogProperty::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/environments/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_environment_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_environment`]

[`Client::get_environment`]: super::Client::get_environment*/
    #[derive(Debug, Clone)]
    pub struct GetEnvironment<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetEnvironment<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/environments/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EnvironmentResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/environments/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_environment",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_environment`]

[`Client::update_environment`]: super::Client::update_environment*/
    #[derive(Debug, Clone)]
    pub struct UpdateEnvironment<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateEnvironment, String>,
    }
    impl<'a> UpdateEnvironment<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateEnvironment>,
            <V as std::convert::TryInto<
                types::UpdateEnvironment,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateEnvironment` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateEnvironment,
            ) -> types::builder::UpdateEnvironment,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/environments/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EnvironmentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateEnvironment::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/environments/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_environment",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_environment`]

[`Client::delete_environment`]: super::Client::delete_environment*/
    #[derive(Debug, Clone)]
    pub struct DeleteEnvironment<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteEnvironment<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/environments/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EnvironmentResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/environments/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_environment",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_escalation_level`]

[`Client::get_escalation_level`]: super::Client::get_escalation_level*/
    #[derive(Debug, Clone)]
    pub struct GetEscalationLevel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetEscalationLevel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/escalation_levels/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_levels/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_escalation_level",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_escalation_level`]

[`Client::update_escalation_level`]: super::Client::update_escalation_level*/
    #[derive(Debug, Clone)]
    pub struct UpdateEscalationLevel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateEscalationPolicyLevel, String>,
    }
    impl<'a> UpdateEscalationLevel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateEscalationPolicyLevel>,
            <V as std::convert::TryInto<
                types::UpdateEscalationPolicyLevel,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateEscalationPolicyLevel` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateEscalationPolicyLevel,
            ) -> types::builder::UpdateEscalationPolicyLevel,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/escalation_levels/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateEscalationPolicyLevel::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_levels/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_escalation_level",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_escalation_level`]

[`Client::delete_escalation_level`]: super::Client::delete_escalation_level*/
    #[derive(Debug, Clone)]
    pub struct DeleteEscalationLevel<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteEscalationLevel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/escalation_levels/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_levels/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_escalation_level",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_escalation_levels_paths`]

[`Client::list_escalation_levels_paths`]: super::Client::list_escalation_levels_paths*/
    #[derive(Debug, Clone)]
    pub struct ListEscalationLevelsPaths<'a> {
        client: &'a super::Client,
        escalation_policy_path_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListEscalationLevelsPaths<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                escalation_policy_path_id: Err(
                    "escalation_policy_path_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn escalation_policy_path_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.escalation_policy_path_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for escalation_policy_path_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/escalation_paths/{escalation_policy_path_id}/escalation_levels`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelList>, Error<()>> {
            let Self {
                client,
                escalation_policy_path_id,
                include,
                page_number,
                page_size,
            } = self;
            let escalation_policy_path_id = escalation_policy_path_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_paths/{}/escalation_levels", client.baseurl,
                encode_path(& escalation_policy_path_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_escalation_levels_paths",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_escalation_level_paths`]

[`Client::create_escalation_level_paths`]: super::Client::create_escalation_level_paths*/
    #[derive(Debug, Clone)]
    pub struct CreateEscalationLevelPaths<'a> {
        client: &'a super::Client,
        escalation_policy_path_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewEscalationPolicyLevel, String>,
    }
    impl<'a> CreateEscalationLevelPaths<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                escalation_policy_path_id: Err(
                    "escalation_policy_path_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn escalation_policy_path_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.escalation_policy_path_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for escalation_policy_path_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewEscalationPolicyLevel>,
            <V as std::convert::TryInto<
                types::NewEscalationPolicyLevel,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewEscalationPolicyLevel` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewEscalationPolicyLevel,
            ) -> types::builder::NewEscalationPolicyLevel,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/escalation_paths/{escalation_policy_path_id}/escalation_levels`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelResponse>, Error<()>> {
            let Self { client, escalation_policy_path_id, body } = self;
            let escalation_policy_path_id = escalation_policy_path_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewEscalationPolicyLevel::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_paths/{}/escalation_levels", client.baseurl,
                encode_path(& escalation_policy_path_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_escalation_level_paths",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_escalation_path`]

[`Client::get_escalation_path`]: super::Client::get_escalation_path*/
    #[derive(Debug, Clone)]
    pub struct GetEscalationPath<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetEscalationPathInclude>, String>,
    }
    impl<'a> GetEscalationPath<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetEscalationPathInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetEscalationPathInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/escalation_paths/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyPathResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_paths/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_escalation_path",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_escalation_path`]

[`Client::update_escalation_path`]: super::Client::update_escalation_path*/
    #[derive(Debug, Clone)]
    pub struct UpdateEscalationPath<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateEscalationPolicyPath, String>,
    }
    impl<'a> UpdateEscalationPath<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateEscalationPolicyPath>,
            <V as std::convert::TryInto<
                types::UpdateEscalationPolicyPath,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateEscalationPolicyPath` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateEscalationPolicyPath,
            ) -> types::builder::UpdateEscalationPolicyPath,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/escalation_paths/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyPathResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateEscalationPolicyPath::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_paths/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_escalation_path",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_escalation_path`]

[`Client::delete_escalation_path`]: super::Client::delete_escalation_path*/
    #[derive(Debug, Clone)]
    pub struct DeleteEscalationPath<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteEscalationPath<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/escalation_paths/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyPathResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_paths/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_escalation_path",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_escalation_policies`]

[`Client::list_escalation_policies`]: super::Client::list_escalation_policies*/
    #[derive(Debug, Clone)]
    pub struct ListEscalationPolicies<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_team_ids: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListEscalationPoliciesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListEscalationPolicies<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_team_ids: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_team_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_team_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_team_ids failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListEscalationPoliciesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListEscalationPoliciesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/escalation_policies`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_team_ids,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_team_ids = filter_team_ids.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/escalation_policies", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[team_ids]",
                        &filter_team_ids,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_escalation_policies",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_escalation_policy`]

[`Client::create_escalation_policy`]: super::Client::create_escalation_policy*/
    #[derive(Debug, Clone)]
    pub struct CreateEscalationPolicy<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewEscalationPolicy, String>,
    }
    impl<'a> CreateEscalationPolicy<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewEscalationPolicy>,
            <V as std::convert::TryInto<
                types::NewEscalationPolicy,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewEscalationPolicy` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewEscalationPolicy,
            ) -> types::builder::NewEscalationPolicy,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/escalation_policies`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewEscalationPolicy::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/escalation_policies", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_escalation_policy",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_escalation_levels`]

[`Client::list_escalation_levels`]: super::Client::list_escalation_levels*/
    #[derive(Debug, Clone)]
    pub struct ListEscalationLevels<'a> {
        client: &'a super::Client,
        escalation_policy_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListEscalationLevels<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                escalation_policy_id: Err(
                    "escalation_policy_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn escalation_policy_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.escalation_policy_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for escalation_policy_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_levels`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelList>, Error<()>> {
            let Self { client, escalation_policy_id, include, page_number, page_size } = self;
            let escalation_policy_id = escalation_policy_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}/escalation_levels", client.baseurl,
                encode_path(& escalation_policy_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_escalation_levels",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_escalation_level`]

[`Client::create_escalation_level`]: super::Client::create_escalation_level*/
    #[derive(Debug, Clone)]
    pub struct CreateEscalationLevel<'a> {
        client: &'a super::Client,
        escalation_policy_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewEscalationPolicyLevel, String>,
    }
    impl<'a> CreateEscalationLevel<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                escalation_policy_id: Err(
                    "escalation_policy_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn escalation_policy_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.escalation_policy_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for escalation_policy_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewEscalationPolicyLevel>,
            <V as std::convert::TryInto<
                types::NewEscalationPolicyLevel,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewEscalationPolicyLevel` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewEscalationPolicyLevel,
            ) -> types::builder::NewEscalationPolicyLevel,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_levels`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyLevelResponse>, Error<()>> {
            let Self { client, escalation_policy_id, body } = self;
            let escalation_policy_id = escalation_policy_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewEscalationPolicyLevel::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}/escalation_levels", client.baseurl,
                encode_path(& escalation_policy_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_escalation_level",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_escalation_paths`]

[`Client::list_escalation_paths`]: super::Client::list_escalation_paths*/
    #[derive(Debug, Clone)]
    pub struct ListEscalationPaths<'a> {
        client: &'a super::Client,
        escalation_policy_id: Result<::std::string::String, String>,
        filter_path_type: Result<
            Option<types::ListEscalationPathsFilterPathType>,
            String,
        >,
        include: Result<Option<types::ListEscalationPathsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListEscalationPaths<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                escalation_policy_id: Err(
                    "escalation_policy_id was not initialized".to_string(),
                ),
                filter_path_type: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn escalation_policy_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.escalation_policy_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for escalation_policy_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_path_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListEscalationPathsFilterPathType>,
        {
            self.filter_path_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListEscalationPathsFilterPathType` for filter_path_type failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListEscalationPathsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListEscalationPathsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_paths`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyPathList>, Error<()>> {
            let Self {
                client,
                escalation_policy_id,
                filter_path_type,
                include,
                page_number,
                page_size,
            } = self;
            let escalation_policy_id = escalation_policy_id
                .map_err(Error::InvalidRequest)?;
            let filter_path_type = filter_path_type.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}/escalation_paths", client.baseurl,
                encode_path(& escalation_policy_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[path_type]",
                        &filter_path_type,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_escalation_paths",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_escalation_path`]

[`Client::create_escalation_path`]: super::Client::create_escalation_path*/
    #[derive(Debug, Clone)]
    pub struct CreateEscalationPath<'a> {
        client: &'a super::Client,
        escalation_policy_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewEscalationPolicyPath, String>,
    }
    impl<'a> CreateEscalationPath<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                escalation_policy_id: Err(
                    "escalation_policy_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn escalation_policy_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.escalation_policy_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for escalation_policy_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewEscalationPolicyPath>,
            <V as std::convert::TryInto<
                types::NewEscalationPolicyPath,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewEscalationPolicyPath` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewEscalationPolicyPath,
            ) -> types::builder::NewEscalationPolicyPath,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/escalation_policies/{escalation_policy_id}/escalation_paths`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyPathResponse>, Error<()>> {
            let Self { client, escalation_policy_id, body } = self;
            let escalation_policy_id = escalation_policy_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewEscalationPolicyPath::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}/escalation_paths", client.baseurl,
                encode_path(& escalation_policy_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_escalation_path",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_escalation_policy`]

[`Client::get_escalation_policy`]: super::Client::get_escalation_policy*/
    #[derive(Debug, Clone)]
    pub struct GetEscalationPolicy<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetEscalationPolicyInclude>, String>,
    }
    impl<'a> GetEscalationPolicy<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetEscalationPolicyInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetEscalationPolicyInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/escalation_policies/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_escalation_policy",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_escalation_policy`]

[`Client::update_escalation_policy`]: super::Client::update_escalation_policy*/
    #[derive(Debug, Clone)]
    pub struct UpdateEscalationPolicy<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateEscalationPolicy, String>,
    }
    impl<'a> UpdateEscalationPolicy<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateEscalationPolicy>,
            <V as std::convert::TryInto<
                types::UpdateEscalationPolicy,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateEscalationPolicy` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateEscalationPolicy,
            ) -> types::builder::UpdateEscalationPolicy,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/escalation_policies/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateEscalationPolicy::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_escalation_policy",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_escalation_policy`]

[`Client::delete_escalation_policy`]: super::Client::delete_escalation_policy*/
    #[derive(Debug, Clone)]
    pub struct DeleteEscalationPolicy<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteEscalationPolicy<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/escalation_policies/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::EscalationPolicyResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/escalation_policies/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_escalation_policy",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_events`]

[`Client::get_incident_events`]: super::Client::get_incident_events*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentEvents<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentEvents<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_events",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_event`]

[`Client::update_incident_event`]: super::Client::update_incident_event*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentEvent<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentEvent, String>,
    }
    impl<'a> UpdateIncidentEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentEvent>,
            <V as std::convert::TryInto<
                types::UpdateIncidentEvent,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateIncidentEvent` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentEvent,
            ) -> types::builder::UpdateIncidentEvent,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentEvent::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_event`]

[`Client::delete_incident_event`]: super::Client::delete_incident_event*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentEvent<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_event_functionalities`]

[`Client::list_incident_event_functionalities`]: super::Client::list_incident_event_functionalities*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentEventFunctionalities<'a> {
        client: &'a super::Client,
        incident_event_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentEventFunctionalities<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_event_id: Err(
                    "incident_event_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_event_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_event_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_event_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/events/{incident_event_id}/functionalities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventFunctionalityList>, Error<()>> {
            let Self { client, incident_event_id, include, page_number, page_size } = self;
            let incident_event_id = incident_event_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}/functionalities", client.baseurl, encode_path(&
                incident_event_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_event_functionalities",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_event_functionality`]

[`Client::create_incident_event_functionality`]: super::Client::create_incident_event_functionality*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentEventFunctionality<'a> {
        client: &'a super::Client,
        incident_event_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentEventFunctionality, String>,
    }
    impl<'a> CreateIncidentEventFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_event_id: Err(
                    "incident_event_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_event_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_event_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_event_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentEventFunctionality>,
            <V as std::convert::TryInto<
                types::NewIncidentEventFunctionality,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentEventFunctionality` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentEventFunctionality,
            ) -> types::builder::NewIncidentEventFunctionality,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/events/{incident_event_id}/functionalities`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentEventFunctionalityResponse>,
            Error<()>,
        > {
            let Self { client, incident_event_id, body } = self;
            let incident_event_id = incident_event_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentEventFunctionality::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}/functionalities", client.baseurl, encode_path(&
                incident_event_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_event_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_event_services`]

[`Client::list_incident_event_services`]: super::Client::list_incident_event_services*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentEventServices<'a> {
        client: &'a super::Client,
        incident_event_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentEventServices<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_event_id: Err(
                    "incident_event_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_event_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_event_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_event_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/events/{incident_event_id}/services`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventServiceList>, Error<()>> {
            let Self { client, incident_event_id, include, page_number, page_size } = self;
            let incident_event_id = incident_event_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}/services", client.baseurl, encode_path(&
                incident_event_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_event_services",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_event_service`]

[`Client::create_incident_event_service`]: super::Client::create_incident_event_service*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentEventService<'a> {
        client: &'a super::Client,
        incident_event_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentEventService, String>,
    }
    impl<'a> CreateIncidentEventService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_event_id: Err(
                    "incident_event_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_event_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_event_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_event_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentEventService>,
            <V as std::convert::TryInto<
                types::NewIncidentEventService,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentEventService` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentEventService,
            ) -> types::builder::NewIncidentEventService,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/events/{incident_event_id}/services`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventServiceResponse>, Error<()>> {
            let Self { client, incident_event_id, body } = self;
            let incident_event_id = incident_event_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentEventService::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/events/{}/services", client.baseurl, encode_path(&
                incident_event_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_event_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_feedbacks`]

[`Client::get_incident_feedbacks`]: super::Client::get_incident_feedbacks*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentFeedbacks<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentFeedbacks<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/feedbacks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentFeedbackResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/feedbacks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_feedbacks",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_feedback`]

[`Client::update_incident_feedback`]: super::Client::update_incident_feedback*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentFeedback<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentFeedback, String>,
    }
    impl<'a> UpdateIncidentFeedback<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentFeedback>,
            <V as std::convert::TryInto<
                types::UpdateIncidentFeedback,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentFeedback` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentFeedback,
            ) -> types::builder::UpdateIncidentFeedback,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/feedbacks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentFeedbackResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentFeedback::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/feedbacks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_feedback",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_field_option`]

[`Client::get_form_field_option`]: super::Client::get_form_field_option*/
    #[derive(Debug, Clone)]
    pub struct GetFormFieldOption<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFormFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_field_options/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldOptionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_options/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_field_option`]

[`Client::update_form_field_option`]: super::Client::update_form_field_option*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormFieldOption<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormFieldOption, String>,
    }
    impl<'a> UpdateFormFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormFieldOption>,
            <V as std::convert::TryInto<
                types::UpdateFormFieldOption,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateFormFieldOption` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormFieldOption,
            ) -> types::builder::UpdateFormFieldOption,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_field_options/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldOptionResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormFieldOption::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_options/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_field_option`]

[`Client::delete_form_field_option`]: super::Client::delete_form_field_option*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormFieldOption<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_field_options/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldOptionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_options/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_field_placement_condition`]

[`Client::get_form_field_placement_condition`]: super::Client::get_form_field_placement_condition*/
    #[derive(Debug, Clone)]
    pub struct GetFormFieldPlacementCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFormFieldPlacementCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_field_placement_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::FormFieldPlacementConditionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placement_conditions/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_field_placement_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_field_placement_condition`]

[`Client::update_form_field_placement_condition`]: super::Client::update_form_field_placement_condition*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormFieldPlacementCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormFieldPlacementCondition, String>,
    }
    impl<'a> UpdateFormFieldPlacementCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormFieldPlacementCondition>,
            <V as std::convert::TryInto<
                types::UpdateFormFieldPlacementCondition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateFormFieldPlacementCondition` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormFieldPlacementCondition,
            ) -> types::builder::UpdateFormFieldPlacementCondition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_field_placement_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::FormFieldPlacementConditionResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormFieldPlacementCondition::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placement_conditions/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_field_placement_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_field_placement_condition`]

[`Client::delete_form_field_placement_condition`]: super::Client::delete_form_field_placement_condition*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormFieldPlacementCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormFieldPlacementCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_field_placement_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::FormFieldPlacementConditionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placement_conditions/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_field_placement_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_field_placement_conditions`]

[`Client::list_form_field_placement_conditions`]: super::Client::list_form_field_placement_conditions*/
    #[derive(Debug, Clone)]
    pub struct ListFormFieldPlacementConditions<'a> {
        client: &'a super::Client,
        form_field_placement_id: Result<::std::string::String, String>,
        filter_form_field_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormFieldPlacementConditions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_placement_id: Err(
                    "form_field_placement_id was not initialized".to_string(),
                ),
                filter_form_field_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn form_field_placement_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_placement_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_placement_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_form_field_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_field_placements/{form_field_placement_id}/conditions`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPlacementConditionList>, Error<()>> {
            let Self {
                client,
                form_field_placement_id,
                filter_form_field_id,
                include,
                page_number,
                page_size,
            } = self;
            let form_field_placement_id = form_field_placement_id
                .map_err(Error::InvalidRequest)?;
            let filter_form_field_id = filter_form_field_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placements/{}/conditions", client.baseurl,
                encode_path(& form_field_placement_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[form_field_id]",
                        &filter_form_field_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_field_placement_conditions",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_field_placement_condition`]

[`Client::create_form_field_placement_condition`]: super::Client::create_form_field_placement_condition*/
    #[derive(Debug, Clone)]
    pub struct CreateFormFieldPlacementCondition<'a> {
        client: &'a super::Client,
        form_field_placement_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewFormFieldPlacementCondition, String>,
    }
    impl<'a> CreateFormFieldPlacementCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_placement_id: Err(
                    "form_field_placement_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn form_field_placement_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_placement_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_placement_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormFieldPlacementCondition>,
            <V as std::convert::TryInto<
                types::NewFormFieldPlacementCondition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewFormFieldPlacementCondition` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormFieldPlacementCondition,
            ) -> types::builder::NewFormFieldPlacementCondition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_field_placements/{form_field_placement_id}/conditions`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::FormFieldPlacementConditionResponse>,
            Error<()>,
        > {
            let Self { client, form_field_placement_id, body } = self;
            let form_field_placement_id = form_field_placement_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewFormFieldPlacementCondition::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placements/{}/conditions", client.baseurl,
                encode_path(& form_field_placement_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_field_placement_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_field_placement`]

[`Client::get_form_field_placement`]: super::Client::get_form_field_placement*/
    #[derive(Debug, Clone)]
    pub struct GetFormFieldPlacement<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFormFieldPlacement<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_field_placements/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPlacementResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placements/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_field_placement",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_field_placement`]

[`Client::update_form_field_placement`]: super::Client::update_form_field_placement*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormFieldPlacement<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormFieldPlacement, String>,
    }
    impl<'a> UpdateFormFieldPlacement<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormFieldPlacement>,
            <V as std::convert::TryInto<
                types::UpdateFormFieldPlacement,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateFormFieldPlacement` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormFieldPlacement,
            ) -> types::builder::UpdateFormFieldPlacement,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_field_placements/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPlacementResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormFieldPlacement::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placements/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_field_placement",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_field_placement`]

[`Client::delete_form_field_placement`]: super::Client::delete_form_field_placement*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormFieldPlacement<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormFieldPlacement<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_field_placements/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPlacementResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_placements/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_field_placement",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_field_position`]

[`Client::get_form_field_position`]: super::Client::get_form_field_position*/
    #[derive(Debug, Clone)]
    pub struct GetFormFieldPosition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFormFieldPosition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_field_positions/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPositionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_positions/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_field_position",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_field_position`]

[`Client::update_form_field_position`]: super::Client::update_form_field_position*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormFieldPosition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormFieldPosition, String>,
    }
    impl<'a> UpdateFormFieldPosition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormFieldPosition>,
            <V as std::convert::TryInto<
                types::UpdateFormFieldPosition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateFormFieldPosition` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormFieldPosition,
            ) -> types::builder::UpdateFormFieldPosition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_field_positions/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPositionResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormFieldPosition::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_positions/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_field_position",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_field_position`]

[`Client::delete_form_field_position`]: super::Client::delete_form_field_position*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormFieldPosition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormFieldPosition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_field_positions/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPositionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_field_positions/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_field_position",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_fields`]

[`Client::list_form_fields`]: super::Client::list_form_fields*/
    #[derive(Debug, Clone)]
    pub struct ListFormFields<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_enabled: Result<Option<bool>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListFormFieldsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormFields<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_enabled: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_enabled failed".to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListFormFieldsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListFormFieldsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_fields`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_enabled,
                filter_kind,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_enabled = filter_enabled.map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/form_fields", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[enabled]",
                        &filter_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_fields",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_field`]

[`Client::create_form_field`]: super::Client::create_form_field*/
    #[derive(Debug, Clone)]
    pub struct CreateFormField<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewFormField, String>,
    }
    impl<'a> CreateFormField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormField>,
            <V as std::convert::TryInto<types::NewFormField>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewFormField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormField,
            ) -> types::builder::NewFormField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_fields`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewFormField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/form_fields", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_field_options`]

[`Client::list_form_field_options`]: super::Client::list_form_field_options*/
    #[derive(Debug, Clone)]
    pub struct ListFormFieldOptions<'a> {
        client: &'a super::Client,
        form_field_id: Result<::std::string::String, String>,
        filter_color: Result<Option<::std::string::String>, String>,
        filter_value: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormFieldOptions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_id: Err("form_field_id was not initialized".to_string()),
                filter_color: Ok(None),
                filter_value: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_color<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_color = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_color failed"
                        .to_string()
                });
            self
        }
        pub fn filter_value<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_value = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_value failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_fields/{form_field_id}/options`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldOptionList>, Error<()>> {
            let Self {
                client,
                form_field_id,
                filter_color,
                filter_value,
                include,
                page_number,
                page_size,
            } = self;
            let form_field_id = form_field_id.map_err(Error::InvalidRequest)?;
            let filter_color = filter_color.map_err(Error::InvalidRequest)?;
            let filter_value = filter_value.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}/options", client.baseurl, encode_path(&
                form_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[color]", &filter_color),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[value]", &filter_value),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_field_options",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_field_option`]

[`Client::create_form_field_option`]: super::Client::create_form_field_option*/
    #[derive(Debug, Clone)]
    pub struct CreateFormFieldOption<'a> {
        client: &'a super::Client,
        form_field_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewFormFieldOption, String>,
    }
    impl<'a> CreateFormFieldOption<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_id: Err("form_field_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormFieldOption>,
            <V as std::convert::TryInto<
                types::NewFormFieldOption,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewFormFieldOption` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormFieldOption,
            ) -> types::builder::NewFormFieldOption,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_fields/{form_field_id}/options`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldOptionResponse>, Error<()>> {
            let Self { client, form_field_id, body } = self;
            let form_field_id = form_field_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewFormFieldOption::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}/options", client.baseurl, encode_path(&
                form_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_field_option",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_field_placements`]

[`Client::list_form_field_placements`]: super::Client::list_form_field_placements*/
    #[derive(Debug, Clone)]
    pub struct ListFormFieldPlacements<'a> {
        client: &'a super::Client,
        form_field_id: Result<::std::string::String, String>,
        filter_form_field_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormFieldPlacements<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_id: Err("form_field_id was not initialized".to_string()),
                filter_form_field_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_form_field_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_fields/{form_field_id}/placements`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPlacementList>, Error<()>> {
            let Self {
                client,
                form_field_id,
                filter_form_field_id,
                include,
                page_number,
                page_size,
            } = self;
            let form_field_id = form_field_id.map_err(Error::InvalidRequest)?;
            let filter_form_field_id = filter_form_field_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}/placements", client.baseurl, encode_path(&
                form_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[form_field_id]",
                        &filter_form_field_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_field_placements",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_field_placement`]

[`Client::create_form_field_placement`]: super::Client::create_form_field_placement*/
    #[derive(Debug, Clone)]
    pub struct CreateFormFieldPlacement<'a> {
        client: &'a super::Client,
        form_field_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewFormFieldPlacement, String>,
    }
    impl<'a> CreateFormFieldPlacement<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_id: Err("form_field_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormFieldPlacement>,
            <V as std::convert::TryInto<
                types::NewFormFieldPlacement,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewFormFieldPlacement` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormFieldPlacement,
            ) -> types::builder::NewFormFieldPlacement,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_fields/{form_field_id}/placements`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPlacementResponse>, Error<()>> {
            let Self { client, form_field_id, body } = self;
            let form_field_id = form_field_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewFormFieldPlacement::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}/placements", client.baseurl, encode_path(&
                form_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_field_placement",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_field_positions`]

[`Client::list_form_field_positions`]: super::Client::list_form_field_positions*/
    #[derive(Debug, Clone)]
    pub struct ListFormFieldPositions<'a> {
        client: &'a super::Client,
        form_field_id: Result<::std::string::String, String>,
        filter_form: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormFieldPositions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_id: Err("form_field_id was not initialized".to_string()),
                filter_form: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_form<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_form = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_form failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_fields/{form_field_id}/positions`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPositionList>, Error<()>> {
            let Self {
                client,
                form_field_id,
                filter_form,
                include,
                page_number,
                page_size,
            } = self;
            let form_field_id = form_field_id.map_err(Error::InvalidRequest)?;
            let filter_form = filter_form.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}/positions", client.baseurl, encode_path(&
                form_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("filter[form]", &filter_form))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_field_positions",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_field_position`]

[`Client::create_form_field_position`]: super::Client::create_form_field_position*/
    #[derive(Debug, Clone)]
    pub struct CreateFormFieldPosition<'a> {
        client: &'a super::Client,
        form_field_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewFormFieldPosition, String>,
    }
    impl<'a> CreateFormFieldPosition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_field_id: Err("form_field_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_field_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormFieldPosition>,
            <V as std::convert::TryInto<
                types::NewFormFieldPosition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewFormFieldPosition` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormFieldPosition,
            ) -> types::builder::NewFormFieldPosition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_fields/{form_field_id}/positions`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldPositionResponse>, Error<()>> {
            let Self { client, form_field_id, body } = self;
            let form_field_id = form_field_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewFormFieldPosition::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}/positions", client.baseurl, encode_path(&
                form_field_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_field_position",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_field`]

[`Client::get_form_field`]: super::Client::get_form_field*/
    #[derive(Debug, Clone)]
    pub struct GetFormField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetFormFieldInclude>, String>,
    }
    impl<'a> GetFormField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetFormFieldInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetFormFieldInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_field`]

[`Client::update_form_field`]: super::Client::update_form_field*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormField, String>,
    }
    impl<'a> UpdateFormField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormField>,
            <V as std::convert::TryInto<
                types::UpdateFormField,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateFormField` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormField,
            ) -> types::builder::UpdateFormField,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormField::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_field`]

[`Client::delete_form_field`]: super::Client::delete_form_field*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormField<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormField<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_fields/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormFieldResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_fields/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_field",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_set_condition`]

[`Client::get_form_set_condition`]: super::Client::get_form_set_condition*/
    #[derive(Debug, Clone)]
    pub struct GetFormSetCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFormSetCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_set_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetConditionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_set_conditions/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_set_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_set_condition`]

[`Client::update_form_set_condition`]: super::Client::update_form_set_condition*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormSetCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormSetCondition, String>,
    }
    impl<'a> UpdateFormSetCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormSetCondition>,
            <V as std::convert::TryInto<
                types::UpdateFormSetCondition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateFormSetCondition` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormSetCondition,
            ) -> types::builder::UpdateFormSetCondition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_set_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetConditionResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormSetCondition::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_set_conditions/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_set_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_set_condition`]

[`Client::delete_form_set_condition`]: super::Client::delete_form_set_condition*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormSetCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormSetCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_set_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetConditionResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_set_conditions/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_set_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_sets`]

[`Client::list_form_sets`]: super::Client::list_form_sets*/
    #[derive(Debug, Clone)]
    pub struct ListFormSets<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_is_default: Result<Option<bool>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormSets<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_is_default: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_is_default<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_is_default = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_is_default failed".to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_sets`
        pub async fn send(self) -> Result<ResponseValue<types::FormSetList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_is_default,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_is_default = filter_is_default.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/form_sets", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[is_default]",
                        &filter_is_default,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_sets",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_set`]

[`Client::create_form_set`]: super::Client::create_form_set*/
    #[derive(Debug, Clone)]
    pub struct CreateFormSet<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewFormSet, String>,
    }
    impl<'a> CreateFormSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormSet>,
            <V as std::convert::TryInto<types::NewFormSet>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewFormSet` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormSet,
            ) -> types::builder::NewFormSet,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_sets`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewFormSet::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/form_sets", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_form_set_conditions`]

[`Client::list_form_set_conditions`]: super::Client::list_form_set_conditions*/
    #[derive(Debug, Clone)]
    pub struct ListFormSetConditions<'a> {
        client: &'a super::Client,
        form_set_id: Result<::std::string::String, String>,
        filter_form_field_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListFormSetConditions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_set_id: Err("form_set_id was not initialized".to_string()),
                filter_form_field_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn form_set_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_set_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_set_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_form_field_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_form_field_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_form_field_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/form_sets/{form_set_id}/conditions`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetConditionList>, Error<()>> {
            let Self {
                client,
                form_set_id,
                filter_form_field_id,
                include,
                page_number,
                page_size,
            } = self;
            let form_set_id = form_set_id.map_err(Error::InvalidRequest)?;
            let filter_form_field_id = filter_form_field_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_sets/{}/conditions", client.baseurl, encode_path(&
                form_set_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[form_field_id]",
                        &filter_form_field_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_form_set_conditions",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_form_set_condition`]

[`Client::create_form_set_condition`]: super::Client::create_form_set_condition*/
    #[derive(Debug, Clone)]
    pub struct CreateFormSetCondition<'a> {
        client: &'a super::Client,
        form_set_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewFormSetCondition, String>,
    }
    impl<'a> CreateFormSetCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                form_set_id: Err("form_set_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn form_set_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.form_set_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for form_set_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFormSetCondition>,
            <V as std::convert::TryInto<
                types::NewFormSetCondition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewFormSetCondition` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFormSetCondition,
            ) -> types::builder::NewFormSetCondition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/form_sets/{form_set_id}/conditions`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetConditionResponse>, Error<()>> {
            let Self { client, form_set_id, body } = self;
            let form_set_id = form_set_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewFormSetCondition::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_sets/{}/conditions", client.baseurl, encode_path(&
                form_set_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_form_set_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_form_set`]

[`Client::get_form_set`]: super::Client::get_form_set*/
    #[derive(Debug, Clone)]
    pub struct GetFormSet<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFormSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/form_sets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_sets/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_form_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_form_set`]

[`Client::update_form_set`]: super::Client::update_form_set*/
    #[derive(Debug, Clone)]
    pub struct UpdateFormSet<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFormSet, String>,
    }
    impl<'a> UpdateFormSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFormSet>,
            <V as std::convert::TryInto<types::UpdateFormSet>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateFormSet` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFormSet,
            ) -> types::builder::UpdateFormSet,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/form_sets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFormSet::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_sets/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_form_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_form_set`]

[`Client::delete_form_set`]: super::Client::delete_form_set*/
    #[derive(Debug, Clone)]
    pub struct DeleteFormSet<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFormSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/form_sets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FormSetResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/form_sets/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_form_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_functionalities`]

[`Client::list_functionalities`]: super::Client::list_functionalities*/
    #[derive(Debug, Clone)]
    pub struct ListFunctionalities<'a> {
        client: &'a super::Client,
        filter_backstage_id: Result<Option<::std::string::String>, String>,
        filter_cortex_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_external_id: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_opslevel_id: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListFunctionalities<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_backstage_id: Ok(None),
                filter_cortex_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_external_id: Ok(None),
                filter_name: Ok(None),
                filter_opslevel_id: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_backstage_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_backstage_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_backstage_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_cortex_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_cortex_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_cortex_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_external_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_external_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_external_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_opslevel_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_opslevel_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_opslevel_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/functionalities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FunctionalityList>, Error<()>> {
            let Self {
                client,
                filter_backstage_id,
                filter_cortex_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_external_id,
                filter_name,
                filter_opslevel_id,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_backstage_id = filter_backstage_id
                .map_err(Error::InvalidRequest)?;
            let filter_cortex_id = filter_cortex_id.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_external_id = filter_external_id.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_opslevel_id = filter_opslevel_id.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/functionalities", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[backstage_id]",
                        &filter_backstage_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[cortex_id]",
                        &filter_cortex_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[external_id]",
                        &filter_external_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[opslevel_id]",
                        &filter_opslevel_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_functionalities",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_functionality`]

[`Client::create_functionality`]: super::Client::create_functionality*/
    #[derive(Debug, Clone)]
    pub struct CreateFunctionality<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewFunctionality, String>,
    }
    impl<'a> CreateFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewFunctionality>,
            <V as std::convert::TryInto<
                types::NewFunctionality,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewFunctionality` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewFunctionality,
            ) -> types::builder::NewFunctionality,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/functionalities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FunctionalityResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewFunctionality::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/functionalities", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_functionality_catalog_properties`]

[`Client::list_functionality_catalog_properties`]: super::Client::list_functionality_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListFunctionalityCatalogProperties<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<
            Option<types::ListFunctionalityCatalogPropertiesInclude>,
            String,
        >,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListFunctionalityCatalogPropertiesSort>, String>,
    }
    impl<'a> ListFunctionalityCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListFunctionalityCatalogPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListFunctionalityCatalogPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListFunctionalityCatalogPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListFunctionalityCatalogPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/functionalities/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/functionalities/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_functionality_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_functionality_catalog_property`]

[`Client::create_functionality_catalog_property`]: super::Client::create_functionality_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateFunctionalityCatalogProperty<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogProperty, String>,
    }
    impl<'a> CreateFunctionalityCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogProperty` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogProperty,
            ) -> types::builder::NewCatalogProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/functionalities/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogProperty::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/functionalities/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_functionality_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_functionality`]

[`Client::get_functionality`]: super::Client::get_functionality*/
    #[derive(Debug, Clone)]
    pub struct GetFunctionality<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/functionalities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FunctionalityResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/functionalities/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_functionality`]

[`Client::update_functionality`]: super::Client::update_functionality*/
    #[derive(Debug, Clone)]
    pub struct UpdateFunctionality<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateFunctionality, String>,
    }
    impl<'a> UpdateFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateFunctionality>,
            <V as std::convert::TryInto<
                types::UpdateFunctionality,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateFunctionality` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateFunctionality,
            ) -> types::builder::UpdateFunctionality,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/functionalities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FunctionalityResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateFunctionality::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/functionalities/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_functionality`]

[`Client::delete_functionality`]: super::Client::delete_functionality*/
    #[derive(Debug, Clone)]
    pub struct DeleteFunctionality<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/functionalities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::FunctionalityResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/functionalities/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_functionality_incidents_chart`]

[`Client::get_functionality_incidents_chart`]: super::Client::get_functionality_incidents_chart*/
    #[derive(Debug, Clone)]
    pub struct GetFunctionalityIncidentsChart<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        period: Result<::std::string::String, String>,
    }
    impl<'a> GetFunctionalityIncidentsChart<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                period: Err("period was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn period<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.period = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for period failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/functionalities/{id}/incidents_chart`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentsChartResponse>, Error<()>> {
            let Self { client, id, period } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let period = period.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/functionalities/{}/incidents_chart", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("period", &period))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_functionality_incidents_chart",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_functionality_uptime_chart`]

[`Client::get_functionality_uptime_chart`]: super::Client::get_functionality_uptime_chart*/
    #[derive(Debug, Clone)]
    pub struct GetFunctionalityUptimeChart<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        period: Result<Option<::std::string::String>, String>,
    }
    impl<'a> GetFunctionalityUptimeChart<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                period: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn period<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.period = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for period failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/functionalities/{id}/uptime_chart`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UptimeChartResponse>, Error<()>> {
            let Self { client, id, period } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let period = period.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/functionalities/{}/uptime_chart", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("period", &period))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_functionality_uptime_chart",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_heartbeats`]

[`Client::list_heartbeats`]: super::Client::list_heartbeats*/
    #[derive(Debug, Clone)]
    pub struct ListHeartbeats<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListHeartbeats<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/heartbeats`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::HeartbeatList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/heartbeats", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_heartbeats",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_heartbeat`]

[`Client::create_heartbeat`]: super::Client::create_heartbeat*/
    #[derive(Debug, Clone)]
    pub struct CreateHeartbeat<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewHeartbeat, String>,
    }
    impl<'a> CreateHeartbeat<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewHeartbeat>,
            <V as std::convert::TryInto<types::NewHeartbeat>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewHeartbeat` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewHeartbeat,
            ) -> types::builder::NewHeartbeat,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/heartbeats`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::HeartbeatResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewHeartbeat::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/heartbeats", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_heartbeat",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::ping_heartbeat`]

[`Client::ping_heartbeat`]: super::Client::ping_heartbeat*/
    #[derive(Debug, Clone)]
    pub struct PingHeartbeat<'a> {
        client: &'a super::Client,
        heartbeat_id: Result<::std::string::String, String>,
    }
    impl<'a> PingHeartbeat<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                heartbeat_id: Err("heartbeat_id was not initialized".to_string()),
            }
        }
        pub fn heartbeat_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.heartbeat_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for heartbeat_id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/heartbeats/{heartbeat_id}/ping`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, heartbeat_id } = self;
            let heartbeat_id = heartbeat_id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/heartbeats/{}/ping", client.baseurl, encode_path(& heartbeat_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.post(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "ping_heartbeat",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                204u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_heartbeat`]

[`Client::get_heartbeat`]: super::Client::get_heartbeat*/
    #[derive(Debug, Clone)]
    pub struct GetHeartbeat<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetHeartbeat<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/heartbeats/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::HeartbeatResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/heartbeats/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_heartbeat",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_heartbeat`]

[`Client::update_heartbeat`]: super::Client::update_heartbeat*/
    #[derive(Debug, Clone)]
    pub struct UpdateHeartbeat<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateHeartbeat, String>,
    }
    impl<'a> UpdateHeartbeat<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateHeartbeat>,
            <V as std::convert::TryInto<
                types::UpdateHeartbeat,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateHeartbeat` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateHeartbeat,
            ) -> types::builder::UpdateHeartbeat,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/heartbeats/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::HeartbeatResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateHeartbeat::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/heartbeats/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_heartbeat",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_heartbeat`]

[`Client::delete_heartbeat`]: super::Client::delete_heartbeat*/
    #[derive(Debug, Clone)]
    pub struct DeleteHeartbeat<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteHeartbeat<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/heartbeats/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::HeartbeatResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/heartbeats/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_heartbeat",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_custom_field_selection`]

[`Client::get_incident_custom_field_selection`]: super::Client::get_incident_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentCustomFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_custom_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_custom_field_selections/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_custom_field_selection`]

[`Client::update_incident_custom_field_selection`]: super::Client::update_incident_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentCustomFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentCustomFieldSelection, String>,
    }
    impl<'a> UpdateIncidentCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentCustomFieldSelection>,
            <V as std::convert::TryInto<
                types::UpdateIncidentCustomFieldSelection,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentCustomFieldSelection` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentCustomFieldSelection,
            ) -> types::builder::UpdateIncidentCustomFieldSelection,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_custom_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentCustomFieldSelection::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_custom_field_selections/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_custom_field_selection`]

[`Client::delete_incident_custom_field_selection`]: super::Client::delete_incident_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentCustomFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_custom_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_custom_field_selections/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_event_functionalities`]

[`Client::get_incident_event_functionalities`]: super::Client::get_incident_event_functionalities*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentEventFunctionalities<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentEventFunctionalities<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_event_functionalities/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentEventFunctionalityResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_event_functionalities/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_event_functionalities",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_event_functionality`]

[`Client::update_incident_event_functionality`]: super::Client::update_incident_event_functionality*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentEventFunctionality<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentEventFunctionality, String>,
    }
    impl<'a> UpdateIncidentEventFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentEventFunctionality>,
            <V as std::convert::TryInto<
                types::UpdateIncidentEventFunctionality,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentEventFunctionality` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentEventFunctionality,
            ) -> types::builder::UpdateIncidentEventFunctionality,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_event_functionalities/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentEventFunctionalityResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentEventFunctionality::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_event_functionalities/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_event_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_event_functionality`]

[`Client::delete_incident_event_functionality`]: super::Client::delete_incident_event_functionality*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentEventFunctionality<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentEventFunctionality<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_event_functionalities/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentEventFunctionalityResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_event_functionalities/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_event_functionality",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_event_services`]

[`Client::get_incident_event_services`]: super::Client::get_incident_event_services*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentEventServices<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentEventServices<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_event_services/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventServiceResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_event_services/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_event_services",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_event_service`]

[`Client::update_incident_event_service`]: super::Client::update_incident_event_service*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentEventService<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentEventService, String>,
    }
    impl<'a> UpdateIncidentEventService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentEventService>,
            <V as std::convert::TryInto<
                types::UpdateIncidentEventService,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentEventService` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentEventService,
            ) -> types::builder::UpdateIncidentEventService,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_event_services/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventServiceResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentEventService::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_event_services/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_event_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_event_service`]

[`Client::delete_incident_event_service`]: super::Client::delete_incident_event_service*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentEventService<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentEventService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_event_services/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventServiceResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_event_services/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_event_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_form_field_selection`]

[`Client::get_incident_form_field_selection`]: super::Client::get_incident_form_field_selection*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentFormFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentFormFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_form_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentFormFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_form_field_selections/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_form_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_form_field_selection`]

[`Client::update_incident_form_field_selection`]: super::Client::update_incident_form_field_selection*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentFormFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentFormFieldSelection, String>,
    }
    impl<'a> UpdateIncidentFormFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentFormFieldSelection>,
            <V as std::convert::TryInto<
                types::UpdateIncidentFormFieldSelection,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentFormFieldSelection` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentFormFieldSelection,
            ) -> types::builder::UpdateIncidentFormFieldSelection,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_form_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentFormFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentFormFieldSelection::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_form_field_selections/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_form_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_form_field_selection`]

[`Client::delete_incident_form_field_selection`]: super::Client::delete_incident_form_field_selection*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentFormFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentFormFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_form_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentFormFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_form_field_selections/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_form_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_permission_set_boolean`]

[`Client::get_incident_permission_set_boolean`]: super::Client::get_incident_permission_set_boolean*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentPermissionSetBoolean<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentPermissionSetBoolean<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_permission_set_booleans/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetBooleanResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_set_booleans/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_permission_set_boolean",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_permission_set_boolean`]

[`Client::update_incident_permission_set_boolean`]: super::Client::update_incident_permission_set_boolean*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentPermissionSetBoolean<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentPermissionSetBoolean, String>,
    }
    impl<'a> UpdateIncidentPermissionSetBoolean<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentPermissionSetBoolean>,
            <V as std::convert::TryInto<
                types::UpdateIncidentPermissionSetBoolean,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentPermissionSetBoolean` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentPermissionSetBoolean,
            ) -> types::builder::UpdateIncidentPermissionSetBoolean,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_permission_set_booleans/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetBooleanResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentPermissionSetBoolean::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_set_booleans/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_permission_set_boolean",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_permission_set_boolean`]

[`Client::delete_incident_permission_set_boolean`]: super::Client::delete_incident_permission_set_boolean*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentPermissionSetBoolean<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentPermissionSetBoolean<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_permission_set_booleans/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetBooleanResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_set_booleans/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_permission_set_boolean",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_permission_set_resource`]

[`Client::get_incident_permission_set_resource`]: super::Client::get_incident_permission_set_resource*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentPermissionSetResource<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentPermissionSetResource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_permission_set_resources/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetResourceResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_set_resources/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_permission_set_resource",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_permission_set_resource`]

[`Client::update_incident_permission_set_resource`]: super::Client::update_incident_permission_set_resource*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentPermissionSetResource<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentPermissionSetResource, String>,
    }
    impl<'a> UpdateIncidentPermissionSetResource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentPermissionSetResource>,
            <V as std::convert::TryInto<
                types::UpdateIncidentPermissionSetResource,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentPermissionSetResource` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentPermissionSetResource,
            ) -> types::builder::UpdateIncidentPermissionSetResource,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_permission_set_resources/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetResourceResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentPermissionSetResource::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_set_resources/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_permission_set_resource",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_permission_set_resource`]

[`Client::delete_incident_permission_set_resource`]: super::Client::delete_incident_permission_set_resource*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentPermissionSetResource<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentPermissionSetResource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_permission_set_resources/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetResourceResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_set_resources/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_permission_set_resource",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_permission_sets`]

[`Client::list_incident_permission_sets`]: super::Client::list_incident_permission_sets*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentPermissionSets<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListIncidentPermissionSets<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_permission_sets`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_permission_sets", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_permission_sets",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_permission_set`]

[`Client::create_incident_permission_set`]: super::Client::create_incident_permission_set*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentPermissionSet<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewIncidentPermissionSet, String>,
    }
    impl<'a> CreateIncidentPermissionSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentPermissionSet>,
            <V as std::convert::TryInto<
                types::NewIncidentPermissionSet,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentPermissionSet` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentPermissionSet,
            ) -> types::builder::NewIncidentPermissionSet,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_permission_sets`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewIncidentPermissionSet::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_permission_sets", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_permission_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_permission_set`]

[`Client::get_incident_permission_set`]: super::Client::get_incident_permission_set*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentPermissionSet<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentPermissionSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_permission_sets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_permission_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_permission_set`]

[`Client::update_incident_permission_set`]: super::Client::update_incident_permission_set*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentPermissionSet<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentPermissionSet, String>,
    }
    impl<'a> UpdateIncidentPermissionSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentPermissionSet>,
            <V as std::convert::TryInto<
                types::UpdateIncidentPermissionSet,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentPermissionSet` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentPermissionSet,
            ) -> types::builder::UpdateIncidentPermissionSet,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_permission_sets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentPermissionSet::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_permission_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_permission_set`]

[`Client::delete_incident_permission_set`]: super::Client::delete_incident_permission_set*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentPermissionSet<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentPermissionSet<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_permission_sets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_permission_set",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_permission_set_booleans`]

[`Client::list_incident_permission_set_booleans`]: super::Client::list_incident_permission_set_booleans*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentPermissionSetBooleans<'a> {
        client: &'a super::Client,
        incident_permission_set_id: Result<::std::string::String, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListIncidentPermissionSetBooleans<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_permission_set_id: Err(
                    "incident_permission_set_id was not initialized".to_string(),
                ),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn incident_permission_set_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_permission_set_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_permission_set_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_permission_sets/{incident_permission_set_id}/booleans`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetBooleanList>, Error<()>> {
            let Self {
                client,
                incident_permission_set_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let incident_permission_set_id = incident_permission_set_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}/booleans", client.baseurl,
                encode_path(& incident_permission_set_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_permission_set_booleans",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_permission_set_boolean`]

[`Client::create_incident_permission_set_boolean`]: super::Client::create_incident_permission_set_boolean*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentPermissionSetBoolean<'a> {
        client: &'a super::Client,
        incident_permission_set_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentPermissionSetBoolean, String>,
    }
    impl<'a> CreateIncidentPermissionSetBoolean<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_permission_set_id: Err(
                    "incident_permission_set_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_permission_set_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_permission_set_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_permission_set_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentPermissionSetBoolean>,
            <V as std::convert::TryInto<
                types::NewIncidentPermissionSetBoolean,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentPermissionSetBoolean` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentPermissionSetBoolean,
            ) -> types::builder::NewIncidentPermissionSetBoolean,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_permission_sets/{incident_permission_set_id}/booleans`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetBooleanResponse>,
            Error<()>,
        > {
            let Self { client, incident_permission_set_id, body } = self;
            let incident_permission_set_id = incident_permission_set_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentPermissionSetBoolean::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}/booleans", client.baseurl,
                encode_path(& incident_permission_set_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_permission_set_boolean",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_permission_set_resources`]

[`Client::list_incident_permission_set_resources`]: super::Client::list_incident_permission_set_resources*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentPermissionSetResources<'a> {
        client: &'a super::Client,
        incident_permission_set_id: Result<::std::string::String, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListIncidentPermissionSetResources<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_permission_set_id: Err(
                    "incident_permission_set_id was not initialized".to_string(),
                ),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn incident_permission_set_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_permission_set_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_permission_set_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_permission_sets/{incident_permission_set_id}/resources`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPermissionSetResourceList>, Error<()>> {
            let Self {
                client,
                incident_permission_set_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let incident_permission_set_id = incident_permission_set_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}/resources", client.baseurl,
                encode_path(& incident_permission_set_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_permission_set_resources",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_permission_set_resource`]

[`Client::create_incident_permission_set_resource`]: super::Client::create_incident_permission_set_resource*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentPermissionSetResource<'a> {
        client: &'a super::Client,
        incident_permission_set_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentPermissionSetResource, String>,
    }
    impl<'a> CreateIncidentPermissionSetResource<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_permission_set_id: Err(
                    "incident_permission_set_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_permission_set_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_permission_set_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_permission_set_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentPermissionSetResource>,
            <V as std::convert::TryInto<
                types::NewIncidentPermissionSetResource,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentPermissionSetResource` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentPermissionSetResource,
            ) -> types::builder::NewIncidentPermissionSetResource,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_permission_sets/{incident_permission_set_id}/resources`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentPermissionSetResourceResponse>,
            Error<()>,
        > {
            let Self { client, incident_permission_set_id, body } = self;
            let incident_permission_set_id = incident_permission_set_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentPermissionSetResource::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_permission_sets/{}/resources", client.baseurl,
                encode_path(& incident_permission_set_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_permission_set_resource",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_retrospective_step`]

[`Client::get_incident_retrospective_step`]: super::Client::get_incident_retrospective_step*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentRetrospectiveStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentRetrospectiveStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_retrospective_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRetrospectiveStepResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_retrospective_steps/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_retrospective_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_retrospective_step`]

[`Client::update_incident_retrospective_step`]: super::Client::update_incident_retrospective_step*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentRetrospectiveStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentRetrospectiveStep, String>,
    }
    impl<'a> UpdateIncidentRetrospectiveStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentRetrospectiveStep>,
            <V as std::convert::TryInto<
                types::UpdateIncidentRetrospectiveStep,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentRetrospectiveStep` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentRetrospectiveStep,
            ) -> types::builder::UpdateIncidentRetrospectiveStep,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_retrospective_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRetrospectiveStepResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentRetrospectiveStep::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_retrospective_steps/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_retrospective_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_role_task`]

[`Client::get_incident_role_task`]: super::Client::get_incident_role_task*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentRoleTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentRoleTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_role_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleTaskResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_role_tasks/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_role_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_role_task`]

[`Client::update_incident_role_task`]: super::Client::update_incident_role_task*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentRoleTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentRoleTask, String>,
    }
    impl<'a> UpdateIncidentRoleTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentRoleTask>,
            <V as std::convert::TryInto<
                types::UpdateIncidentRoleTask,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentRoleTask` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentRoleTask,
            ) -> types::builder::UpdateIncidentRoleTask,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_role_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleTaskResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentRoleTask::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_role_tasks/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_role_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_role_task`]

[`Client::delete_incident_role_task`]: super::Client::delete_incident_role_task*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentRoleTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentRoleTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_role_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleTaskResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_role_tasks/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_role_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_roles`]

[`Client::list_incident_roles`]: super::Client::list_incident_roles*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentRoles<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_enabled: Result<Option<bool>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListIncidentRoles<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_enabled: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_enabled failed".to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_roles`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_enabled,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_enabled = filter_enabled.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_roles", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[enabled]",
                        &filter_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_roles",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_role`]

[`Client::create_incident_role`]: super::Client::create_incident_role*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentRole<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewIncidentRole, String>,
    }
    impl<'a> CreateIncidentRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentRole>,
            <V as std::convert::TryInto<
                types::NewIncidentRole,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewIncidentRole` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentRole,
            ) -> types::builder::NewIncidentRole,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_roles`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewIncidentRole::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_roles", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_role`]

[`Client::get_incident_role`]: super::Client::get_incident_role*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_role`]

[`Client::update_incident_role`]: super::Client::update_incident_role*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentRole, String>,
    }
    impl<'a> UpdateIncidentRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentRole>,
            <V as std::convert::TryInto<
                types::UpdateIncidentRole,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateIncidentRole` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentRole,
            ) -> types::builder::UpdateIncidentRole,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentRole::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_role`]

[`Client::delete_incident_role`]: super::Client::delete_incident_role*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_role_tasks`]

[`Client::list_incident_role_tasks`]: super::Client::list_incident_role_tasks*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentRoleTasks<'a> {
        client: &'a super::Client,
        incident_role_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentRoleTasks<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_role_id: Err(
                    "incident_role_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_role_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_role_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_role_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incident_roles/{incident_role_id}/incident_role_tasks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleTaskList>, Error<()>> {
            let Self { client, incident_role_id, include, page_number, page_size } = self;
            let incident_role_id = incident_role_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_roles/{}/incident_role_tasks", client.baseurl,
                encode_path(& incident_role_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_role_tasks",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_role_task`]

[`Client::create_incident_role_task`]: super::Client::create_incident_role_task*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentRoleTask<'a> {
        client: &'a super::Client,
        incident_role_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentRoleTask, String>,
    }
    impl<'a> CreateIncidentRoleTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_role_id: Err(
                    "incident_role_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_role_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_role_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_role_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentRoleTask>,
            <V as std::convert::TryInto<
                types::NewIncidentRoleTask,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewIncidentRoleTask` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentRoleTask,
            ) -> types::builder::NewIncidentRoleTask,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_roles/{incident_role_id}/incident_role_tasks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentRoleTaskResponse>, Error<()>> {
            let Self { client, incident_role_id, body } = self;
            let incident_role_id = incident_role_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentRoleTask::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_roles/{}/incident_role_tasks", client.baseurl,
                encode_path(& incident_role_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_role_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_sub_status`]

[`Client::get_incident_sub_status`]: super::Client::get_incident_sub_status*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentSubStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetIncidentSubStatusInclude>, String>,
    }
    impl<'a> GetIncidentSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetIncidentSubStatusInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetIncidentSubStatusInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_sub_statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentSubStatusResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_sub_statuses/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_sub_status`]

[`Client::update_incident_sub_status`]: super::Client::update_incident_sub_status*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentSubStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentSubStatus, String>,
    }
    impl<'a> UpdateIncidentSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentSubStatus>,
            <V as std::convert::TryInto<
                types::UpdateIncidentSubStatus,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentSubStatus` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentSubStatus,
            ) -> types::builder::UpdateIncidentSubStatus,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_sub_statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentSubStatusResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentSubStatus::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_sub_statuses/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_sub_status`]

[`Client::delete_incident_sub_status`]: super::Client::delete_incident_sub_status*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentSubStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_sub_statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentSubStatusResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_sub_statuses/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_types`]

[`Client::list_incident_types`]: super::Client::list_incident_types*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentTypes<'a> {
        client: &'a super::Client,
        filter_color: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListIncidentTypes<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_color: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_color<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_color = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_color failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_types`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentTypeList>, Error<()>> {
            let Self {
                client,
                filter_color,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_color = filter_color.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_types", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[color]", &filter_color),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_types",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_type`]

[`Client::create_incident_type`]: super::Client::create_incident_type*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentType<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewIncidentType, String>,
    }
    impl<'a> CreateIncidentType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentType>,
            <V as std::convert::TryInto<
                types::NewIncidentType,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewIncidentType` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentType,
            ) -> types::builder::NewIncidentType,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_types`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentTypeResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewIncidentType::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_types", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_type_catalog_properties`]

[`Client::list_incident_type_catalog_properties`]: super::Client::list_incident_type_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentTypeCatalogProperties<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListIncidentTypeCatalogPropertiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListIncidentTypeCatalogPropertiesSort>, String>,
    }
    impl<'a> ListIncidentTypeCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentTypeCatalogPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentTypeCatalogPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentTypeCatalogPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentTypeCatalogPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_types/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_types/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_type_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_type_catalog_property`]

[`Client::create_incident_type_catalog_property`]: super::Client::create_incident_type_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentTypeCatalogProperty<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogProperty, String>,
    }
    impl<'a> CreateIncidentTypeCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogProperty` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogProperty,
            ) -> types::builder::NewCatalogProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incident_types/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogProperty::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incident_types/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_type_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_type`]

[`Client::get_incident_type`]: super::Client::get_incident_type*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentType<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incident_types/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentTypeResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_types/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_type`]

[`Client::update_incident_type`]: super::Client::update_incident_type*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentType<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentType, String>,
    }
    impl<'a> UpdateIncidentType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentType>,
            <V as std::convert::TryInto<
                types::UpdateIncidentType,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateIncidentType` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentType,
            ) -> types::builder::UpdateIncidentType,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incident_types/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentTypeResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentType::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_types/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_type`]

[`Client::delete_incident_type`]: super::Client::delete_incident_type*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentType<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentType<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incident_types/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentTypeResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incident_types/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_type",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incidents`]

[`Client::list_incidents`]: super::Client::list_incidents*/
    #[derive(Debug, Clone)]
    pub struct ListIncidents<'a> {
        client: &'a super::Client,
        filter_acknowledged_at_gt: Result<Option<::std::string::String>, String>,
        filter_acknowledged_at_gte: Result<Option<::std::string::String>, String>,
        filter_acknowledged_at_lt: Result<Option<::std::string::String>, String>,
        filter_acknowledged_at_lte: Result<Option<::std::string::String>, String>,
        filter_cause: Result<Option<::std::string::String>, String>,
        filter_cause_ids: Result<Option<::std::string::String>, String>,
        filter_closed_at_gt: Result<Option<::std::string::String>, String>,
        filter_closed_at_gte: Result<Option<::std::string::String>, String>,
        filter_closed_at_lt: Result<Option<::std::string::String>, String>,
        filter_closed_at_lte: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_custom_field_selected_option_ids: Result<
            Option<::std::string::String>,
            String,
        >,
        filter_detected_at_gt: Result<Option<::std::string::String>, String>,
        filter_detected_at_gte: Result<Option<::std::string::String>, String>,
        filter_detected_at_lt: Result<Option<::std::string::String>, String>,
        filter_detected_at_lte: Result<Option<::std::string::String>, String>,
        filter_environment_ids: Result<Option<::std::string::String>, String>,
        filter_environments: Result<Option<::std::string::String>, String>,
        filter_functionalities: Result<Option<::std::string::String>, String>,
        filter_functionality_ids: Result<Option<::std::string::String>, String>,
        filter_functionality_names: Result<Option<::std::string::String>, String>,
        filter_in_triage_at_gt: Result<Option<::std::string::String>, String>,
        filter_in_triage_at_gte: Result<Option<::std::string::String>, String>,
        filter_in_triage_at_lt: Result<Option<::std::string::String>, String>,
        filter_in_triage_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_labels: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_gt: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_gte: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_lt: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_lte: Result<Option<::std::string::String>, String>,
        filter_private: Result<Option<::std::string::String>, String>,
        filter_resolved_at_gt: Result<Option<::std::string::String>, String>,
        filter_resolved_at_gte: Result<Option<::std::string::String>, String>,
        filter_resolved_at_lt: Result<Option<::std::string::String>, String>,
        filter_resolved_at_lte: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_service_ids: Result<Option<::std::string::String>, String>,
        filter_service_names: Result<Option<::std::string::String>, String>,
        filter_services: Result<Option<::std::string::String>, String>,
        filter_severity: Result<Option<::std::string::String>, String>,
        filter_severity_id: Result<Option<::std::string::String>, String>,
        filter_slack_channel_id: Result<Option<::std::string::String>, String>,
        filter_started_at_gt: Result<Option<::std::string::String>, String>,
        filter_started_at_gte: Result<Option<::std::string::String>, String>,
        filter_started_at_lt: Result<Option<::std::string::String>, String>,
        filter_started_at_lte: Result<Option<::std::string::String>, String>,
        filter_status: Result<Option<::std::string::String>, String>,
        filter_team_ids: Result<Option<::std::string::String>, String>,
        filter_team_names: Result<Option<::std::string::String>, String>,
        filter_teams: Result<Option<::std::string::String>, String>,
        filter_type_ids: Result<Option<::std::string::String>, String>,
        filter_types: Result<Option<::std::string::String>, String>,
        filter_updated_at_gt: Result<Option<::std::string::String>, String>,
        filter_updated_at_gte: Result<Option<::std::string::String>, String>,
        filter_updated_at_lt: Result<Option<::std::string::String>, String>,
        filter_updated_at_lte: Result<Option<::std::string::String>, String>,
        filter_user_id: Result<Option<i64>, String>,
        include: Result<Option<types::ListIncidentsInclude>, String>,
        page_after: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListIncidentsSort>, String>,
    }
    impl<'a> ListIncidents<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_acknowledged_at_gt: Ok(None),
                filter_acknowledged_at_gte: Ok(None),
                filter_acknowledged_at_lt: Ok(None),
                filter_acknowledged_at_lte: Ok(None),
                filter_cause: Ok(None),
                filter_cause_ids: Ok(None),
                filter_closed_at_gt: Ok(None),
                filter_closed_at_gte: Ok(None),
                filter_closed_at_lt: Ok(None),
                filter_closed_at_lte: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_custom_field_selected_option_ids: Ok(None),
                filter_detected_at_gt: Ok(None),
                filter_detected_at_gte: Ok(None),
                filter_detected_at_lt: Ok(None),
                filter_detected_at_lte: Ok(None),
                filter_environment_ids: Ok(None),
                filter_environments: Ok(None),
                filter_functionalities: Ok(None),
                filter_functionality_ids: Ok(None),
                filter_functionality_names: Ok(None),
                filter_in_triage_at_gt: Ok(None),
                filter_in_triage_at_gte: Ok(None),
                filter_in_triage_at_lt: Ok(None),
                filter_in_triage_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_labels: Ok(None),
                filter_mitigated_at_gt: Ok(None),
                filter_mitigated_at_gte: Ok(None),
                filter_mitigated_at_lt: Ok(None),
                filter_mitigated_at_lte: Ok(None),
                filter_private: Ok(None),
                filter_resolved_at_gt: Ok(None),
                filter_resolved_at_gte: Ok(None),
                filter_resolved_at_lt: Ok(None),
                filter_resolved_at_lte: Ok(None),
                filter_search: Ok(None),
                filter_service_ids: Ok(None),
                filter_service_names: Ok(None),
                filter_services: Ok(None),
                filter_severity: Ok(None),
                filter_severity_id: Ok(None),
                filter_slack_channel_id: Ok(None),
                filter_started_at_gt: Ok(None),
                filter_started_at_gte: Ok(None),
                filter_started_at_lt: Ok(None),
                filter_started_at_lte: Ok(None),
                filter_status: Ok(None),
                filter_team_ids: Ok(None),
                filter_team_names: Ok(None),
                filter_teams: Ok(None),
                filter_type_ids: Ok(None),
                filter_types: Ok(None),
                filter_updated_at_gt: Ok(None),
                filter_updated_at_gte: Ok(None),
                filter_updated_at_lt: Ok(None),
                filter_updated_at_lte: Ok(None),
                filter_user_id: Ok(None),
                include: Ok(None),
                page_after: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_acknowledged_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_acknowledged_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_acknowledged_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_acknowledged_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_acknowledged_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_acknowledged_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_acknowledged_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_acknowledged_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_acknowledged_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_acknowledged_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_acknowledged_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_acknowledged_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_cause<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_cause = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_cause failed"
                        .to_string()
                });
            self
        }
        pub fn filter_cause_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_cause_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_cause_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_closed_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_closed_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_closed_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_closed_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_closed_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_closed_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_closed_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_closed_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_closed_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_closed_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_closed_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_closed_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_custom_field_selected_option_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_custom_field_selected_option_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_custom_field_selected_option_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_detected_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_detected_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_detected_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_detected_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_detected_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_detected_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_detected_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_detected_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_detected_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_detected_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_detected_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_detected_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_environment_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_environment_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_environment_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_environments<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_environments = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_environments failed"
                        .to_string()
                });
            self
        }
        pub fn filter_functionalities<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_functionalities = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_functionalities failed"
                        .to_string()
                });
            self
        }
        pub fn filter_functionality_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_functionality_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_functionality_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_functionality_names<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_functionality_names = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_functionality_names failed"
                        .to_string()
                });
            self
        }
        pub fn filter_in_triage_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_in_triage_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_in_triage_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_in_triage_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_in_triage_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_in_triage_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_in_triage_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_in_triage_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_in_triage_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_in_triage_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_in_triage_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_in_triage_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_labels<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_labels = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_labels failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_private<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_private = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_private failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_service_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_service_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_service_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_service_names<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_service_names = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_service_names failed"
                        .to_string()
                });
            self
        }
        pub fn filter_services<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_services = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_services failed"
                        .to_string()
                });
            self
        }
        pub fn filter_severity<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_severity = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_severity failed"
                        .to_string()
                });
            self
        }
        pub fn filter_severity_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_severity_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_severity_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slack_channel_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slack_channel_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slack_channel_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_status failed"
                        .to_string()
                });
            self
        }
        pub fn filter_team_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_team_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_team_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_team_names<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_team_names = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_team_names failed"
                        .to_string()
                });
            self
        }
        pub fn filter_teams<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_teams = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_teams failed"
                        .to_string()
                });
            self
        }
        pub fn filter_type_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_type_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_type_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_types<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_types = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_types failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_updated_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_updated_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_updated_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.filter_user_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `i64` for filter_user_id failed".to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentsInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_after<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.page_after = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for page_after failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentsSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentsSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incidents`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentList>, Error<()>> {
            let Self {
                client,
                filter_acknowledged_at_gt,
                filter_acknowledged_at_gte,
                filter_acknowledged_at_lt,
                filter_acknowledged_at_lte,
                filter_cause,
                filter_cause_ids,
                filter_closed_at_gt,
                filter_closed_at_gte,
                filter_closed_at_lt,
                filter_closed_at_lte,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_custom_field_selected_option_ids,
                filter_detected_at_gt,
                filter_detected_at_gte,
                filter_detected_at_lt,
                filter_detected_at_lte,
                filter_environment_ids,
                filter_environments,
                filter_functionalities,
                filter_functionality_ids,
                filter_functionality_names,
                filter_in_triage_at_gt,
                filter_in_triage_at_gte,
                filter_in_triage_at_lt,
                filter_in_triage_at_lte,
                filter_kind,
                filter_labels,
                filter_mitigated_at_gt,
                filter_mitigated_at_gte,
                filter_mitigated_at_lt,
                filter_mitigated_at_lte,
                filter_private,
                filter_resolved_at_gt,
                filter_resolved_at_gte,
                filter_resolved_at_lt,
                filter_resolved_at_lte,
                filter_search,
                filter_service_ids,
                filter_service_names,
                filter_services,
                filter_severity,
                filter_severity_id,
                filter_slack_channel_id,
                filter_started_at_gt,
                filter_started_at_gte,
                filter_started_at_lt,
                filter_started_at_lte,
                filter_status,
                filter_team_ids,
                filter_team_names,
                filter_teams,
                filter_type_ids,
                filter_types,
                filter_updated_at_gt,
                filter_updated_at_gte,
                filter_updated_at_lt,
                filter_updated_at_lte,
                filter_user_id,
                include,
                page_after,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_acknowledged_at_gt = filter_acknowledged_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_acknowledged_at_gte = filter_acknowledged_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_acknowledged_at_lt = filter_acknowledged_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_acknowledged_at_lte = filter_acknowledged_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_cause = filter_cause.map_err(Error::InvalidRequest)?;
            let filter_cause_ids = filter_cause_ids.map_err(Error::InvalidRequest)?;
            let filter_closed_at_gt = filter_closed_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_closed_at_gte = filter_closed_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_closed_at_lt = filter_closed_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_closed_at_lte = filter_closed_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_custom_field_selected_option_ids = filter_custom_field_selected_option_ids
                .map_err(Error::InvalidRequest)?;
            let filter_detected_at_gt = filter_detected_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_detected_at_gte = filter_detected_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_detected_at_lt = filter_detected_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_detected_at_lte = filter_detected_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_environment_ids = filter_environment_ids
                .map_err(Error::InvalidRequest)?;
            let filter_environments = filter_environments
                .map_err(Error::InvalidRequest)?;
            let filter_functionalities = filter_functionalities
                .map_err(Error::InvalidRequest)?;
            let filter_functionality_ids = filter_functionality_ids
                .map_err(Error::InvalidRequest)?;
            let filter_functionality_names = filter_functionality_names
                .map_err(Error::InvalidRequest)?;
            let filter_in_triage_at_gt = filter_in_triage_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_in_triage_at_gte = filter_in_triage_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_in_triage_at_lt = filter_in_triage_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_in_triage_at_lte = filter_in_triage_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_labels = filter_labels.map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_gt = filter_mitigated_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_gte = filter_mitigated_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_lt = filter_mitigated_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_lte = filter_mitigated_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_private = filter_private.map_err(Error::InvalidRequest)?;
            let filter_resolved_at_gt = filter_resolved_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_gte = filter_resolved_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_lt = filter_resolved_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_lte = filter_resolved_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_service_ids = filter_service_ids.map_err(Error::InvalidRequest)?;
            let filter_service_names = filter_service_names
                .map_err(Error::InvalidRequest)?;
            let filter_services = filter_services.map_err(Error::InvalidRequest)?;
            let filter_severity = filter_severity.map_err(Error::InvalidRequest)?;
            let filter_severity_id = filter_severity_id.map_err(Error::InvalidRequest)?;
            let filter_slack_channel_id = filter_slack_channel_id
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_gt = filter_started_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_gte = filter_started_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lt = filter_started_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lte = filter_started_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_status = filter_status.map_err(Error::InvalidRequest)?;
            let filter_team_ids = filter_team_ids.map_err(Error::InvalidRequest)?;
            let filter_team_names = filter_team_names.map_err(Error::InvalidRequest)?;
            let filter_teams = filter_teams.map_err(Error::InvalidRequest)?;
            let filter_type_ids = filter_type_ids.map_err(Error::InvalidRequest)?;
            let filter_types = filter_types.map_err(Error::InvalidRequest)?;
            let filter_updated_at_gt = filter_updated_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_updated_at_gte = filter_updated_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_updated_at_lt = filter_updated_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_updated_at_lte = filter_updated_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_user_id = filter_user_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_after = page_after.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incidents", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[acknowledged_at][gt]",
                        &filter_acknowledged_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[acknowledged_at][gte]",
                        &filter_acknowledged_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[acknowledged_at][lt]",
                        &filter_acknowledged_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[acknowledged_at][lte]",
                        &filter_acknowledged_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[cause]", &filter_cause),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[cause_ids]",
                        &filter_cause_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[closed_at][gt]",
                        &filter_closed_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[closed_at][gte]",
                        &filter_closed_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[closed_at][lt]",
                        &filter_closed_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[closed_at][lte]",
                        &filter_closed_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[custom_field_selected_option_ids]",
                        &filter_custom_field_selected_option_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[detected_at][gt]",
                        &filter_detected_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[detected_at][gte]",
                        &filter_detected_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[detected_at][lt]",
                        &filter_detected_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[detected_at][lte]",
                        &filter_detected_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[environment_ids]",
                        &filter_environment_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[environments]",
                        &filter_environments,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[functionalities]",
                        &filter_functionalities,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[functionality_ids]",
                        &filter_functionality_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[functionality_names]",
                        &filter_functionality_names,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[in_triage_at][gt]",
                        &filter_in_triage_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[in_triage_at][gte]",
                        &filter_in_triage_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[in_triage_at][lt]",
                        &filter_in_triage_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[in_triage_at][lte]",
                        &filter_in_triage_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(
                    &progenitor_client::QueryParam::new("filter[labels]", &filter_labels),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][gt]",
                        &filter_mitigated_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][gte]",
                        &filter_mitigated_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][lt]",
                        &filter_mitigated_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][lte]",
                        &filter_mitigated_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[private]",
                        &filter_private,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][gt]",
                        &filter_resolved_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][gte]",
                        &filter_resolved_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][lt]",
                        &filter_resolved_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][lte]",
                        &filter_resolved_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[service_ids]",
                        &filter_service_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[service_names]",
                        &filter_service_names,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[services]",
                        &filter_services,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[severity]",
                        &filter_severity,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[severity_id]",
                        &filter_severity_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[slack_channel_id]",
                        &filter_slack_channel_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gt]",
                        &filter_started_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gte]",
                        &filter_started_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lt]",
                        &filter_started_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lte]",
                        &filter_started_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[status]", &filter_status),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[team_ids]",
                        &filter_team_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[team_names]",
                        &filter_team_names,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[teams]", &filter_teams),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[type_ids]",
                        &filter_type_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[types]", &filter_types),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][gt]",
                        &filter_updated_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][gte]",
                        &filter_updated_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][lt]",
                        &filter_updated_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[updated_at][lte]",
                        &filter_updated_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[user_id]",
                        &filter_user_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[after]", &page_after))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incidents",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident`]

[`Client::create_incident`]: super::Client::create_incident*/
    #[derive(Debug, Clone)]
    pub struct CreateIncident<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewIncident, String>,
    }
    impl<'a> CreateIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncident>,
            <V as std::convert::TryInto<types::NewIncident>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncident,
            ) -> types::builder::NewIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewIncident::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/incidents", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident`]

[`Client::get_incident`]: super::Client::get_incident*/
    #[derive(Debug, Clone)]
    pub struct GetIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetIncidentInclude>, String>,
    }
    impl<'a> GetIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetIncidentInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetIncidentInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident`]

[`Client::update_incident`]: super::Client::update_incident*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncident, String>,
    }
    impl<'a> UpdateIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncident>,
            <V as std::convert::TryInto<
                types::UpdateIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncident,
            ) -> types::builder::UpdateIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident`]

[`Client::delete_incident`]: super::Client::delete_incident*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/incidents/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::add_subscribers_to_incident`]

[`Client::add_subscribers_to_incident`]: super::Client::add_subscribers_to_incident*/
    #[derive(Debug, Clone)]
    pub struct AddSubscribersToIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::AddSubscribers, String>,
    }
    impl<'a> AddSubscribersToIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::AddSubscribers>,
            <V as std::convert::TryInto<
                types::AddSubscribers,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `AddSubscribers` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::AddSubscribers,
            ) -> types::builder::AddSubscribers,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{id}/add_subscribers`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::AddSubscribers::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/add_subscribers", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "add_subscribers_to_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::assign_user_to_incident`]

[`Client::assign_user_to_incident`]: super::Client::assign_user_to_incident*/
    #[derive(Debug, Clone)]
    pub struct AssignUserToIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::AssignRoleToUser, String>,
    }
    impl<'a> AssignUserToIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::AssignRoleToUser>,
            <V as std::convert::TryInto<
                types::AssignRoleToUser,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `AssignRoleToUser` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::AssignRoleToUser,
            ) -> types::builder::AssignRoleToUser,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{id}/assign_role_to_user`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::AssignRoleToUser::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/assign_role_to_user", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "assign_user_to_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::cancel_incident`]

[`Client::cancel_incident`]: super::Client::cancel_incident*/
    #[derive(Debug, Clone)]
    pub struct CancelIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::CancelIncident, String>,
    }
    impl<'a> CancelIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::CancelIncident>,
            <V as std::convert::TryInto<
                types::CancelIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `CancelIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::CancelIncident,
            ) -> types::builder::CancelIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/cancel`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::CancelIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/cancel", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "cancel_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::detach_from_parent_incident`]

[`Client::detach_from_parent_incident`]: super::Client::detach_from_parent_incident*/
    #[derive(Debug, Clone)]
    pub struct DetachFromParentIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DetachFromParentIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/detach_from_parent`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/detach_from_parent", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "detach_from_parent_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::mark_as_duplicate_incident`]

[`Client::mark_as_duplicate_incident`]: super::Client::mark_as_duplicate_incident*/
    #[derive(Debug, Clone)]
    pub struct MarkAsDuplicateIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::ResolveIncident, String>,
    }
    impl<'a> MarkAsDuplicateIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ResolveIncident>,
            <V as std::convert::TryInto<
                types::ResolveIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `ResolveIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::ResolveIncident,
            ) -> types::builder::ResolveIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/duplicate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::ResolveIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/duplicate", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "mark_as_duplicate_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::triage_incident`]

[`Client::triage_incident`]: super::Client::triage_incident*/
    #[derive(Debug, Clone)]
    pub struct TriageIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::InTriageIncident, String>,
    }
    impl<'a> TriageIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::InTriageIncident>,
            <V as std::convert::TryInto<
                types::InTriageIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `InTriageIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::InTriageIncident,
            ) -> types::builder::InTriageIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/in_triage`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::InTriageIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/in_triage", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "triage_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::mitigate_incident`]

[`Client::mitigate_incident`]: super::Client::mitigate_incident*/
    #[derive(Debug, Clone)]
    pub struct MitigateIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::MitigateIncident, String>,
    }
    impl<'a> MitigateIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::MitigateIncident>,
            <V as std::convert::TryInto<
                types::MitigateIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `MitigateIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::MitigateIncident,
            ) -> types::builder::MitigateIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/mitigate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::MitigateIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/mitigate", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "mitigate_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::remove_subscribers_to_incident`]

[`Client::remove_subscribers_to_incident`]: super::Client::remove_subscribers_to_incident*/
    #[derive(Debug, Clone)]
    pub struct RemoveSubscribersToIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::RemoveSubscribers, String>,
    }
    impl<'a> RemoveSubscribersToIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::RemoveSubscribers>,
            <V as std::convert::TryInto<
                types::RemoveSubscribers,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `RemoveSubscribers` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::RemoveSubscribers,
            ) -> types::builder::RemoveSubscribers,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `DELETE` request to `/v1/incidents/{id}/remove_subscribers`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::RemoveSubscribers::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/remove_subscribers", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "remove_subscribers_to_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::resolve_incident`]

[`Client::resolve_incident`]: super::Client::resolve_incident*/
    #[derive(Debug, Clone)]
    pub struct ResolveIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::ResolveIncident, String>,
    }
    impl<'a> ResolveIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ResolveIncident>,
            <V as std::convert::TryInto<
                types::ResolveIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `ResolveIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::ResolveIncident,
            ) -> types::builder::ResolveIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/resolve`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::ResolveIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/resolve", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "resolve_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::restart_incident`]

[`Client::restart_incident`]: super::Client::restart_incident*/
    #[derive(Debug, Clone)]
    pub struct RestartIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::RestartIncident, String>,
    }
    impl<'a> RestartIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::RestartIncident>,
            <V as std::convert::TryInto<
                types::RestartIncident,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `RestartIncident` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::RestartIncident,
            ) -> types::builder::RestartIncident,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/restart`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::RestartIncident::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/restart", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "restart_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::remove_assigned_user_from_incident`]

[`Client::remove_assigned_user_from_incident`]: super::Client::remove_assigned_user_from_incident*/
    #[derive(Debug, Clone)]
    pub struct RemoveAssignedUserFromIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UnassignRoleFromUser, String>,
    }
    impl<'a> RemoveAssignedUserFromIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UnassignRoleFromUser>,
            <V as std::convert::TryInto<
                types::UnassignRoleFromUser,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UnassignRoleFromUser` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UnassignRoleFromUser,
            ) -> types::builder::UnassignRoleFromUser,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `DELETE` request to `/v1/incidents/{id}/unassign_role_from_user`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UnassignRoleFromUser::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/unassign_role_from_user", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "remove_assigned_user_from_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::unmark_as_duplicate_incident`]

[`Client::unmark_as_duplicate_incident`]: super::Client::unmark_as_duplicate_incident*/
    #[derive(Debug, Clone)]
    pub struct UnmarkAsDuplicateIncident<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> UnmarkAsDuplicateIncident<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `PUT` request to `/v1/incidents/{id}/unmark_as_duplicate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/unmark_as_duplicate", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "unmark_as_duplicate_incident",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_action_items`]

[`Client::list_incident_action_items`]: super::Client::list_incident_action_items*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentActionItems<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentActionItems<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/action_items`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentActionItemList>, Error<()>> {
            let Self { client, incident_id, include, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/action_items", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_action_items",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_action_item`]

[`Client::create_incident_action_item`]: super::Client::create_incident_action_item*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentActionItem<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentActionItem, String>,
    }
    impl<'a> CreateIncidentActionItem<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentActionItem>,
            <V as std::convert::TryInto<
                types::NewIncidentActionItem,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentActionItem` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentActionItem,
            ) -> types::builder::NewIncidentActionItem,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/action_items`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentActionItemResponse>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentActionItem::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/action_items", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_action_item",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_alerts`]

[`Client::list_incident_alerts`]: super::Client::list_incident_alerts*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentAlerts<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<types::ListIncidentAlertsInclude>, String>,
    }
    impl<'a> ListIncidentAlerts<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentAlertsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentAlertsInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/alerts`
        pub async fn send(self) -> Result<ResponseValue<types::AlertList>, Error<()>> {
            let Self { client, incident_id, include } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/alerts", client.baseurl, encode_path(& incident_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_alerts",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::attach_alert`]

[`Client::attach_alert`]: super::Client::attach_alert*/
    #[derive(Debug, Clone)]
    pub struct AttachAlert<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::AttachAlert, String>,
    }
    impl<'a> AttachAlert<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::AttachAlert>,
            <V as std::convert::TryInto<types::AttachAlert>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `AttachAlert` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::AttachAlert,
            ) -> types::builder::AttachAlert,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/alerts`
        pub async fn send(self) -> Result<ResponseValue<types::AlertList>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::AttachAlert::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/alerts", client.baseurl, encode_path(& incident_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "attach_alert",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_custom_field_selections`]

[`Client::list_incident_custom_field_selections`]: super::Client::list_incident_custom_field_selections*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentCustomFieldSelections<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentCustomFieldSelections<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/custom_field_selections`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentCustomFieldSelectionList>, Error<()>> {
            let Self { client, incident_id, include, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/custom_field_selections", client.baseurl,
                encode_path(& incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_custom_field_selections",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_custom_field_selection`]

[`Client::create_incident_custom_field_selection`]: super::Client::create_incident_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentCustomFieldSelection<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentCustomFieldSelection, String>,
    }
    impl<'a> CreateIncidentCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentCustomFieldSelection>,
            <V as std::convert::TryInto<
                types::NewIncidentCustomFieldSelection,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentCustomFieldSelection` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentCustomFieldSelection,
            ) -> types::builder::NewIncidentCustomFieldSelection,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/custom_field_selections`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentCustomFieldSelection::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/custom_field_selections", client.baseurl,
                encode_path(& incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_events`]

[`Client::list_incident_events`]: super::Client::list_incident_events*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentEvents<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentEvents<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventList>, Error<()>> {
            let Self { client, incident_id, include, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/events", client.baseurl, encode_path(& incident_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_events",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_event`]

[`Client::create_incident_event`]: super::Client::create_incident_event*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentEvent<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentEvent, String>,
    }
    impl<'a> CreateIncidentEvent<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentEvent>,
            <V as std::convert::TryInto<
                types::NewIncidentEvent,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewIncidentEvent` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentEvent,
            ) -> types::builder::NewIncidentEvent,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentEventResponse>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentEvent::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/events", client.baseurl, encode_path(& incident_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_event",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_feedbacks`]

[`Client::list_incident_feedbacks`]: super::Client::list_incident_feedbacks*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentFeedbacks<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentFeedbacks<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/feedbacks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentFeedbackList>, Error<()>> {
            let Self { client, incident_id, include, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/feedbacks", client.baseurl, encode_path(& incident_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_feedbacks",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_feedback`]

[`Client::create_incident_feedback`]: super::Client::create_incident_feedback*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentFeedback<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentFeedback, String>,
    }
    impl<'a> CreateIncidentFeedback<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentFeedback>,
            <V as std::convert::TryInto<
                types::NewIncidentFeedback,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewIncidentFeedback` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentFeedback,
            ) -> types::builder::NewIncidentFeedback,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/feedbacks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentFeedbackResponse>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentFeedback::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/feedbacks", client.baseurl, encode_path(& incident_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_feedback",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_form_field_selections`]

[`Client::list_incident_form_field_selections`]: super::Client::list_incident_form_field_selections*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentFormFieldSelections<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentFormFieldSelections<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/form_field_selections`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentFormFieldSelectionList>, Error<()>> {
            let Self { client, incident_id, include, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/form_field_selections", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_form_field_selections",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_form_field_selection`]

[`Client::create_incident_form_field_selection`]: super::Client::create_incident_form_field_selection*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentFormFieldSelection<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentFormFieldSelection, String>,
    }
    impl<'a> CreateIncidentFormFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentFormFieldSelection>,
            <V as std::convert::TryInto<
                types::NewIncidentFormFieldSelection,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentFormFieldSelection` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentFormFieldSelection,
            ) -> types::builder::NewIncidentFormFieldSelection,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/form_field_selections`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::IncidentFormFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentFormFieldSelection::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/form_field_selections", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_form_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_meeting_recordings`]

[`Client::list_meeting_recordings`]: super::Client::list_meeting_recordings*/
    #[derive(Debug, Clone)]
    pub struct ListMeetingRecordings<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListMeetingRecordings<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/meeting_recordings`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::MeetingRecordingList>, Error<()>> {
            let Self { client, incident_id, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/meeting_recordings", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_meeting_recordings",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_meeting_recording`]

[`Client::create_meeting_recording`]: super::Client::create_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct CreateMeetingRecording<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        platform: Result<Option<types::CreateMeetingRecordingPlatform>, String>,
    }
    impl<'a> CreateMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                platform: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn platform<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::CreateMeetingRecordingPlatform>,
        {
            self.platform = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `CreateMeetingRecordingPlatform` for platform failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/meeting_recordings`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, incident_id, platform } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let platform = platform.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/meeting_recordings", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .query(&progenitor_client::QueryParam::new("platform", &platform))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::import_meeting_recording`]

[`Client::import_meeting_recording`]: super::Client::import_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct ImportMeetingRecording<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::ImportMeetingRecording, String>,
    }
    impl<'a> ImportMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ImportMeetingRecording>,
            <V as std::convert::TryInto<
                types::ImportMeetingRecording,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `ImportMeetingRecording` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::ImportMeetingRecording,
            ) -> types::builder::ImportMeetingRecording,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/meeting_recordings/import`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::ImportMeetingRecording::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/meeting_recordings/import", client.baseurl,
                encode_path(& incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "import_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_status_pages`]

[`Client::list_incident_status_pages`]: super::Client::list_incident_status_pages*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentStatusPages<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListIncidentStatusPages<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/status-page-events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentStatusPageEventList>, Error<()>> {
            let Self { client, incident_id, include, page_number, page_size } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/status-page-events", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_status_pages",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_status_page`]

[`Client::create_incident_status_page`]: super::Client::create_incident_status_page*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentStatusPage<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentStatusPageEvent, String>,
    }
    impl<'a> CreateIncidentStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentStatusPageEvent>,
            <V as std::convert::TryInto<
                types::NewIncidentStatusPageEvent,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentStatusPageEvent` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentStatusPageEvent,
            ) -> types::builder::NewIncidentStatusPageEvent,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/status-page-events`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentStatusPageEventResponse>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentStatusPageEvent::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/status-page-events", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_sub_statuses`]

[`Client::list_incident_sub_statuses`]: super::Client::list_incident_sub_statuses*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentSubStatuses<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        filter_assigned_at_gt: Result<Option<::std::string::String>, String>,
        filter_assigned_at_gte: Result<Option<::std::string::String>, String>,
        filter_assigned_at_lt: Result<Option<::std::string::String>, String>,
        filter_assigned_at_lte: Result<Option<::std::string::String>, String>,
        filter_sub_status_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListIncidentSubStatusesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListIncidentSubStatusesSort>, String>,
    }
    impl<'a> ListIncidentSubStatuses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                filter_assigned_at_gt: Ok(None),
                filter_assigned_at_gte: Ok(None),
                filter_assigned_at_lt: Ok(None),
                filter_assigned_at_lte: Ok(None),
                filter_sub_status_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_assigned_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_assigned_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_assigned_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_assigned_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_assigned_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_assigned_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_assigned_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_assigned_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_assigned_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_assigned_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_assigned_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_assigned_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_sub_status_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_sub_status_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_sub_status_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentSubStatusesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentSubStatusesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListIncidentSubStatusesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListIncidentSubStatusesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/incidents/{incident_id}/sub_statuses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentSubStatusList>, Error<()>> {
            let Self {
                client,
                incident_id,
                filter_assigned_at_gt,
                filter_assigned_at_gte,
                filter_assigned_at_lt,
                filter_assigned_at_lte,
                filter_sub_status_id,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let filter_assigned_at_gt = filter_assigned_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_assigned_at_gte = filter_assigned_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_assigned_at_lt = filter_assigned_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_assigned_at_lte = filter_assigned_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_sub_status_id = filter_sub_status_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/sub_statuses", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[assigned_at][gt]",
                        &filter_assigned_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[assigned_at][gte]",
                        &filter_assigned_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[assigned_at][lt]",
                        &filter_assigned_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[assigned_at][lte]",
                        &filter_assigned_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[sub_status_id]",
                        &filter_sub_status_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_sub_statuses",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_incident_sub_status`]

[`Client::create_incident_sub_status`]: super::Client::create_incident_sub_status*/
    #[derive(Debug, Clone)]
    pub struct CreateIncidentSubStatus<'a> {
        client: &'a super::Client,
        incident_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewIncidentSubStatus, String>,
    }
    impl<'a> CreateIncidentSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                incident_id: Err("incident_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn incident_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.incident_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for incident_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewIncidentSubStatus>,
            <V as std::convert::TryInto<
                types::NewIncidentSubStatus,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewIncidentSubStatus` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewIncidentSubStatus,
            ) -> types::builder::NewIncidentSubStatus,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/incidents/{incident_id}/sub_statuses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentSubStatusResponse>, Error<()>> {
            let Self { client, incident_id, body } = self;
            let incident_id = incident_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewIncidentSubStatus::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/incidents/{}/sub_statuses", client.baseurl, encode_path(&
                incident_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_incident_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_ip_ranges`]

[`Client::get_ip_ranges`]: super::Client::get_ip_ranges*/
    #[derive(Debug, Clone)]
    pub struct GetIpRanges<'a> {
        client: &'a super::Client,
    }
    impl<'a> GetIpRanges<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self { client: client }
        }
        ///Sends a `GET` request to `/v1/ip_ranges`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IpRangesResponse>, Error<()>> {
            let Self { client } = self;
            let url = format!("{}/v1/ip_ranges", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_ip_ranges",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_live_call_routers`]

[`Client::list_live_call_routers`]: super::Client::list_live_call_routers*/
    #[derive(Debug, Clone)]
    pub struct ListLiveCallRouters<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListLiveCallRouters<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/live_call_routers`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::LiveCallRouterList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/live_call_routers", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_live_call_routers",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_live_call_router`]

[`Client::create_live_call_router`]: super::Client::create_live_call_router*/
    #[derive(Debug, Clone)]
    pub struct CreateLiveCallRouter<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewLiveCallRouter, String>,
    }
    impl<'a> CreateLiveCallRouter<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewLiveCallRouter>,
            <V as std::convert::TryInto<
                types::NewLiveCallRouter,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewLiveCallRouter` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewLiveCallRouter,
            ) -> types::builder::NewLiveCallRouter,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/live_call_routers`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::LiveCallRouterResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewLiveCallRouter::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/live_call_routers", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_live_call_router",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::generate_phone_number_live_call_router`]

[`Client::generate_phone_number_live_call_router`]: super::Client::generate_phone_number_live_call_router*/
    #[derive(Debug, Clone)]
    pub struct GeneratePhoneNumberLiveCallRouter<'a> {
        client: &'a super::Client,
        country_code: Result<
            types::GeneratePhoneNumberLiveCallRouterCountryCode,
            String,
        >,
        phone_type: Result<types::GeneratePhoneNumberLiveCallRouterPhoneType, String>,
    }
    impl<'a> GeneratePhoneNumberLiveCallRouter<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                country_code: Err("country_code was not initialized".to_string()),
                phone_type: Err("phone_type was not initialized".to_string()),
            }
        }
        pub fn country_code<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<
                types::GeneratePhoneNumberLiveCallRouterCountryCode,
            >,
        {
            self.country_code = value
                .try_into()
                .map_err(|_| {
                    "conversion to `GeneratePhoneNumberLiveCallRouterCountryCode` for country_code failed"
                        .to_string()
                });
            self
        }
        pub fn phone_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GeneratePhoneNumberLiveCallRouterPhoneType>,
        {
            self.phone_type = value
                .try_into()
                .map_err(|_| {
                    "conversion to `GeneratePhoneNumberLiveCallRouterPhoneType` for phone_type failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/live_call_routers/generate_phone_number`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, country_code, phone_type } = self;
            let country_code = country_code.map_err(Error::InvalidRequest)?;
            let phone_type = phone_type.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/live_call_routers/generate_phone_number", client.baseurl,
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .query(
                    &progenitor_client::QueryParam::new("country_code", &country_code),
                )
                .query(&progenitor_client::QueryParam::new("phone_type", &phone_type))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "generate_phone_number_live_call_router",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_live_call_router`]

[`Client::get_live_call_router`]: super::Client::get_live_call_router*/
    #[derive(Debug, Clone)]
    pub struct GetLiveCallRouter<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetLiveCallRouter<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/live_call_routers/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::LiveCallRouterResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/live_call_routers/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_live_call_router",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_live_call_router`]

[`Client::update_live_call_router`]: super::Client::update_live_call_router*/
    #[derive(Debug, Clone)]
    pub struct UpdateLiveCallRouter<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateLiveCallRouter, String>,
    }
    impl<'a> UpdateLiveCallRouter<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateLiveCallRouter>,
            <V as std::convert::TryInto<
                types::UpdateLiveCallRouter,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateLiveCallRouter` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateLiveCallRouter,
            ) -> types::builder::UpdateLiveCallRouter,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/live_call_routers/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::LiveCallRouterResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateLiveCallRouter::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/live_call_routers/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_live_call_router",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_live_call_router`]

[`Client::delete_live_call_router`]: super::Client::delete_live_call_router*/
    #[derive(Debug, Clone)]
    pub struct DeleteLiveCallRouter<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteLiveCallRouter<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/live_call_routers/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::LiveCallRouterResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/live_call_routers/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_live_call_router",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_meeting_recording`]

[`Client::get_meeting_recording`]: super::Client::get_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct GetMeetingRecording<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/meeting_recordings/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.get(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "get_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_meeting_recording`]

[`Client::delete_meeting_recording`]: super::Client::delete_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct DeleteMeetingRecording<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/meeting_recordings/{id}`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_meeting_recording_video`]

[`Client::delete_meeting_recording_video`]: super::Client::delete_meeting_recording_video*/
    #[derive(Debug, Clone)]
    pub struct DeleteMeetingRecordingVideo<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteMeetingRecordingVideo<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/meeting_recordings/{id}/delete_video`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}/delete_video", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.delete(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "delete_meeting_recording_video",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::leave_meeting_recording`]

[`Client::leave_meeting_recording`]: super::Client::leave_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct LeaveMeetingRecording<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> LeaveMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/meeting_recordings/{id}/leave`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}/leave", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.post(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "leave_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::pause_meeting_recording`]

[`Client::pause_meeting_recording`]: super::Client::pause_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct PauseMeetingRecording<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> PauseMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/meeting_recordings/{id}/pause`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}/pause", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.post(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "pause_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::resume_meeting_recording`]

[`Client::resume_meeting_recording`]: super::Client::resume_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct ResumeMeetingRecording<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> ResumeMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/meeting_recordings/{id}/resume`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}/resume", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.post(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "resume_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::stop_meeting_recording`]

[`Client::stop_meeting_recording`]: super::Client::stop_meeting_recording*/
    #[derive(Debug, Clone)]
    pub struct StopMeetingRecording<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> StopMeetingRecording<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/meeting_recordings/{id}/stop`
        pub async fn send(self) -> Result<ResponseValue<()>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/meeting_recordings/{}/stop", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client.client.post(url).headers(header_map).build()?;
            let info = OperationInfo {
                operation_id: "stop_meeting_recording",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => Ok(ResponseValue::empty(response)),
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_user_notification_rule`]

[`Client::get_user_notification_rule`]: super::Client::get_user_notification_rule*/
    #[derive(Debug, Clone)]
    pub struct GetUserNotificationRule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetUserNotificationRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/notification_rules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserNotificationRuleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/notification_rules/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_user_notification_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_user_notification_rule`]

[`Client::update_user_notification_rule`]: super::Client::update_user_notification_rule*/
    #[derive(Debug, Clone)]
    pub struct UpdateUserNotificationRule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateUserNotificationRule, String>,
    }
    impl<'a> UpdateUserNotificationRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateUserNotificationRule>,
            <V as std::convert::TryInto<
                types::UpdateUserNotificationRule,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateUserNotificationRule` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateUserNotificationRule,
            ) -> types::builder::UpdateUserNotificationRule,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/notification_rules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserNotificationRuleResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateUserNotificationRule::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/notification_rules/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_user_notification_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_user_notification_rule`]

[`Client::delete_user_notification_rule`]: super::Client::delete_user_notification_rule*/
    #[derive(Debug, Clone)]
    pub struct DeleteUserNotificationRule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteUserNotificationRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/notification_rules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserNotificationRuleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/notification_rules/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_user_notification_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_on_call_pay_reports`]

[`Client::list_on_call_pay_reports`]: super::Client::list_on_call_pay_reports*/
    #[derive(Debug, Clone)]
    pub struct ListOnCallPayReports<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_status: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListOnCallPayReports<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_status: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_status failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/on_call_pay_reports`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallPayReportList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_status,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_status = filter_status.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/on_call_pay_reports", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[status]", &filter_status),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_on_call_pay_reports",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_on_call_pay_report`]

[`Client::create_on_call_pay_report`]: super::Client::create_on_call_pay_report*/
    #[derive(Debug, Clone)]
    pub struct CreateOnCallPayReport<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewOnCallPayReport, String>,
    }
    impl<'a> CreateOnCallPayReport<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewOnCallPayReport>,
            <V as std::convert::TryInto<
                types::NewOnCallPayReport,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewOnCallPayReport` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewOnCallPayReport,
            ) -> types::builder::NewOnCallPayReport,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/on_call_pay_reports`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallPayReportResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewOnCallPayReport::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/on_call_pay_reports", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_on_call_pay_report",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_on_call_pay_report`]

[`Client::get_on_call_pay_report`]: super::Client::get_on_call_pay_report*/
    #[derive(Debug, Clone)]
    pub struct GetOnCallPayReport<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
    }
    impl<'a> GetOnCallPayReport<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/on_call_pay_reports/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallPayReportResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_pay_reports/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_on_call_pay_report",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_on_call_pay_report`]

[`Client::update_on_call_pay_report`]: super::Client::update_on_call_pay_report*/
    #[derive(Debug, Clone)]
    pub struct UpdateOnCallPayReport<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateOnCallPayReport, String>,
    }
    impl<'a> UpdateOnCallPayReport<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateOnCallPayReport>,
            <V as std::convert::TryInto<
                types::UpdateOnCallPayReport,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateOnCallPayReport` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateOnCallPayReport,
            ) -> types::builder::UpdateOnCallPayReport,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/on_call_pay_reports/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallPayReportResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateOnCallPayReport::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_pay_reports/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_on_call_pay_report",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::regenerate_on_call_pay_report`]

[`Client::regenerate_on_call_pay_report`]: super::Client::regenerate_on_call_pay_report*/
    #[derive(Debug, Clone)]
    pub struct RegenerateOnCallPayReport<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> RegenerateOnCallPayReport<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/on_call_pay_reports/{id}/regenerate`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallPayReportResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_pay_reports/{}/regenerate", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "regenerate_on_call_pay_report",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_on_call_roles`]

[`Client::list_on_call_roles`]: super::Client::list_on_call_roles*/
    #[derive(Debug, Clone)]
    pub struct ListOnCallRoles<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListOnCallRoles<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/on_call_roles`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallRoleList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/on_call_roles", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_on_call_roles",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_on_call_role`]

[`Client::create_on_call_role`]: super::Client::create_on_call_role*/
    #[derive(Debug, Clone)]
    pub struct CreateOnCallRole<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewOnCallRole, String>,
    }
    impl<'a> CreateOnCallRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewOnCallRole>,
            <V as std::convert::TryInto<types::NewOnCallRole>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewOnCallRole` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewOnCallRole,
            ) -> types::builder::NewOnCallRole,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/on_call_roles`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallRoleResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewOnCallRole::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/on_call_roles", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_on_call_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_on_call_role`]

[`Client::get_on_call_role`]: super::Client::get_on_call_role*/
    #[derive(Debug, Clone)]
    pub struct GetOnCallRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetOnCallRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/on_call_roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallRoleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_on_call_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_on_call_role`]

[`Client::update_on_call_role`]: super::Client::update_on_call_role*/
    #[derive(Debug, Clone)]
    pub struct UpdateOnCallRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateOnCallRole, String>,
    }
    impl<'a> UpdateOnCallRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateOnCallRole>,
            <V as std::convert::TryInto<
                types::UpdateOnCallRole,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateOnCallRole` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateOnCallRole,
            ) -> types::builder::UpdateOnCallRole,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/on_call_roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallRoleResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateOnCallRole::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_on_call_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_on_call_role`]

[`Client::delete_on_call_role`]: super::Client::delete_on_call_role*/
    #[derive(Debug, Clone)]
    pub struct DeleteOnCallRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteOnCallRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/on_call_roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallRoleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_on_call_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_on_call_shadow`]

[`Client::get_on_call_shadow`]: super::Client::get_on_call_shadow*/
    #[derive(Debug, Clone)]
    pub struct GetOnCallShadow<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetOnCallShadow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/on_call_shadows/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallShadowResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_shadows/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_on_call_shadow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_on_call_shadow`]

[`Client::update_on_call_shadow`]: super::Client::update_on_call_shadow*/
    #[derive(Debug, Clone)]
    pub struct UpdateOnCallShadow<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateOnCallShadow, String>,
    }
    impl<'a> UpdateOnCallShadow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateOnCallShadow>,
            <V as std::convert::TryInto<
                types::UpdateOnCallShadow,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateOnCallShadow` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateOnCallShadow,
            ) -> types::builder::UpdateOnCallShadow,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/on_call_shadows/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallShadowResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateOnCallShadow::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_shadows/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_on_call_shadow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_on_call_shadow`]

[`Client::delete_on_call_shadow`]: super::Client::delete_on_call_shadow*/
    #[derive(Debug, Clone)]
    pub struct DeleteOnCallShadow<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteOnCallShadow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/on_call_shadows/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallShadowResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/on_call_shadows/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_on_call_shadow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_oncalls`]

[`Client::list_oncalls`]: super::Client::list_oncalls*/
    #[derive(Debug, Clone)]
    pub struct ListOncalls<'a> {
        client: &'a super::Client,
        earliest: Result<Option<bool>, String>,
        filter_escalation_policy_ids: Result<Option<::std::string::String>, String>,
        filter_group_ids: Result<Option<::std::string::String>, String>,
        filter_notification_types: Result<Option<::std::string::String>, String>,
        filter_schedule_ids: Result<Option<::std::string::String>, String>,
        filter_service_ids: Result<Option<::std::string::String>, String>,
        filter_user_ids: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListOncallsInclude>, String>,
        since: Result<Option<::std::string::String>, String>,
        time_zone: Result<Option<::std::string::String>, String>,
        until: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListOncalls<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                earliest: Ok(None),
                filter_escalation_policy_ids: Ok(None),
                filter_group_ids: Ok(None),
                filter_notification_types: Ok(None),
                filter_schedule_ids: Ok(None),
                filter_service_ids: Ok(None),
                filter_user_ids: Ok(None),
                include: Ok(None),
                since: Ok(None),
                time_zone: Ok(None),
                until: Ok(None),
            }
        }
        pub fn earliest<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.earliest = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `bool` for earliest failed".to_string());
            self
        }
        pub fn filter_escalation_policy_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_escalation_policy_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_escalation_policy_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_group_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_group_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_group_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_notification_types<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_notification_types = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_notification_types failed"
                        .to_string()
                });
            self
        }
        pub fn filter_schedule_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_schedule_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_schedule_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_service_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_service_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_service_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_user_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_user_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_user_ids failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListOncallsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListOncallsInclude` for include failed".to_string()
                });
            self
        }
        pub fn since<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.since = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for since failed"
                        .to_string()
                });
            self
        }
        pub fn time_zone<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.time_zone = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for time_zone failed"
                        .to_string()
                });
            self
        }
        pub fn until<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.until = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for until failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/oncalls`
        pub async fn send(self) -> Result<ResponseValue<types::OncallList>, Error<()>> {
            let Self {
                client,
                earliest,
                filter_escalation_policy_ids,
                filter_group_ids,
                filter_notification_types,
                filter_schedule_ids,
                filter_service_ids,
                filter_user_ids,
                include,
                since,
                time_zone,
                until,
            } = self;
            let earliest = earliest.map_err(Error::InvalidRequest)?;
            let filter_escalation_policy_ids = filter_escalation_policy_ids
                .map_err(Error::InvalidRequest)?;
            let filter_group_ids = filter_group_ids.map_err(Error::InvalidRequest)?;
            let filter_notification_types = filter_notification_types
                .map_err(Error::InvalidRequest)?;
            let filter_schedule_ids = filter_schedule_ids
                .map_err(Error::InvalidRequest)?;
            let filter_service_ids = filter_service_ids.map_err(Error::InvalidRequest)?;
            let filter_user_ids = filter_user_ids.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let since = since.map_err(Error::InvalidRequest)?;
            let time_zone = time_zone.map_err(Error::InvalidRequest)?;
            let until = until.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/oncalls", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("earliest", &earliest))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[escalation_policy_ids]",
                        &filter_escalation_policy_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[group_ids]",
                        &filter_group_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[notification_types]",
                        &filter_notification_types,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[schedule_ids]",
                        &filter_schedule_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[service_ids]",
                        &filter_service_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[user_ids]",
                        &filter_user_ids,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("since", &since))
                .query(&progenitor_client::QueryParam::new("time_zone", &time_zone))
                .query(&progenitor_client::QueryParam::new("until", &until))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_oncalls",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_override_shift`]

[`Client::get_override_shift`]: super::Client::get_override_shift*/
    #[derive(Debug, Clone)]
    pub struct GetOverrideShift<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetOverrideShift<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/override_shifts/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OverrideShiftResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/override_shifts/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_override_shift",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_override_shift`]

[`Client::update_override_shift`]: super::Client::update_override_shift*/
    #[derive(Debug, Clone)]
    pub struct UpdateOverrideShift<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateOverrideShift, String>,
    }
    impl<'a> UpdateOverrideShift<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateOverrideShift>,
            <V as std::convert::TryInto<
                types::UpdateOverrideShift,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateOverrideShift` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateOverrideShift,
            ) -> types::builder::UpdateOverrideShift,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/override_shifts/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OverrideShiftResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateOverrideShift::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/override_shifts/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_override_shift",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_override_shift`]

[`Client::delete_override_shift`]: super::Client::delete_override_shift*/
    #[derive(Debug, Clone)]
    pub struct DeleteOverrideShift<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteOverrideShift<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/override_shifts/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OverrideShiftResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/override_shifts/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_override_shift",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::show_user_phone_number`]

[`Client::show_user_phone_number`]: super::Client::show_user_phone_number*/
    #[derive(Debug, Clone)]
    pub struct ShowUserPhoneNumber<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> ShowUserPhoneNumber<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/phone_numbers/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserPhoneNumberResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/phone_numbers/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "show_user_phone_number",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_user_phone_number`]

[`Client::update_user_phone_number`]: super::Client::update_user_phone_number*/
    #[derive(Debug, Clone)]
    pub struct UpdateUserPhoneNumber<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateUserPhoneNumber, String>,
    }
    impl<'a> UpdateUserPhoneNumber<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateUserPhoneNumber>,
            <V as std::convert::TryInto<
                types::UpdateUserPhoneNumber,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateUserPhoneNumber` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateUserPhoneNumber,
            ) -> types::builder::UpdateUserPhoneNumber,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/phone_numbers/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserPhoneNumberResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateUserPhoneNumber::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/phone_numbers/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_user_phone_number",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_user_phone_number`]

[`Client::delete_user_phone_number`]: super::Client::delete_user_phone_number*/
    #[derive(Debug, Clone)]
    pub struct DeleteUserPhoneNumber<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteUserPhoneNumber<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/phone_numbers/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserPhoneNumberResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/phone_numbers/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_user_phone_number",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_playbook_task`]

[`Client::get_playbook_task`]: super::Client::get_playbook_task*/
    #[derive(Debug, Clone)]
    pub struct GetPlaybookTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetPlaybookTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/playbook_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookTaskResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbook_tasks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_playbook_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_playbook_task`]

[`Client::update_playbook_task`]: super::Client::update_playbook_task*/
    #[derive(Debug, Clone)]
    pub struct UpdatePlaybookTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdatePlaybookTask, String>,
    }
    impl<'a> UpdatePlaybookTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdatePlaybookTask>,
            <V as std::convert::TryInto<
                types::UpdatePlaybookTask,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdatePlaybookTask` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdatePlaybookTask,
            ) -> types::builder::UpdatePlaybookTask,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/playbook_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookTaskResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdatePlaybookTask::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbook_tasks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_playbook_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_playbook_task`]

[`Client::delete_playbook_task`]: super::Client::delete_playbook_task*/
    #[derive(Debug, Clone)]
    pub struct DeletePlaybookTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeletePlaybookTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/playbook_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookTaskResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbook_tasks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_playbook_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_playbooks`]

[`Client::list_playbooks`]: super::Client::list_playbooks*/
    #[derive(Debug, Clone)]
    pub struct ListPlaybooks<'a> {
        client: &'a super::Client,
        include: Result<Option<types::ListPlaybooksInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListPlaybooks<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListPlaybooksInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListPlaybooksInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/playbooks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookList>, Error<()>> {
            let Self { client, include, page_number, page_size } = self;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/playbooks", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_playbooks",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_playbook`]

[`Client::create_playbook`]: super::Client::create_playbook*/
    #[derive(Debug, Clone)]
    pub struct CreatePlaybook<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewPlaybook, String>,
    }
    impl<'a> CreatePlaybook<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewPlaybook>,
            <V as std::convert::TryInto<types::NewPlaybook>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewPlaybook` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewPlaybook,
            ) -> types::builder::NewPlaybook,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/playbooks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewPlaybook::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/playbooks", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_playbook",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_playbook`]

[`Client::get_playbook`]: super::Client::get_playbook*/
    #[derive(Debug, Clone)]
    pub struct GetPlaybook<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetPlaybookInclude>, String>,
    }
    impl<'a> GetPlaybook<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetPlaybookInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetPlaybookInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/playbooks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbooks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_playbook",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_playbook`]

[`Client::update_playbook`]: super::Client::update_playbook*/
    #[derive(Debug, Clone)]
    pub struct UpdatePlaybook<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdatePlaybook, String>,
    }
    impl<'a> UpdatePlaybook<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdatePlaybook>,
            <V as std::convert::TryInto<
                types::UpdatePlaybook,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdatePlaybook` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdatePlaybook,
            ) -> types::builder::UpdatePlaybook,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/playbooks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdatePlaybook::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbooks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_playbook",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_playbook`]

[`Client::delete_playbook`]: super::Client::delete_playbook*/
    #[derive(Debug, Clone)]
    pub struct DeletePlaybook<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeletePlaybook<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/playbooks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbooks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_playbook",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_playbook_tasks`]

[`Client::list_playbook_tasks`]: super::Client::list_playbook_tasks*/
    #[derive(Debug, Clone)]
    pub struct ListPlaybookTasks<'a> {
        client: &'a super::Client,
        playbook_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListPlaybookTasks<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                playbook_id: Err("playbook_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn playbook_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.playbook_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for playbook_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/playbooks/{playbook_id}/playbook_tasks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookTaskList>, Error<()>> {
            let Self { client, playbook_id, include, page_number, page_size } = self;
            let playbook_id = playbook_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbooks/{}/playbook_tasks", client.baseurl, encode_path(&
                playbook_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_playbook_tasks",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_playbook_task`]

[`Client::create_playbook_task`]: super::Client::create_playbook_task*/
    #[derive(Debug, Clone)]
    pub struct CreatePlaybookTask<'a> {
        client: &'a super::Client,
        playbook_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewPlaybookTask, String>,
    }
    impl<'a> CreatePlaybookTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                playbook_id: Err("playbook_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn playbook_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.playbook_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for playbook_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewPlaybookTask>,
            <V as std::convert::TryInto<
                types::NewPlaybookTask,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewPlaybookTask` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewPlaybookTask,
            ) -> types::builder::NewPlaybookTask,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/playbooks/{playbook_id}/playbook_tasks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PlaybookTaskResponse>, Error<()>> {
            let Self { client, playbook_id, body } = self;
            let playbook_id = playbook_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewPlaybookTask::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/playbooks/{}/playbook_tasks", client.baseurl, encode_path(&
                playbook_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_playbook_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_postmortem_templates`]

[`Client::list_postmortem_templates`]: super::Client::list_postmortem_templates*/
    #[derive(Debug, Clone)]
    pub struct ListPostmortemTemplates<'a> {
        client: &'a super::Client,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListPostmortemTemplates<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/post_mortem_templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PostMortemTemplateList>, Error<()>> {
            let Self { client, include, page_number, page_size } = self;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/post_mortem_templates", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_postmortem_templates",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_postmortem_template`]

[`Client::create_postmortem_template`]: super::Client::create_postmortem_template*/
    #[derive(Debug, Clone)]
    pub struct CreatePostmortemTemplate<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewPostMortemTemplate, String>,
    }
    impl<'a> CreatePostmortemTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewPostMortemTemplate>,
            <V as std::convert::TryInto<
                types::NewPostMortemTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewPostMortemTemplate` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewPostMortemTemplate,
            ) -> types::builder::NewPostMortemTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/post_mortem_templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PostMortemTemplateResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewPostMortemTemplate::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/post_mortem_templates", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_postmortem_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_postmortem_template`]

[`Client::get_postmortem_template`]: super::Client::get_postmortem_template*/
    #[derive(Debug, Clone)]
    pub struct GetPostmortemTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetPostmortemTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/post_mortem_templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PostMortemTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/post_mortem_templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_postmortem_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_postmortem_template`]

[`Client::update_postmortem_template`]: super::Client::update_postmortem_template*/
    #[derive(Debug, Clone)]
    pub struct UpdatePostmortemTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdatePostMortemTemplate, String>,
    }
    impl<'a> UpdatePostmortemTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdatePostMortemTemplate>,
            <V as std::convert::TryInto<
                types::UpdatePostMortemTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdatePostMortemTemplate` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdatePostMortemTemplate,
            ) -> types::builder::UpdatePostMortemTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/post_mortem_templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PostMortemTemplateResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdatePostMortemTemplate::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/post_mortem_templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_postmortem_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_postmortem_template`]

[`Client::delete_postmortem_template`]: super::Client::delete_postmortem_template*/
    #[derive(Debug, Clone)]
    pub struct DeletePostmortemTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeletePostmortemTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/post_mortem_templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PostMortemTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/post_mortem_templates/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_postmortem_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_post_mortems`]

[`Client::list_incident_post_mortems`]: super::Client::list_incident_post_mortems*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentPostMortems<'a> {
        client: &'a super::Client,
        filter_cause_ids: Result<Option<::std::string::String>, String>,
        filter_causes: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_environment_ids: Result<Option<::std::string::String>, String>,
        filter_environments: Result<Option<::std::string::String>, String>,
        filter_functionalities: Result<Option<::std::string::String>, String>,
        filter_functionality_ids: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_gt: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_gte: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_lt: Result<Option<::std::string::String>, String>,
        filter_mitigated_at_lte: Result<Option<::std::string::String>, String>,
        filter_resolved_at_gt: Result<Option<::std::string::String>, String>,
        filter_resolved_at_gte: Result<Option<::std::string::String>, String>,
        filter_resolved_at_lt: Result<Option<::std::string::String>, String>,
        filter_resolved_at_lte: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_service_ids: Result<Option<::std::string::String>, String>,
        filter_services: Result<Option<::std::string::String>, String>,
        filter_severity: Result<Option<::std::string::String>, String>,
        filter_started_at_gt: Result<Option<::std::string::String>, String>,
        filter_started_at_gte: Result<Option<::std::string::String>, String>,
        filter_started_at_lt: Result<Option<::std::string::String>, String>,
        filter_started_at_lte: Result<Option<::std::string::String>, String>,
        filter_status: Result<Option<::std::string::String>, String>,
        filter_team_ids: Result<Option<::std::string::String>, String>,
        filter_teams: Result<Option<::std::string::String>, String>,
        filter_type: Result<Option<::std::string::String>, String>,
        filter_type_ids: Result<Option<::std::string::String>, String>,
        filter_types: Result<Option<::std::string::String>, String>,
        filter_user_id: Result<Option<i64>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListIncidentPostMortems<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_cause_ids: Ok(None),
                filter_causes: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_environment_ids: Ok(None),
                filter_environments: Ok(None),
                filter_functionalities: Ok(None),
                filter_functionality_ids: Ok(None),
                filter_mitigated_at_gt: Ok(None),
                filter_mitigated_at_gte: Ok(None),
                filter_mitigated_at_lt: Ok(None),
                filter_mitigated_at_lte: Ok(None),
                filter_resolved_at_gt: Ok(None),
                filter_resolved_at_gte: Ok(None),
                filter_resolved_at_lt: Ok(None),
                filter_resolved_at_lte: Ok(None),
                filter_search: Ok(None),
                filter_service_ids: Ok(None),
                filter_services: Ok(None),
                filter_severity: Ok(None),
                filter_started_at_gt: Ok(None),
                filter_started_at_gte: Ok(None),
                filter_started_at_lt: Ok(None),
                filter_started_at_lte: Ok(None),
                filter_status: Ok(None),
                filter_team_ids: Ok(None),
                filter_teams: Ok(None),
                filter_type: Ok(None),
                filter_type_ids: Ok(None),
                filter_types: Ok(None),
                filter_user_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_cause_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_cause_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_cause_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_causes<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_causes = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_causes failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_environment_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_environment_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_environment_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_environments<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_environments = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_environments failed"
                        .to_string()
                });
            self
        }
        pub fn filter_functionalities<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_functionalities = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_functionalities failed"
                        .to_string()
                });
            self
        }
        pub fn filter_functionality_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_functionality_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_functionality_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_mitigated_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_mitigated_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_mitigated_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_resolved_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_resolved_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_resolved_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_service_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_service_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_service_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_services<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_services = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_services failed"
                        .to_string()
                });
            self
        }
        pub fn filter_severity<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_severity = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_severity failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_status failed"
                        .to_string()
                });
            self
        }
        pub fn filter_team_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_team_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_team_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_teams<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_teams = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_teams failed"
                        .to_string()
                });
            self
        }
        pub fn filter_type<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_type = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_type failed"
                        .to_string()
                });
            self
        }
        pub fn filter_type_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_type_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_type_ids failed"
                        .to_string()
                });
            self
        }
        pub fn filter_types<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_types = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_types failed"
                        .to_string()
                });
            self
        }
        pub fn filter_user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.filter_user_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `i64` for filter_user_id failed".to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/post_mortems`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPostMortemList>, Error<()>> {
            let Self {
                client,
                filter_cause_ids,
                filter_causes,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_environment_ids,
                filter_environments,
                filter_functionalities,
                filter_functionality_ids,
                filter_mitigated_at_gt,
                filter_mitigated_at_gte,
                filter_mitigated_at_lt,
                filter_mitigated_at_lte,
                filter_resolved_at_gt,
                filter_resolved_at_gte,
                filter_resolved_at_lt,
                filter_resolved_at_lte,
                filter_search,
                filter_service_ids,
                filter_services,
                filter_severity,
                filter_started_at_gt,
                filter_started_at_gte,
                filter_started_at_lt,
                filter_started_at_lte,
                filter_status,
                filter_team_ids,
                filter_teams,
                filter_type,
                filter_type_ids,
                filter_types,
                filter_user_id,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_cause_ids = filter_cause_ids.map_err(Error::InvalidRequest)?;
            let filter_causes = filter_causes.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_environment_ids = filter_environment_ids
                .map_err(Error::InvalidRequest)?;
            let filter_environments = filter_environments
                .map_err(Error::InvalidRequest)?;
            let filter_functionalities = filter_functionalities
                .map_err(Error::InvalidRequest)?;
            let filter_functionality_ids = filter_functionality_ids
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_gt = filter_mitigated_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_gte = filter_mitigated_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_lt = filter_mitigated_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_mitigated_at_lte = filter_mitigated_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_gt = filter_resolved_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_gte = filter_resolved_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_lt = filter_resolved_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_resolved_at_lte = filter_resolved_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_service_ids = filter_service_ids.map_err(Error::InvalidRequest)?;
            let filter_services = filter_services.map_err(Error::InvalidRequest)?;
            let filter_severity = filter_severity.map_err(Error::InvalidRequest)?;
            let filter_started_at_gt = filter_started_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_gte = filter_started_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lt = filter_started_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lte = filter_started_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_status = filter_status.map_err(Error::InvalidRequest)?;
            let filter_team_ids = filter_team_ids.map_err(Error::InvalidRequest)?;
            let filter_teams = filter_teams.map_err(Error::InvalidRequest)?;
            let filter_type = filter_type.map_err(Error::InvalidRequest)?;
            let filter_type_ids = filter_type_ids.map_err(Error::InvalidRequest)?;
            let filter_types = filter_types.map_err(Error::InvalidRequest)?;
            let filter_user_id = filter_user_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/post_mortems", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[cause_ids]",
                        &filter_cause_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[causes]", &filter_causes),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[environment_ids]",
                        &filter_environment_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[environments]",
                        &filter_environments,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[functionalities]",
                        &filter_functionalities,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[functionality_ids]",
                        &filter_functionality_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][gt]",
                        &filter_mitigated_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][gte]",
                        &filter_mitigated_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][lt]",
                        &filter_mitigated_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[mitigated_at][lte]",
                        &filter_mitigated_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][gt]",
                        &filter_resolved_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][gte]",
                        &filter_resolved_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][lt]",
                        &filter_resolved_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[resolved_at][lte]",
                        &filter_resolved_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[service_ids]",
                        &filter_service_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[services]",
                        &filter_services,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[severity]",
                        &filter_severity,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gt]",
                        &filter_started_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gte]",
                        &filter_started_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lt]",
                        &filter_started_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lte]",
                        &filter_started_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[status]", &filter_status),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[team_ids]",
                        &filter_team_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[teams]", &filter_teams),
                )
                .query(&progenitor_client::QueryParam::new("filter[type]", &filter_type))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[type_ids]",
                        &filter_type_ids,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[types]", &filter_types),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[user_id]",
                        &filter_user_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_post_mortems",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_incident_postmortem`]

[`Client::list_incident_postmortem`]: super::Client::list_incident_postmortem*/
    #[derive(Debug, Clone)]
    pub struct ListIncidentPostmortem<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> ListIncidentPostmortem<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/post_mortems/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPostMortemResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/post_mortems/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_incident_postmortem",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_postmortem`]

[`Client::update_incident_postmortem`]: super::Client::update_incident_postmortem*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentPostmortem<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentPostMortem, String>,
    }
    impl<'a> UpdateIncidentPostmortem<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentPostMortem>,
            <V as std::convert::TryInto<
                types::UpdateIncidentPostMortem,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentPostMortem` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentPostMortem,
            ) -> types::builder::UpdateIncidentPostMortem,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/post_mortems/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentPostMortemResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentPostMortem::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/post_mortems/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_postmortem",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_pulses`]

[`Client::list_pulses`]: super::Client::list_pulses*/
    #[derive(Debug, Clone)]
    pub struct ListPulses<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_ended_at_gt: Result<Option<::std::string::String>, String>,
        filter_ended_at_gte: Result<Option<::std::string::String>, String>,
        filter_ended_at_lt: Result<Option<::std::string::String>, String>,
        filter_ended_at_lte: Result<Option<::std::string::String>, String>,
        filter_environments: Result<Option<::std::string::String>, String>,
        filter_labels: Result<Option<::std::string::String>, String>,
        filter_refs: Result<Option<::std::string::String>, String>,
        filter_services: Result<Option<::std::string::String>, String>,
        filter_source: Result<Option<::std::string::String>, String>,
        filter_started_at_gt: Result<Option<::std::string::String>, String>,
        filter_started_at_gte: Result<Option<::std::string::String>, String>,
        filter_started_at_lt: Result<Option<::std::string::String>, String>,
        filter_started_at_lte: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListPulses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_ended_at_gt: Ok(None),
                filter_ended_at_gte: Ok(None),
                filter_ended_at_lt: Ok(None),
                filter_ended_at_lte: Ok(None),
                filter_environments: Ok(None),
                filter_labels: Ok(None),
                filter_refs: Ok(None),
                filter_services: Ok(None),
                filter_source: Ok(None),
                filter_started_at_gt: Ok(None),
                filter_started_at_gte: Ok(None),
                filter_started_at_lt: Ok(None),
                filter_started_at_lte: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_ended_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_ended_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_ended_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_environments<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_environments = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_environments failed"
                        .to_string()
                });
            self
        }
        pub fn filter_labels<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_labels = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_labels failed"
                        .to_string()
                });
            self
        }
        pub fn filter_refs<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_refs = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_refs failed"
                        .to_string()
                });
            self
        }
        pub fn filter_services<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_services = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_services failed"
                        .to_string()
                });
            self
        }
        pub fn filter_source<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_source = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_source failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_started_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_started_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_started_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/pulses`
        pub async fn send(self) -> Result<ResponseValue<types::PulseList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_ended_at_gt,
                filter_ended_at_gte,
                filter_ended_at_lt,
                filter_ended_at_lte,
                filter_environments,
                filter_labels,
                filter_refs,
                filter_services,
                filter_source,
                filter_started_at_gt,
                filter_started_at_gte,
                filter_started_at_lt,
                filter_started_at_lte,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_ended_at_gt = filter_ended_at_gt.map_err(Error::InvalidRequest)?;
            let filter_ended_at_gte = filter_ended_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_ended_at_lt = filter_ended_at_lt.map_err(Error::InvalidRequest)?;
            let filter_ended_at_lte = filter_ended_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_environments = filter_environments
                .map_err(Error::InvalidRequest)?;
            let filter_labels = filter_labels.map_err(Error::InvalidRequest)?;
            let filter_refs = filter_refs.map_err(Error::InvalidRequest)?;
            let filter_services = filter_services.map_err(Error::InvalidRequest)?;
            let filter_source = filter_source.map_err(Error::InvalidRequest)?;
            let filter_started_at_gt = filter_started_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_gte = filter_started_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lt = filter_started_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_started_at_lte = filter_started_at_lte
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/pulses", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][gt]",
                        &filter_ended_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][gte]",
                        &filter_ended_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][lt]",
                        &filter_ended_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[ended_at][lte]",
                        &filter_ended_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[environments]",
                        &filter_environments,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[labels]", &filter_labels),
                )
                .query(&progenitor_client::QueryParam::new("filter[refs]", &filter_refs))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[services]",
                        &filter_services,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[source]", &filter_source),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gt]",
                        &filter_started_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][gte]",
                        &filter_started_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lt]",
                        &filter_started_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[started_at][lte]",
                        &filter_started_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_pulses",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_pulse`]

[`Client::create_pulse`]: super::Client::create_pulse*/
    #[derive(Debug, Clone)]
    pub struct CreatePulse<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewPulse, String>,
    }
    impl<'a> CreatePulse<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewPulse>,
            <V as std::convert::TryInto<types::NewPulse>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| format!("conversion to `NewPulse` for body failed: {}", s));
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewPulse) -> types::builder::NewPulse,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/pulses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PulseResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewPulse::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/pulses", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_pulse",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_pulse`]

[`Client::get_pulse`]: super::Client::get_pulse*/
    #[derive(Debug, Clone)]
    pub struct GetPulse<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetPulse<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/pulses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PulseResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/pulses/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_pulse",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_pulse`]

[`Client::update_pulse`]: super::Client::update_pulse*/
    #[derive(Debug, Clone)]
    pub struct UpdatePulse<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdatePulse, String>,
    }
    impl<'a> UpdatePulse<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdatePulse>,
            <V as std::convert::TryInto<types::UpdatePulse>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdatePulse` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdatePulse,
            ) -> types::builder::UpdatePulse,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/pulses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::PulseResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdatePulse::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/pulses/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_pulse",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_retrospective_configurations`]

[`Client::list_retrospective_configurations`]: super::Client::list_retrospective_configurations*/
    #[derive(Debug, Clone)]
    pub struct ListRetrospectiveConfigurations<'a> {
        client: &'a super::Client,
        filter_kind: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListRetrospectiveConfigurationsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListRetrospectiveConfigurations<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_kind: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListRetrospectiveConfigurationsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListRetrospectiveConfigurationsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_configurations`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveConfigurationList>, Error<()>> {
            let Self { client, filter_kind, include, page_number, page_size } = self;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/retrospective_configurations", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_retrospective_configurations",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_retrospective_configuration`]

[`Client::get_retrospective_configuration`]: super::Client::get_retrospective_configuration*/
    #[derive(Debug, Clone)]
    pub struct GetRetrospectiveConfiguration<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetRetrospectiveConfigurationInclude>, String>,
    }
    impl<'a> GetRetrospectiveConfiguration<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetRetrospectiveConfigurationInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetRetrospectiveConfigurationInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_configurations/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::RetrospectiveConfigurationResponse>,
            Error<()>,
        > {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_configurations/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_retrospective_configuration",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_retrospective_configuration`]

[`Client::update_retrospective_configuration`]: super::Client::update_retrospective_configuration*/
    #[derive(Debug, Clone)]
    pub struct UpdateRetrospectiveConfiguration<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateRetrospectiveConfiguration, String>,
    }
    impl<'a> UpdateRetrospectiveConfiguration<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateRetrospectiveConfiguration>,
            <V as std::convert::TryInto<
                types::UpdateRetrospectiveConfiguration,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateRetrospectiveConfiguration` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateRetrospectiveConfiguration,
            ) -> types::builder::UpdateRetrospectiveConfiguration,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/retrospective_configurations/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::RetrospectiveConfigurationResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateRetrospectiveConfiguration::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_configurations/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_retrospective_configuration",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_retrospective_process_group_step`]

[`Client::get_retrospective_process_group_step`]: super::Client::get_retrospective_process_group_step*/
    #[derive(Debug, Clone)]
    pub struct GetRetrospectiveProcessGroupStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetRetrospectiveProcessGroupStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_process_group_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::RetrospectiveProcessGroupStepResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_group_steps/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_retrospective_process_group_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_retrospective_process_group_step`]

[`Client::update_retrospective_process_group_step`]: super::Client::update_retrospective_process_group_step*/
    #[derive(Debug, Clone)]
    pub struct UpdateRetrospectiveProcessGroupStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateRetrospectiveProcessGroupStep, String>,
    }
    impl<'a> UpdateRetrospectiveProcessGroupStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateRetrospectiveProcessGroupStep>,
            <V as std::convert::TryInto<
                types::UpdateRetrospectiveProcessGroupStep,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateRetrospectiveProcessGroupStep` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateRetrospectiveProcessGroupStep,
            ) -> types::builder::UpdateRetrospectiveProcessGroupStep,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/retrospective_process_group_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::RetrospectiveProcessGroupStepResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateRetrospectiveProcessGroupStep::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_group_steps/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_retrospective_process_group_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_retrospective_process_group_step`]

[`Client::delete_retrospective_process_group_step`]: super::Client::delete_retrospective_process_group_step*/
    #[derive(Debug, Clone)]
    pub struct DeleteRetrospectiveProcessGroupStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteRetrospectiveProcessGroupStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/retrospective_process_group_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::RetrospectiveProcessGroupStepResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_group_steps/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_retrospective_process_group_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_retrospective_process_group`]

[`Client::get_retrospective_process_group`]: super::Client::get_retrospective_process_group*/
    #[derive(Debug, Clone)]
    pub struct GetRetrospectiveProcessGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetRetrospectiveProcessGroupInclude>, String>,
    }
    impl<'a> GetRetrospectiveProcessGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetRetrospectiveProcessGroupInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetRetrospectiveProcessGroupInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_process_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessGroupResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_retrospective_process_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_retrospective_process_group`]

[`Client::update_retrospective_process_group`]: super::Client::update_retrospective_process_group*/
    #[derive(Debug, Clone)]
    pub struct UpdateRetrospectiveProcessGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateRetrospectiveProcessGroup, String>,
    }
    impl<'a> UpdateRetrospectiveProcessGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateRetrospectiveProcessGroup>,
            <V as std::convert::TryInto<
                types::UpdateRetrospectiveProcessGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateRetrospectiveProcessGroup` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateRetrospectiveProcessGroup,
            ) -> types::builder::UpdateRetrospectiveProcessGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/retrospective_process_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessGroupResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateRetrospectiveProcessGroup::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_retrospective_process_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_retrospective_process_group`]

[`Client::delete_retrospective_process_group`]: super::Client::delete_retrospective_process_group*/
    #[derive(Debug, Clone)]
    pub struct DeleteRetrospectiveProcessGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteRetrospectiveProcessGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/retrospective_process_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessGroupResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_retrospective_process_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_retrospective_process_group_steps`]

[`Client::list_retrospective_process_group_steps`]: super::Client::list_retrospective_process_group_steps*/
    #[derive(Debug, Clone)]
    pub struct ListRetrospectiveProcessGroupSteps<'a> {
        client: &'a super::Client,
        retrospective_process_group_id: Result<::std::string::String, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_retrospective_step_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListRetrospectiveProcessGroupSteps<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                retrospective_process_group_id: Err(
                    "retrospective_process_group_id was not initialized".to_string(),
                ),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_retrospective_step_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn retrospective_process_group_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.retrospective_process_group_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for retrospective_process_group_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_retrospective_step_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_retrospective_step_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_retrospective_step_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_process_groups/{retrospective_process_group_id}/steps`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessGroupStepList>, Error<()>> {
            let Self {
                client,
                retrospective_process_group_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_retrospective_step_id,
                include,
                page_number,
                page_size,
            } = self;
            let retrospective_process_group_id = retrospective_process_group_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_retrospective_step_id = filter_retrospective_step_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_groups/{}/steps", client.baseurl,
                encode_path(& retrospective_process_group_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[retrospective_step_id]",
                        &filter_retrospective_step_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_retrospective_process_group_steps",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_retrospective_process_group_step`]

[`Client::create_retrospective_process_group_step`]: super::Client::create_retrospective_process_group_step*/
    #[derive(Debug, Clone)]
    pub struct CreateRetrospectiveProcessGroupStep<'a> {
        client: &'a super::Client,
        retrospective_process_group_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewRetrospectiveProcessGroupStep, String>,
    }
    impl<'a> CreateRetrospectiveProcessGroupStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                retrospective_process_group_id: Err(
                    "retrospective_process_group_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn retrospective_process_group_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.retrospective_process_group_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for retrospective_process_group_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewRetrospectiveProcessGroupStep>,
            <V as std::convert::TryInto<
                types::NewRetrospectiveProcessGroupStep,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewRetrospectiveProcessGroupStep` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewRetrospectiveProcessGroupStep,
            ) -> types::builder::NewRetrospectiveProcessGroupStep,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/retrospective_process_groups/{retrospective_process_group_id}/steps`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::RetrospectiveProcessGroupStepResponse>,
            Error<()>,
        > {
            let Self { client, retrospective_process_group_id, body } = self;
            let retrospective_process_group_id = retrospective_process_group_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewRetrospectiveProcessGroupStep::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_process_groups/{}/steps", client.baseurl,
                encode_path(& retrospective_process_group_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_retrospective_process_group_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_retrospective_processes`]

[`Client::list_retrospective_processes`]: super::Client::list_retrospective_processes*/
    #[derive(Debug, Clone)]
    pub struct ListRetrospectiveProcesses<'a> {
        client: &'a super::Client,
        include: Result<Option<types::ListRetrospectiveProcessesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListRetrospectiveProcesses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListRetrospectiveProcessesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListRetrospectiveProcessesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_processes`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessList>, Error<()>> {
            let Self { client, include, page_number, page_size } = self;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/retrospective_processes", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_retrospective_processes",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_retrospective_process`]

[`Client::create_retrospective_process`]: super::Client::create_retrospective_process*/
    #[derive(Debug, Clone)]
    pub struct CreateRetrospectiveProcess<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewRetrospectiveProcess, String>,
    }
    impl<'a> CreateRetrospectiveProcess<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewRetrospectiveProcess>,
            <V as std::convert::TryInto<
                types::NewRetrospectiveProcess,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewRetrospectiveProcess` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewRetrospectiveProcess,
            ) -> types::builder::NewRetrospectiveProcess,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/retrospective_processes`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewRetrospectiveProcess::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/retrospective_processes", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_retrospective_process",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_retrospective_process`]

[`Client::get_retrospective_process`]: super::Client::get_retrospective_process*/
    #[derive(Debug, Clone)]
    pub struct GetRetrospectiveProcess<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetRetrospectiveProcessInclude>, String>,
    }
    impl<'a> GetRetrospectiveProcess<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetRetrospectiveProcessInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetRetrospectiveProcessInclude` for include failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_processes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_retrospective_process",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_retrospective_process`]

[`Client::update_retrospective_process`]: super::Client::update_retrospective_process*/
    #[derive(Debug, Clone)]
    pub struct UpdateRetrospectiveProcess<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateRetrospectiveProcess, String>,
    }
    impl<'a> UpdateRetrospectiveProcess<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateRetrospectiveProcess>,
            <V as std::convert::TryInto<
                types::UpdateRetrospectiveProcess,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateRetrospectiveProcess` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateRetrospectiveProcess,
            ) -> types::builder::UpdateRetrospectiveProcess,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/retrospective_processes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateRetrospectiveProcess::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_retrospective_process",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_retrospective_process`]

[`Client::delete_retrospective_process`]: super::Client::delete_retrospective_process*/
    #[derive(Debug, Clone)]
    pub struct DeleteRetrospectiveProcess<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteRetrospectiveProcess<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/retrospective_processes/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_retrospective_process",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_retrospective_process_groups`]

[`Client::list_retrospective_process_groups`]: super::Client::list_retrospective_process_groups*/
    #[derive(Debug, Clone)]
    pub struct ListRetrospectiveProcessGroups<'a> {
        client: &'a super::Client,
        retrospective_process_id: Result<::std::string::String, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_sub_status_id: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListRetrospectiveProcessGroupsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListRetrospectiveProcessGroupsSort>, String>,
    }
    impl<'a> ListRetrospectiveProcessGroups<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                retrospective_process_id: Err(
                    "retrospective_process_id was not initialized".to_string(),
                ),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_sub_status_id: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn retrospective_process_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.retrospective_process_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for retrospective_process_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_sub_status_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_sub_status_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_sub_status_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListRetrospectiveProcessGroupsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListRetrospectiveProcessGroupsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListRetrospectiveProcessGroupsSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListRetrospectiveProcessGroupsSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_processes/{retrospective_process_id}/groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessGroupList>, Error<()>> {
            let Self {
                client,
                retrospective_process_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_sub_status_id,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let retrospective_process_id = retrospective_process_id
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_sub_status_id = filter_sub_status_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}/groups", client.baseurl, encode_path(&
                retrospective_process_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[sub_status_id]",
                        &filter_sub_status_id,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_retrospective_process_groups",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_retrospective_process_group`]

[`Client::create_retrospective_process_group`]: super::Client::create_retrospective_process_group*/
    #[derive(Debug, Clone)]
    pub struct CreateRetrospectiveProcessGroup<'a> {
        client: &'a super::Client,
        retrospective_process_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewRetrospectiveProcessGroup, String>,
    }
    impl<'a> CreateRetrospectiveProcessGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                retrospective_process_id: Err(
                    "retrospective_process_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn retrospective_process_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.retrospective_process_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for retrospective_process_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewRetrospectiveProcessGroup>,
            <V as std::convert::TryInto<
                types::NewRetrospectiveProcessGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewRetrospectiveProcessGroup` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewRetrospectiveProcessGroup,
            ) -> types::builder::NewRetrospectiveProcessGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/retrospective_processes/{retrospective_process_id}/groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveProcessGroupResponse>, Error<()>> {
            let Self { client, retrospective_process_id, body } = self;
            let retrospective_process_id = retrospective_process_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewRetrospectiveProcessGroup::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}/groups", client.baseurl, encode_path(&
                retrospective_process_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_retrospective_process_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_retrospective_steps`]

[`Client::list_retrospective_steps`]: super::Client::list_retrospective_steps*/
    #[derive(Debug, Clone)]
    pub struct ListRetrospectiveSteps<'a> {
        client: &'a super::Client,
        retrospective_process_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListRetrospectiveSteps<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                retrospective_process_id: Err(
                    "retrospective_process_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn retrospective_process_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.retrospective_process_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for retrospective_process_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_processes/{retrospective_process_id}/retrospective_steps`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveStepList>, Error<()>> {
            let Self {
                client,
                retrospective_process_id,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let retrospective_process_id = retrospective_process_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}/retrospective_steps", client.baseurl,
                encode_path(& retrospective_process_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_retrospective_steps",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_retrospective_step`]

[`Client::create_retrospective_step`]: super::Client::create_retrospective_step*/
    #[derive(Debug, Clone)]
    pub struct CreateRetrospectiveStep<'a> {
        client: &'a super::Client,
        retrospective_process_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewRetrospectiveStep, String>,
    }
    impl<'a> CreateRetrospectiveStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                retrospective_process_id: Err(
                    "retrospective_process_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn retrospective_process_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.retrospective_process_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for retrospective_process_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewRetrospectiveStep>,
            <V as std::convert::TryInto<
                types::NewRetrospectiveStep,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewRetrospectiveStep` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewRetrospectiveStep,
            ) -> types::builder::NewRetrospectiveStep,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/retrospective_processes/{retrospective_process_id}/retrospective_steps`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveStepResponse>, Error<()>> {
            let Self { client, retrospective_process_id, body } = self;
            let retrospective_process_id = retrospective_process_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewRetrospectiveStep::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_processes/{}/retrospective_steps", client.baseurl,
                encode_path(& retrospective_process_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_retrospective_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_retrospective_step`]

[`Client::get_retrospective_step`]: super::Client::get_retrospective_step*/
    #[derive(Debug, Clone)]
    pub struct GetRetrospectiveStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetRetrospectiveStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/retrospective_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveStepResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_steps/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_retrospective_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_retrospective_step`]

[`Client::update_retrospective_step`]: super::Client::update_retrospective_step*/
    #[derive(Debug, Clone)]
    pub struct UpdateRetrospectiveStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateRetrospectiveStep, String>,
    }
    impl<'a> UpdateRetrospectiveStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateRetrospectiveStep>,
            <V as std::convert::TryInto<
                types::UpdateRetrospectiveStep,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateRetrospectiveStep` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateRetrospectiveStep,
            ) -> types::builder::UpdateRetrospectiveStep,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/retrospective_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveStepResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateRetrospectiveStep::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_steps/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_retrospective_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_retrospective_step`]

[`Client::delete_retrospective_step`]: super::Client::delete_retrospective_step*/
    #[derive(Debug, Clone)]
    pub struct DeleteRetrospectiveStep<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteRetrospectiveStep<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/retrospective_steps/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RetrospectiveStepResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/retrospective_steps/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_retrospective_step",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_roles`]

[`Client::list_roles`]: super::Client::list_roles*/
    #[derive(Debug, Clone)]
    pub struct ListRoles<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListRoles<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/roles`
        pub async fn send(self) -> Result<ResponseValue<types::RoleList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/roles", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_roles",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_role`]

[`Client::create_role`]: super::Client::create_role*/
    #[derive(Debug, Clone)]
    pub struct CreateRole<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewRole, String>,
    }
    impl<'a> CreateRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewRole>,
            <V as std::convert::TryInto<types::NewRole>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| format!("conversion to `NewRole` for body failed: {}", s));
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewRole) -> types::builder::NewRole,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/roles`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RoleResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewRole::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/roles", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_role`]

[`Client::get_role`]: super::Client::get_role*/
    #[derive(Debug, Clone)]
    pub struct GetRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RoleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_role`]

[`Client::update_role`]: super::Client::update_role*/
    #[derive(Debug, Clone)]
    pub struct UpdateRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateRole, String>,
    }
    impl<'a> UpdateRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateRole>,
            <V as std::convert::TryInto<types::UpdateRole>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateRole` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateRole,
            ) -> types::builder::UpdateRole,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RoleResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdateRole::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_role`]

[`Client::delete_role`]: super::Client::delete_role*/
    #[derive(Debug, Clone)]
    pub struct DeleteRole<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteRole<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/roles/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::RoleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/roles/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_role",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_schedule_rotation_active_day`]

[`Client::get_schedule_rotation_active_day`]: super::Client::get_schedule_rotation_active_day*/
    #[derive(Debug, Clone)]
    pub struct GetScheduleRotationActiveDay<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetScheduleRotationActiveDay<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/schedule_rotation_active_days/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationActiveDayResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotation_active_days/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_schedule_rotation_active_day",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_schedule_rotation_active_day`]

[`Client::update_schedule_rotation_active_day`]: super::Client::update_schedule_rotation_active_day*/
    #[derive(Debug, Clone)]
    pub struct UpdateScheduleRotationActiveDay<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateScheduleRotationActiveDay, String>,
    }
    impl<'a> UpdateScheduleRotationActiveDay<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateScheduleRotationActiveDay>,
            <V as std::convert::TryInto<
                types::UpdateScheduleRotationActiveDay,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateScheduleRotationActiveDay` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateScheduleRotationActiveDay,
            ) -> types::builder::UpdateScheduleRotationActiveDay,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/schedule_rotation_active_days/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationActiveDayResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateScheduleRotationActiveDay::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotation_active_days/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_schedule_rotation_active_day",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_schedule_rotation_active_day`]

[`Client::delete_schedule_rotation_active_day`]: super::Client::delete_schedule_rotation_active_day*/
    #[derive(Debug, Clone)]
    pub struct DeleteScheduleRotationActiveDay<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteScheduleRotationActiveDay<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/schedule_rotation_active_days/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationActiveDayResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotation_active_days/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_schedule_rotation_active_day",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_schedule_rotation_user`]

[`Client::get_schedule_rotation_user`]: super::Client::get_schedule_rotation_user*/
    #[derive(Debug, Clone)]
    pub struct GetScheduleRotationUser<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetScheduleRotationUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/schedule_rotation_users/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationUserResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotation_users/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_schedule_rotation_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_schedule_rotation_user`]

[`Client::update_schedule_rotation_user`]: super::Client::update_schedule_rotation_user*/
    #[derive(Debug, Clone)]
    pub struct UpdateScheduleRotationUser<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateScheduleRotationUser, String>,
    }
    impl<'a> UpdateScheduleRotationUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateScheduleRotationUser>,
            <V as std::convert::TryInto<
                types::UpdateScheduleRotationUser,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateScheduleRotationUser` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateScheduleRotationUser,
            ) -> types::builder::UpdateScheduleRotationUser,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/schedule_rotation_users/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationUserResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateScheduleRotationUser::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotation_users/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_schedule_rotation_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_schedule_rotation_user`]

[`Client::delete_schedule_rotation_user`]: super::Client::delete_schedule_rotation_user*/
    #[derive(Debug, Clone)]
    pub struct DeleteScheduleRotationUser<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteScheduleRotationUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/schedule_rotation_users/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationUserResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotation_users/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_schedule_rotation_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_schedule_rotation`]

[`Client::get_schedule_rotation`]: super::Client::get_schedule_rotation*/
    #[derive(Debug, Clone)]
    pub struct GetScheduleRotation<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetScheduleRotation<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/schedule_rotations/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_schedule_rotation",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_schedule_rotation`]

[`Client::update_schedule_rotation`]: super::Client::update_schedule_rotation*/
    #[derive(Debug, Clone)]
    pub struct UpdateScheduleRotation<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateScheduleRotation, String>,
    }
    impl<'a> UpdateScheduleRotation<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateScheduleRotation>,
            <V as std::convert::TryInto<
                types::UpdateScheduleRotation,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateScheduleRotation` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateScheduleRotation,
            ) -> types::builder::UpdateScheduleRotation,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/schedule_rotations/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateScheduleRotation::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_schedule_rotation",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_schedule_rotation`]

[`Client::delete_schedule_rotation`]: super::Client::delete_schedule_rotation*/
    #[derive(Debug, Clone)]
    pub struct DeleteScheduleRotation<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteScheduleRotation<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/schedule_rotations/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_schedule_rotation",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_schedule_rotation_active_days`]

[`Client::list_schedule_rotation_active_days`]: super::Client::list_schedule_rotation_active_days*/
    #[derive(Debug, Clone)]
    pub struct ListScheduleRotationActiveDays<'a> {
        client: &'a super::Client,
        schedule_rotation_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListScheduleRotationActiveDays<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_rotation_id: Err(
                    "schedule_rotation_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn schedule_rotation_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_rotation_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_rotation_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationActiveDayList>, Error<()>> {
            let Self { client, schedule_rotation_id, include, page_number, page_size } = self;
            let schedule_rotation_id = schedule_rotation_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}/schedule_rotation_active_days", client
                .baseurl, encode_path(& schedule_rotation_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_schedule_rotation_active_days",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_schedule_rotation_active_day`]

[`Client::create_schedule_rotation_active_day`]: super::Client::create_schedule_rotation_active_day*/
    #[derive(Debug, Clone)]
    pub struct CreateScheduleRotationActiveDay<'a> {
        client: &'a super::Client,
        schedule_rotation_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewScheduleRotationActiveDay, String>,
    }
    impl<'a> CreateScheduleRotationActiveDay<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_rotation_id: Err(
                    "schedule_rotation_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn schedule_rotation_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_rotation_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_rotation_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewScheduleRotationActiveDay>,
            <V as std::convert::TryInto<
                types::NewScheduleRotationActiveDay,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewScheduleRotationActiveDay` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewScheduleRotationActiveDay,
            ) -> types::builder::NewScheduleRotationActiveDay,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_active_days`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationActiveDayResponse>, Error<()>> {
            let Self { client, schedule_rotation_id, body } = self;
            let schedule_rotation_id = schedule_rotation_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewScheduleRotationActiveDay::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}/schedule_rotation_active_days", client
                .baseurl, encode_path(& schedule_rotation_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_schedule_rotation_active_day",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_schedule_rotation_users`]

[`Client::list_schedule_rotation_users`]: super::Client::list_schedule_rotation_users*/
    #[derive(Debug, Clone)]
    pub struct ListScheduleRotationUsers<'a> {
        client: &'a super::Client,
        schedule_rotation_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListScheduleRotationUsers<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_rotation_id: Err(
                    "schedule_rotation_id was not initialized".to_string(),
                ),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn schedule_rotation_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_rotation_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_rotation_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationUserList>, Error<()>> {
            let Self { client, schedule_rotation_id, include, page_number, page_size } = self;
            let schedule_rotation_id = schedule_rotation_id
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}/schedule_rotation_users", client.baseurl,
                encode_path(& schedule_rotation_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_schedule_rotation_users",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_schedule_rotation_user`]

[`Client::create_schedule_rotation_user`]: super::Client::create_schedule_rotation_user*/
    #[derive(Debug, Clone)]
    pub struct CreateScheduleRotationUser<'a> {
        client: &'a super::Client,
        schedule_rotation_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewScheduleRotationUser, String>,
    }
    impl<'a> CreateScheduleRotationUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_rotation_id: Err(
                    "schedule_rotation_id was not initialized".to_string(),
                ),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn schedule_rotation_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_rotation_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_rotation_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewScheduleRotationUser>,
            <V as std::convert::TryInto<
                types::NewScheduleRotationUser,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewScheduleRotationUser` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewScheduleRotationUser,
            ) -> types::builder::NewScheduleRotationUser,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/schedule_rotations/{schedule_rotation_id}/schedule_rotation_users`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationUserResponse>, Error<()>> {
            let Self { client, schedule_rotation_id, body } = self;
            let schedule_rotation_id = schedule_rotation_id
                .map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewScheduleRotationUser::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedule_rotations/{}/schedule_rotation_users", client.baseurl,
                encode_path(& schedule_rotation_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_schedule_rotation_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_schedules`]

[`Client::list_schedules`]: super::Client::list_schedules*/
    #[derive(Debug, Clone)]
    pub struct ListSchedules<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListSchedules<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/schedules`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/schedules", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_schedules",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_schedule`]

[`Client::create_schedule`]: super::Client::create_schedule*/
    #[derive(Debug, Clone)]
    pub struct CreateSchedule<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewSchedule, String>,
    }
    impl<'a> CreateSchedule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewSchedule>,
            <V as std::convert::TryInto<types::NewSchedule>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewSchedule` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewSchedule,
            ) -> types::builder::NewSchedule,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/schedules`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewSchedule::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/schedules", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_schedule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_schedule`]

[`Client::get_schedule`]: super::Client::get_schedule*/
    #[derive(Debug, Clone)]
    pub struct GetSchedule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetSchedule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/schedules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_schedule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_schedule`]

[`Client::update_schedule`]: super::Client::update_schedule*/
    #[derive(Debug, Clone)]
    pub struct UpdateSchedule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateSchedule, String>,
    }
    impl<'a> UpdateSchedule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateSchedule>,
            <V as std::convert::TryInto<
                types::UpdateSchedule,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateSchedule` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateSchedule,
            ) -> types::builder::UpdateSchedule,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/schedules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateSchedule::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_schedule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_schedule`]

[`Client::delete_schedule`]: super::Client::delete_schedule*/
    #[derive(Debug, Clone)]
    pub struct DeleteSchedule<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteSchedule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/schedules/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_schedule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_schedule_shifts`]

[`Client::get_schedule_shifts`]: super::Client::get_schedule_shifts*/
    #[derive(Debug, Clone)]
    pub struct GetScheduleShifts<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        from: Result<Option<::std::string::String>, String>,
        to: Result<Option<::std::string::String>, String>,
    }
    impl<'a> GetScheduleShifts<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                from: Ok(None),
                to: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn from<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.from = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for from failed"
                        .to_string()
                });
            self
        }
        pub fn to<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.to = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for to failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/schedules/{id}/shifts`
        pub async fn send(self) -> Result<ResponseValue<types::ShiftList>, Error<()>> {
            let Self { client, id, from, to } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let from = from.map_err(Error::InvalidRequest)?;
            let to = to.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/shifts", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("from", &from))
                .query(&progenitor_client::QueryParam::new("to", &to))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_schedule_shifts",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_on_call_shadows`]

[`Client::list_on_call_shadows`]: super::Client::list_on_call_shadows*/
    #[derive(Debug, Clone)]
    pub struct ListOnCallShadows<'a> {
        client: &'a super::Client,
        schedule_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListOnCallShadows<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_id: Err("schedule_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn schedule_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/schedules/{schedule_id}/on_call_shadows`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallShadowsList>, Error<()>> {
            let Self { client, schedule_id, include, page_number, page_size } = self;
            let schedule_id = schedule_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/on_call_shadows", client.baseurl, encode_path(&
                schedule_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_on_call_shadows",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_on_call_shadow`]

[`Client::create_on_call_shadow`]: super::Client::create_on_call_shadow*/
    #[derive(Debug, Clone)]
    pub struct CreateOnCallShadow<'a> {
        client: &'a super::Client,
        schedule_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewOnCallShadow, String>,
    }
    impl<'a> CreateOnCallShadow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_id: Err("schedule_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn schedule_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewOnCallShadow>,
            <V as std::convert::TryInto<
                types::NewOnCallShadow,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewOnCallShadow` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewOnCallShadow,
            ) -> types::builder::NewOnCallShadow,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/schedules/{schedule_id}/on_call_shadows`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OnCallShadowResponse>, Error<()>> {
            let Self { client, schedule_id, body } = self;
            let schedule_id = schedule_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewOnCallShadow::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/on_call_shadows", client.baseurl, encode_path(&
                schedule_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_on_call_shadow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_override_shifts`]

[`Client::list_override_shifts`]: super::Client::list_override_shifts*/
    #[derive(Debug, Clone)]
    pub struct ListOverrideShifts<'a> {
        client: &'a super::Client,
        schedule_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListOverrideShifts<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_id: Err("schedule_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn schedule_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/schedules/{schedule_id}/override_shifts`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OverrideShiftList>, Error<()>> {
            let Self { client, schedule_id, include, page_number, page_size } = self;
            let schedule_id = schedule_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/override_shifts", client.baseurl, encode_path(&
                schedule_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_override_shifts",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_override_shift`]

[`Client::create_override_shift`]: super::Client::create_override_shift*/
    #[derive(Debug, Clone)]
    pub struct CreateOverrideShift<'a> {
        client: &'a super::Client,
        schedule_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewOverrideShift, String>,
    }
    impl<'a> CreateOverrideShift<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_id: Err("schedule_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn schedule_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewOverrideShift>,
            <V as std::convert::TryInto<
                types::NewOverrideShift,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewOverrideShift` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewOverrideShift,
            ) -> types::builder::NewOverrideShift,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/schedules/{schedule_id}/override_shifts`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::OverrideShiftResponse>, Error<()>> {
            let Self { client, schedule_id, body } = self;
            let schedule_id = schedule_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewOverrideShift::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/override_shifts", client.baseurl, encode_path(&
                schedule_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_override_shift",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_schedule_rotations`]

[`Client::list_schedule_rotations`]: super::Client::list_schedule_rotations*/
    #[derive(Debug, Clone)]
    pub struct ListScheduleRotations<'a> {
        client: &'a super::Client,
        schedule_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListScheduleRotations<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_id: Err("schedule_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn schedule_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/schedules/{schedule_id}/schedule_rotations`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationList>, Error<()>> {
            let Self { client, schedule_id, include, page_number, page_size, sort } = self;
            let schedule_id = schedule_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/schedule_rotations", client.baseurl, encode_path(&
                schedule_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_schedule_rotations",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_schedule_rotation`]

[`Client::create_schedule_rotation`]: super::Client::create_schedule_rotation*/
    #[derive(Debug, Clone)]
    pub struct CreateScheduleRotation<'a> {
        client: &'a super::Client,
        schedule_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewScheduleRotation, String>,
    }
    impl<'a> CreateScheduleRotation<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                schedule_id: Err("schedule_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn schedule_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.schedule_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for schedule_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewScheduleRotation>,
            <V as std::convert::TryInto<
                types::NewScheduleRotation,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewScheduleRotation` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewScheduleRotation,
            ) -> types::builder::NewScheduleRotation,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/schedules/{schedule_id}/schedule_rotations`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ScheduleRotationResponse>, Error<()>> {
            let Self { client, schedule_id, body } = self;
            let schedule_id = schedule_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewScheduleRotation::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/schedules/{}/schedule_rotations", client.baseurl, encode_path(&
                schedule_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_schedule_rotation",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_secrets`]

[`Client::list_secrets`]: super::Client::list_secrets*/
    #[derive(Debug, Clone)]
    pub struct ListSecrets<'a> {
        client: &'a super::Client,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListSecrets<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/secrets`
        pub async fn send(self) -> Result<ResponseValue<types::SecretList>, Error<()>> {
            let Self { client, include, page_number, page_size } = self;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/secrets", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_secrets",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_secret`]

[`Client::create_secret`]: super::Client::create_secret*/
    #[derive(Debug, Clone)]
    pub struct CreateSecret<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewSecret, String>,
    }
    impl<'a> CreateSecret<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewSecret>,
            <V as std::convert::TryInto<types::NewSecret>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewSecret` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewSecret) -> types::builder::NewSecret,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/secrets`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SecretResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewSecret::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/secrets", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_secret",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_secret`]

[`Client::get_secret`]: super::Client::get_secret*/
    #[derive(Debug, Clone)]
    pub struct GetSecret<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetSecret<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/secrets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SecretResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/secrets/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_secret",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_secret`]

[`Client::update_secret`]: super::Client::update_secret*/
    #[derive(Debug, Clone)]
    pub struct UpdateSecret<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateSecret, String>,
    }
    impl<'a> UpdateSecret<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateSecret>,
            <V as std::convert::TryInto<types::UpdateSecret>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateSecret` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateSecret,
            ) -> types::builder::UpdateSecret,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/secrets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SecretResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateSecret::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/secrets/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_secret",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_secret`]

[`Client::delete_secret`]: super::Client::delete_secret*/
    #[derive(Debug, Clone)]
    pub struct DeleteSecret<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteSecret<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/secrets/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SecretResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/secrets/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_secret",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_services`]

[`Client::list_services`]: super::Client::list_services*/
    #[derive(Debug, Clone)]
    pub struct ListServices<'a> {
        client: &'a super::Client,
        filter_alert_broadcast_enabled: Result<Option<bool>, String>,
        filter_backstage_id: Result<Option<::std::string::String>, String>,
        filter_cortex_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_external_id: Result<Option<::std::string::String>, String>,
        filter_incident_broadcast_enabled: Result<Option<bool>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_opslevel_id: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListServices<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_alert_broadcast_enabled: Ok(None),
                filter_backstage_id: Ok(None),
                filter_cortex_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_external_id: Ok(None),
                filter_incident_broadcast_enabled: Ok(None),
                filter_name: Ok(None),
                filter_opslevel_id: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_alert_broadcast_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_alert_broadcast_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_alert_broadcast_enabled failed"
                        .to_string()
                });
            self
        }
        pub fn filter_backstage_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_backstage_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_backstage_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_cortex_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_cortex_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_cortex_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_external_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_external_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_external_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_broadcast_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_incident_broadcast_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_incident_broadcast_enabled failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_opslevel_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_opslevel_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_opslevel_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/services`
        pub async fn send(self) -> Result<ResponseValue<types::ServiceList>, Error<()>> {
            let Self {
                client,
                filter_alert_broadcast_enabled,
                filter_backstage_id,
                filter_cortex_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_external_id,
                filter_incident_broadcast_enabled,
                filter_name,
                filter_opslevel_id,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_alert_broadcast_enabled = filter_alert_broadcast_enabled
                .map_err(Error::InvalidRequest)?;
            let filter_backstage_id = filter_backstage_id
                .map_err(Error::InvalidRequest)?;
            let filter_cortex_id = filter_cortex_id.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_external_id = filter_external_id.map_err(Error::InvalidRequest)?;
            let filter_incident_broadcast_enabled = filter_incident_broadcast_enabled
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_opslevel_id = filter_opslevel_id.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/services", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[alert_broadcast_enabled]",
                        &filter_alert_broadcast_enabled,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[backstage_id]",
                        &filter_backstage_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[cortex_id]",
                        &filter_cortex_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[external_id]",
                        &filter_external_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_broadcast_enabled]",
                        &filter_incident_broadcast_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[opslevel_id]",
                        &filter_opslevel_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_services",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_service`]

[`Client::create_service`]: super::Client::create_service*/
    #[derive(Debug, Clone)]
    pub struct CreateService<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewService, String>,
    }
    impl<'a> CreateService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewService>,
            <V as std::convert::TryInto<types::NewService>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewService` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewService,
            ) -> types::builder::NewService,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/services`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ServiceResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewService::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/services", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_service_catalog_properties`]

[`Client::list_service_catalog_properties`]: super::Client::list_service_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListServiceCatalogProperties<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListServiceCatalogPropertiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListServiceCatalogPropertiesSort>, String>,
    }
    impl<'a> ListServiceCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListServiceCatalogPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListServiceCatalogPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListServiceCatalogPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListServiceCatalogPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/services/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/services/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_service_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_service_catalog_property`]

[`Client::create_service_catalog_property`]: super::Client::create_service_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateServiceCatalogProperty<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogProperty, String>,
    }
    impl<'a> CreateServiceCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogProperty` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogProperty,
            ) -> types::builder::NewCatalogProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/services/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogProperty::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/services/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_service_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_service`]

[`Client::get_service`]: super::Client::get_service*/
    #[derive(Debug, Clone)]
    pub struct GetService<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/services/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ServiceResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/services/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_service`]

[`Client::update_service`]: super::Client::update_service*/
    #[derive(Debug, Clone)]
    pub struct UpdateService<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateService, String>,
    }
    impl<'a> UpdateService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateService>,
            <V as std::convert::TryInto<types::UpdateService>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateService` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateService,
            ) -> types::builder::UpdateService,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/services/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ServiceResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateService::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/services/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_service`]

[`Client::delete_service`]: super::Client::delete_service*/
    #[derive(Debug, Clone)]
    pub struct DeleteService<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteService<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/services/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::ServiceResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/services/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_service",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_service_incidents_chart`]

[`Client::get_service_incidents_chart`]: super::Client::get_service_incidents_chart*/
    #[derive(Debug, Clone)]
    pub struct GetServiceIncidentsChart<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        period: Result<::std::string::String, String>,
    }
    impl<'a> GetServiceIncidentsChart<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                period: Err("period was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn period<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.period = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for period failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/services/{id}/incidents_chart`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentsChartResponse>, Error<()>> {
            let Self { client, id, period } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let period = period.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/services/{}/incidents_chart", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("period", &period))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_service_incidents_chart",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_service_uptime_chart`]

[`Client::get_service_uptime_chart`]: super::Client::get_service_uptime_chart*/
    #[derive(Debug, Clone)]
    pub struct GetServiceUptimeChart<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        period: Result<Option<::std::string::String>, String>,
    }
    impl<'a> GetServiceUptimeChart<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                period: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn period<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.period = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for period failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/services/{id}/uptime_chart`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UptimeChartResponse>, Error<()>> {
            let Self { client, id, period } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let period = period.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/services/{}/uptime_chart", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("period", &period))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_service_uptime_chart",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_severities`]

[`Client::list_severities`]: super::Client::list_severities*/
    #[derive(Debug, Clone)]
    pub struct ListSeverities<'a> {
        client: &'a super::Client,
        filter_color: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_severity: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListSeverities<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_color: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_severity: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_color<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_color = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_color failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_severity<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_severity = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_severity failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/severities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SeverityList>, Error<()>> {
            let Self {
                client,
                filter_color,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_severity,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_color = filter_color.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_severity = filter_severity.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/severities", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[color]", &filter_color),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[severity]",
                        &filter_severity,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_severities",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_severity`]

[`Client::create_severity`]: super::Client::create_severity*/
    #[derive(Debug, Clone)]
    pub struct CreateSeverity<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewSeverity, String>,
    }
    impl<'a> CreateSeverity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewSeverity>,
            <V as std::convert::TryInto<types::NewSeverity>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewSeverity` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewSeverity,
            ) -> types::builder::NewSeverity,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/severities`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SeverityResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewSeverity::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/severities", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_severity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_severity`]

[`Client::get_severity`]: super::Client::get_severity*/
    #[derive(Debug, Clone)]
    pub struct GetSeverity<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetSeverity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/severities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SeverityResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/severities/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_severity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_severity`]

[`Client::update_severity`]: super::Client::update_severity*/
    #[derive(Debug, Clone)]
    pub struct UpdateSeverity<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateSeverity, String>,
    }
    impl<'a> UpdateSeverity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateSeverity>,
            <V as std::convert::TryInto<
                types::UpdateSeverity,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateSeverity` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateSeverity,
            ) -> types::builder::UpdateSeverity,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/severities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SeverityResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateSeverity::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/severities/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_severity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_severity`]

[`Client::delete_severity`]: super::Client::delete_severity*/
    #[derive(Debug, Clone)]
    pub struct DeleteSeverity<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteSeverity<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/severities/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SeverityResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/severities/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_severity",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_shifts`]

[`Client::list_shifts`]: super::Client::list_shifts*/
    #[derive(Debug, Clone)]
    pub struct ListShifts<'a> {
        client: &'a super::Client,
        from: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListShiftsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        schedule_ids: Result<Option<::std::vec::Vec<::std::string::String>>, String>,
        to: Result<Option<::std::string::String>, String>,
        user_ids: Result<Option<::std::vec::Vec<i64>>, String>,
    }
    impl<'a> ListShifts<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                from: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                schedule_ids: Ok(None),
                to: Ok(None),
                user_ids: Ok(None),
            }
        }
        pub fn from<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.from = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for from failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListShiftsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListShiftsInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn schedule_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::vec::Vec<::std::string::String>>,
        {
            self.schedule_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: vec :: Vec < :: std :: string :: String >` for schedule_ids failed"
                        .to_string()
                });
            self
        }
        pub fn to<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.to = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for to failed"
                        .to_string()
                });
            self
        }
        pub fn user_ids<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::vec::Vec<i64>>,
        {
            self.user_ids = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: vec :: Vec < i64 >` for user_ids failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/shifts`
        pub async fn send(self) -> Result<ResponseValue<types::ShiftList>, Error<()>> {
            let Self {
                client,
                from,
                include,
                page_number,
                page_size,
                schedule_ids,
                to,
                user_ids,
            } = self;
            let from = from.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let schedule_ids = schedule_ids.map_err(Error::InvalidRequest)?;
            let to = to.map_err(Error::InvalidRequest)?;
            let user_ids = user_ids.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/shifts", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("from", &from))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(
                    &progenitor_client::QueryParam::new("schedule_ids[]", &schedule_ids),
                )
                .query(&progenitor_client::QueryParam::new("to", &to))
                .query(&progenitor_client::QueryParam::new("user_ids[]", &user_ids))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_shifts",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_sl_as`]

[`Client::list_sl_as`]: super::Client::list_sl_as*/
    #[derive(Debug, Clone)]
    pub struct ListSlAs<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListSlAs<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/slas`
        pub async fn send(self) -> Result<ResponseValue<types::SlaList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/slas", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_sl_as",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_sla`]

[`Client::create_sla`]: super::Client::create_sla*/
    #[derive(Debug, Clone)]
    pub struct CreateSla<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewSla, String>,
    }
    impl<'a> CreateSla<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewSla>,
            <V as std::convert::TryInto<types::NewSla>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| format!("conversion to `NewSla` for body failed: {}", s));
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewSla) -> types::builder::NewSla,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/slas`
        pub async fn send(self) -> Result<ResponseValue<types::SlaResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewSla::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/slas", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_sla",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_sla`]

[`Client::get_sla`]: super::Client::get_sla*/
    #[derive(Debug, Clone)]
    pub struct GetSla<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetSla<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/slas/{id}`
        pub async fn send(self) -> Result<ResponseValue<types::SlaResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/slas/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_sla",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_sla`]

[`Client::update_sla`]: super::Client::update_sla*/
    #[derive(Debug, Clone)]
    pub struct UpdateSla<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateSla, String>,
    }
    impl<'a> UpdateSla<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateSla>,
            <V as std::convert::TryInto<types::UpdateSla>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateSla` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::UpdateSla) -> types::builder::UpdateSla,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/slas/{id}`
        pub async fn send(self) -> Result<ResponseValue<types::SlaResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdateSla::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/slas/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_sla",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_sla`]

[`Client::delete_sla`]: super::Client::delete_sla*/
    #[derive(Debug, Clone)]
    pub struct DeleteSla<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteSla<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/slas/{id}`
        pub async fn send(self) -> Result<ResponseValue<types::SlaResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/slas/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_sla",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_incident_status_pages`]

[`Client::get_incident_status_pages`]: super::Client::get_incident_status_pages*/
    #[derive(Debug, Clone)]
    pub struct GetIncidentStatusPages<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetIncidentStatusPages<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/status-page-events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentStatusPageEventResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-page-events/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_incident_status_pages",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_incident_status_page`]

[`Client::update_incident_status_page`]: super::Client::update_incident_status_page*/
    #[derive(Debug, Clone)]
    pub struct UpdateIncidentStatusPage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateIncidentStatusPageEvent, String>,
    }
    impl<'a> UpdateIncidentStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateIncidentStatusPageEvent>,
            <V as std::convert::TryInto<
                types::UpdateIncidentStatusPageEvent,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateIncidentStatusPageEvent` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateIncidentStatusPageEvent,
            ) -> types::builder::UpdateIncidentStatusPageEvent,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/status-page-events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentStatusPageEventResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateIncidentStatusPageEvent::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-page-events/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_incident_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_incident_status_page`]

[`Client::delete_incident_status_page`]: super::Client::delete_incident_status_page*/
    #[derive(Debug, Clone)]
    pub struct DeleteIncidentStatusPage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteIncidentStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/status-page-events/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentStatusPageEventResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-page-events/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_incident_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_status_pages`]

[`Client::list_status_pages`]: super::Client::list_status_pages*/
    #[derive(Debug, Clone)]
    pub struct ListStatusPages<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListStatusPages<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/status-pages`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/status-pages", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_status_pages",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_status_page`]

[`Client::create_status_page`]: super::Client::create_status_page*/
    #[derive(Debug, Clone)]
    pub struct CreateStatusPage<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewStatusPage, String>,
    }
    impl<'a> CreateStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewStatusPage>,
            <V as std::convert::TryInto<types::NewStatusPage>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewStatusPage` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewStatusPage,
            ) -> types::builder::NewStatusPage,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/status-pages`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewStatusPage::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/status-pages", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_status_page`]

[`Client::get_status_page`]: super::Client::get_status_page*/
    #[derive(Debug, Clone)]
    pub struct GetStatusPage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/status-pages/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-pages/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_status_page`]

[`Client::update_status_page`]: super::Client::update_status_page*/
    #[derive(Debug, Clone)]
    pub struct UpdateStatusPage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateStatusPage, String>,
    }
    impl<'a> UpdateStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateStatusPage>,
            <V as std::convert::TryInto<
                types::UpdateStatusPage,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateStatusPage` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateStatusPage,
            ) -> types::builder::UpdateStatusPage,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/status-pages/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateStatusPage::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-pages/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_status_page`]

[`Client::delete_status_page`]: super::Client::delete_status_page*/
    #[derive(Debug, Clone)]
    pub struct DeleteStatusPage<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteStatusPage<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/status-pages/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-pages/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_status_page",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_status_page_templates`]

[`Client::list_status_page_templates`]: super::Client::list_status_page_templates*/
    #[derive(Debug, Clone)]
    pub struct ListStatusPageTemplates<'a> {
        client: &'a super::Client,
        status_page_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListStatusPageTemplates<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                status_page_id: Err("status_page_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn status_page_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.status_page_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for status_page_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/status-pages/{status_page_id}/templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageTemplateList>, Error<()>> {
            let Self { client, status_page_id, include, page_number, page_size } = self;
            let status_page_id = status_page_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-pages/{}/templates", client.baseurl, encode_path(&
                status_page_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_status_page_templates",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_status_page_template`]

[`Client::create_status_page_template`]: super::Client::create_status_page_template*/
    #[derive(Debug, Clone)]
    pub struct CreateStatusPageTemplate<'a> {
        client: &'a super::Client,
        status_page_id: Result<::std::string::String, String>,
        body: Result<types::builder::StatusPageTemplate, String>,
    }
    impl<'a> CreateStatusPageTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                status_page_id: Err("status_page_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn status_page_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.status_page_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for status_page_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::StatusPageTemplate>,
            <V as std::convert::TryInto<
                types::StatusPageTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `StatusPageTemplate` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::StatusPageTemplate,
            ) -> types::builder::StatusPageTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/status-pages/{status_page_id}/templates`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageTemplateResponse>, Error<()>> {
            let Self { client, status_page_id, body } = self;
            let status_page_id = status_page_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::StatusPageTemplate::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/status-pages/{}/templates", client.baseurl, encode_path(&
                status_page_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_status_page_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_statuses`]

[`Client::list_statuses`]: super::Client::list_statuses*/
    #[derive(Debug, Clone)]
    pub struct ListStatuses<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_enabled: Result<Option<bool>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListStatuses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_enabled: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_enabled failed".to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/statuses`
        pub async fn send(self) -> Result<ResponseValue<types::StatusList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_enabled,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_enabled = filter_enabled.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/statuses", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[enabled]",
                        &filter_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_statuses",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_status`]

[`Client::get_status`]: super::Client::get_status*/
    #[derive(Debug, Clone)]
    pub struct GetStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/statuses/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_sub_statuses`]

[`Client::list_sub_statuses`]: super::Client::list_sub_statuses*/
    #[derive(Debug, Clone)]
    pub struct ListSubStatuses<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_parent_status: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListSubStatuses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_parent_status: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_parent_status<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_parent_status = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_parent_status failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/sub_statuses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SubStatusList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_parent_status,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_parent_status = filter_parent_status
                .map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/sub_statuses", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[parent_status]",
                        &filter_parent_status,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_sub_statuses",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_sub_status`]

[`Client::create_sub_status`]: super::Client::create_sub_status*/
    #[derive(Debug, Clone)]
    pub struct CreateSubStatus<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewSubStatus, String>,
    }
    impl<'a> CreateSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewSubStatus>,
            <V as std::convert::TryInto<types::NewSubStatus>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewSubStatus` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewSubStatus,
            ) -> types::builder::NewSubStatus,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/sub_statuses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SubStatusResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewSubStatus::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/sub_statuses", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_sub_status`]

[`Client::get_sub_status`]: super::Client::get_sub_status*/
    #[derive(Debug, Clone)]
    pub struct GetSubStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/sub_statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SubStatusResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/sub_statuses/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_sub_status`]

[`Client::update_sub_status`]: super::Client::update_sub_status*/
    #[derive(Debug, Clone)]
    pub struct UpdateSubStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateSubStatus, String>,
    }
    impl<'a> UpdateSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateSubStatus>,
            <V as std::convert::TryInto<
                types::UpdateSubStatus,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateSubStatus` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateSubStatus,
            ) -> types::builder::UpdateSubStatus,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/sub_statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SubStatusResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateSubStatus::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/sub_statuses/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_sub_status`]

[`Client::delete_sub_status`]: super::Client::delete_sub_status*/
    #[derive(Debug, Clone)]
    pub struct DeleteSubStatus<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteSubStatus<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/sub_statuses/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::SubStatusResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/sub_statuses/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_sub_status",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_teams`]

[`Client::list_teams`]: super::Client::list_teams*/
    #[derive(Debug, Clone)]
    pub struct ListTeams<'a> {
        client: &'a super::Client,
        filter_alert_broadcast_enabled: Result<Option<bool>, String>,
        filter_backstage_id: Result<Option<::std::string::String>, String>,
        filter_color: Result<Option<::std::string::String>, String>,
        filter_cortex_id: Result<Option<::std::string::String>, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_external_id: Result<Option<::std::string::String>, String>,
        filter_incident_broadcast_enabled: Result<Option<bool>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_opslevel_id: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListTeamsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListTeams<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_alert_broadcast_enabled: Ok(None),
                filter_backstage_id: Ok(None),
                filter_color: Ok(None),
                filter_cortex_id: Ok(None),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_external_id: Ok(None),
                filter_incident_broadcast_enabled: Ok(None),
                filter_name: Ok(None),
                filter_opslevel_id: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_alert_broadcast_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_alert_broadcast_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_alert_broadcast_enabled failed"
                        .to_string()
                });
            self
        }
        pub fn filter_backstage_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_backstage_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_backstage_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_color<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_color = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_color failed"
                        .to_string()
                });
            self
        }
        pub fn filter_cortex_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_cortex_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_cortex_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_external_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_external_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_external_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_incident_broadcast_enabled<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_incident_broadcast_enabled = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_incident_broadcast_enabled failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_opslevel_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_opslevel_id = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_opslevel_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListTeamsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListTeamsInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/teams`
        pub async fn send(self) -> Result<ResponseValue<types::TeamList>, Error<()>> {
            let Self {
                client,
                filter_alert_broadcast_enabled,
                filter_backstage_id,
                filter_color,
                filter_cortex_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_external_id,
                filter_incident_broadcast_enabled,
                filter_name,
                filter_opslevel_id,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_alert_broadcast_enabled = filter_alert_broadcast_enabled
                .map_err(Error::InvalidRequest)?;
            let filter_backstage_id = filter_backstage_id
                .map_err(Error::InvalidRequest)?;
            let filter_color = filter_color.map_err(Error::InvalidRequest)?;
            let filter_cortex_id = filter_cortex_id.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_external_id = filter_external_id.map_err(Error::InvalidRequest)?;
            let filter_incident_broadcast_enabled = filter_incident_broadcast_enabled
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_opslevel_id = filter_opslevel_id.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/teams", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[alert_broadcast_enabled]",
                        &filter_alert_broadcast_enabled,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[backstage_id]",
                        &filter_backstage_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[color]", &filter_color),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[cortex_id]",
                        &filter_cortex_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[external_id]",
                        &filter_external_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[incident_broadcast_enabled]",
                        &filter_incident_broadcast_enabled,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[opslevel_id]",
                        &filter_opslevel_id,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_teams",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_team`]

[`Client::create_team`]: super::Client::create_team*/
    #[derive(Debug, Clone)]
    pub struct CreateTeam<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewTeam, String>,
    }
    impl<'a> CreateTeam<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewTeam>,
            <V as std::convert::TryInto<types::NewTeam>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| format!("conversion to `NewTeam` for body failed: {}", s));
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(types::builder::NewTeam) -> types::builder::NewTeam,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/teams`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::TeamResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewTeam::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/teams", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_team",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_group_catalog_properties`]

[`Client::list_group_catalog_properties`]: super::Client::list_group_catalog_properties*/
    #[derive(Debug, Clone)]
    pub struct ListGroupCatalogProperties<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListGroupCatalogPropertiesInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListGroupCatalogPropertiesSort>, String>,
    }
    impl<'a> ListGroupCatalogProperties<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListGroupCatalogPropertiesInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListGroupCatalogPropertiesInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListGroupCatalogPropertiesSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListGroupCatalogPropertiesSort` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/teams/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_kind,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/teams/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_group_catalog_properties",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_group_catalog_property`]

[`Client::create_group_catalog_property`]: super::Client::create_group_catalog_property*/
    #[derive(Debug, Clone)]
    pub struct CreateGroupCatalogProperty<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewCatalogProperty, String>,
    }
    impl<'a> CreateGroupCatalogProperty<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewCatalogProperty>,
            <V as std::convert::TryInto<
                types::NewCatalogProperty,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewCatalogProperty` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewCatalogProperty,
            ) -> types::builder::NewCatalogProperty,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/teams/properties`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::CatalogPropertyResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewCatalogProperty::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/teams/properties", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_group_catalog_property",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_team`]

[`Client::get_team`]: super::Client::get_team*/
    #[derive(Debug, Clone)]
    pub struct GetTeam<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetTeamInclude>, String>,
    }
    impl<'a> GetTeam<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetTeamInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetTeamInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/teams/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::TeamResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/teams/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_team",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_team`]

[`Client::update_team`]: super::Client::update_team*/
    #[derive(Debug, Clone)]
    pub struct UpdateTeam<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateTeam, String>,
    }
    impl<'a> UpdateTeam<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateTeam>,
            <V as std::convert::TryInto<types::UpdateTeam>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateTeam` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateTeam,
            ) -> types::builder::UpdateTeam,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/teams/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::TeamResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdateTeam::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/teams/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_team",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_team`]

[`Client::delete_team`]: super::Client::delete_team*/
    #[derive(Debug, Clone)]
    pub struct DeleteTeam<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteTeam<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/teams/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::TeamResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/teams/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_team",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_team_incidents_chart`]

[`Client::get_team_incidents_chart`]: super::Client::get_team_incidents_chart*/
    #[derive(Debug, Clone)]
    pub struct GetTeamIncidentsChart<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        period: Result<::std::string::String, String>,
    }
    impl<'a> GetTeamIncidentsChart<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                period: Err("period was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn period<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.period = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for period failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/teams/{id}/incidents_chart`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::IncidentsChartResponse>, Error<()>> {
            let Self { client, id, period } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let period = period.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/teams/{}/incidents_chart", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("period", &period))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_team_incidents_chart",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_status_page_template`]

[`Client::get_status_page_template`]: super::Client::get_status_page_template*/
    #[derive(Debug, Clone)]
    pub struct GetStatusPageTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetStatusPageTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/templates/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_status_page_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_status_page_template`]

[`Client::update_status_page_template`]: super::Client::update_status_page_template*/
    #[derive(Debug, Clone)]
    pub struct UpdateStatusPageTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::StatusPageTemplate, String>,
    }
    impl<'a> UpdateStatusPageTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::StatusPageTemplate>,
            <V as std::convert::TryInto<
                types::StatusPageTemplate,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `StatusPageTemplate` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::StatusPageTemplate,
            ) -> types::builder::StatusPageTemplate,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageTemplateResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::StatusPageTemplate::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/templates/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_status_page_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_status_page_template`]

[`Client::delete_status_page_template`]: super::Client::delete_status_page_template*/
    #[derive(Debug, Clone)]
    pub struct DeleteStatusPageTemplate<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteStatusPageTemplate<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/templates/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::StatusPageTemplateResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/templates/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_status_page_template",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_users`]

[`Client::list_users`]: super::Client::list_users*/
    #[derive(Debug, Clone)]
    pub struct ListUsers<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_email: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListUsersInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListUsersSort>, String>,
    }
    impl<'a> ListUsers<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_email: Ok(None),
                filter_search: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_email<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_email = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_email failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListUsersInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListUsersInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListUsersSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListUsersSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/users`
        pub async fn send(self) -> Result<ResponseValue<types::UserList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_email,
                filter_search,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_email = filter_email.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/users", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[email]", &filter_email),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_users",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_current_user`]

[`Client::get_current_user`]: super::Client::get_current_user*/
    #[derive(Debug, Clone)]
    pub struct GetCurrentUser<'a> {
        client: &'a super::Client,
    }
    impl<'a> GetCurrentUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self { client: client }
        }
        ///Sends a `GET` request to `/v1/users/me`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserResponse>, Error<()>> {
            let Self { client } = self;
            let url = format!("{}/v1/users/me", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_current_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_user`]

[`Client::get_user`]: super::Client::get_user*/
    #[derive(Debug, Clone)]
    pub struct GetUser<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetUserInclude>, String>,
    }
    impl<'a> GetUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetUserInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetUserInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/users/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_user`]

[`Client::update_user`]: super::Client::update_user*/
    #[derive(Debug, Clone)]
    pub struct UpdateUser<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateUser, String>,
    }
    impl<'a> UpdateUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateUser>,
            <V as std::convert::TryInto<types::UpdateUser>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateUser` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateUser,
            ) -> types::builder::UpdateUser,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/users/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| types::UpdateUser::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_user`]

[`Client::delete_user`]: super::Client::delete_user*/
    #[derive(Debug, Clone)]
    pub struct DeleteUser<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteUser<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/users/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_user",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_user_email_addresses`]

[`Client::get_user_email_addresses`]: super::Client::get_user_email_addresses*/
    #[derive(Debug, Clone)]
    pub struct GetUserEmailAddresses<'a> {
        client: &'a super::Client,
        user_id: Result<::std::string::String, String>,
    }
    impl<'a> GetUserEmailAddresses<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                user_id: Err("user_id was not initialized".to_string()),
            }
        }
        pub fn user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.user_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for user_id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/users/{user_id}/email_addresses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressList>, Error<()>> {
            let Self { client, user_id } = self;
            let user_id = user_id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}/email_addresses", client.baseurl, encode_path(& user_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_user_email_addresses",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_user_email_address`]

[`Client::create_user_email_address`]: super::Client::create_user_email_address*/
    #[derive(Debug, Clone)]
    pub struct CreateUserEmailAddress<'a> {
        client: &'a super::Client,
        user_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewUserEmailAddress, String>,
    }
    impl<'a> CreateUserEmailAddress<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                user_id: Err("user_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.user_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for user_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewUserEmailAddress>,
            <V as std::convert::TryInto<
                types::NewUserEmailAddress,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewUserEmailAddress` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewUserEmailAddress,
            ) -> types::builder::NewUserEmailAddress,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/users/{user_id}/email_addresses`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserEmailAddressResponse>, Error<()>> {
            let Self { client, user_id, body } = self;
            let user_id = user_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewUserEmailAddress::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}/email_addresses", client.baseurl, encode_path(& user_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_user_email_address",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_user_notification_rules`]

[`Client::list_user_notification_rules`]: super::Client::list_user_notification_rules*/
    #[derive(Debug, Clone)]
    pub struct ListUserNotificationRules<'a> {
        client: &'a super::Client,
        user_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<::std::string::String>, String>,
    }
    impl<'a> ListUserNotificationRules<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                user_id: Err("user_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.user_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for user_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for sort failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/users/{user_id}/notification_rules`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserNotificationRuleList>, Error<()>> {
            let Self { client, user_id, include, page_number, page_size, sort } = self;
            let user_id = user_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}/notification_rules", client.baseurl, encode_path(&
                user_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_user_notification_rules",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_user_notification_rule`]

[`Client::create_user_notification_rule`]: super::Client::create_user_notification_rule*/
    #[derive(Debug, Clone)]
    pub struct CreateUserNotificationRule<'a> {
        client: &'a super::Client,
        user_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewUserNotificationRule, String>,
    }
    impl<'a> CreateUserNotificationRule<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                user_id: Err("user_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.user_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for user_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewUserNotificationRule>,
            <V as std::convert::TryInto<
                types::NewUserNotificationRule,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewUserNotificationRule` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewUserNotificationRule,
            ) -> types::builder::NewUserNotificationRule,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/users/{user_id}/notification_rules`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserNotificationRuleResponse>, Error<()>> {
            let Self { client, user_id, body } = self;
            let user_id = user_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewUserNotificationRule::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}/notification_rules", client.baseurl, encode_path(&
                user_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_user_notification_rule",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_user_phone_numbers`]

[`Client::get_user_phone_numbers`]: super::Client::get_user_phone_numbers*/
    #[derive(Debug, Clone)]
    pub struct GetUserPhoneNumbers<'a> {
        client: &'a super::Client,
        user_id: Result<::std::string::String, String>,
    }
    impl<'a> GetUserPhoneNumbers<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                user_id: Err("user_id was not initialized".to_string()),
            }
        }
        pub fn user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.user_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for user_id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/users/{user_id}/phone_numbers`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserPhoneNumberList>, Error<()>> {
            let Self { client, user_id } = self;
            let user_id = user_id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}/phone_numbers", client.baseurl, encode_path(& user_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_user_phone_numbers",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_user_phone_number`]

[`Client::create_user_phone_number`]: super::Client::create_user_phone_number*/
    #[derive(Debug, Clone)]
    pub struct CreateUserPhoneNumber<'a> {
        client: &'a super::Client,
        user_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewUserPhoneNumber, String>,
    }
    impl<'a> CreateUserPhoneNumber<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                user_id: Err("user_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn user_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.user_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for user_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewUserPhoneNumber>,
            <V as std::convert::TryInto<
                types::NewUserPhoneNumber,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewUserPhoneNumber` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewUserPhoneNumber,
            ) -> types::builder::NewUserPhoneNumber,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/users/{user_id}/phone_numbers`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::UserPhoneNumberResponse>, Error<()>> {
            let Self { client, user_id, body } = self;
            let user_id = user_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewUserPhoneNumber::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/users/{}/phone_numbers", client.baseurl, encode_path(& user_id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_user_phone_number",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_webhooks_delivery`]

[`Client::get_webhooks_delivery`]: super::Client::get_webhooks_delivery*/
    #[derive(Debug, Clone)]
    pub struct GetWebhooksDelivery<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetWebhooksDelivery<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/webhooks/deliveries/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksDeliveryResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/webhooks/deliveries/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_webhooks_delivery",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::deliver_webhooks_delivery`]

[`Client::deliver_webhooks_delivery`]: super::Client::deliver_webhooks_delivery*/
    #[derive(Debug, Clone)]
    pub struct DeliverWebhooksDelivery<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeliverWebhooksDelivery<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `POST` request to `/v1/webhooks/deliveries/{id}/deliver`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksDeliveryResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/webhooks/deliveries/{}/deliver", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "deliver_webhooks_delivery",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_webhooks_endpoints`]

[`Client::list_webhooks_endpoints`]: super::Client::list_webhooks_endpoints*/
    #[derive(Debug, Clone)]
    pub struct ListWebhooksEndpoints<'a> {
        client: &'a super::Client,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWebhooksEndpoints<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_name: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/webhooks/endpoints`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksEndpointList>, Error<()>> {
            let Self {
                client,
                filter_name,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/webhooks/endpoints", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_webhooks_endpoints",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_webhooks_endpoint`]

[`Client::create_webhooks_endpoint`]: super::Client::create_webhooks_endpoint*/
    #[derive(Debug, Clone)]
    pub struct CreateWebhooksEndpoint<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewWebhooksEndpoint, String>,
    }
    impl<'a> CreateWebhooksEndpoint<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWebhooksEndpoint>,
            <V as std::convert::TryInto<
                types::NewWebhooksEndpoint,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewWebhooksEndpoint` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWebhooksEndpoint,
            ) -> types::builder::NewWebhooksEndpoint,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/webhooks/endpoints`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksEndpointResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewWebhooksEndpoint::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/webhooks/endpoints", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_webhooks_endpoint",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_webhooks_deliveries`]

[`Client::list_webhooks_deliveries`]: super::Client::list_webhooks_deliveries*/
    #[derive(Debug, Clone)]
    pub struct ListWebhooksDeliveries<'a> {
        client: &'a super::Client,
        endpoint_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWebhooksDeliveries<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                endpoint_id: Err("endpoint_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn endpoint_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.endpoint_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for endpoint_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/webhooks/endpoints/{endpoint_id}/deliveries`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksDeliveryList>, Error<()>> {
            let Self { client, endpoint_id, include, page_number, page_size } = self;
            let endpoint_id = endpoint_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/webhooks/endpoints/{}/deliveries", client.baseurl, encode_path(&
                endpoint_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_webhooks_deliveries",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_webhooks_endpoint`]

[`Client::get_webhooks_endpoint`]: super::Client::get_webhooks_endpoint*/
    #[derive(Debug, Clone)]
    pub struct GetWebhooksEndpoint<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetWebhooksEndpoint<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/webhooks/endpoints/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksEndpointResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/webhooks/endpoints/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_webhooks_endpoint",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_webhooks_endpoint`]

[`Client::update_webhooks_endpoint`]: super::Client::update_webhooks_endpoint*/
    #[derive(Debug, Clone)]
    pub struct UpdateWebhooksEndpoint<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateWebhooksEndpoint, String>,
    }
    impl<'a> UpdateWebhooksEndpoint<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateWebhooksEndpoint>,
            <V as std::convert::TryInto<
                types::UpdateWebhooksEndpoint,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateWebhooksEndpoint` for body failed: {}", s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateWebhooksEndpoint,
            ) -> types::builder::UpdateWebhooksEndpoint,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/webhooks/endpoints/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksEndpointResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateWebhooksEndpoint::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/webhooks/endpoints/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_webhooks_endpoint",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_webhooks_endpoint`]

[`Client::delete_webhooks_endpoint`]: super::Client::delete_webhooks_endpoint*/
    #[derive(Debug, Clone)]
    pub struct DeleteWebhooksEndpoint<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteWebhooksEndpoint<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/webhooks/endpoints/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WebhooksEndpointResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/webhooks/endpoints/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_webhooks_endpoint",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_workflow_custom_field_selection`]

[`Client::get_workflow_custom_field_selection`]: super::Client::get_workflow_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct GetWorkflowCustomFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetWorkflowCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/workflow_custom_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_custom_field_selections/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_workflow_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_workflow_custom_field_selection`]

[`Client::update_workflow_custom_field_selection`]: super::Client::update_workflow_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct UpdateWorkflowCustomFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateWorkflowCustomFieldSelection, String>,
    }
    impl<'a> UpdateWorkflowCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateWorkflowCustomFieldSelection>,
            <V as std::convert::TryInto<
                types::UpdateWorkflowCustomFieldSelection,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateWorkflowCustomFieldSelection` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateWorkflowCustomFieldSelection,
            ) -> types::builder::UpdateWorkflowCustomFieldSelection,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/workflow_custom_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateWorkflowCustomFieldSelection::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_custom_field_selections/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_workflow_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_workflow_custom_field_selection`]

[`Client::delete_workflow_custom_field_selection`]: super::Client::delete_workflow_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct DeleteWorkflowCustomFieldSelection<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteWorkflowCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/workflow_custom_field_selections/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_custom_field_selections/{}", client.baseurl,
                encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_workflow_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_workflow_form_field_condition`]

[`Client::get_workflow_form_field_condition`]: super::Client::get_workflow_form_field_condition*/
    #[derive(Debug, Clone)]
    pub struct GetWorkflowFormFieldCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetWorkflowFormFieldCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/workflow_form_field_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowFormFieldConditionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_form_field_conditions/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_workflow_form_field_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_workflow_form_field_condition`]

[`Client::update_workflow_form_field_condition`]: super::Client::update_workflow_form_field_condition*/
    #[derive(Debug, Clone)]
    pub struct UpdateWorkflowFormFieldCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateWorkflowFormFieldCondition, String>,
    }
    impl<'a> UpdateWorkflowFormFieldCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateWorkflowFormFieldCondition>,
            <V as std::convert::TryInto<
                types::UpdateWorkflowFormFieldCondition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `UpdateWorkflowFormFieldCondition` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateWorkflowFormFieldCondition,
            ) -> types::builder::UpdateWorkflowFormFieldCondition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/workflow_form_field_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowFormFieldConditionResponse>,
            Error<()>,
        > {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateWorkflowFormFieldCondition::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_form_field_conditions/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_workflow_form_field_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_workflow_form_field_condition`]

[`Client::delete_workflow_form_field_condition`]: super::Client::delete_workflow_form_field_condition*/
    #[derive(Debug, Clone)]
    pub struct DeleteWorkflowFormFieldCondition<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteWorkflowFormFieldCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/workflow_form_field_conditions/{id}`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowFormFieldConditionResponse>,
            Error<()>,
        > {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_form_field_conditions/{}", client.baseurl, encode_path(&
                id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_workflow_form_field_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_workflow_groups`]

[`Client::list_workflow_groups`]: super::Client::list_workflow_groups*/
    #[derive(Debug, Clone)]
    pub struct ListWorkflowGroups<'a> {
        client: &'a super::Client,
        filter_expanded: Result<Option<bool>, String>,
        filter_kind: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_position: Result<Option<i64>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWorkflowGroups<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_expanded: Ok(None),
                filter_kind: Ok(None),
                filter_name: Ok(None),
                filter_position: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn filter_expanded<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<bool>,
        {
            self.filter_expanded = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `bool` for filter_expanded failed".to_string()
                });
            self
        }
        pub fn filter_kind<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_kind = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_kind failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_position<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.filter_position = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `i64` for filter_position failed".to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/workflow_groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowGroupList>, Error<()>> {
            let Self {
                client,
                filter_expanded,
                filter_kind,
                filter_name,
                filter_position,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let filter_expanded = filter_expanded.map_err(Error::InvalidRequest)?;
            let filter_kind = filter_kind.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_position = filter_position.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/workflow_groups", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[expanded]",
                        &filter_expanded,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[kind]", &filter_kind))
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[position]",
                        &filter_position,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_workflow_groups",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_workflow_group`]

[`Client::create_workflow_group`]: super::Client::create_workflow_group*/
    #[derive(Debug, Clone)]
    pub struct CreateWorkflowGroup<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewWorkflowGroup, String>,
    }
    impl<'a> CreateWorkflowGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWorkflowGroup>,
            <V as std::convert::TryInto<
                types::NewWorkflowGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewWorkflowGroup` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWorkflowGroup,
            ) -> types::builder::NewWorkflowGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/workflow_groups`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowGroupResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| {
                    types::NewWorkflowGroup::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/workflow_groups", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_workflow_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_workflow_group`]

[`Client::get_workflow_group`]: super::Client::get_workflow_group*/
    #[derive(Debug, Clone)]
    pub struct GetWorkflowGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetWorkflowGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/workflow_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowGroupResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_workflow_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_workflow_group`]

[`Client::update_workflow_group`]: super::Client::update_workflow_group*/
    #[derive(Debug, Clone)]
    pub struct UpdateWorkflowGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateWorkflowGroup, String>,
    }
    impl<'a> UpdateWorkflowGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateWorkflowGroup>,
            <V as std::convert::TryInto<
                types::UpdateWorkflowGroup,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateWorkflowGroup` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateWorkflowGroup,
            ) -> types::builder::UpdateWorkflowGroup,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/workflow_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowGroupResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateWorkflowGroup::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_workflow_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_workflow_group`]

[`Client::delete_workflow_group`]: super::Client::delete_workflow_group*/
    #[derive(Debug, Clone)]
    pub struct DeleteWorkflowGroup<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteWorkflowGroup<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/workflow_groups/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowGroupResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_groups/{}", client.baseurl, encode_path(& id
                .to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_workflow_group",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_workflow_task`]

[`Client::get_workflow_task`]: super::Client::get_workflow_task*/
    #[derive(Debug, Clone)]
    pub struct GetWorkflowTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> GetWorkflowTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/workflow_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowTaskResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_tasks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_workflow_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_workflow_task`]

[`Client::update_workflow_task`]: super::Client::update_workflow_task*/
    #[derive(Debug, Clone)]
    pub struct UpdateWorkflowTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateWorkflowTask, String>,
    }
    impl<'a> UpdateWorkflowTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateWorkflowTask>,
            <V as std::convert::TryInto<
                types::UpdateWorkflowTask,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateWorkflowTask` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateWorkflowTask,
            ) -> types::builder::UpdateWorkflowTask,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/workflow_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowTaskResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateWorkflowTask::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_tasks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_workflow_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_workflow_task`]

[`Client::delete_workflow_task`]: super::Client::delete_workflow_task*/
    #[derive(Debug, Clone)]
    pub struct DeleteWorkflowTask<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteWorkflowTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/workflow_tasks/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowTaskResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflow_tasks/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_workflow_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_workflows`]

[`Client::list_workflows`]: super::Client::list_workflows*/
    #[derive(Debug, Clone)]
    pub struct ListWorkflows<'a> {
        client: &'a super::Client,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListWorkflowsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
        sort: Result<Option<types::ListWorkflowsSort>, String>,
    }
    impl<'a> ListWorkflows<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
                sort: Ok(None),
            }
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListWorkflowsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListWorkflowsInclude` for include failed".to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        pub fn sort<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListWorkflowsSort>,
        {
            self.sort = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListWorkflowsSort` for sort failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/workflows`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowList>, Error<()>> {
            let Self {
                client,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
                sort,
            } = self;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let sort = sort.map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/workflows", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .query(&progenitor_client::QueryParam::new("sort", &sort))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_workflows",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_workflow`]

[`Client::create_workflow`]: super::Client::create_workflow*/
    #[derive(Debug, Clone)]
    pub struct CreateWorkflow<'a> {
        client: &'a super::Client,
        body: Result<types::builder::NewWorkflow, String>,
    }
    impl<'a> CreateWorkflow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWorkflow>,
            <V as std::convert::TryInto<types::NewWorkflow>>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewWorkflow` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWorkflow,
            ) -> types::builder::NewWorkflow,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/workflows`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowResponse>, Error<()>> {
            let Self { client, body } = self;
            let body = body
                .and_then(|v| types::NewWorkflow::try_from(v).map_err(|e| e.to_string()))
                .map_err(Error::InvalidRequest)?;
            let url = format!("{}/v1/workflows", client.baseurl,);
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_workflow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::get_workflow`]

[`Client::get_workflow`]: super::Client::get_workflow*/
    #[derive(Debug, Clone)]
    pub struct GetWorkflow<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        include: Result<Option<types::GetWorkflowInclude>, String>,
    }
    impl<'a> GetWorkflow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                include: Ok(None),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::GetWorkflowInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `GetWorkflowInclude` for include failed".to_string()
                });
            self
        }
        ///Sends a `GET` request to `/v1/workflows/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowResponse>, Error<()>> {
            let Self { client, id, include } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "get_workflow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::update_workflow`]

[`Client::update_workflow`]: super::Client::update_workflow*/
    #[derive(Debug, Clone)]
    pub struct UpdateWorkflow<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
        body: Result<types::builder::UpdateWorkflow, String>,
    }
    impl<'a> UpdateWorkflow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::UpdateWorkflow>,
            <V as std::convert::TryInto<
                types::UpdateWorkflow,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `UpdateWorkflow` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::UpdateWorkflow,
            ) -> types::builder::UpdateWorkflow,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `PUT` request to `/v1/workflows/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowResponse>, Error<()>> {
            let Self { client, id, body } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::UpdateWorkflow::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .put(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "update_workflow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::delete_workflow`]

[`Client::delete_workflow`]: super::Client::delete_workflow*/
    #[derive(Debug, Clone)]
    pub struct DeleteWorkflow<'a> {
        client: &'a super::Client,
        id: Result<::std::string::String, String>,
    }
    impl<'a> DeleteWorkflow<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                id: Err("id was not initialized".to_string()),
            }
        }
        pub fn id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for id failed"
                        .to_string()
                });
            self
        }
        ///Sends a `DELETE` request to `/v1/workflows/{id}`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowResponse>, Error<()>> {
            let Self { client, id } = self;
            let id = id.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}", client.baseurl, encode_path(& id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .delete(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "delete_workflow",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_workflow_custom_field_selections`]

[`Client::list_workflow_custom_field_selections`]: super::Client::list_workflow_custom_field_selections*/
    #[derive(Debug, Clone)]
    pub struct ListWorkflowCustomFieldSelections<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWorkflowCustomFieldSelections<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/workflows/{workflow_id}/custom_field_selections`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowCustomFieldSelectionList>, Error<()>> {
            let Self { client, workflow_id, include, page_number, page_size } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/custom_field_selections", client.baseurl,
                encode_path(& workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_workflow_custom_field_selections",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_workflow_custom_field_selection`]

[`Client::create_workflow_custom_field_selection`]: super::Client::create_workflow_custom_field_selection*/
    #[derive(Debug, Clone)]
    pub struct CreateWorkflowCustomFieldSelection<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewWorkflowCustomFieldSelection, String>,
    }
    impl<'a> CreateWorkflowCustomFieldSelection<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWorkflowCustomFieldSelection>,
            <V as std::convert::TryInto<
                types::NewWorkflowCustomFieldSelection,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewWorkflowCustomFieldSelection` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWorkflowCustomFieldSelection,
            ) -> types::builder::NewWorkflowCustomFieldSelection,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/workflows/{workflow_id}/custom_field_selections`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowCustomFieldSelectionResponse>,
            Error<()>,
        > {
            let Self { client, workflow_id, body } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewWorkflowCustomFieldSelection::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/custom_field_selections", client.baseurl,
                encode_path(& workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_workflow_custom_field_selection",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_workflow_form_field_conditions`]

[`Client::list_workflow_form_field_conditions`]: super::Client::list_workflow_form_field_conditions*/
    #[derive(Debug, Clone)]
    pub struct ListWorkflowFormFieldConditions<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWorkflowFormFieldConditions<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/workflows/{workflow_id}/form_field_conditions`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowFormFieldConditionList>, Error<()>> {
            let Self { client, workflow_id, include, page_number, page_size } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/form_field_conditions", client.baseurl, encode_path(&
                workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_workflow_form_field_conditions",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_workflow_form_field_condition`]

[`Client::create_workflow_form_field_condition`]: super::Client::create_workflow_form_field_condition*/
    #[derive(Debug, Clone)]
    pub struct CreateWorkflowFormFieldCondition<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewWorkflowFormFieldCondition, String>,
    }
    impl<'a> CreateWorkflowFormFieldCondition<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWorkflowFormFieldCondition>,
            <V as std::convert::TryInto<
                types::NewWorkflowFormFieldCondition,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!(
                        "conversion to `NewWorkflowFormFieldCondition` for body failed: {}",
                        s
                    )
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWorkflowFormFieldCondition,
            ) -> types::builder::NewWorkflowFormFieldCondition,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/workflows/{workflow_id}/form_field_conditions`
        pub async fn send(
            self,
        ) -> Result<
            ResponseValue<types::WorkflowFormFieldConditionResponse>,
            Error<()>,
        > {
            let Self { client, workflow_id, body } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewWorkflowFormFieldCondition::try_from(v)
                        .map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/form_field_conditions", client.baseurl, encode_path(&
                workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_workflow_form_field_condition",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_workflow_runs`]

[`Client::list_workflow_runs`]: super::Client::list_workflow_runs*/
    #[derive(Debug, Clone)]
    pub struct ListWorkflowRuns<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        filter_created_at_gt: Result<Option<::std::string::String>, String>,
        filter_created_at_gte: Result<Option<::std::string::String>, String>,
        filter_created_at_lt: Result<Option<::std::string::String>, String>,
        filter_created_at_lte: Result<Option<::std::string::String>, String>,
        include: Result<Option<types::ListWorkflowRunsInclude>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWorkflowRuns<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                filter_created_at_gt: Ok(None),
                filter_created_at_gte: Ok(None),
                filter_created_at_lt: Ok(None),
                filter_created_at_lte: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_gte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_gte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_gte failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lt<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lt = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lt failed"
                        .to_string()
                });
            self
        }
        pub fn filter_created_at_lte<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_created_at_lte = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_created_at_lte failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::ListWorkflowRunsInclude>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `ListWorkflowRunsInclude` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/workflows/{workflow_id}/workflow_runs`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowRunsList>, Error<()>> {
            let Self {
                client,
                workflow_id,
                filter_created_at_gt,
                filter_created_at_gte,
                filter_created_at_lt,
                filter_created_at_lte,
                include,
                page_number,
                page_size,
            } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let filter_created_at_gt = filter_created_at_gt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_gte = filter_created_at_gte
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lt = filter_created_at_lt
                .map_err(Error::InvalidRequest)?;
            let filter_created_at_lte = filter_created_at_lte
                .map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/workflow_runs", client.baseurl, encode_path(&
                workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gt]",
                        &filter_created_at_gt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][gte]",
                        &filter_created_at_gte,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lt]",
                        &filter_created_at_lt,
                    ),
                )
                .query(
                    &progenitor_client::QueryParam::new(
                        "filter[created_at][lte]",
                        &filter_created_at_lte,
                    ),
                )
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_workflow_runs",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_workflow_run`]

[`Client::create_workflow_run`]: super::Client::create_workflow_run*/
    #[derive(Debug, Clone)]
    pub struct CreateWorkflowRun<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewWorkflowRun, String>,
    }
    impl<'a> CreateWorkflowRun<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWorkflowRun>,
            <V as std::convert::TryInto<
                types::NewWorkflowRun,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewWorkflowRun` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWorkflowRun,
            ) -> types::builder::NewWorkflowRun,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/workflows/{workflow_id}/workflow_runs`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowRunResponse>, Error<()>> {
            let Self { client, workflow_id, body } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewWorkflowRun::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/workflow_runs", client.baseurl, encode_path(&
                workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_workflow_run",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::list_workflow_tasks`]

[`Client::list_workflow_tasks`]: super::Client::list_workflow_tasks*/
    #[derive(Debug, Clone)]
    pub struct ListWorkflowTasks<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        filter_name: Result<Option<::std::string::String>, String>,
        filter_search: Result<Option<::std::string::String>, String>,
        filter_slug: Result<Option<::std::string::String>, String>,
        include: Result<Option<::std::string::String>, String>,
        page_number: Result<Option<i64>, String>,
        page_size: Result<Option<i64>, String>,
    }
    impl<'a> ListWorkflowTasks<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                filter_name: Ok(None),
                filter_search: Ok(None),
                filter_slug: Ok(None),
                include: Ok(None),
                page_number: Ok(None),
                page_size: Ok(None),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn filter_name<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_name = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_name failed"
                        .to_string()
                });
            self
        }
        pub fn filter_search<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_search = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_search failed"
                        .to_string()
                });
            self
        }
        pub fn filter_slug<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.filter_slug = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for filter_slug failed"
                        .to_string()
                });
            self
        }
        pub fn include<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.include = value
                .try_into()
                .map(Some)
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for include failed"
                        .to_string()
                });
            self
        }
        pub fn page_number<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_number = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_number failed".to_string());
            self
        }
        pub fn page_size<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<i64>,
        {
            self.page_size = value
                .try_into()
                .map(Some)
                .map_err(|_| "conversion to `i64` for page_size failed".to_string());
            self
        }
        ///Sends a `GET` request to `/v1/workflows/{workflow_id}/workflow_tasks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowTaskList>, Error<()>> {
            let Self {
                client,
                workflow_id,
                filter_name,
                filter_search,
                filter_slug,
                include,
                page_number,
                page_size,
            } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let filter_name = filter_name.map_err(Error::InvalidRequest)?;
            let filter_search = filter_search.map_err(Error::InvalidRequest)?;
            let filter_slug = filter_slug.map_err(Error::InvalidRequest)?;
            let include = include.map_err(Error::InvalidRequest)?;
            let page_number = page_number.map_err(Error::InvalidRequest)?;
            let page_size = page_size.map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/workflow_tasks", client.baseurl, encode_path(&
                workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .get(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .query(&progenitor_client::QueryParam::new("filter[name]", &filter_name))
                .query(
                    &progenitor_client::QueryParam::new("filter[search]", &filter_search),
                )
                .query(&progenitor_client::QueryParam::new("filter[slug]", &filter_slug))
                .query(&progenitor_client::QueryParam::new("include", &include))
                .query(&progenitor_client::QueryParam::new("page[number]", &page_number))
                .query(&progenitor_client::QueryParam::new("page[size]", &page_size))
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "list_workflow_tasks",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                200u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
    /**Builder for [`Client::create_workflow_task`]

[`Client::create_workflow_task`]: super::Client::create_workflow_task*/
    #[derive(Debug, Clone)]
    pub struct CreateWorkflowTask<'a> {
        client: &'a super::Client,
        workflow_id: Result<::std::string::String, String>,
        body: Result<types::builder::NewWorkflowTask, String>,
    }
    impl<'a> CreateWorkflowTask<'a> {
        pub fn new(client: &'a super::Client) -> Self {
            Self {
                client: client,
                workflow_id: Err("workflow_id was not initialized".to_string()),
                body: Ok(::std::default::Default::default()),
            }
        }
        pub fn workflow_id<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<::std::string::String>,
        {
            self.workflow_id = value
                .try_into()
                .map_err(|_| {
                    "conversion to `:: std :: string :: String` for workflow_id failed"
                        .to_string()
                });
            self
        }
        pub fn body<V>(mut self, value: V) -> Self
        where
            V: std::convert::TryInto<types::NewWorkflowTask>,
            <V as std::convert::TryInto<
                types::NewWorkflowTask,
            >>::Error: std::fmt::Display,
        {
            self.body = value
                .try_into()
                .map(From::from)
                .map_err(|s| {
                    format!("conversion to `NewWorkflowTask` for body failed: {}", s)
                });
            self
        }
        pub fn body_map<F>(mut self, f: F) -> Self
        where
            F: std::ops::FnOnce(
                types::builder::NewWorkflowTask,
            ) -> types::builder::NewWorkflowTask,
        {
            self.body = self.body.map(f);
            self
        }
        ///Sends a `POST` request to `/v1/workflows/{workflow_id}/workflow_tasks`
        pub async fn send(
            self,
        ) -> Result<ResponseValue<types::WorkflowTaskResponse>, Error<()>> {
            let Self { client, workflow_id, body } = self;
            let workflow_id = workflow_id.map_err(Error::InvalidRequest)?;
            let body = body
                .and_then(|v| {
                    types::NewWorkflowTask::try_from(v).map_err(|e| e.to_string())
                })
                .map_err(Error::InvalidRequest)?;
            let url = format!(
                "{}/v1/workflows/{}/workflow_tasks", client.baseurl, encode_path(&
                workflow_id.to_string()),
            );
            let mut header_map = ::reqwest::header::HeaderMap::with_capacity(1usize);
            header_map
                .append(
                    ::reqwest::header::HeaderName::from_static("api-version"),
                    ::reqwest::header::HeaderValue::from_static(
                        super::Client::api_version(),
                    ),
                );
            #[allow(unused_mut)]
            let mut request = client
                .client
                .post(url)
                .header(
                    ::reqwest::header::ACCEPT,
                    ::reqwest::header::HeaderValue::from_static("application/json"),
                )
                .json(&body)
                .headers(header_map)
                .build()?;
            let info = OperationInfo {
                operation_id: "create_workflow_task",
            };
            client.pre(&mut request, &info).await?;
            let result = client.exec(request, &info).await;
            client.post(&result, &info).await?;
            let response = result?;
            match response.status().as_u16() {
                201u16 => ResponseValue::from_response(response).await,
                _ => Err(Error::UnexpectedResponse(response)),
            }
        }
    }
}
/// Items consumers will typically use such as the Client.
pub mod prelude {
    pub use self::super::Client;
}
